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