|
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
|
|||