Camelia, the Perl 6 bug

IRC log for #parrot, 2009-05-23

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:00 jonathan bacek: Please can I suggest checking Rakudo builds against your changes too? It tends to exercise some bits taht Parrot's test suite doesn't always.
00:00 jonathan bacek: Optimizations are nice, but of course risky. :-)
00:00 bacek jonathan: of cause.
00:01 jonathan bacek++ for working to make Parrot faster though :-)
00:01 Infinoid jonathan: I just did test rakudo, and of course it failed horribly... working on that now :)
00:01 Infinoid purl, less multi?
00:01 purl less multi is a rallying cry, like more cowbell
00:01 Infinoid purl++
00:03 cotto darbelo, possibly.  You should be aware that MULTIs are *much* slower than VTABLE functions.
00:04 jonathan cotto: The worst part is that they're slower even with a level of cache stuck in front of them...
00:04 nopaste "bacek" at 122.110.62.127 pasted "Flowless victory. Benchmarking after bumping numbers back." (12 lines) at http://nopaste.snit.ch/16646
00:04 bacek 561/111
00:04 purl 5.05405405405405
00:04 * bacek stealing chromatic's hat :)
00:05 cotto VTABLEs are just a couple pointer derefs plus a function call, but MULTIs are considerably more complex.
00:05 jonathan bacek: Can you describe to me in like 2 sentences what you've done to achieve that? I haven't been following the patches too closely (you're too fast ;-))
00:05 bacek jonathan: kill MMD dispatch for VTABLE calls
00:05 jonathan bacek: Is allison OK with this?
00:06 bacek jonathan: She is author of TT#452 :)
00:06 jonathan bacek: Did you actually kill the option of having MMD for VTABLE calls, or just make a bunch of PMCs not need to be multi-dispatched?
00:06 bacek latter.
00:07 bacek We still use MMD when needed.
00:07 jonathan bacek: OK, I just read the ticket.
00:07 jonathan OK, great.
00:07 bacek But I think that we don't need MMD for VTABLEs...
00:07 jonathan bacek++, and ++ to others working on that too. :-)
00:09 bacek Infinoid: I've merged trunk into branch. dcommiting. have to run
00:09 cotto heh.  drive-by merging
00:09 bacek Infinoid: can you test rakudo against branch please?
00:09 Infinoid will do
00:10 bacek Infinoid: thanks
00:10 * jonathan -> bed, night all
00:12 allison joined #parrot
00:15 Infinoid msg bacek I'm getting the same errors building rakudo against the tt452 branch after you merged trunk changes into branch.
00:15 purl Message for bacek stored.
00:16 bacek OH HAI.
00:17 bacek realclean required after merge. There is new "hll_new" op added
00:20 Infinoid Did that, no change
00:20 dalek parrot: r39072 | bacek++ | branches/tt452_reduce_mmd (110 files):
00:20 dalek parrot: Merge branch 'master' into tt452_reduce_mmd_local
00:20 dalek parrot: Conflicts:
00:20 dalek parrot: src/pmc/complex.pmc
00:20 dalek parrot: src/pmc/scalar.pmc
00:20 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39072/
00:23 Infinoid it's barfing on lines like:     $P0 = root_new ['parrot';'Perl6Scalar'], self
00:23 Infinoid the error is: error:imcc:syntax error, unexpected '[', expecting '(' ('[')
00:23 dalek parrot: r39073 | chromatic++ | trunk/docs/book/ch06_nqp.pod:
00:23 dalek parrot: [book] Edited NQP chapter.  It needs review and expansion.
00:23 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39073/
00:24 bacek Infinoid: did you make realclean in Rakudo as well? It works on my box...
00:24 Infinoid yes, I realcleaned and rebuilt both
00:24 bacek strange...
00:24 purl strange is but true
00:24 Infinoid how are you doing this on your box?
00:24 * Infinoid is configuring rakudo with: perl Configure.pl --parrot-config=../tt452_reduce_mmd/parrot_config
00:24 dalek decnum-dynpmcs: r54 | darbelo++ | trunk/t/rounding_mode.t:
00:24 dalek decnum-dynpmcs: Update tests for the DecContext -> DecNumContext rename.
00:24 dalek decnum-dynpmcs: review: http://code.google.com/p/decn​um-dynpmcs/source/detail?r=54
00:25 bacek Infinoid: similar...
00:25 purl similar are immensely useful
00:25 Infinoid ok.
00:25 bacek ok.
00:25 * Infinoid checks to see if he has an installed parrot
00:25 bacek Gotta go. See you.
00:25 Infinoid ok, seeya
00:49 dalek decnum-dynpmcs: r55 | darbelo++ | trunk/ (2 files):
00:49 dalek decnum-dynpmcs: This should be the last DecContext -> DecNumContext renames.
00:49 dalek decnum-dynpmcs: Next time I rename something I'll ack before commiting.
00:49 dalek decnum-dynpmcs: review: http://code.google.com/p/decn​um-dynpmcs/source/detail?r=55
01:24 eternaleye joined #parrot
01:28 cotto joined #parrot
01:59 Eevee joined #parrot
02:16 Coke joined #parrot
02:18 Coke Whiteknight: ping.
02:19 Whiteknight Coke: pong
02:19 Coke is that branch baked for testing? =-)
02:21 Whiteknight nope, not yet
02:21 Whiteknight it's turning out to be more frustrating of a problem then I thought
02:25 Infinoid is it a matter of figuring out how rakudo did it? :)
02:26 Whiteknight did rakudo do it?
02:27 Whiteknight and what is "it" here?
02:27 Infinoid undef assignment, or Ref avoidance, or whatever.
02:27 Infinoid I don't know nearly as much about PMC stuff as you.  I'm just offering to look for more needles
02:28 Whiteknight I think we have the method figured out, it's just implementing it that's a pain
02:28 Whiteknight but I'll get it
02:28 Whiteknight until then, I think I'll get some sleep. Goodnight
02:28 Infinoid sleep well!
02:36 janus joined #parrot
02:41 Coke this is tcl's big blocker; I appreciate you looking at it.
03:25 dalek parrot: r39074 | jkeenan++ | trunk/src/pmc/filehandle.pmc:
03:25 dalek parrot: Silence one flaky c_indent coding standard failure.
03:25 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39074/
03:34 cotto Is partcl down to one blocker?
03:35 cotto Coke++ for keeping with it
04:22 mikehh joined #parrot
04:30 Infinoid NotFound: I've just packed up my win32 box (I'm moving to another apartment) so I won't be able to work on win32 filehandle/pipe stuff this weekend
04:44 Theory joined #parrot
04:54 tetragon joined #parrot
05:01 cognominal joined #parrot
05:52 dalek TT #698 closed by Infinoid++: [PATCH] Mac OS X build fix
06:18 flh joined #parrot
07:18 iblechbot joined #parrot
08:08 bsdz joined #parrot
08:33 flh joined #parrot
09:28 santhalus joined #parrot
10:17 cognominal joined #parrot
10:21 skids joined #parrot
10:23 flh joined #parrot
10:31 dalek parrot: r39075 | chromatic++ | trunk/src/pmc/unmanagedstruct.pmc:
10:31 dalek parrot: [PMC] Removed a memory leak in UnManagedStruct PMC.
10:31 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39075/
10:32 Whiteknight joined #parrot
10:35 NotFound joined #parrot
10:41 dalek parrot: r39076 | chromatic++ | trunk/src/vtables.c:
10:41 dalek parrot: [vtables] Removed a memory leak of the default PMC's cloned VTABLE.  This
10:41 dalek parrot: didn't start to leak until the clone-and-modify strategy from the VTABLE
10:41 dalek parrot: initialization branch merged.
10:41 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39076/
11:08 dalek parrot: r39077 | chromatic++ | trunk/src/gc/alloc_register.c:
11:08 dalek parrot: [GC] Plugged a memory leak of the initial context allocated; its reference
11:08 dalek parrot: count is wrong, so it could never get recycled to the free list.  This is a
11:08 dalek parrot: workaround and slightly ugly, but context reference counting is on the axe
11:08 dalek parrot: list.
11:08 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39077/
11:14 dalek parrot: r39078 | chromatic++ | trunk/src/pmc/parrotinterpreter.pmc:
11:14 dalek parrot: [PMC] Removed a memory leak of the ParrotInterpreter PMC's attributes.
11:14 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39078/
11:16 Whiteknight go chromatic go!
11:21 dalek parrot: r39079 | NotFound++ | trunk/src/io/win32.c:
11:21 dalek parrot: [pio] call Parrot_io_open_pipe_win32 from Parrot_io_open_win32 (just a first step towards TT #661 in win32)
11:21 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39079/
11:21 dalek parrot: r39080 | chromatic++ | trunk/src/pmc/string.pmc:
11:21 dalek parrot: [PMC] Plugged a memory leak related to the constant STRING contained in a
11:21 dalek parrot: constant String PMC workaround when thawing said constant String PMC from
11:21 dalek parrot: bytecode.  Hopefully this doesn't make inheriting from the String PMC
11:21 dalek parrot: problematic -- if there are any problems with HLLs and bytecode, this commit is
11:21 dalek parrot: a likely culprit.
11:21 dalek parrot: Parrot now leaks no memory for "Hello, world!" written in PIR as well as PBC.
11:21 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39080/
11:22 jonathan Nice! :-)
11:23 Whiteknight very nice indeed
11:23 NotFound Finally I installed strawberry perl to try to somw win32 work
11:27 jonathan Now if only we could work out why Rakudo leaks ~80MB of memory in the 10,000 sub dispatches benchmark...
11:28 dalek parrot: r39081 | whiteknight++ | branches/tt_696 (7 files):
11:28 dalek parrot: [tt_696] Success...ish. The main scaffolding logic is here to make this operation work, and we no longer get the error that we were once getting. We do get another error about set_pmc not being implemented in the test class, which (a quick inspection shows) is true.
11:28 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39081/
11:38 dalek parrot: r39082 | whiteknight++ | branches/tt_696/src (2 files):
11:38 dalek parrot: [tt_696] Rearrange some things. the flags field in pmc_reuse_by_class is no longer a shim. Move Parrot_oo_clone_object out of pmc_reuse_by_class, and into Parrot_Undef_set_pmc where it belongs. Refactor some stuff. The test case now works perfectly
11:38 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39082/
11:39 Whiteknight holycrap, make nqp_test is absolutely exploding in my branch
11:43 Whiteknight actually, a lot of tests are failing
11:56 * jonathan has a crack at whipping out a possible optimization
12:06 Theory joined #parrot
12:22 jonathan Wow. I did a fairly notable change to object guts and only failed one test. :-)
12:23 jonathan Ah, and I've got a good idea why...
12:23 bacek joined #parrot
12:24 nopaste "jonathan" at 85.216.157.73 pasted "probable performance and memory usage improvement" (189 lines) at http://nopaste.snit.ch/16647
12:24 jonathan If anyone wants to try / take a look at this patch, please do.
12:24 bacek good evening
12:25 jonathan Basically, at the moment when we allocate an Object PMC we also allocate an RPA for the storage.
12:25 jonathan That means every object we instantiate = 2 PMCs.
12:26 jonathan In the patch I just use a C array instead, which for heavily OO code means that probably something towards half the number of PMCs will be hanging around.
12:26 jonathan It also means that we get to skip one vtable calls on every attribute get/set.
12:27 jonathan bacek: oh hai :-)
12:27 bacek jonathan: hi :)
12:30 bacek jonathan: I don't think that your patch will give much performance boost...
12:32 jonathan bacek: Possibly not; I figured it's worth a try though.
12:33 jonathan bacek: It's not going to make much difference for code not doing a lot of OO stuff.
12:34 bacek indeed. And it's not so much improvement comparing to single MULTI method call...
12:35 jonathan bacek: The thing is, Rakudo does create an awful lot of Objects.
12:36 jonathan Yes, I think your MULTI optimizations will make a more noticable difference than this. :-)
12:36 bacek jonathan: let's improve GC! Something like "Generational Incremental Bloody-Fast GC" will help
12:36 bacek jonathan: I've got some weird test failure in Rakudo on my branch...
12:37 jonathan bacek: In the sanity tests or spectests?
12:37 bacek spectest
12:37 purl hmmm... spectest is only helpful for people hacking on partcl at this point, i think.
12:38 bacek bacek@icering:~/src/rakudo$ ./perl6 t/spec/S12-methods/parallel-dispatch.t
12:38 bacek 1..21
12:38 bacek ok 1 - object sanity test
12:38 bacek Cannot assign to readonly variable.
12:38 bacek in method Foo::doit (t/spec/S12-methods/parallel-dispatch.t:12)
12:38 bacek called from Main (t/spec/S12-methods/parallel-dispatch.t:22)
12:38 bacek bacek@icering:~/src/rakudo$
12:40 bacek This latest rakudo...
12:40 rg1 joined #parrot
12:40 ZuLuuuuuu joined #parrot
12:44 Whiteknight Coke: ping
12:44 Whiteknight purl msg Coke the tt_696 branch is ready for testing. Needs cleanup before merging to trunk, but it should do what you want
12:44 purl Message for coke stored.
12:45 dalek parrot: r39083 | whiteknight++ | branches/tt_696 (2 files):
12:45 dalek parrot: [tt_696] welcome to Whiteknight's school of programming hard knocks. Today we're learning about how using an uninitialized variable causes unpredictable behavior and test failures. All tests pass now
12:45 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39083/
12:46 bacek Whiteknight++ # excellent commit messages :)
12:47 Whiteknight bacek: This is what happens when I program too early in the morning
12:47 bacek clock?
12:47 purl bacek: LAX: Sat 5:47am PDT / CHI: Sat 7:47am CDT / NYC: Sat 8:47am EDT / LON: Sat 1:47pm BST / BER: Sat 2:47pm CEST / IND: Sat 6:17pm IST / TOK: Sat 9:47pm JST / SYD: Sat 10:47pm EST /
12:48 bacek Whiteknight: look! It's late night already!
12:52 Whiteknight bacek, where do you live?
12:52 bacek Whiteknight: Sydney
12:52 Whiteknight yeah, I'm at EDT here
12:53 * bacek waves from future
12:53 Infinoid good morning from PDT :)
12:55 bacek Infinoid: 6 _AM_???
12:56 * bacek can't believe that such time exists
12:57 Infinoid heh
13:03 Whiteknight My wife's wonderful dog had me awake at 6am
13:03 Whiteknight I was thrilled about that
13:03 Whiteknight </sarcasm>
13:06 dalek parrot: r39084 | whiteknight++ | branches/tt_696/src (3 files):
13:06 dalek parrot: [tt_696] now passes all codingstd tests, at least the ones that weren't failing before I branched
13:06 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39084/
13:23 ilbot2 joined #parrot
13:23 Topic for #parrotis now Parrot 1.2.0 released | http://parrot.org/ | 305 RTs left | Weekly Priority: Apply Patches, Fix Bugs, Close Tickets
13:25 bacek Infinoid: did you manage to build rakudo against tt452 branch?
13:27 Infinoid I just retried now, and it seems I didn't get the merge update before
13:27 Infinoid (funny, I thought I had, but svn doesn't lie)
13:27 Infinoid it is working now, and I'm doing some benchmarks
13:28 Infinoid rakudo on trunk: make  160.14s user 4.97s system 85% cpu 3:13.65 total
13:28 Infinoid rakudo on tt452: make  137.51s user 5.25s system 89% cpu 2:39.53 total
13:28 Infinoid rakudo on trunk: make test  59.66s user 3.89s system 86% cpu 1:13.23 total
13:28 Infinoid rakudo on tt452: make test  51.49s user 3.54s system 94% cpu 58.263 total
13:28 Infinoid (that's trunk at the point of the merge, it doesn't contain changes from the last 10 hours)
13:29 bacek looks good :)
13:29 jonathan I'll take that! ;-)
13:30 santhalus joined #parrot
13:30 bacek something like 20% of speed up
13:31 bacek If no-one complain I'll merge it into trunk tomorrow night.
13:32 jonathan Provided it handles make spectest on Rakudo, I'm happy. :-)
13:32 * Infinoid tests that
13:32 bacek Better to ask for ex... Oh wait :)
13:33 bacek It's failing on spectest.
13:33 Infinoid trunk fails spectest for me too (or at least it always has)
13:33 kid51 joined #parrot
13:33 Theory joined #parrot
13:34 bacek Infinoid: Complex.log10?
13:34 Infinoid I dunno, I'm testing  tt452 first because I already had that configured
13:34 bacek Ok. I launched spectest on trunk
13:34 Infinoid I'll post my results when I've done them both, but it will take a while
13:35 bacek 2 hours at least...
13:35 bacek We have to speed-up parrot little bit. Something like 10-fold
13:36 * Infinoid imagines a parrot with a spoiler and an afterburner
13:37 Infinoid turbo V8 parrot
13:37 Infinoid feathers flying everywhere
13:37 Infinoid (but the GC cleans them up)
13:38 bacek GC isn't a big problem now. PCC is...
13:44 Whiteknight yeah, PCC is at the top of the priority list
13:44 dalek parrot: r39086 | NotFound++ | trunk (2 files):
13:44 dalek parrot: [pio] Implement pipe read for win32, TT #661
13:45 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39086/
13:46 NotFound Hey, I still remember how to program win32
13:47 bacek Wow! :)
13:54 bacek Heh. Looks like rakudo's spectest failing in tt452 branch because it produces correct results now...
13:58 NotFound Strawberry perl is great, I didn't expect that setting a parrot development environment was so easy :)
13:58 Infinoid indeed, strawberry perl rocks
13:59 Infinoid I tend to add gdb from msys to it, but it's got a lot of the pieces there by default and they Just Work
13:59 NotFound Installing msys takes much more time... at least last time I've do it
14:00 Infinoid yes... fortunately gdb is in a separate tarball and you can unpack it onto strawberry directly
14:01 Infinoid for judging the merits of strawberry perl, my reference point is my past experience with cygwin... which probably isn't a fair comparison
14:03 weekend_Coke Infinoid: I've made no effort to build against a build dir, just an installed dir. Like you'd theoretically find "in the wild."
14:03 weekend_Coke msg Whiteknight thanks, will test later.
14:03 purl Message for whiteknight stored.
14:04 Infinoid ok.  I can't wait until all the HLLs can deal with installed and local parrots equally well :)
14:05 Whiteknight weekend_Coke: I'm actually about to merge into trunk, so you can test it there
14:06 weekend_Coke ok. see you later.
14:07 nopaste "Infinoid" at 75.31.91.96 pasted "rakudo spectest failures on tt452 (on my linux/x86-64 box)" (13 lines) at http://nopaste.snit.ch/16648
14:08 bacek Infinoid: same on my box. Looks like it was false positive passed tests. (At lease for S32/log)
14:09 * Infinoid testing trunk now
14:09 bacek Infinoid: it passing on trunk
14:10 Infinoid ok
14:10 Infinoid this will take another half an hour to complete... back later

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

Parrot | source cross referenced