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