Camelia, the Perl 6 bug

IRC log for #parrot, 2010-02-06

Parrot | source cross referenced

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

All times shown according to UTC.

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

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

Parrot | source cross referenced