Camelia, the Perl 6 bug

IRC log for #parrot, 2011-06-02

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:12 lucian hmm, apparently find_method, get_attr_str and friends want to completely own dispatch
00:13 lucian is there a way to just supplement dispatch, some vtable funcs that are called when find_method et al fail to find?
00:19 dalek winxed: r1030 | NotFound++ | trunk/t/harness:
00:19 dalek winxed: allow harness to run the tests using a installed driver
00:19 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=1030
00:25 lucian apparently there isn't. annoying
00:26 dalek parrot/invokable-fix: ee17ddd | cotto++ | src/call/pcc.c:
00:26 dalek parrot/invokable-fix: add experimental fix for a bug found by jnthn++
00:26 dalek parrot/invokable-fix: review: https://github.com/parrot/parrot/commit/ee17ddde9f
00:36 * cotto_work goes home
00:37 jsut joined #parrot
00:42 jsut_ left #parrot
00:55 mikehh left #parrot
01:01 cotto ohai
01:02 cotto I'd appreciate testing on the invokable-fix branch.
01:04 davidfetter left #parrot
01:09 lucian left #parrot
01:11 lucian joined #parrot
01:22 lucian left #parrot
01:29 soh_cah_toa i forget, what type is PARROT_INTERP? i can't remember whether it's Interp or parrot_interp_t
01:30 cotto parrot_interp_t
01:32 soh_cah_toa is there any difference between the two? could i cast one as the other?
01:35 cotto doesn't look like there's a big difference
01:35 cotto from parrot.h: typedef struct parrot_interp_t Interp;
01:36 soh_cah_toa yay, more unnecessary duplicate types to remember ;)
01:42 dalek parrot: ee17ddd | cotto++ | src/call/pcc.c:
01:42 dalek parrot: add experimental fix for a bug found by jnthn++
01:42 dalek parrot: review: https://github.com/parrot/parrot/commit/ee17ddde9f
01:42 dalek parrot: 8f7ca28 | cotto++ | src/call/pcc.c:
01:42 dalek parrot: Merge branch 'invokable-fix'
01:42 dalek parrot: review: https://github.com/parrot/parrot/commit/8f7ca283d4
01:43 cotto jnthn__, the fix is in Parrot master and your example seems to work fine without the VTABLE_does hack in nqp.
01:44 cotto Rakudo master also looks good
01:44 Kulag left #parrot
01:45 Kulag joined #parrot
01:46 cotto Hopefully nobody has to think about this again in the future.
01:50 woosley joined #parrot
02:03 mikehh joined #parrot
02:49 particle left #parrot
02:50 particle joined #parrot
02:54 theory joined #parrot
03:07 bubaflub cotto: did you run any benchmarks to see if that fix gave a speed boost?  just curious.
03:16 Andy joined #parrot
03:26 soh_cah_toa left #parrot
03:41 he left #parrot
03:42 mtk left #parrot
03:49 mtk joined #parrot
03:57 hudnix left #parrot
04:06 cotto bubaflub, I didn't.  It'd be interesting to find out.  jnthn expects that it'd give a small boost.
04:07 bubaflub cotto: ok.  i'm heading to bed in a bit or i'd run it myself.
04:10 cotto 'night then
04:18 bubaflub left #parrot
04:35 Andy left #parrot
04:36 plobsing left #parrot
04:36 plobsing joined #parrot
05:59 fperrad joined #parrot
06:17 theory left #parrot
07:11 rohit_nsit08 joined #parrot
07:13 woosley left #parrot
07:27 mj41 joined #parrot
08:08 rohit_nsit08 left #parrot
08:19 rohit_nsit08 joined #parrot
08:36 preflex left #parrot
08:40 preflex joined #parrot
08:44 kj joined #parrot
08:45 kj is now known as kjs
08:54 rohit_nsit08 left #parrot
09:04 rohit_nsit08 joined #parrot
09:21 woosley joined #parrot
09:51 woosley left #parrot
10:11 mrwall-e joined #parrot
10:31 rohit_nsit08 left #parrot
10:37 bacek joined #parrot
10:48 rohit_nsit08 joined #parrot
10:51 mrwall-e left #parrot
11:16 kjs left #parrot
11:17 lucian joined #parrot
11:30 mtk left #parrot
11:31 rohit_nsit08 left #parrot
11:36 mtk joined #parrot
11:40 lucian left #parrot
11:40 lucian joined #parrot
11:42 lucian left #parrot
11:42 contingencyplan left #parrot
11:46 lucian joined #parrot
11:47 kid51 joined #parrot
11:50 kid51 commit 8f7ca283d: linux/i386: make fulltest PASS; darwin/ppc: make test PASS
11:58 lucian is there any way to get winxed line numbers from  imcc or runtime exceptions?
12:06 lucian NotFound: i think i found a bug in winxed. and i really appreciate the comments in the generated PIR :)
12:19 redicaps joined #parrot
12:22 kid51 left #parrot
12:23 bluescreen joined #parrot
12:29 JimmyZ joined #parrot
12:33 whiteknight joined #parrot
12:54 bubaflub joined #parrot
13:22 dalek nqp: 67c0a4c | jonathan++ | src/ops/nqp.ops:
13:22 dalek nqp: Teach many NQP ops about the existence of containers (just relies on the standard 6model container API).
13:22 dalek nqp: review: https://github.com/perl6/nqp/commit/67c0a4c1c4
13:22 dalek nqp: f054311 | jonathan++ | src/ops/nqp.ops:
13:22 dalek nqp: Make sure we don't treat container type objects as if they're actual living containers.
13:22 dalek nqp: review: https://github.com/perl6/nqp/commit/f054311452
13:39 lucian left #parrot
13:39 lucian joined #parrot
14:00 lucian i get "Null PMC access in invoke()" in https://bitbucket.org/lucian1900/puffin/s​rc/1229846fa668/Objects/typeobject.winxed
14:00 lucian i can't see any calls whatsoever done at runtime, there's just declarations
14:01 bluescreen left #parrot
14:03 lucian hmm, i think what happens is parrot looks for 'main', gets a null and tries to call it
14:05 davidfetter joined #parrot
14:08 hudnix joined #parrot
14:13 whiteknight winxed looks for main and invokes it blindly
14:14 moritz could probably be made more awesome :-)
14:14 whiteknight lucian: are you trying to run that function directly?
14:16 lucian whiteknight: no, i'm not running anything. winxed does invoke main blindly
14:19 whiteknight yeah, if you do "winxed typeobject.winxed", it will look for main blindly to execute it
14:19 whiteknight the error handling of the winxed driver program leaves much to be desired, and that is a great example case
14:19 hercynium joined #parrot
14:20 whiteknight if you want to compile that file down to .pbc, you would type "winxed -c -o typeobject.pir typeobject.winxed"
14:20 whiteknight the -c prevents it from looking for main
14:20 whiteknight "compile that file down to .pir"
14:26 lucian left #parrot
14:26 lucian joined #parrot
14:26 atrodo whiteknight> "IMCC.pm is still a "ball of mud" at the moment," from http://search.cpan.org/~jgoff/parrot​-0.0.8.1/languages/perl6/P6C/IMCC.pm
14:26 whiteknight heh
14:27 lucian whiteknight: yeah, i know
14:27 atrodo Some things never change
14:28 lucian whiteknight: i think i'll have to figure out how to run parrot things easily from python's distutils
14:28 whiteknight okay
14:29 lucian i'm still finding places where my object model is incorrect, i really do need more tests
14:30 whiteknight lucian: where are your tests?
14:31 lucian whiteknight: uh, in a main() in core :)
14:32 whiteknight oh fun
14:41 lucian dreadful, isn't it?
14:44 dalek parrot: bcd1d99 | fperrad++ | t/src/extend_vtable.t:
14:44 dalek parrot: [t] fix shebang
14:44 JimmyZ left #parrot
14:44 dalek parrot: review: https://github.com/parrot/parrot/commit/bcd1d99f1d
14:44 JimmyZ joined #parrot
14:47 alester joined #parrot
15:09 ambs joined #parrot
15:16 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
15:16 whiteknight you can write a setup.winxed instead, if you prefer
15:16 whiteknight (I'm always looking for ways to minimize PIR"
15:19 lucian yeah, sure. neither option appears to have any docs, so it's ok :)
15:22 dalek parrot: e44bbc5 | fperrad++ | t/dynpmc/foo- (10 files):
15:22 dalek parrot: [t] fix shebang
15:22 dalek parrot: review: https://github.com/parrot/parrot/commit/e44bbc5495
15:23 whiteknight There is a Rosella.Winxed library that adds winxed-building functions to Parrot's distutils
15:23 whiteknight if you're looking to get that moving quickly
15:24 lucian whiteknight: yeah, i noticed
15:25 lucian 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%
15:25 lucian i guess i'm spoilt by python
15:25 whiteknight yeah, documentation hasn't always been our strong point
15:26 whiteknight 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 whiteknight like, why write more PIR documentation when I hate PIR and want to change it completely?
15:26 whiteknight I would much rather write winxed documentation, which I'm doing now
15:27 * lucian nods
15:28 fperrad Lua is broken with current Parrot :
15:28 fperrad $ parrot lua.pbc
15:28 fperrad attempt to access code outside of current code segment
15:28 fperrad current instr.: 'main' pc 4 (lua.pir:90)
15:29 whiteknight fperrad: darn. Any idea when that started?
15:30 fperrad I know RELEASE_3_4_0-23 is ok
15:31 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:32 benabik The "nice" thing about my GSoC project is that NQP is in PAST so compiling newPAST finds errors in my code.
15:34 whiteknight yes, that is nice
15:34 benabik "error:imcc:syntax error ... somewhere"
15:34 benabik The not-so-nice part is that I then have to dig through NQP-rx code to find what bit of PAST I broke.
15:36 benabik Wait...  I compiled this using parrot-nqp from master.  That's not so good.
15:36 dukeleto ~~
15:37 tadzik benabik: are you using The Nqp?
15:38 benabik tadzik: I'm using nqp-rx aka parrot-nqp.  So no 6model or other new fancy bits.
15:39 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 #parrot
15:48 lucian_ joined #parrot
15:49 hercynium_ joined #parrot
15:49 benabik And it turns out it was just bad PIR->NQP translation on my part.  *sigh*
15:51 hercynium__ joined #parrot
15:53 lucian left #parrot
15:53 hercynium left #parrot
15:53 hercynium__ is now known as hercynium
15:55 hercynium_ left #parrot
15:56 dmalcolm joined #parrot
15:59 JimmyZ left #parrot
16:12 davidfetter left #parrot
16:12 redicaps left #parrot
16:12 cotto_work ~~
16:18 redicaps joined #parrot
16:22 lucian_ is now known as lucian
16:22 * lucian waves at cotto_work
16:23 cotto_work hi lucian
16:24 lucian_ joined #parrot
16:25 dalek nqp: 165e737 | jonathan++ | src/ (8 files):
16:25 dalek nqp: Add clone to REPR API.
16:25 dalek nqp: review: https://github.com/perl6/nqp/commit/165e7371f6
16:27 theory joined #parrot
16:29 lucian left #parrot
16:30 mj41 joined #parrot
16:39 cotto_work dukeleto: your post got on hacker news
16:39 cotto_work no comments yet though
16:41 lucian__ joined #parrot
16:41 alester cotto: linky?
16:42 cotto_work http://news.ycombinator.com/item?id=2611997 (blog post at http://leto.net/perl/2011/05/what-is-m0.html )
16:43 lucian joined #parrot
16:44 alester "A few years back, Parrot had a JIT compiler, from which many lessoned were learned." =~ s/lessoned/lessons/;
16:45 lucian_ left #parrot
16:46 redicaps left #parrot
16:47 lucian__ left #parrot
16:48 dukeleto cotto_work: whoa
16:48 dukeleto alester: danke
16:52 cotto_work dukeleto: don't forget us little people now that you've hit the big time.
16:56 benabik Does anybody know if `$obj.$meth();` does what I expect in NQP-rx?
16:57 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
16:57 tadzik no evalbot?
16:57 cotto_work rakudo: say "orly?"
16:57 p6eval rakudo 048573: OUTPUT«orly?␤»
16:57 tadzik nqprx: class A { method b { say("ok"); } }; my $foo := A.new(); my $b := "b"; $foo.$b()
16:57 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)␤»
16:57 tadzik oic
16:58 moritz method b() helps
16:58 tadzik nqprx: class A { method b() { say("ok"); } }; my $foo := A.new(); my $b := "b"; $foo.$b()
16:58 p6eval nqprx: OUTPUT«Confused at line 1, near "$foo.$b()"␤current instr.: 'parrot;HLL;Grammar;panic' pc 635 (src/cheats/hll-compiler.pir:206)␤»
16:58 tadzik nqprx: class A { method b() { say("ok"); } }; my $foo := A.new(); my $b := "b"; $foo.b()
16:58 p6eval nqprx: OUTPUT«ok␤»
16:58 whiteknight we need a winxed evalbot
16:58 tadzik benabik: seems that it does not
16:58 benabik I guess it doesn't.  Thanks tadzik++ for coming up with a simple test.
16:59 moritz tadzik: try ."$b"
16:59 moritz that would be the Perl 6 way
16:59 tadzik nqprx: class A { method b() { say("ok"); } }; my $foo := A.new(); my $b := "b"; $foo."$b"()
16:59 p6eval nqprx: OUTPUT«ok␤»
16:59 benabik moritz++
16:59 tadzik oh, gotcha
16:59 tadzik moritz++
16:59 moritz whiteknight: I can incorporate winxed into p6eval
16:59 dukeleto cotto_work: i gave links. what else should I say?
16:59 dukeleto cotto_work: chromatic++ is famous for not having a title :)
16:59 cotto_work dukeleto: this is true
17:00 dalek nqp: f338bd8 | jonathan++ | src/6model/reprs/ (6 files):
17:00 dalek nqp: Avoid name clash on UNIX-y platforms; should fix build breakage reported by tadzik++ and moritz++.
17:00 dalek nqp: review: https://github.com/perl6/nqp/commit/f338bd87c4
17:00 moritz whiteknight: particularly if you write a small shell script like those in https://github.com/perl6/eval​bot/tree/master/build-scripts that rebuilds winxed (to be run from a cron job)
17:00 whiteknight okay, I can look at that
17:04 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 TimToady (so that there's never any need for 'use strict refs')
17:05 benabik TimToady: Hard ref as in `$b = &Class::meth` ?
17:05 rohit_nsit08 joined #parrot
17:12 dukeleto cotto_work: evidently lots of people read this "hacker news" thing
17:12 cotto_work dukeleto: yup
17:19 TimToady benabik: nodnod
17:30 dalek website: lucian++ | 1+2. And objects!
17:30 dalek website: http://www.parrot.org/content/12.-and-objects
17:30 TimToady benabik: to put it another way, $foo.$b is just a funny way to write $b($foo)
17:31 benabik TimToady: And `$b($foo)` doesn't make any sense if $b is "method" instead of &method.  Perfectly reasonable.  :-)
17:33 dukeleto lucian: nice blarg toast
17:35 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:36 lucian dukeleto: bad formatting, i know
17:38 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 dukeleto lucian: links make the web taste better
17:38 lucian dukeleto: right. i'll do some editing
17:52 lucian dukeleto: added some links
17:52 lucian does it get syndicated when posting, or later?
18:08 dukeleto lucian: stuff usually works out.
18:08 dukeleto lucian: i.e. i change blog posts after syndication, and the syndicates usually update after their caching interval
18:10 lucian dukeleto: i see
18:14 * benabik should have re-bootstrapped PCT before starting to make changes.  Would have noticed a bug way way earlier that way.
18:25 dalek parrot/gh-pages: a5ac1e3 | dukeleto++ | index.html:
18:25 dalek parrot/gh-pages: github generated gh-pages branch
18:25 dalek parrot/gh-pages: review: https://github.com/parrot/parrot/commit/a5ac1e3ad2
18:26 * dukeleto added github pages to parrot.git
18:26 benabik Yay?
18:26 dukeleto http://parrot.github.com/parrot/
18:26 dukeleto everyone, feel free to make that site prettier, by editing the gh-pages branch
18:27 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.
18:28 Coke_ one is a key. one is a... namespace?
18:28 Coke_ ISTR there is a special syntax you can use to force nqp to say "this opcode argument is really of type "key")
18:28 benabik POST::Sub becomes `    get_hll_global $P43, ["POST"], "Sub"`
18:29 PerlJam benabik: what happens if you put POST::Sub in quotes?
18:29 Coke_ then it's a string, not a key.
18:30 PerlJam Coke_: aye, I thought nqp-rx autosplit those and turned them into a key.
18:30 PerlJam Coke_: but barring that ... what you said about special syntax.
18:30 Coke_ perljam I think if you use that argument type specifier.
18:31 benabik PerlJam: That doesn't seem to work either.  :-/
18:34 tadzik dukeleto: is that webpage layout something popular? I think cardinal looks similar
18:36 benabik I'm feeling like pir::isa is not the right way to do this, but I can't find anything else.
18:37 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:38 tadzik oh, funny
18:38 dukeleto benabik: what are you trying to use isa to accomplish?
18:39 benabik dukeleto: Trying to wrap $post in a POST::Sub unless $post is a POST::Sub
18:40 contingencyplan joined #parrot
18:40 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 ?
18:41 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?
18:41 dukeleto benabik: also, you probably want to stringify "POST::Sub" before giving it to isa
18:42 benabik PerlJam: NQP has an isa?  That's handy.  (This is actually code bacek wrote that I'm trying to fix.)
18:43 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 #parrot
18:45 benabik I'm thinking isa__IPS doesn't handle namespaces.
18:46 benabik But $post.isa(POST::Sub) appears to have worked just fine.  Thanks, PerlJam++
18:47 PerlJam benabik: all PCT::Nodes have an .isa() method
18:48 PerlJam benabik: check what's in PCT/Note.pir for more
18:48 tadzik benabik: is your gsoc plan public somewhere?
18:48 PerlJam benabik: but ... what dukeleto said if you need something more complicated
18:49 benabik tadzik: http://www.google-melange.com/gsoc/proposa​l/review/google/gsoc2011/brian_gernhardt/1
18:50 davidfetter joined #parrot
18:50 dodathome joined #parrot
18:51 ambs \o/
18:51 tadzik benabik: nice
18:52 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
18:52 benabik whiteknight: P6object <- Capture <- PCT::Node ?
18:53 whiteknight P6object is the silent partner. It's automatically added as a Parent type of any class defined in NQP
18:54 whiteknight so Capture is a built-in type, right? So PCT::Node has two parent classes: Capture and P6object
18:54 allison ambs: sure
18:54 ambs allison: meanwhile got the solution, thanks :)
18:54 benabik whiteknight: OIC.  It's not defined in NQP, but it uses P6metaclass.
18:54 allison ambs: cool!
18:55 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 :)
19:00 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:01 * benabik is looking at P6metaclass.getparrotclass
19:02 whiteknight it is a mess
19:07 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 #parrot
19:07 jnthn__ :)
19:08 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?
19:09 sorear hysterical reasons?  P6object is quite old
19:09 tadzik PerlJam: it looks like so :) gengc, newpast, 6model, lorito...
19:09 PerlJam benabik: I haven't looked at the code in a while but .... remember, you're looking backwards through time.
19:09 benabik Is there a simple way to make a key in NQP?
19:13 whiteknight ...lolno
19:14 whiteknight at least, not that I am aware
19:14 * benabik grumps
19:14 tadzik a key?
19:14 whiteknight PLA does it. Let me look
19:15 benabik tadzik: In PIR, they're made with [] constructs (like ['POST';'Sub']).  Used for namespaces and some ops.
19:15 whiteknight https://github.com/Whiteknight/parrot-linear-algeb​ra/blob/master/t/testlib/matrixtestfactory.nqp#L7
19:15 whiteknight it's ugly
19:16 benabik whiteknight: Agreed, not pretty.
19:17 mj41 left #parrot
19:18 whiteknight but it does work. copy+paste whatever you need and forget it ever happened
19:19 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?
19:20 whiteknight Key was really designed to be a compilation optimization. Keys are typically made by IMCC for keyed ops.
19:20 whiteknight no effort has ever been made to make key creation easier
19:20 benabik whiteknight: No, it does other oddities involving get_class and whatnot.
19:20 benabik whiteknight: I was hoping NQP had a method to create compile-type constant keys instead of making them at runtim.
19:21 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 whiteknight so the logic for the class lookup is...disconcerting
19:22 whiteknight 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 whiteknight so yeah, it's a mess
19:22 benabik Bleck.  I'll just trust the P6object isa method.
19:23 whiteknight What we need eventually is user willingness to allow us to remove some of the bad, broken behaviors
19:23 whiteknight 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
19:24 whiteknight 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?
19:24 whiteknight right. that's what I said
19:26 dukeleto Email is trying to bury me today.
19:27 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 whiteknight 6model forms the core of a huge number of huge refactors that we need
19:28 whiteknight Lorito is, hopefully, going to provide another huge prerequisite for all of it
19:28 whiteknight After that, it's old-fasioned elbow-grease to get to where we need to go
19:28 atrodo so... much... magic...
19:30 whiteknight tell me about it
19:30 benabik PIR is going to be M100 or something, isn't it?
19:30 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
19:31 whiteknight the current object model falls into the later category
19:43 unStatiK joined #parrot
19:43 Tene +1
19:44 Tene benabik: the big reason for convolutions in P6object is that Parrot's object model doesn't let you instantiate subclasses of Class.
19:45 Tene The only things you can pass to the 'new' opcode are instances of the one core Class PMC.
19:46 sorear I propose we remove Class and Object from Parrot, without replacement
19:46 sorear HLLs need their own object system _anyway_
19:47 tadzik aren't they meant to guarantee some piece of language interop?
19:50 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
19:51 cotto_work we'd be nuts to recommend a single object system
19:51 sorear the most critical part of interop is the vtable system
19:51 sorear in particular find_method and invoke, here
19:53 benabik Shouldn't we have some way of doing operations like isa and does?
19:59 mj41 joined #parrot
20:01 whiteknight sorear is right: What we really need to provide is the vtable system with a handful of basic operations defined
20:01 whiteknight not the huge sprawling monstrosity that Parrot's current vtables are
20:02 whiteknight 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 whiteknight but that last set doesn't need to be in the vtable, it can be somewhere else
20:03 whiteknight we probably also want an operation to walk children (for GC mark, serialization, and deep cloning)
20:04 dalek parrot: 4b43b7c | (Fitz Elliott)++ | examples/languages/squaak/d​oc/tutorial_episode_1.pod:
20:04 dalek parrot: [doc] minor fix to squaak tutorial
20:04 dalek parrot: review: https://github.com/parrot/parrot/commit/4b43b7cd63
20:04 dalek parrot: 27b401d | cotto++ | examples/languages/squaak/d​oc/tutorial_episode_1.pod:
20:04 dalek parrot: Merge pull request #134 from felliott/felliott/tutorial_fixes
20:04 dalek parrot:
20:04 cotto_work The magic merge button is magic.
20:04 dalek parrot: [doc] minor fix to squaak tutorial
20:04 dalek parrot: review: https://github.com/parrot/parrot/commit/27b401df44
20:04 whiteknight cotto_work: yeah. Where was it during GCI again?
20:05 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?
20:06 benabik 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:09 whiteknight benabik: yeah, .nqp for NQP files
20:11 cotto_work whiteknight: we have some nqp files that are .pm
20:11 cotto_work opsc has a bunch
20:12 whiteknight okaydokey then
20:12 tadzik . o O ( .nqpm )
20:12 cotto_work perhaps .nqpm would be better
20:12 whiteknight haha, I had that same thought
20:12 benabik cotto_work: Why doesn't podchecker complain about those?
20:13 cotto_work benabik: beats me.  Maybe it figures out that they're Pod and gives up.
20:13 cotto_work (as opposed to POD)
20:15 jevin left #parrot
20:22 dalek winxed: r1031 | NotFound++ | trunk/winxedst1.winxed:
20:22 dalek winxed: several fixes and improvements is scope search for functions, specially in hash
20:22 dalek winxed: expressions and avoid repeated .const 'Sub' in the same block
20:22 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=1031
20:25 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:26 cotto_work benabik: with good reason
20:26 cotto_work it's not elegant or sustainable
20:27 cotto_work We can continue to make it work, but finding a better solution would be nice.
20:28 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:29 wagle left #parrot
20:30 whiteknight left #parrot
20:32 cotto_work benabik: you're right that there's a lot of undocumented communal knowledge there.  It's an unfortunate barrier to entry.
20:33 cotto_work I'm just used to poking around to find what I need, which isn't optimal.
20:33 dodathome left #parrot
20:39 NotFound Part of the problem is that when some part gets well documented someone feels the need to change that part ;)
20:40 benabik Details, details.
20:40 NotFound ... and change it, but without updating the docs.
20:57 wagle joined #parrot
21:08 autark left #parrot
21:08 autark joined #parrot
21:09 dalek winxed: r1032 | NotFound++ | trunk/winxedst1.winxed:
21:09 dalek winxed: workarounds for problems in lexicals after recent changes
21:09 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=1032
21:22 benabik Woo.  My branch now builds, bootstraps, passes tests and passes codetest
21:22 tadzik great!
21:23 * tadzik sleeps
21:27 benabik Does .lex declare a new variable or just tie a register to a variable?
21:32 fperrad left #parrot
21:38 perlite_ joined #parrot
21:39 ambs left #parrot
21:39 sorear benabik: the latter, I beleive
21:42 perlite left #parrot
21:42 perlite_ is now known as perlite
21:46 Psyche^ joined #parrot
21:51 Patterner left #parrot
21:51 Psyche^ is now known as Patterner
21:51 dalek parrot: 2438c29 | cotto++ | docs/pdds/pdd19_pir.pod:
21:51 dalek parrot: make an example in pdd19 less ambiguous
21:51 dalek parrot: review: https://github.com/parrot/parrot/commit/2438c29d40
21:52 benabik What effect does 'null $P99 \n .lex '$*SUB', $P99' have?
21:54 lucian joined #parrot
21:56 jnthn__ $*SUB, if looked up, would contain null
21:56 jnthn__ (since register $P99 does)
21:58 jsut_ joined #parrot
21:59 alester left #parrot
22:02 jsut left #parrot
22:06 benabik I'm always worried about globals I can't find any use for.
22:07 jnthn__ benabik: Note it's a conextual, not a global.
22:08 benabik jnthn__: That one yes, but there's a @?BLOCK global that seems to be largely unused.
22:08 jsut joined #parrot
22:13 jsut_ left #parrot
22:24 lucian_ joined #parrot
22:26 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:28 lucian left #parrot
22:31 bubaflub left #parrot
22:37 rohit_nsit08 left #parrot
22:47 soh_cah_toa joined #parrot
22:54 hercynium left #parrot
22:55 mj41 left #parrot
22:59 bubaflub joined #parrot
23:03 cotto_work hi soh_cah_toa
23:04 mtk left #parrot
23:04 cotto_work soh_cah_toa: I saw that I missed you yesterday.  Did you figure out what you needed to figure out?
23:10 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
23:10 cotto_work well it can, but it isn't
23:11 cotto_work and adding .annotate directives would change the line numbers
23:12 mtk joined #parrot
23:12 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:15 * soh_cah_toa ponders
23:18 soh_cah_toa 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:19 soh_cah_toa 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.
23:20 soh_cah_toa cotto_work: but you said they'll only be present if they're written explicitly
23:21 sorear PCT writes annotations explicitly
23:21 sorear try "perl6 --target=pir"
23:21 sorear you'll see .annotate all over the place
23:21 cotto_work soh_cah_toa: ^
23:22 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.
23:23 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
23:23 sorear "do you want meaningful line numbers in exception reports?"
23:23 cotto_work exactly
23:23 cotto_work very easy sell
23:24 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
23:24 sorear find out what it uses
23:25 * soh_cah_toa looks
23:28 benabik nqp: say('a' == 'b')
23:28 p6eval nqp: OUTPUT«1␤»
23:28 benabik what?
23:28 sorear benabik: you want eq
23:28 sorear benabik: nqp is like perl in a lot of ways.  one of them is separate numeric and string equality ops
23:29 sorear benabik: anything that starts with a letter is 0 in numeric context
23:29 benabik nqp: say('a' == 'aa')
23:29 p6eval nqp: OUTPUT«1␤»
23:29 sorear nqp: say('a' eq 'b')
23:29 p6eval nqp: OUTPUT«0␤»
23:29 benabik Using strings in numbers is wierd.  Okay.
23:31 theory left #parrot
23:35 bubaflub dukeleto: ping
23:37 whiteknight joined #parrot
23:40 bubaflub dukeleto: unping.  i figured out how to generate GMP docs.
23:46 dalek Rosella/gh-pages: adfeeef | Whiteknight++ | winxed/index.md:
23:46 dalek Rosella/gh-pages: first partial draft of docs for winxed
23:46 dalek Rosella/gh-pages: review: https://github.com/Whiteknig​ht/Rosella/commit/adfeeefb43
23:46 dalek Rosella: 6995493 | Whiteknight++ | s (2 files):
23:46 dalek Rosella: whatever
23:46 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/6995493343
23:55 dalek Rosella/gh-pages: 77df869 | Whiteknight++ | / (2 files):
23:55 dalek Rosella/gh-pages: try to make h1 headers a little less obnoxious
23:55 dalek Rosella/gh-pages: review: https://github.com/Whiteknig​ht/Rosella/commit/77df869f44
23:55 whiteknight http://whiteknight.github.co​m/Rosella/winxed/index.html
23:55 whiteknight it's not perfect, but it is a start
23:57 bubaflub whiteknight++

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced