|
Parrot 2.0.0 "Inevitable" released! | parrot.org | Priorities: deprecated core PMCs, ops -> dynops, GC tuning and implementation | Roadmap: icanhaz.com/parrotroadmap | Latest modified TT's: icanhaz.com/parrotbugs Set by moderator on 2 February 2010. |
|||
|
00:09
tetragon joined
|
|||
| Whiteknight | purl msg bacek you commented out the guts of Parrot_gc_compact_memory_pools, and that causes t/op/string_mem.t to hang. Also you commented out guts of Parrot_gc_completely_unblock_gc. Don't know what effect that has. Can we undo these? | 00:15 | |
| purl | Message for bacek stored. | ||
| Whiteknight | purl msg bacek (that was in the gc_encapsulate branch) | ||
| purl | Message for bacek stored. | ||
|
00:17
mikehh joined
|
|||
| cotto_work | Yeah. Rip it out. Apparently some old code depended on the perl headers, but it definitely shouldn't any longer. | 00:27 | |
| darbelo | cotto_work: Eh, I did it in r43729 | 00:28 | |
|
00:28
payload joined
|
|||
| darbelo | But thanks for the confirmation. | 00:28 | |
| Whiteknight | purl msg bacek coretest shows the hang in t/op/string_mem.t, t/op/gc.t (probably same issue), t/pmc/io.t and t/pmc/nci.t. Digging further into the last two | 00:29 | |
| purl | Message for bacek stored. | ||
|
00:36
tewk joined
00:46
mikehh joined
01:15
cotto_work joined
|
|||
| cotto_work | darbelo, sorry. I didn't see that message. | 01:16 | |
|
01:30
mikehh joined
02:27
bacek joined
|
|||
| Whiteknight | The queue types in the parrot-data-structures project have about 100x faster shift_pmc performance | 02:32 | |
| push_pmc performance for all types is comparable, and a little slower in some cases | 02:33 | ||
| not bad for quick prototypes | |||
| I have to compare against RPA, since FPA doesn't have push/pop/shift | 02:37 | ||
| kid51 | What is the "parrot-data-structures project"? | 02:38 | |
| Whiteknight | I've been prototyping some PMC types that are more specialized than the ResizablePMCArray type | 02:39 | |
| so a dedicated stack and queue type | |||
| notes straight out of compsci class | |||
| 100x better performance in queue behavior is nothing to sneeze at | 02:40 | ||
| cotto | How are you measuring? | 02:43 | |
| Whiteknight | I put my current benchmark code up on git | 02:44 | |
| github.com/Whiteknight/parrot-data-...enchmarks/ | |||
| upping the number of cycles to 100000 gives more dramatic performance difference: 0.007s for FPQ compared to 5.5s for RPA | 02:45 | ||
| cotto | indeed | 02:46 | |
| Whiteknight | 0.005s for FPS, 5.5s for RPA | ||
| if you have a bounded number of elements and only need stack or queue behavior, these types are dramatically superior in terms of performance | |||
| cotto | Now we just need to find an application where RPA is a bottleneck. | ||
| Whiteknight | yeah, so far this has been a purely theoretical exercise | 02:47 | |
| anyway, that's enough work for tonight. Later | 02:51 | ||
|
03:15
eternaleye joined
03:35
janus joined
04:31
jsut joined
05:29
cognominal joined
06:05
dduncan joined
06:11
bacek joined
06:57
dduncan left
07:21
eternaleye_ joined
07:47
fperrad joined
08:30
riffraff joined
08:40
iblechbot joined
08:57
lucian joined
09:06
patspam joined
11:03
gaz joined
11:18
kurahaupo joined
11:32
adu joined
12:52
Whiteknight joined
|
|||
| Whiteknight | good morning #parrot | 12:52 | |
|
13:06
kid51 joined
|
|||
| kid51 | Wow, we've stumped Google. | 13:09 | |
| The sign-on message for this network (irc.eggebuh.com) says that failure to abide by the rules (about logging) "is a kline-able offense." | 13:10 | ||
| Google can't locate any instances of 'kline-able' or 'kline-able offense' ... | |||
| ... at least not on the first two pages of results. | |||
|
13:14
payload joined
13:15
ruoso joined
13:20
payload1 joined
13:44
cognominal joined
14:21
ruoso joined
14:25
payload joined
|
|||
| dalek | tracwiki: v8 | whiteknight++ | Modules | 14:26 | |
| tracwiki: Rearranging things for comparison, PDS doesn't seem to show up on dalek while similarly-formatted PLA does | |||
| tracwiki: trac.parrot.org/parrot/wiki/Modules...ction=diff | |||
| Whiteknight | dalek help | 14:27 | |
| dalek: info | |||
| kid51 | dalek runs on feather ... which means you might be able to view its (her?) source | 14:30 | |
| Do you have a feather account? | |||
| kid51 logs into feather for first time in many months | 14:32 | ||
|
14:37
barney joined
|
|||
| kid51 | When running 'perl Configure.pl --test' on feather, I get this: | 14:38 | |
| Warning: Building a shared parrot library may conflict with your previously-installed /usr/local/lib/libparrot.so | |||
| ... which I don't get on my own boxes where I never actually install Parrot | |||
|
15:00
cghene joined
|
|||
| Whiteknight | yeah, I get that error on my box all the time, but I do install parrot to test some projects and HLLs | 15:18 | |
|
15:27
Psyche^ joined
|
|||
| Whiteknight | If I have a feather logon, I have long since forgotten about it | 15:35 | |
| kid51 | Hmm. I tried to run a smolder test from feather and got: | 15:36 | |
| Can't locate TAP/Harness/Archive.pm in @INC | |||
| Whiteknight: I don't see a directory for you on feather. | 15:37 | ||
| Whiteknight | okay, well that's the answer then | 15:39 | |
| kid51 | I don't know which humanoid administers dalek | 15:40 | |
| coke would probably know | |||
|
16:17
lucian joined
|
|||
| Infinoid | what's wrong with dalek? | 16:35 | |
|
16:51
iblechbot joined
16:58
kid51 joined
|
|||
| kid51 | Infinoid: see scrollback. Whiteknight wanted get dalek to display commits for Parrot-Data-Structures project | 16:59 | |
| Whiteknight | I added it to the Modules page on the wiki, but no love | 17:00 | |
| Infinoid | well, when in doubt, kick it in the head | 17:05 | |
|
17:06
dalek joined
|
|||
| Infinoid | github: parrot-data-structures has branch master with feed url github.com/feeds/Whiteknight/commit...res/master | 17:06 | |
| guess that means the Modules refresh timer is busted. | |||
| and, yes. It's trying to call the wrong function name | 17:07 | ||
| Whiteknight | ah, I hate when that happens | 17:09 | |
|
17:11
dalek joined
|
|||
| Infinoid | there we go, timer callback should be fixed now. and it picked up your feed | 17:11 | |
| Whiteknight | w00t | 17:41 | |
| Infinoid++ | |||
| yay! the perl foundation grant applications are coming out! | |||
| dalek | tracwiki: v22 | allison++ | ChrootSetup | 17:47 | |
| tracwiki: trac.parrot.org/parrot/wiki/ChrootS...ction=diff | |||
| tracwiki: v23 | allison++ | ChrootSetup | |||
| tracwiki: trac.parrot.org/parrot/wiki/ChrootS...ction=diff | |||
| Whiteknight | i love reading those things | 18:05 | |
|
18:25
domain joined,
ash_ joined
18:37
payload joined
18:39
ash_ joined
19:28
Andy joined
19:37
eternaleye joined
|
|||
| Whiteknight | this is weird. The ResizablePMCStack had terrible performance yesterday, so I wrote a new stack type, and now ResizablePMCStack has great performance | 19:53 | |
|
19:56
Austin joined
|
|||
| Tene | heh | 19:57 | |
|
20:06
joeri joined,
jhelwig joined
|
|||
| Austin | close-parrot.blogspot.com/2010/02/c...ather.html | 20:11 | |
| Whiteknight | in NQP, is it possible to include another NQP file as a library? | 20:21 | |
| Austin | Yes. | ||
| Whiteknight | ...how? | 20:22 | |
| Austin | You can .include the file, or load the bytecode, or run the compiler on it. | ||
| .include is a pir solution | |||
| Whiteknight | gotcha. So I'll do that | ||
| Austin | I used to think that you could use pbc_merge to link them together, but that isn't working now. | ||
| ash_ | Austin: it looks cold there, so much snow in the pictures you posted | 20:25 | |
| Austin | Yeah, but it's a wet cold. | ||
| :) | |||
| South Jersey, where I am, doesn't usually get much snow. And we certainly don't usually get it twice in one winter -- we got about the same amount just before Xmas. | 20:26 | ||
| But it's actually a dry snow, which makes it light, and easy to shovel. | |||
| ash_ | seeing that makes me want to migrate south :P | 20:27 | |
| Austin | :) | 20:28 | |
| Where are you located, ash_? | |||
| ash_ | alabama, its not nearly as cold here | ||
| Austin | No, I guess not. | ||
| ash_ | i am from texas though, so... warmer is better IMO | ||
| Austin | I grew up in South Florida, and I kind of prefer having real seasons. | 20:29 | |
| Sometimes we have girls in bikinis. Sometimes we have girls in sweaters. It's the whole cycle of life. | 20:30 | ||
| ash_ | i lived in Singapore for 9 years, so... i rather enjoy tropical weather | 20:33 | |
| Austin | Alabama + Singapore = Air Force? | 20:34 | |
|
20:34
theory joined
20:35
payload joined
|
|||
| ash_ | nah, everyone says that but my dad worked for an oil company (mobil) and they had a big refinery in singapore that he got put in charge of | 20:36 | |
| Austin sings, "Workin' on a laptop, close to the end of a job I've been doin' since half past ten. I don't believe that it's frozen again! The system has gone down-oh! Down-oh! Down-oh!" | 20:37 | ||
| dalek | nie: r96 | allisonrandal++ | trunk/runtests.py: Remove test that doesn't exist. |
||
| Austin | Despite my *not* using pbc_merge, it still doesn't work. | ||
| Perhaps pbc_merge is not the culprit. | 20:38 | ||
| Ash_: So what brought you to 'bama? | |||
| ash_ | my parents are from alabama and my dad died and wanted to be close to family so we moved here | 20:39 | |
| Austin | Ah. Sorry if it's a touchy subject. | ||
| Whiteknight | Austin: how should I do that .include thing? "Q:PIR { .include "foo.pir" }"? | 20:40 | |
| Austin | Whiteknight: absolutely not. | ||
| Whiteknight | ...that would explain why it didn't work when I tried it | ||
| Austin | The Q:PIR mechanism in nqp generates an anonymous closure. | ||
| Whiteknight | okay, so...how? | ||
| Austin | $P0 = new Sub { ... your pir code here ... } | ||
| You need to post-process the pir. | 20:41 | ||
| Or make a .pir script that includes your "real" nqp and the library. | |||
| Whiteknight | okay, so the lesson I am learning is that "forget NQP and use PIR instead" | ||
| Austin | Wow. Search engine optimization produces some weird headers: "nose piercing :: bargain chennai flight :: papaya thai :: code myspace whore :: comprehensive database management ::" | 20:42 | |
| Whiteknight: That's a lesson I have tried not to learn. | |||
| But it takes a lot of trying. | |||
| redbrain | i really am begining to like the pir code now just thought i would pop in and say that :) its a really powerful IR | 20:47 | |
| are there anydocs on the parrot byte code spec? | 20:50 | ||
| Austin | redbrain: look in the $PARROT/docs directory. There's a PDD for that. | 20:51 | |
| redbrain | ah ok i see most documenation is in .pod is that man pages? | 20:52 | |
| Austin | redbrain: no, .pod is perl's "plain old documentation" format. It uses delimiters that are generally human readable for things. You can convert using pod2man or pod2html or pod2... if you have perl installed. | 20:53 | |
| redbrain | ah ok i never really used perl i only really write some small scripts in it like a test suite using that ok function is cool | 20:55 | |
| Austin | redbrain: No problem. The pod2... commands are perl programs that get installed when you install perl (on linux). You should be able to run "pod2html foo.pod" from the command line. | 21:01 | |
| Oh noes! No newline at end of file -- the bane of parsers everywhere... | 21:03 | ||
| Stupid parrot. | |||
| Okay, this is just weird. | 21:09 | ||
| redbrain | Austin: yeah thanks its already installed i use perl for my projects test suites so i usualy have it installed :) | 21:11 | |
| dalek | TT #1424 created by Austin_Hastings++: Parrot will not parse PIR missing newline at EOF | 21:14 | |
| Austin | Whiteknight: Do you know anything about pbc formats? | 21:17 | |
| Whiteknight | Austn: define "anything" | 21:18 | |
| Austin | More than me? | ||
| Which is true almost be definition. | |||
| *by definition | |||
| If I'm pbc_dumping a .pbc, and there's a method call to e.g., $P0.'new_class', am I going to look up 'new_class' in the string constants table and then use the *index* (59) of the string to search for that call in the bytecode, or do I use the string's *offset* to search in the bytecode, or something else? | 21:19 | ||
| Whiteknight | that's beyond my knowledge | 21:20 | |
| Austin | Rats. | 21:21 | |
| The dumper isn't as useful as it could be. | |||
| Whiteknight | I'm sure | 21:22 | |
| Austin | I've got this problem. | ||
| I have two pir files: krt0.pir and Array.pir | |||
| If I compile them to .pbc, then use pbc_merge to link them, I get one (bad) behavior. | 21:23 | ||
| If I cat them together, then compile the result to .pbc, I get a different (good) behavior. | |||
| Whiteknight | what's the bad behavior? | ||
| Austin | The nqp-generated call to create a declared class looks like $P0 = ... ; $P0.'new_class'("Foo::Child", "Foo::Parent" :named('parent')) | 21:24 | |
| The bad behavior is that the P6object "register" subroutine, which I am load-bytecoding into memory in both cases, does not see the "parent" named-param in the bad case. | 21:25 | ||
| I hesitate to call this a pcc bug, but I wonder if pbc_merge has an undocumented dependency on the old pcc or something. | 21:26 | ||
| Whiteknight | hmmm | 21:33 | |
| Austin | whiteknight: Do you know what the fixed array used by set_args_pc contains? | 21:35 | |
| Whiteknight | it's an FIA with PCC flags in it | 21:36 | |
| Austin | Right. | ||
| I've got one that's [ 2, 17, 529, 17 ] | |||
| There's no way the 529 is a constant offset - must be flags. | |||
| 2 is the index of "Foo::Child" so that's a const index, I guess. | 21:38 | ||
|
21:38
darbelo joined
|
|||
| Austin | 17 would be flags for that? | 21:38 | |
| Whiteknight | i have to look | 21:41 | |
| Austin | I'm guessing that 17 is ARG_CONSTANT(16) + ARG_STRING(1). | 21:44 | |
| Whiteknight | yes | 21:46 | |
| Austin | But 529 = 512 (ARG_NAME) + 17. | ||
| Whiteknight | right | ||
| 2 is the invocant | 21:47 | ||
| Austin | So is that array [2, 17, 529, 17 ] a pair of double-words, or a param count plus more? | ||
| It is? | |||
| purl | Oh no it isn't! | ||
| Whiteknight | should be 2050 | 21:48 | |
| Austin | I don't think so. | 21:49 | |
| Whiteknight | otherwise the indices are off | ||
| I'm pretty certain | |||
| Austin | The callmethodcc_p_sc is a 3-word op, with 001, 003 as op-words 2 and 3 | ||
| Isn't the 001 the invocant? | |||
| Whiteknight | right. but set_args is variadic | 21:50 | |
| look at the generated PASM | |||
| parrot -o foo.pasm | |||
| nopaste | "Austin" at 68.37.46.53 pasted "generated pasm" (20 lines) at nopaste.snit.ch/19488 | 21:51 | |
| Austin | It contains no args. :( | ||
| Whiteknight | damnit | 21:52 | |
| nopaste | "Austin" at 68.37.46.53 pasted "dumped pbc" (203 lines) at nopaste.snit.ch/19489 | ||
| Austin | If you look at offset 0019: in the dumped pbc, you'll see the last set_args. | 21:53 | |
| nopaste | "Austin" at 68.37.46.53 pasted "input pir" (12 lines) at nopaste.snit.ch/19490 | ||
| Austin | There's the pir I'm starting from (nqp generated) | ||
| It's all about the last line of the pir: $P519 = | 21:54 | ||
| Anyway, the set_args at 0019: points to 00a (=index 10) in the constant table. Which is a FIA [2, 17, 529, 17] | 21:55 | ||
| And since "2" is the offset of the string "Foo::Child" I'm kind of optimistic that the FIA is two groups of 2 words each. | 21:56 | ||
| But you just had your elbows in the call stuff, right? | 21:57 | ||
|
21:59
hercynium joined
|
|||
| Whiteknight | yeah | 22:00 | |
| in terms of flags, the first one should be 2050 | |||
| about 95% sure | 22:01 | ||
| Austin | I'm looking at pcc-build-sig-object-from-op. Is that the right place? | 22:03 | |
| Whiteknight | yeah | ||
| Austin | So then "2" means "ARG_PMC" for the invocant. | 22:04 | |
| What's "raw_sig" versus "raw_args"? | 22:06 | ||
| Whiteknight | hmmm... i may be wrong about that first arg | 22:07 | |
| Austin | Yeah. Maybe the 2048 is on the callee side, not the caller side? | 22:08 | |
| I think a bunch of these variable should have been named "sig_..." rather than "arg_..." | 22:09 | ||
| Whiteknight | don't know. maybe nowhere. | ||
| Austin | Ahh! My head is exploding. | 22:16 | |
| It's the callee that decodes the args. | 22:17 | ||
| Whiteknight | 2 is the invocant, but doesnt have a flag | 22:18 | |
| 17, 529 is a constant string followed by a constant string name | 22:19 | ||
| and 17 is another constant string | |||
| Austin | So it's "2" then "17" then "529, 17" for the named param. | 22:20 | |
| Whiteknight | PiScScScn | ||
| PiScScnSc | 22:21 | ||
| sorry | |||
| Austin | Okay. | ||
| Where does the actual data go? | |||
| Whiteknight | third is name of fourth | 22:22 | |
|
22:22
cognominal joined
|
|||
| Whiteknight | inline in the bytecode stream after set_args | 22:22 | |
| Austin | So the 4 words between 001a and 001f are the "value" words? | 22:23 | |
| which are 1, 2, 5, 4 | 22:25 | ||
| Whiteknight | yes | 22:26 | |
| Austin | 1 = something invocant. 2 = "Foo::Child", 5 = "parent", 4 = "Foo::Parent" | ||
| Well, that wasn't way more complicated than it needed to be, was it? | 22:27 | ||
| Holy cow. | |||
| purl | Holy cow is what mjd says when what he really means is '\\ cow, what a fucking idiot!' | ||
| Austin | And there it is! | 22:29 | |
| Whiteknight | ? | ||
| Austin | 168 set_args PC62 (4), P1, "Foo::Child", "main", "Foo::Parent"\tPC62=FixedIntegerArray=PMC(0x80ba79c) P1=Object()=PMC(0xb750021c) | ||
|
22:29
kurahaupo joined
|
|||
| Austin | Note the value of the 3rd argument? | 22:30 | |
| Whiteknight | main" | ||
| Austin | Yes. Should be "parent" | ||
| Whiteknight | so the constants table is jumbled | 22:31 | |
| where do you see that line? | |||
| Austin | I added a "trace 1" just before the $P519=get_root_global and ran it. | 22:33 | |
| Interestingly, there are 27 constants in the krt0.pbc file, and "main" is a constant with index 4 in the second file (Array.pbc). The "parent" string is index 32 in Array.pbc. | 22:35 | ||
| I think pbc_merge is not bumping the index of the string constant. | |||
| I also note that "main" appears in several places in the constant table. Maybe constant folding could be a basic gsoc project? | 22:36 | ||
| Wow. | 22:37 | ||
| Whiteknight++ | |||
| Thanks very, VERY much for hand-holding me through that. | |||
| You rock. | |||
| purl | Dis is the drum | ||
|
22:55
kid51 joined
23:01
payload joined
|
|||
| Austin | TT#1425 | 23:05 | |
| Whiteknight: Fwiw, merge does update the offsets of parameter value strings. Just not names. | 23:06 | ||
| Yech. | |||
|
23:07
payload joined
|
|||
| Whiteknight | Austin: where did you see that line "168 set_args PC62..." | 23:09 | |
| ? | |||
| because that's the kind of output I would love to see in some cases | |||
| dalek | TT #1425 created by Austin_Hastings++: pbc_merge does not correctly adjust constant offsets for parameter names | 23:10 | |
| Austin | Whiteknight: trace 1 in the bytecode | ||
| Sorry, in the pir | |||
| Whiteknight | PIR generated from NQP? | ||
| Austin | And then edited by hand. | ||
| FWIW, you can insert a trace using Q:PIR. | 23:11 | ||
| Where's cotto when I need him? | 23:14 | ||
| He was hacking on pbc_merge the other night. | |||
| I bet he could fix it for me. | |||
| Whiteknight | I never really used trace. At one point it didn't even work | ||
| Austin | It doesn't work great. | 23:15 | |
| But it does work enough. :) | |||
| Whiteknight | okay, so not a lot has change | ||
| Austin | I think there are nested-runloop issues, to boot. Trace tries to stop when you "return", but ... | ||
| Now I get to choose between linking (which I'm using a lot) and named parameters (which I'm using a lot). Muck fee. | 23:17 | ||
| I think I'll go get dinner. | 23:18 | ||
|
23:27
patspam joined
|
|||
| Whiteknight | somebody was in here within the past week complaining about pbc_merge not keeping the constants tables faithful | 23:32 | |
|
23:39
purl joined
|
|||