|
Parrot 3.4.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today Set by moderator on 17 May 2011. |
|||
| lucian | hmm, apparently find_method, get_attr_str and friends want to completely own dispatch | 00:12 | |
| is there a way to just supplement dispatch, some vtable funcs that are called when find_method et al fail to find? | 00:13 | ||
| dalek | nxed: r1030 | NotFound++ | trunk/t/harness: allow harness to run the tests using a installed driver |
00:19 | |
| lucian | apparently there isn't. annoying | 00:25 | |
| dalek | rrot/invokable-fix: ee17ddd | cotto++ | src/call/pcc.c: add experimental fix for a bug found by jnthn++ |
00:26 | |
| cotto_work goes home | 00:36 | ||
|
00:37
jsut joined
00:42
jsut_ left
00:55
mikehh left
|
|||
| cotto | ohai | 01:01 | |
| I'd appreciate testing on the invokable-fix branch. | 01:02 | ||
|
01:04
davidfetter left
01:09
lucian left
01:11
lucian joined
01:22
lucian left
|
|||
| soh_cah_toa | i forget, what type is PARROT_INTERP? i can't remember whether it's Interp or parrot_interp_t | 01:29 | |
| cotto | parrot_interp_t | 01:30 | |
| soh_cah_toa | is there any difference between the two? could i cast one as the other? | 01:32 | |
| cotto | doesn't look like there's a big difference | 01:35 | |
| from parrot.h: typedef struct parrot_interp_t Interp; | |||
| soh_cah_toa | yay, more unnecessary duplicate types to remember ;) | 01:36 | |
| dalek | rrot: ee17ddd | cotto++ | src/call/pcc.c: add experimental fix for a bug found by jnthn++ |
01:42 | |
| rrot: 8f7ca28 | cotto++ | src/call/pcc.c: Merge branch 'invokable-fix' |
|||
| cotto | jnthn__, the fix is in Parrot master and your example seems to work fine without the VTABLE_does hack in nqp. | 01:43 | |
| Rakudo master also looks good | 01:44 | ||
|
01:44
Kulag left
01:45
Kulag joined
|
|||
| cotto | Hopefully nobody has to think about this again in the future. | 01:46 | |
|
01:50
woosley joined
02:03
mikehh joined
02:49
particle left
02:50
particle joined
02:54
theory joined
|
|||
| bubaflub | cotto: did you run any benchmarks to see if that fix gave a speed boost? just curious. | 03:07 | |
|
03:16
Andy joined
03:26
soh_cah_toa left
03:41
he left
03:42
mtk left
03:49
mtk joined
03:57
hudnix left
|
|||
| cotto | bubaflub, I didn't. It'd be interesting to find out. jnthn expects that it'd give a small boost. | 04:06 | |
| bubaflub | cotto: ok. i'm heading to bed in a bit or i'd run it myself. | 04:07 | |
| cotto | 'night then | 04:10 | |
|
04:18
bubaflub left
04:35
Andy left
04:36
plobsing left,
plobsing joined
05:59
fperrad joined
06:17
theory left
07:11
rohit_nsit08 joined
07:13
woosley left
07:27
mj41 joined
08:08
rohit_nsit08 left
08:19
rohit_nsit08 joined
08:36
preflex left
08:40
preflex joined
08:44
kj joined
08:45
kj is now known as kjs
08:54
rohit_nsit08 left
09:04
rohit_nsit08 joined
09:21
woosley joined
09:51
woosley left
10:11
mrwall-e joined
10:31
rohit_nsit08 left
10:37
bacek joined
10:48
rohit_nsit08 joined
10:51
mrwall-e left
11:16
kjs left
11:17
lucian joined
11:30
mtk left
11:31
rohit_nsit08 left
11:36
mtk joined
11:40
lucian left,
lucian joined
11:42
lucian left,
contingencyplan left
11:46
lucian joined
11:47
kid51 joined
|
|||
| kid51 | commit 8f7ca283d: linux/i386: make fulltest PASS; darwin/ppc: make test PASS | 11:50 | |
| lucian | is there any way to get winxed line numbers from imcc or runtime exceptions? | 11:58 | |
| NotFound: i think i found a bug in winxed. and i really appreciate the comments in the generated PIR :) | 12:06 | ||
|
12:19
redicaps joined
12:22
kid51 left
12:23
bluescreen joined
12:29
JimmyZ joined
12:33
whiteknight joined
12:54
bubaflub joined
|
|||
| dalek | p: 67c0a4c | jonathan++ | src/ops/nqp.ops: Teach many NQP ops about the existence of containers (just relies on the standard 6model container API). |
13:22 | |
| p: f054311 | jonathan++ | src/ops/nqp.ops: Make sure we don't treat container type objects as if they're actual living containers. |
|||
|
13:39
lucian left,
lucian joined
|
|||
| lucian | i get "Null PMC access in invoke()" in bitbucket.org/lucian1900/puffin/sr...ect.winxed | 14:00 | |
| i can't see any calls whatsoever done at runtime, there's just declarations | |||
|
14:01
bluescreen left
|
|||
| lucian | hmm, i think what happens is parrot looks for 'main', gets a null and tries to call it | 14:03 | |
|
14:05
davidfetter joined
14:08
hudnix joined
|
|||
| whiteknight | winxed looks for main and invokes it blindly | 14:13 | |
| moritz | could probably be made more awesome :-) | 14:14 | |
| whiteknight | lucian: are you trying to run that function directly? | ||
| lucian | whiteknight: no, i'm not running anything. winxed does invoke main blindly | 14:16 | |
| whiteknight | yeah, if you do "winxed typeobject.winxed", it will look for main blindly to execute it | 14:19 | |
| the error handling of the winxed driver program leaves much to be desired, and that is a great example case | |||
|
14:19
hercynium joined
|
|||
| whiteknight | if you want to compile that file down to .pbc, you would type "winxed -c -o typeobject.pir typeobject.winxed" | 14:20 | |
| the -c prevents it from looking for main | |||
| "compile that file down to .pir" | |||
|
14:26
lucian left,
lucian joined
|
|||
| atrodo | whiteknight> "IMCC.pm is still a "ball of mud" at the moment," from search.cpan.org/~jgoff/parrot-0.0.8...6C/IMCC.pm | 14:26 | |
| whiteknight | heh | ||
| lucian | whiteknight: yeah, i know | 14:27 | |
| atrodo | Some things never change | ||
| lucian | whiteknight: i think i'll have to figure out how to run parrot things easily from python's distutils | 14:28 | |
| whiteknight | okay | ||
| lucian | i'm still finding places where my object model is incorrect, i really do need more tests | 14:29 | |
| whiteknight | lucian: where are your tests? | 14:30 | |
| lucian | whiteknight: uh, in a main() in core :) | 14:31 | |
| whiteknight | oh fun | 14:32 | |
| lucian | dreadful, isn't it? | 14:41 | |
| dalek | rrot: bcd1d99 | fperrad++ | t/src/extend_vtable.t: [t] fix shebang |
14:44 | |
|
14:44
JimmyZ left
|
|||
|
14:44
JimmyZ joined
14:47
alester joined
15:09
ambs joined
|
|||
| lucian | whiteknight: i think i know, i'll just consider w/e is in winxed a foreign package, and call its' setup.pir | 15:16 | |
| whiteknight | that sounds good | ||
| you can write a setup.winxed instead, if you prefer | |||
| (I'm always looking for ways to minimize PIR" | |||
| lucian | yeah, sure. neither option appears to have any docs, so it's ok :) | 15:19 | |
| dalek | rrot: e44bbc5 | fperrad++ | t/dynpmc/foo- (10 files): [t] fix shebang |
15:22 | |
| whiteknight | There is a Rosella.Winxed library that adds winxed-building functions to Parrot's distutils | 15:23 | |
| if you're looking to get that moving quickly | |||
| lucian | whiteknight: yeah, i noticed | 15:24 | |
| to your credit, rosella has more docs than most things in parrot | 15:25 | ||
| whiteknight | lucian: :) 90% of the stuff Rosella provides is stuff that I needed while writing the other 10% | ||
| lucian | i guess i'm spoilt by python | ||
| whiteknight | yeah, documentation hasn't always been our strong point | ||
| I was writing a lot of documentation for a while, which culminated in /docs/book, but I gave up on that pursuit mostly because I didn't want to document things that needed to change | 15:26 | ||
| like, why write more PIR documentation when I hate PIR and want to change it completely? | |||
| I would much rather write winxed documentation, which I'm doing now | |||
| lucian nods | 15:27 | ||
| fperrad | Lua is broken with current Parrot : | 15:28 | |
| $ parrot lua.pbc | |||
| attempt to access code outside of current code segment | |||
| current instr.: 'main' pc 4 (lua.pir:90) | |||
| whiteknight | fperrad: darn. Any idea when that started? | 15:29 | |
| fperrad | I know RELEASE_3_4_0-23 is ok | 15:30 | |
| whiteknight | okay, that's good. I don't think there have been a lot of commits to master since then. I'll do some digging | 15:31 | |
| benabik | The "nice" thing about my GSoC project is that NQP is in PAST so compiling newPAST finds errors in my code. | 15:32 | |
| whiteknight | yes, that is nice | 15:34 | |
| benabik | "error:imcc:syntax error ... somewhere" | ||
| The not-so-nice part is that I then have to dig through NQP-rx code to find what bit of PAST I broke. | |||
| Wait... I compiled this using parrot-nqp from master. That's not so good. | 15:36 | ||
| dukeleto | ~~ | ||
| tadzik | benabik: are you using The Nqp? | 15:37 | |
| benabik | tadzik: I'm using nqp-rx aka parrot-nqp. So no 6model or other new fancy bits. | 15:38 | |
| tadzik | oh, "from master" is the bad part, I see | 15:39 | |
| benabik | tadzik: Yes. I had thought I had broken NQP in my branch. | ||
|
15:45
mj41 left
15:48
lucian_ joined
15:49
hercynium_ joined
|
|||
| benabik | And it turns out it was just bad PIR->NQP translation on my part. *sigh* | 15:49 | |
|
15:51
hercynium__ joined
15:53
lucian left,
hercynium left,
hercynium__ is now known as hercynium
15:55
hercynium_ left
15:56
dmalcolm joined
15:59
JimmyZ left
16:12
davidfetter left,
redicaps left
|
|||
| cotto_work | ~~ | 16:12 | |
|
16:18
redicaps joined
16:22
lucian_ is now known as lucian
|
|||
| lucian waves at cotto_work | 16:22 | ||
| cotto_work | hi lucian | 16:23 | |
|
16:24
lucian_ joined
|
|||
| dalek | p: 165e737 | jonathan++ | src/ (8 files): Add clone to REPR API. |
16:25 | |
|
16:27
theory joined
16:29
lucian left
16:30
mj41 joined
|
|||
| cotto_work | dukeleto: your post got on hacker news | 16:39 | |
| no comments yet though | |||
|
16:41
lucian__ joined
|
|||
| alester | cotto: linky? | 16:41 | |
| cotto_work | news.ycombinator.com/item?id=2611997 (blog post at leto.net/perl/2011/05/what-is-m0.html ) | 16:42 | |
|
16:43
lucian joined
|
|||
| alester | "A few years back, Parrot had a JIT compiler, from which many lessoned were learned." =~ s/lessoned/lessons/; | 16:44 | |
|
16:45
lucian_ left
16:46
redicaps left
16:47
lucian__ left
|
|||
| dukeleto | cotto_work: whoa | 16:48 | |
| alester: danke | |||
| cotto_work | dukeleto: don't forget us little people now that you've hit the big time. | 16:52 | |
| benabik | Does anybody know if `$obj.$meth();` does what I expect in NQP-rx? | 16:56 | |
| tadzik | nqp-rx: class A { method b { say("ok"); } }; my $foo := A.new(); my $b := "b"; $foo.$b() | 16:57 | |
| cotto_work | dukeleto: for people coming from hn, you might specify who the people mentioned in your post are | ||
| tadzik | no evalbot? | ||
| cotto_work | rakudo: say "orly?" | ||
| p6eval | rakudo 048573: OUTPUT«orly?» | ||
| tadzik | nqprx: class A { method b { say("ok"); } }; my $foo := A.new(); my $b := "b"; $foo.$b() | ||
| p6eval | nqprx: OUTPUT«Routine declaration requires a signature at line 1, near "{ say(\\"ok\\""current instr.: 'parrot;HLL;Grammar;panic' pc 635 (src/cheats/hll-compiler.pir:206)» | ||
| tadzik | oic | ||
| moritz | method b() helps | 16:58 | |
| tadzik | nqprx: class A { method b() { say("ok"); } }; my $foo := A.new(); my $b := "b"; $foo.$b() | ||
| p6eval | nqprx: OUTPUT«Confused at line 1, near "$foo.$b()"current instr.: 'parrot;HLL;Grammar;panic' pc 635 (src/cheats/hll-compiler.pir:206)» | ||
| tadzik | nqprx: class A { method b() { say("ok"); } }; my $foo := A.new(); my $b := "b"; $foo.b() | ||
| p6eval | nqprx: OUTPUT«ok» | ||
| whiteknight | we need a winxed evalbot | ||
| tadzik | benabik: seems that it does not | ||
| benabik | I guess it doesn't. Thanks tadzik++ for coming up with a simple test. | ||
| moritz | tadzik: try ."$b" | 16:59 | |
| that would be the Perl 6 way | |||
| tadzik | nqprx: class A { method b() { say("ok"); } }; my $foo := A.new(); my $b := "b"; $foo."$b"() | ||
| p6eval | nqprx: OUTPUT«ok» | ||
| benabik | moritz++ | ||
| tadzik | oh, gotcha | ||
| moritz++ | |||
| moritz | whiteknight: I can incorporate winxed into p6eval | ||
| dukeleto | cotto_work: i gave links. what else should I say? | ||
| cotto_work: chromatic++ is famous for not having a title :) | |||
| cotto_work | dukeleto: this is true | ||
| dalek | p: f338bd8 | jonathan++ | src/6model/reprs/ (6 files): Avoid name clash on UNIX-y platforms; should fix build breakage reported by tadzik++ and moritz++. |
17:00 | |
| moritz | whiteknight: particularly if you write a small shell script like those in github.com/perl6/evalbot/tree/mast...ld-scripts that rebuilds winxed (to be run from a cron job) | ||
| whiteknight | okay, I can look at that | ||
| TimToady | in Perl 6 $foo.$b would only work with a hard ref in $b; all symbolic (de)references are syntactically distinguished from hard (de)references. | 17:04 | |
| (so that there's never any need for 'use strict refs') | |||
| benabik | TimToady: Hard ref as in `$b = &Class::meth` ? | 17:05 | |
|
17:05
rohit_nsit08 joined
|
|||
| dukeleto | cotto_work: evidently lots of people read this "hacker news" thing | 17:12 | |
| cotto_work | dukeleto: yup | ||
| TimToady | benabik: nodnod | 17:19 | |
| dalek | website: lucian++ | 1+2. And objects! | 17:30 | |
| website: www.parrot.org/content/12.-and-objects | |||
| TimToady | benabik: to put it another way, $foo.$b is just a funny way to write $b($foo) | ||
| benabik | TimToady: And `$b($foo)` doesn't make any sense if $b is "method" instead of &method. Perfectly reasonable. :-) | 17:31 | |
| dukeleto | lucian: nice blarg toast | 17:33 | |
| TimToady | well, it only makes sense if you confuse symbolic with hard function names, but p6 requires you to say ::("your_name")($foo) for a symbolic function lookup; the $b($foo) notation is also reserved for hard refs | 17:35 | |
| lucian | dukeleto: bad formatting, i know | 17:36 | |
| dukeleto | lucian: feel free to add some links to stuff (like winxed) because your audience most likely has not heard of many things you talk about | 17:38 | |
| lucian: links make the web taste better | |||
| lucian | dukeleto: right. i'll do some editing | ||
| dukeleto: added some links | 17:52 | ||
| does it get syndicated when posting, or later? | |||
| dukeleto | lucian: stuff usually works out. | 18:08 | |
| lucian: i.e. i change blog posts after syndication, and the syndicates usually update after their caching interval | |||
| lucian | dukeleto: i see | 18:10 | |
| benabik should have re-bootstrapped PCT before starting to make changes. Would have noticed a bug way way earlier that way. | 18:14 | ||
| dalek | rrot/gh-pages: a5ac1e3 | dukeleto++ | index.html: github generated gh-pages branch |
18:25 | |
| dukeleto added github pages to parrot.git | 18:26 | ||
| benabik | Yay? | ||
| dukeleto | parrot.github.com/parrot/ | ||
| everyone, feel free to make that site prettier, by editing the gh-pages branch | |||
| benabik | Why isn't the PIR `$I0 = isa post, ['POST';'Sub']` the same as NQP-rx `pir::isa($post, POST::Sub)`? | 18:27 | |
| benabik feels like he's missing something obvious. | |||
| Coke_ | one is a key. one is a... namespace? | 18:28 | |
| ISTR there is a special syntax you can use to force nqp to say "this opcode argument is really of type "key") | |||
| benabik | POST::Sub becomes ` get_hll_global $P43, ["POST"], "Sub"` | ||
| PerlJam | benabik: what happens if you put POST::Sub in quotes? | 18:29 | |
| Coke_ | then it's a string, not a key. | ||
| PerlJam | Coke_: aye, I thought nqp-rx autosplit those and turned them into a key. | 18:30 | |
| Coke_: but barring that ... what you said about special syntax. | |||
| Coke_ | perljam I think if you use that argument type specifier. | ||
| benabik | PerlJam: That doesn't seem to work either. :-/ | 18:31 | |
| tadzik | dukeleto: is that webpage layout something popular? I think cardinal looks similar | 18:34 | |
| benabik | I'm feeling like pir::isa is not the right way to do this, but I can't find anything else. | 18:36 | |
| dukeleto | tadzik: is the the autogenerated github pages layout. Go to "admin" in a repo, and then check the box that says "github pages" and it will ask you if you want to autocreate them | 18:37 | |
| tadzik | oh, funny | 18:38 | |
| dukeleto | benabik: what are you trying to use isa to accomplish? | ||
| benabik | dukeleto: Trying to wrap $post in a POST::Sub unless $post is a POST::Sub | 18:39 | |
|
18:40
contingencyplan joined
|
|||
| benabik | dukeleto: the original PIR is `$I0 = isa post ['POST';'Sub'] \\n if $IO goto have_sub`. NQP version is `unless pir::isa($post, POST::Sub) { ... }` | 18:40 | |
| dukeleto | benabik: in nqp ? | ||
| cotto_work | dukeleto: in the unlikely event that you get bored, making an m0_cover target in the m0-prototype branch will eventually be necessary. | 18:41 | |
| PerlJam | benabik: why are you using PIR's isa instaed of NQP's isa? | ||
| dukeleto | benabik: also, you probably want to stringify "POST::Sub" before giving it to isa | ||
| benabik | PerlJam: NQP has an isa? That's handy. (This is actually code bacek wrote that I'm trying to fix.) | 18:42 | |
| ambs | allison: can I /query you for some minutes to understand something from Pod::PseudoPod? | 18:43 | |
| dukeleto | benabik: i highly suggest looking through the source of Plumage. It has a lot of utility functions for NQP and is well-tested and documented nqp code | ||
|
18:44
shachaf joined
|
|||
| benabik | I'm thinking isa__IPS doesn't handle namespaces. | 18:45 | |
| But $post.isa(POST::Sub) appears to have worked just fine. Thanks, PerlJam++ | 18:46 | ||
| PerlJam | benabik: all PCT::Nodes have an .isa() method | 18:47 | |
| benabik: check what's in PCT/Note.pir for more | 18:48 | ||
| tadzik | benabik: is your gsoc plan public somewhere? | ||
| PerlJam | benabik: but ... what dukeleto said if you need something more complicated | ||
| benabik | tadzik: www.google-melange.com/gsoc/proposa...ernhardt/1 | 18:49 | |
|
18:50
davidfetter joined,
dodathome joined
|
|||
| ambs | \\o/ | 18:51 | |
| tadzik | benabik: nice | ||
| benabik | PerlJam: PCT::Node::isa appears to call self.HOW().isa... But where's HOW() defined? Is that part of Capture or all parrot objects? | 18:52 | |
| whiteknight | that's part of P6object | ||
| benabik | whiteknight: P6object <- Capture <- PCT::Node ? | ||
| whiteknight | P6object is the silent partner. It's automatically added as a Parent type of any class defined in NQP | 18:53 | |
| so Capture is a built-in type, right? So PCT::Node has two parent classes: Capture and P6object | 18:54 | ||
| allison | ambs: sure | ||
| ambs | allison: meanwhile got the solution, thanks :) | ||
| benabik | whiteknight: OIC. It's not defined in NQP, but it uses P6metaclass. | ||
| allison | ambs: cool! | ||
| whiteknight | benabik: yeah. p6object is part of the nqp runtime. Look in runtime/parrot/library/ for p6object | 18:55 | |
| ambs | moritz: just sent a pull request on Pod::PseudoPod::LaTeX. Would be great if you could review and release :) | ||
| benabik | Is the object system really as much of a mess as P6object seems to make it, or is P6object adding a pile of complication for some reason? | 19:00 | |
| benabik is looking at P6metaclass.getparrotclass | 19:01 | ||
| whiteknight | it is a mess | 19:02 | |
| jnthn__ | There's a reason 6model was created. :) | 19:07 | |
| tadzik | everything is a redesign, of a redesign, of a redesign... | ||
|
19:07
lucian left
|
|||
| jnthn__ | :) | 19:07 | |
| benabik | I am somewhat confused why P6object goes through all these hoops when PIR could do it with a single op. | 19:08 | |
| PerlJam | tadzik: redesigns all the way down? | ||
| sorear | hysterical reasons? P6object is quite old | 19:09 | |
| tadzik | PerlJam: it looks like so :) gengc, newpast, 6model, lorito... | ||
| PerlJam | benabik: I haven't looked at the code in a while but .... remember, you're looking backwards through time. | ||
| benabik | Is there a simple way to make a key in NQP? | ||
| whiteknight | ...lolno | 19:13 | |
| at least, not that I am aware | 19:14 | ||
| benabik grumps | |||
| tadzik | a key? | ||
| whiteknight | PLA does it. Let me look | ||
| benabik | tadzik: In PIR, they're made with [] constructs (like ['POST';'Sub']). Used for namespaces and some ops. | 19:15 | |
| whiteknight | github.com/Whiteknight/parrot-line...ory.nqp#L7 | ||
| it's ugly | |||
| benabik | whiteknight: Agreed, not pretty. | 19:16 | |
|
19:17
mj41 left
|
|||
| whiteknight | but it does work. copy+paste whatever you need and forget it ever happened | 19:18 | |
| benabik | whiteknight: Doesn't seem like it would be any faster or clearer than going through the P6Object hoops. | 19:19 | |
| whiteknight | oh, does P6object create keys too? | ||
| Key was really designed to be a compilation optimization. Keys are typically made by IMCC for keyed ops. | 19:20 | ||
| no effort has ever been made to make key creation easier | |||
| benabik | whiteknight: No, it does other oddities involving get_class and whatnot. | ||
| whiteknight: I was hoping NQP had a method to create compile-type constant keys instead of making them at runtim. | |||
| whiteknight | We have two problems: First, we store classes by name in a tree. Second, lots of people rely on the behavior of automatically creating Classes for built-in types if a lookup for an existing object fails | 19:21 | |
| so the logic for the class lookup is...disconcerting | |||
| oh, and different types of lookup are different. If we use a NameSpace PMC to lookup the class, that has different semantics from using a Key | 19:22 | ||
| so yeah, it's a mess | |||
| benabik | Bleck. I'll just trust the P6object isa method. | ||
| whiteknight | What we need eventually is user willingness to allow us to remove some of the bad, broken behaviors | 19:23 | |
| oh, and NameSpace PMCs are tightly coupled with Class PMCs. And there aren't just Class PMCs, built-in types use PMCProxy PMCs instead of class | |||
| I'm trying to remember a list of problems off the top of my head. I'm sure I could come up with more if I were looking at the code | 19:24 | ||
| benabik | whiteknight: Short version: merge 6model ASAP? | ||
| whiteknight | right. that's what I said | ||
| dukeleto | Email is trying to bury me today. | 19:26 | |
| whiteknight | benabik: but 6model doesn't completely save us. We still have tight coupling with NameSpaces. We still have a bad class storage and lookup mechanism, and we still have a disconnect between Objects and built-in types | 19:27 | |
| 6model forms the core of a huge number of huge refactors that we need | |||
| Lorito is, hopefully, going to provide another huge prerequisite for all of it | 19:28 | ||
| After that, it's old-fasioned elbow-grease to get to where we need to go | |||
| atrodo | so... much... magic... | ||
| whiteknight | tell me about it | 19:30 | |
| benabik | PIR is going to be M100 or something, isn't it? | ||
| whiteknight | there are some parts of parrot which are old and crufty, but there are other parts which are extremely poorly designed from top to bottom | ||
| the current object model falls into the later category | 19:31 | ||
|
19:43
unStatiK joined
|
|||
| Tene | +1 | 19:43 | |
| benabik: the big reason for convolutions in P6object is that Parrot's object model doesn't let you instantiate subclasses of Class. | 19:44 | ||
| The only things you can pass to the 'new' opcode are instances of the one core Class PMC. | 19:45 | ||
| sorear | I propose we remove Class and Object from Parrot, without replacement | 19:46 | |
| HLLs need their own object system _anyway_ | |||
| tadzik | aren't they meant to guarantee some piece of language interop? | 19:47 | |
| plobsing | language interop needn't (and shouldn't) occur because of a common class system, but rather due to a common *meta*-class system | 19:50 | |
| cotto_work | +1 | ||
| we'd be nuts to recommend a single object system | 19:51 | ||
| sorear | the most critical part of interop is the vtable system | ||
| in particular find_method and invoke, here | |||
| benabik | Shouldn't we have some way of doing operations like isa and does? | 19:53 | |
|
19:59
mj41 joined
|
|||
| whiteknight | sorear is right: What we really need to provide is the vtable system with a handful of basic operations defined | 20:01 | |
| not the huge sprawling monstrosity that Parrot's current vtables are | |||
| we need a handful of operations: find_method, get_attribute, set_attribute, invoke, etc. We also need a few common operations for allocation, destruction, marking for GC, etc | 20:02 | ||
| but that last set doesn't need to be in the vtable, it can be somewhere else | |||
| we probably also want an operation to walk children (for GC mark, serialization, and deep cloning) | 20:03 | ||
| dalek | rrot: 4b43b7c | (Fitz Elliott)++ | examples/languages/squaak/doc/tutorial_episode_1.pod: [doc] minor fix to squaak tutorial |
20:04 | |
| rrot: 27b401d | cotto++ | examples/languages/squaak/doc/tutorial_episode_1.pod: Merge pull request #134 from felliott/felliott/tutorial_fixes [doc] minor fix to squaak tutorial |
|||
| cotto_work | The magic merge button is magic. | ||
| whiteknight | cotto_work: yeah. Where was it during GCI again? | ||
| cotto_work | whiteknight: yeah. It doesn't obviate review, but wow does it make the other parts of a merge easy. | 20:05 | |
| benabik | Are files in parrot.git supposed to be .pm/.pl for perl5 and .nqp for NQP? | ||
| I've been poking at codetest and I'm now just down to it complaining about the POD in PCT, which is all POD6 | 20:06 | ||
| whiteknight | benabik: yeah, .nqp for NQP files | 20:09 | |
| cotto_work | whiteknight: we have some nqp files that are .pm | 20:11 | |
| opsc has a bunch | |||
| whiteknight | okaydokey then | 20:12 | |
| tadzik | . o O ( .nqpm ) | ||
| cotto_work | perhaps .nqpm would be better | ||
| whiteknight | haha, I had that same thought | ||
| benabik | cotto_work: Why doesn't podchecker complain about those? | ||
| cotto_work | benabik: beats me. Maybe it figures out that they're Pod and gives up. | 20:13 | |
| (as opposed to POD) | |||
|
20:15
jevin left
|
|||
| dalek | nxed: r1031 | NotFound++ | trunk/winxedst1.winxed: several fixes and improvements is scope search for functions, specially in hash |
20:22 | |
| benabik | cotto_work: opsc was added to its ignore list. I'm non-enthused about the way various tests have different ignore lists scattered about. | 20:25 | |
| cotto_work | benabik: with good reason | 20:26 | |
| it's not elegant or sustainable | |||
| We can continue to make it work, but finding a better solution would be nice. | 20:27 | ||
| benabik | cotto_work: My major complaint is the lack of docs. I've been having to do a lot of guessing and research into how the build and test systems work. | 20:28 | |
|
20:29
wagle left
20:30
whiteknight left
|
|||
| cotto_work | benabik: you're right that there's a lot of undocumented communal knowledge there. It's an unfortunate barrier to entry. | 20:32 | |
| I'm just used to poking around to find what I need, which isn't optimal. | 20:33 | ||
|
20:33
dodathome left
|
|||
| NotFound | Part of the problem is that when some part gets well documented someone feels the need to change that part ;) | 20:39 | |
| benabik | Details, details. | 20:40 | |
| NotFound | ... and change it, but without updating the docs. | ||
|
20:57
wagle joined
21:08
autark left,
autark joined
|
|||
| dalek | nxed: r1032 | NotFound++ | trunk/winxedst1.winxed: workarounds for problems in lexicals after recent changes |
21:09 | |
| benabik | Woo. My branch now builds, bootstraps, passes tests and passes codetest | 21:22 | |
| tadzik | great! | ||
| tadzik sleeps | 21:23 | ||
| benabik | Does .lex declare a new variable or just tie a register to a variable? | 21:27 | |
|
21:32
fperrad left
21:38
perlite_ joined
21:39
ambs left
|
|||
| sorear | benabik: the latter, I beleive | 21:39 | |
|
21:42
perlite left,
perlite_ is now known as perlite
21:46
Psyche^ joined
21:51
Patterner left,
Psyche^ is now known as Patterner
|
|||
| dalek | rrot: 2438c29 | cotto++ | docs/pdds/pdd19_pir.pod: make an example in pdd19 less ambiguous |
21:51 | |
| benabik | What effect does 'null $P99 \\n .lex '$*SUB', $P99' have? | 21:52 | |
|
21:54
lucian joined
|
|||
| jnthn__ | $*SUB, if looked up, would contain null | 21:56 | |
| (since register $P99 does) | |||
|
21:58
jsut_ joined
21:59
alester left
22:02
jsut left
|
|||
| benabik | I'm always worried about globals I can't find any use for. | 22:06 | |
| jnthn__ | benabik: Note it's a conextual, not a global. | 22:07 | |
| benabik | jnthn__: That one yes, but there's a @?BLOCK global that seems to be largely unused. | 22:08 | |
|
22:08
jsut joined
22:13
jsut_ left
22:24
lucian_ joined
|
|||
| benabik | I'm finding the ways that PCT mangles itself interesting to say the least. Any string containing a literal "\\x" or "\\u" is marked as unicode. | 22:26 | |
|
22:28
lucian left
22:31
bubaflub left
22:37
rohit_nsit08 left
22:47
soh_cah_toa joined
22:54
hercynium left
22:55
mj41 left
22:59
bubaflub joined
|
|||
| cotto_work | hi soh_cah_toa | 23:03 | |
|
23:04
mtk left
|
|||
| cotto_work | soh_cah_toa: I saw that I missed you yesterday. Did you figure out what you needed to figure out? | 23:04 | |
| soh_cah_toa | cotto_work: still confused by it. so does imcc insert .annotate automatically? | 23:10 | |
| cotto_work | soh_cah_toa: no. .annotate can't be used for PIR-level line numbers | ||
| well it can, but it isn't | |||
| and adding .annotate directives would change the line numbers | 23:11 | ||
|
23:12
mtk joined
|
|||
| cotto_work | The information that imcc returns is implicit and only applies to PIR code. The annotations that the annotations op returns are explicit and only apply to HLLs when they've been added explicitly. | 23:12 | |
| soh_cah_toa ponders | 23:15 | ||
| so for now - since i'm just trying to get pir support first - it looks like my only option is to use Parrot_sub_get_line_num_from_pc() | 23:18 | ||
| then in the future i guess i'm going to have to write code tailored for each hll i wish to support since there's no universal way to retrieve line numbers in all hll's | 23:19 | ||
| cotto_work | soh_cah_toa: annotations are the official mechanism for that. | ||
| soh_cah_toa | cotto_work: but you said they'll only be present if they're written explicitly | 23:20 | |
| sorear | PCT writes annotations explicitly | 23:21 | |
| try "perl6 --target=pir" | |||
| you'll see .annotate all over the place | |||
| cotto_work | soh_cah_toa: ^ | ||
| soh_cah_toa | oh ok. that's great | 23:22 | |
| cotto_work | PCT users get them for free, but it won't be a hard sell to get other compiler implementors to use them too. | ||
| soh_cah_toa | i'll just have to check the file extension first to determine which type of file being debugged: hll or pir | 23:23 | |
| sorear | especially since they also make backtraces work | ||
| "do you want meaningful line numbers in exception reports?" | |||
| cotto_work | exactly | ||
| very easy sell | |||
| soh_cah_toa | alright, that's not too bad. but that's still leaves the problem of Parrot_sub_get_line_from_pc() of not being accurate | 23:24 | |
| sorear | go look at exception.pmc | ||
| find out what it uses | |||
| soh_cah_toa looks | 23:25 | ||
| benabik | nqp: say('a' == 'b') | 23:28 | |
| p6eval | nqp: OUTPUT«1» | ||
| benabik | what? | ||
| sorear | benabik: you want eq | ||
| benabik: nqp is like perl in a lot of ways. one of them is separate numeric and string equality ops | |||
| benabik: anything that starts with a letter is 0 in numeric context | 23:29 | ||
| benabik | nqp: say('a' == 'aa') | ||
| p6eval | nqp: OUTPUT«1» | ||
| sorear | nqp: say('a' eq 'b') | ||
| p6eval | nqp: OUTPUT«0» | ||
| benabik | Using strings in numbers is wierd. Okay. | ||
|
23:31
theory left
|
|||
| bubaflub | dukeleto: ping | 23:35 | |
|
23:37
whiteknight joined
|
|||
| bubaflub | dukeleto: unping. i figured out how to generate GMP docs. | 23:40 | |
| dalek | sella/gh-pages: adfeeef | Whiteknight++ | winxed/index.md: first partial draft of docs for winxed |
23:46 | |
| sella: 6995493 | Whiteknight++ | s (2 files): whatever |
|||
| sella/gh-pages: 77df869 | Whiteknight++ | / (2 files): try to make h1 headers a little less obnoxious |
23:55 | ||
| whiteknight | whiteknight.github.com/Rosella/winxed/index.html | ||
| it's not perfect, but it is a start | |||
| bubaflub | whiteknight++ | 23:57 | |