Camelia, the Perl 6 bug

IRC log for #parrot, 2008-09-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:00 Whiteknight it upsets me that the comic refers to garbage collection as "fairly trivial"
00:00 Whiteknight I really need to go back to school for CS, i guess
00:00 cognominal that's PR.
00:02 cognominal apparently I have so much parrot in mind that I dreamt the multilanguage part of V8. If so, parrot has a sure edge there.
00:30 bacek joined #parrot
00:30 s1n joined #parrot
00:30 Debolaz joined #parrot
00:34 Zaba joined #parrot
00:54 tetragon joined #parrot
01:00 Ademan joined #parrot
01:01 megamic joined #parrot
01:22 Limbic_Region joined #parrot
01:26 davidfetter joined #parrot
04:01 Theory joined #parrot
05:07 Ademan joined #parrot
05:15 Andy joined #parrot
05:19 Psyche^ joined #parrot
05:37 Tene Anyone up to help me figure out the issues with precompiled libraries in cardinal?
06:02 dalek r30695 | cotto++ | trunk:
06:02 dalek : [pmc] PIRified fixedfloatarray.t
06:02 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30695
06:05 cotto_home + accidental (but harmless) typo fix
06:24 uniejo joined #parrot
06:40 Zaba_ joined #parrot
07:01 gmansi joined #parrot
07:03 Ademan joined #parrot
07:15 clunker3 joined #parrot
07:16 cosimo joined #parrot
07:21 gmansi joined #parrot
07:31 iblechbot joined #parrot
07:41 Tene purl: parrotbug?
07:41 purl i heard parrotbug was mailto:parrotbug@parrotcode.org or http://svn.perl.org/parrot/​trunk/docs/submissions.pod or see also "rakudobug"
08:22 Tene Looks like my problem is with :outer.
08:22 Tene Filed a ticket with a minimal pir test case.
08:38 kj joined #parrot
08:50 kj joined #parrot
09:20 stupidbot joined #parrot
09:25 Ademan joined #parrot
09:28 gaz joined #parrot
11:04 bacek joined #parrot
11:07 Debolaz joined #parrot
12:05 dalek r30696 | fperrad++ | trunk:
12:05 dalek : [Lua] LPeg
12:05 dalek :  - improve links in doc
12:05 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30696
12:10 tetragon joined #parrot
12:50 Debolaz joined #parrot
12:53 Debolaz joined #parrot
12:57 kid51 joined #parrot
13:10 gryphon joined #parrot
13:17 jhorwitz joined #parrot
14:06 AndyA joined #parrot
14:34 NotFound joined #parrot
14:34 NotFound hello
14:34 purl salut, NotFound.
14:35 moritz hi NotFound
14:55 dalek r30697 | moritz++ | trunk:
14:55 dalek : [rakudo] fixed round(), patch courtesy by Stephen Simmons (RT #58500)
14:55 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30697
15:05 dalek r30698 | moritz++ | trunk:
15:05 dalek : [rakudo] add two files to spectest_regression
15:05 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30698
15:05 davidfetter joined #parrot
15:26 autarch joined #parrot
15:27 autarch left #parrot
15:53 Theory joined #parrot
16:49 gmansi joined #parrot
16:54 autarch joined #parrot
16:54 autarch left #parrot
17:09 Tene purl: parrotsketch?
17:09 purl hmmm... parrotsketch is a status meeting for parrot core committers held every Tuesday at 18:30 UTC in #parrotsketch
17:09 Tene Tue Sep  2 17:09:58 UTC 2008
17:26 dalek r30699 | allison++ | pdd27mmd:
17:26 dalek : [pdd27mmd] Starting to convert old-style MMD calls to new-style MMD calls.
17:26 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30699
17:43 dalek r30700 | allison++ | pdd27mmd:
17:43 dalek : [pdd27mmd] Cleaning up stray variable that's no longer used.
17:43 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30700
17:52 dalek r30701 | moritz++ | trunk:
17:52 dalek : [rakudo] add two files to spectest_regression
17:52 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30701
17:55 dalek r30702 | allison++ | pdd27mmd:
17:55 dalek : [pdd27mmd] Add better error handling and some debug information.
17:55 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30702
17:56 dalek r30703 | allison++ | pdd27mmd:
17:56 dalek : [pdd27mmd] Remove unused function.
17:56 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30703
18:03 dalek r30704 | allison++ | pdd27mmd:
18:03 dalek : [pdd27mmd] Add default implementations of multiply dispatched vtable functions
18:03 dalek : that call the multi_dispatch function.
18:03 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30704
18:08 dalek r30705 | allison++ | pdd27mmd:
18:08 dalek : [pdd27mmd] Shifting an old-style MMD call over to a vtable function call (which
18:08 dalek : will multiply dispatch by default, but also allow for non-multi overrides).
18:08 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30705
18:13 dalek r30706 | allison++ | pdd27mmd:
18:13 dalek : [pdd27mmd] Shift old-style MMD calls to new-style MMD calls. Also caught one
18:13 dalek : old MMD_* declaration and converted it to a new MULTI declaration.
18:13 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30706
18:17 allison joined #parrot
18:22 dalek r30707 | allison++ | pdd27mmd:
18:22 dalek : [pdd27mmd] Move 'add', 'sub', and 'mul' over from old-style custom dispatch, to
18:22 dalek : full, regular opcodes.
18:22 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30707
18:25 dalek r30708 | moritz++ | trunk:
18:25 dalek : [rakudo] add binding tests to spectest_regression
18:25 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30708
18:29 dalek r30709 | julianalbo++ | trunk:
18:29 dalek : add a NCI signature for XCreateSimpleWindow to allow testing with Xlib
18:29 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30709
18:29 cotto_work I love the pre-#ps commit rush.
18:30 Tene Me too.
18:30 moritz speaking of which
18:30 moritz isn't that NOW?
18:31 cotto_work should be
18:31 Tene yeah
18:34 dalek r30710 | julianalbo++ | trunk:
18:34 dalek : [PDB] run :init subs on .pir files
18:34 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30710
18:34 allison I've been hacking all day and just realized I hadn't committed anything :)
18:36 rurban joined #parrot
18:41 * moritz has a string thing here - a file that passes with 'make localtest' and fails with 'make spectest_regression'
18:42 particle NotFound: why is your call_list commit necessary? http://www.parrotvm.org/svn​/parrot/revision?rev=30709
18:42 particle ncigen not working for you?
18:42 moritz no, I'm just dumb, ignore me
18:43 NotFound particle: just for a quick testing, don't know if ncigen can work with a monster like xlib
18:44 particle ok, give it a shot when you have a minute, as i'd love to retire call_list
18:44 NotFound particle: there is some doc about ncigen usage?
18:45 chromatic joined #parrot
18:47 * chromatic doesn't know what day it is
18:47 particle NotFound: perl compilers/ncigen/nci_gen.pl --help
18:49 dalek r30711 | moritz++ | trunk:
18:49 dalek : [rakudo] two more binding tests for spectest_regression
18:49 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30711
18:58 particle http://gears.google.com/chrome/eula.html
18:58 particle feel free to download now
18:59 moritz ... if you happen to be on windows
18:59 particle :)
18:59 moritz that's a lot of text in a tiny box
19:00 particle yeah, it's pretty ugly
19:00 particle must be beta ;)
19:07 NotFound particle: ENOTENOUGHDOC
19:08 cotto_work Is it just me or is the download page for Google Chrome not working?
19:09 cotto_work I want to play with the new shiny.
19:09 rurban moritz: care to submit my cygwin070patches_8 patch to the branch? not the old ones.
19:09 rurban I'm in mainz germany on a businesstrip but found a good hotel connection n ow
19:10 moritz patching file languages/bf/config/makefiles/root.in
19:10 moritz Hunk #1 FAILED at 1.
19:10 moritz all other succeeded
19:11 moritz rurban: could you nopaste how that file should look in its patched state?
19:13 particle seems the download link is broken
19:13 cotto_work googlefail
19:13 nopaste "rurban" at 84.169.196.31 pasted "bf makefile" (118 lines) at http://nopaste.snit.ch/13926
19:13 particle NotFound: you should mail the list and copy tewk, he wants to address these issues
19:13 particle or enter a bug in rt
19:15 rurban c: I also came by by accident :)
19:15 NotFound particle: not sure if "I have no idea about this" is a bug
19:15 particle seems like an ENOTENOUGHDOC bug to me
19:16 particle but non-rt ml item is fine
19:17 rurban moritz++ thanks!
19:18 dalek r30712 | moritz++ | cygwin070patches:
19:18 dalek : [config] fixed some logical flaws and enhanced the Makefiles
19:18 dalek : renamed TMP to HLLNAME.
19:18 dalek : Patch courtesy by Reini Urban, rurban++
19:18 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30712
19:19 NotFound pdd16_native_call.pod doesn't even mention that program
19:19 rurban moritz: no languages/tcl/config/makefiles/root.in.rej?
19:21 moritz rurban: yes, seems I have missed that :/
19:21 rurban should I paste it?
19:22 moritz yes, please
19:22 nopaste "rurban" at 84.169.196.31 pasted "tcl makefile" (380 lines) at http://nopaste.snit.ch/13927
19:23 rurban voila. now the languages can also be built with an already older shared libparrot.
19:24 rurban big step forwards
19:24 * moritz builds that branch
19:25 dalek r30713 | moritz++ | cygwin070patches:
19:25 dalek : [tcl] fix makefile, rurban++
19:25 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30713
19:25 rurban there's still some fine-tuning left for make install with some languages: forth, WMLScript, pipp.
19:25 rurban for accessing the hll-specific pbc's.
19:26 rurban I'll fix that tomorrow
19:28 rurban maybe we also should hire a comic strip painter, as google did
19:29 moritz lol
19:29 rurban explain parrot to dummies with images
19:29 rurban at most I like the monkeys doing tap tap to the laptops
19:30 moritz ok, regular 'make test' worked fine in cygwin070patches
19:31 rurban for me there's still t/op/exceptions 26/30 failing
19:32 rurban No such attribute 'resume'
19:32 moritz which OS?
19:32 rurban cygwin :)
19:32 moritz but make languages-test fails all lua tests
19:32 moritz #   at lua/t/basic.t line 312.
19:32 moritz #          got: 'Parrot VM: Can't stat languages/lua/lua.pbc, code 2.
19:32 rurban on my laptop I have only this
19:32 moritz that looks like a configuration problem to me
19:32 rurban oh yes, lua fails but I wanted to blame lua on this.
19:33 rurban I'll check it out
19:33 * moritz tests lua in trunk
19:34 rurban src/pmc_freeze.c:814: failed assertion '(int)io->image->bufused >= 0'
19:34 rurban that's why I wanted to blame lua, not me
19:36 moritz during build?
19:36 moritz ah, yes
19:36 rurban very good in the google comic is the explanation of a precise GC. they blame old jscript vm's of doing bad.
19:37 cotto_work The part where they call it "fairly trivial" didn't make Whiteknight happy.
19:37 moritz lol
19:37 chromatic It is fairly trivial to write a bad GC.
19:37 rurban because they use much more memory keeping all the pointer targets around. no gc does this.
19:37 chromatic They use a double-indirection compacting scheme?
19:38 rurban but with this trick they can do it now incremental and fast.
19:38 rurban good for real-time. good trick.
19:38 moritz so basically they trade speed for memory?
19:38 rurban ah, not the ptr targets, they keep the stack positions of all ptrs, that's much less. good.
19:39 rurban just the ptr args and closured ptrs.
19:39 rurban that's much less. good. and they have no ffi probably.
19:39 rurban with a ffi it would get complicated
19:39 chromatic Hm, so they don't have to do stack scanning.
19:40 rurban but for ffi ptrs they could use teh same trick. just keep them extra and rewire it on gc.
19:41 rurban I wonder if its faster than tracemonkey, the adobe approach.
19:41 rurban (adobe sponsored the new mozilla js engine)
19:42 chromatic I thought the fast parts of the Mozilla VM were JIT, not GC.
19:43 rurban yes, that's the good part. but now google (v8 from denmark) claims to have a similar fast jit
19:44 rurban and with the new gc google would/should be faster
19:45 rurban The chromw download was ~500kB. good trick.
19:46 rurban (it's starting now and of course is doing now the real massive download)
19:49 rurban geiles ding! just the proxy setting does not work yet.
19:50 particle harumph, i can't even download it here
19:50 particle ah, now i can
19:51 rurban it feels faster then mozilla
19:51 rurban esp. in gmail
19:52 rurban but maybe it's using my cache...
19:57 rurban http://blogs.zdnet.co.uk/ruperts-diary/ 10x faster than ie7
19:58 particle well, it has no plugins installed like my firefox does (firebug, etc)
19:58 rurban Ah ok. v8 is Lars Bak, Hotspot
20:00 rurban So it will be comparable to Tracemonkey
20:01 donaldh joined #parrot
20:02 moritz and there's no way I'm going to use a browser without working adblock
20:04 rurban http://code.google.com/p/v8/source/browse/
20:04 Andy joined #parrot
20:04 rurban it's even the sun hotspot code!
20:05 moritz the wonders of open source ;)
20:06 rurban so it's now adobe against sun, and microsoft way behind
20:07 rurban their jit in c++ looks fine. ours is only c.
20:08 rurban e.g. Assembler::jmp has 4 methods for each kind of jumps
20:08 chromatic Our JIT has almost no abstractions.
20:08 chromatic Fortunately, it has almost no documentation.
20:09 rurban jump to label, code, by handle, code by byteptr, Operand addr
20:09 rurban nice.
20:10 rurban and they add hints to their jumps.
20:10 rurban okay, conditional jumps.
20:13 rurban But the new GC is (C) google of course
20:15 donaldh joined #parrot
20:17 rurban They use http://en.wikipedia.org/wiki/Cheney's_algorithm
20:17 rurban a semispace collector (copying between two halfs)
20:17 rurban like most lisps
20:20 stupidbot joined #parrot
20:21 rurban I believe the clever bit in v8 is the so-called RSet.
20:27 rurban Uuh, they have a lot of internal string types: Cons, RawAscii, RawTwoByte, short, Sliced, Sub, External
20:27 rurban Sub similar to perl5 strings.
20:27 sjansen joined #parrot
20:31 rurban And for a new utf8 string they simply allocate the buffer size for a twobyte string.
20:31 rurban there must be not many 4-byte codepoints.
20:34 cotto_work Didn't Allison do some kind of analysis of that in the strings pdd?
20:35 rurban and for the first glance it looks like they seperate between three different sizes of hashes, small, medium and large.
20:37 rurban but since it's open source we could just try out this special gc (hehe, lots of work!)
20:38 rurban but it looks like it could be almost real-time. will have to talk to them.
20:48 rurban The v8 Google license looks good to me. http://code.google.com/p/v8/so​urce/browse/trunk/LICENSE?r=60
20:49 moritz yes, sounds reasonable
20:50 moritz BSDish
20:50 rurban And they can do heap snapshots, yeah!
20:51 rurban saveimage/loadimage
20:51 rurban from a running heap of course.
20:51 moritz sounds not so hard if you have no FFI interaction
20:53 rurban looks like they even have some kind of simple treeshaker (remove unused functions)
20:53 chromatic If GCable elements are movable, you can move all FFI-involved elements into a special pool.
20:54 rurban this pool i called RSet in v8
20:55 rurban but they just mark it with pointers to this obejcts, they dont copy the whole objects into a non-movable pool
20:55 chromatic Sounds like a recipe for fragmentation.
20:58 rurban nope, they treat if afterwards, like weak ptrs
20:58 rurban do we have weak ptrs btw?
20:59 chromatic Not really.
21:01 rurban I never saw the name in the code. but I thought parrot uses a similar concept when needed.
21:01 rurban (short lived objects)
21:06 rurban clisp is a bit similar to parrot. we pinpoint such objects and there are fragmentations then.
21:07 rurban gc is esp. tricky with threads then.
21:10 rurban this is esp. important to implement the gtk2 and win32 API.
21:11 rurban We (clisp) implemented gtk2 via the FFI, so we have thousands of such pinpointed live-objects because the gtk2 callbacks need it
21:11 rurban the win32 gdi interface is different (I maintain that part).
21:12 rurban the same problem withj lots of foreign objcets pointing to the lisp objects, but there I did it not via FFI but within the system.
21:13 rurban but only those twp API expose problems. the rest is not-problematic
21:14 rurban our opengl lib is similar but simple compared to gtk2 or win32gdi.
21:14 slightlyoff joined #parrot
21:16 rurban in the win32 API (clisp) the caller and the callee can be gc'ed. It's slower though than the simplier FFI approach as with gtk2 or postgresql
21:20 rurban hmm, every caller with a ptr as arg (or closed over) could also keep this ptrarg in a private list, on each GC those ptrs can be swapped.
21:21 rurban the caller just need to register themselves at the gc then.
21:21 * moritz wonders how many GC's rurban has written or worked with
21:21 rurban this would be similar to the v8 trick of RSet's.
21:21 rurban none. I'm just trying to understand them.
21:22 rurban worked with: all
21:23 rurban (I'm a lisper and there it's bread and butter. I fixed the corman gc to be relocatable so it will work as dll though)
21:24 rurban not a fixed memory range but relocatable.pretty simple.
21:25 rurban_ joined #parrot
21:35 rurban well the v8 gc is not yet real-time, since it really stops the world while copying. but it could me made such.
21:35 rurban and the gc time is predictable.
21:36 chromatic If you keep the size of your pools small, stop-the-world O(2n) for copying isn't awful.
21:37 rurban yes. I'm thinking of embedded where I woudl need it.
21:37 chromatic I read something about Erlang's or a similar microprocess architecture's GC a while back which made that point.
21:37 rurban almost no ram there, but real-time
21:37 rurban A RT GC would still execute while copying.
21:38 chromatic You can do that with mark/sweep too.
21:38 rurban I see no major hurdle in doing that with the v8 architecture but I should ask them before
21:39 particle as long as you can handle incremental mark, incremental sweep, and implement a timer, rt gc is doable
21:40 particle the gc has to respect the timer everywhere
21:42 dalek r30714 | moritz++ | trunk:
21:42 dalek : [rakudo] more operator tests for spectest_regression
21:42 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30714
21:43 rurban this is called mark/compact since it's a semispace heap.
21:44 rurban and you would need more memory to mark the already marked and swept bits
21:44 rurban tri-color?
21:44 grim_fandango joined #parrot
21:46 dalek r30715 | allison++ | pdd27mmd:
21:46 dalek : [pdd27mmd] Shift divide and floor divide over to regular opcodes.
21:46 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30715
21:46 particle tri-color uses white/grey/black
21:47 rurban yes we work on grey until there are only white and black
21:47 particle http://www.parrotcode.org/docs/p​dd/pdd09_gc.html#Tri-color_mark
21:49 rurban good overview!
21:50 rurban So we the only thing we need to add is copying.
21:50 rurban And what to do with fixed objects (objects not allowed to move)
21:51 rurban v8 allows them to move, most lisps keep them in a seperate heap.
21:52 rurban Anyway, I'll have to sleep now. Tomorrow is another day.
21:52 particle g'nite
21:53 particle chromatic: will the mmd impl make pir-level coverage analysis any easier?
21:54 rurban BTW: google is talking about security and mentions sandboxes. but they do jit, emit runtime code. There's no possibility to sandbox this.
21:54 dalek r30716 | moritz++ | trunk:
21:54 dalek : [rakudo] one more test for spectest_regression, and re-arrange alphabetically
21:54 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30716
21:54 rurban the even jump to a lot of code sections. very scary
21:55 moritz rurban: maybe on a different level? (javascript level?)
21:55 rurban the talk about jails, process boundaries. in this context they are right.
21:55 rurban tabs are completely seperated from each other.
21:55 particle yep
21:55 chromatic particle, I think it's orthogonal.
21:55 rurban ok, this is a good sandbox then.
21:56 chromatic The main difficulty I had with my experiments was figuring out how to identify when you entered and resumed a sub.
21:56 particle chromatic: i thought simplified dispatch might help
21:56 rurban but inside one tab I wouldn't bet on security at all.
21:56 chromatic Inferior runloops don't make it any easier.
21:57 particle i don't quite understand why it's so hard to figure out sub entrance/exit
21:57 particle there are specific ops
21:58 chromatic You need to pair up entrance/exit for the Callgrind format.
21:59 chromatic There was some complexity in detecting recursion and tailcalls and inferior runloops, I believe.
22:00 particle i wonder what other progs with tailcall optimizations do for the callgrind format
22:00 particle hrmm
22:01 chromatic I may have overlooked something simple though.
22:03 particle i imagine if you're tracking tailcalls, you can figure how many levels to pop at once
22:05 chromatic The question is where and how do you store this information.
22:05 idemal joined #parrot
22:05 particle yep, you've got to keep a stack i suppose
22:06 particle or, well, continuations
22:06 purl continuations are like a two way setjmp
22:06 particle since that fits our model better
22:06 dalek r30717 | allison++ | pdd27mmd:
22:06 dalek : [pdd27mmd] Shift 'concat' over to a regular opcode.
22:06 chromatic Yeah, I haven't finished thinking about it.
22:06 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=30717
22:10 particle bike ride &
22:12 megamic joined #parrot
22:17 gryphon joined #parrot
23:02 tetragon joined #parrot
23:26 TiMBuS joined #parrot
23:30 Ademan joined #parrot
23:41 Khisanth joined #parrot

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

Parrot | source cross referenced