Parrot 1.7.0 "African Grey" is out! | Fix issues caused by the pcc_reapply and context_auto_attrs merges | find out what's up with the slice opcode | Latest modified TT's: icanhaz.com/parrotbugs
Set by moderator on 1 November 2009.
darbelo plobsing: branching... 00:00
purl i think branching is weak compared to, say, perforce
plobsing purl forget branching
purl plobsing: I forgot branching
darbelo plobsing++
<purl-->
00:01 mokurai1 joined
dalek rrot: r42282 | darbelo++ | branches/libjit_frame_builder:
Create a new branch for plobsing's work on the libjit frame builder. This supersedes the auto_libjit branch.
00:01
rrot: r42283 | darbelo++ | branches/libjit_frame_builder (8 files):
Apply the patches from TT#1147 (update nci.pmc for pcc_reapply) to the new branch.
00:08
rrot: r42284 | darbelo++ | branches/libjit_frame_builder/NativeCall.pm:
Oops. Forgot one file.
chromatic Thanks, darbelo.
plobsing darebelo++
darbelo For forgeting the file? You are welcome. 00:10
Two more patches to go.
chromatic For applying the patches. 00:11
darbelo ;)
plobsing for making mistakes.
otherwise I'd asume you were a cleverly coded bot 00:12
;-)
darbelo plobsing: I am.
japhb You know, I think nqp-rx demonstrates the "whirpool build method". Maybe since it's building up it would be the "waterspout build method".
er whirlpool 00:13
leto plobsing: just to let you know, i didn't forget about reviewing that branch, I just fell asleep last night. do you still need that review? 00:22
plobsing leto: that would be nice. 00:23
leto: btw, darbelo++ is applying this in a new branch in svn
calculus allison: my favorite person! ... I have a patch for you to make builds better on os x 00:26
Whiteknight in NQP, how do I get a handle to a Sub?
calculus it makes it so there is no need to call install_name_tool after installing and to build on 10.5 00:27
00:28 payload joined
dalek rrot: r42285 | darbelo++ | branches/libjit_frame_builder (23 files):
Port over the auto_libjit changes into the new branch.
00:28
darbelo plobsing: is it possible thatthe last patch in your series is reversed? 00:29
plobsing darbelo: quite possible.
darbelo: I'll get you a better one
00:29 payload joined
darbelo plobsing: no need to, just checking. 00:31
plobsing darbelo: looking at the git tree, that patch accidentally contains some commits to trunk 00:32
darbelo to PLATFORM, MANIFEST and ChangeLog ? 00:35
dalek rrot: r42286 | darbelo++ | branches/libjit_frame_builder/config/auto/libjit.pm:
Another frgotten file.
plobsing darbelo: nopasting
nopaste "plobsing" at 76.68.74.120 pasted "1st post_merge patch" (1267 lines) at nopaste.snit.ch/18585 00:36
"plobsing" at 76.68.74.120 pasted "2nd post_merge patch" (58 lines) at nopaste.snit.ch/18586
darbelo ok, I apply only the two nopastes? 00:37
plobsing those patches, applied in sequence excise the trunk commits (which probably already exist on the new branch)
allison calculus: how can I resist?!
plobsing darbelo: thats the plan
darbelo: they replace only post_merge.patch
darbelo plobsing: ok, I'm on it.
00:38 particle joined
allison calculus: can you submit it as a ticket? I'll look for it in the morning (midnight-ish here) 00:38
calculus allison: ok, pastebin.com/m5fdd8d7e 00:39
allison calculus: unfortunately, I'm running 10.6, so can't fully test it, but we can recruit others 00:41
calculus: it looks pretty safe
calculus allison: yeah, I have 10.5 and the compile flag -Wno-long-double does not exist, similar to 10.6 00:42
other than that DYLD_LIBRARY_PATH works better as an absolute path and the install_name is the final destination location rather than the build location 00:43
allison calculus: makes sense. I'll test it on 10.6, and if we can get someone to test it on 10.4, I'm happy to go ahead and apply it 00:45
calculus allison: and to put a face to a name, I attended many of your parrot talks in the bay area and sat next you at the unconference 00:47
darbelo plobsing: Ok, I think I'm done. You should check that I didn't screw up too badly.
calculus :)
allison calculus: excellent, glad to see you here on #parrot :)
dalek rrot: r42287 | darbelo++ | branches/libjit_frame_builder (8 files):
Fix errors after the merge.
00:48
rrot: r42288 | darbelo++ | branches/libjit_frame_builder (2 files):
Fix MANIFEST.
00:51
darbelo plobsing: Found two mistakes already. You should really check that I didn't screw up totally. 00:52
plobsing darbelo: looks like config/gen/libjit.pm got duped 00:53
darbelo duped? 00:55
dalek rrot: r42289 | darbelo++ | branches/libjit_frame_builder/lib/Parrot/NativeCall.pm:
Move NativeCall.pm to the correct location.
Coke gets missing deps down to 7.
rrot: r42290 | coke++ | trunk/config/gen/makefiles/root.in:
Improve dependencies.
darbelo Anyways I gotta go now. msg me whith whatever you find and I'll fix it later. 00:56
dalek rrot: r42291 | coke++ | trunk/tools/dev/checkdepend.pl:
sort by filename
00:58
Whiteknight incoming
purl duck!
00:58 abqar joined
calculus goose! 00:59
dalek rrot-linear-algebra: 3edbb8a | Whiteknight++ | t/10-nummatrix.t:
add some tests
01:00
shorten dalek's url is at xrl.us/bf2zum
dalek rrot-linear-algebra: 382a6a9 | Whiteknight++ | src/pmc/nummatrix2d.pmc:
update iterate_method_inplace to pass the coordinates of the current element. Also, some other fixes that I can't remember
shorten dalek's url is at xrl.us/bf2zuo
dalek rrot-linear-algebra: 24b8b55 | Whiteknight++ | src/pmc/nummatrix2d.pmc:
Fix iterate_function_inplace to actually do the right thing without segfaulting
shorten dalek's url is at xrl.us/bf2zuq
dalek rrot-linear-algebra: 66cde50 | Whiteknight++ | t/10-nummatrix.t:
add tests for iterate_function_inplace
shorten dalek's url is at xrl.us/bf2zuy
Whiteknight hmmm, I thought it was more than that
leto looks like fixing this machine is going to take longer than I thought. hopefull the parrot github repo will be updating again in the morning 01:03
01:12 Coke joined
cotto_work dukeleto, what's the point of having a ro git repo for parrot? 01:15
calculus non committers can easily make patches and then ask for them to be committed to svn 01:16
dalek TT #1214 created by coke++: config/inter/charset.pm generates incorrect makefile deps
cotto_work ok. So it's not so special for committers. 01:17
calculus at least from my view
Coke unless you REALLY like git. 01:19
dalek rrot: r42292 | coke++ | trunk/config/gen/makefiles/root.in:
Fix one more dep
01:21
chromatic Hooray for fewer spurious rebuilds! 01:22
Coke I think the remaining six are for non-generated files, so that will hopefully resolve the remaining -j issues. 01:24
cotto_work Coke, are you going to unskip the headers or is that intended to be permanent? 01:26
01:26 preflex joined 01:34 mokurai joined
Coke ? 01:35
01:36 payload joined
Coke you mean the skips in checkdepend? 01:36
plobsing msg darbelo I give up trying to find all the differences. Maybe 1 slightly larger patch would be easier? merge_complete.patch on TT1105 contains everything. 01:37
purl Message for darbelo stored.
Coke wondes why we have two tables.h's 01:41
chromatic One for the adults and one for the kids. 01:42
Coke cotto_work: I'm only skipping those now because I'm not looking in the 'include' dir to find the file. 01:44
dukeleto cotto_work: it is not read-only 01:47
cotto_work: anyone that has commit access to the parrot github repo can create branches and commit to whatever they want 01:48
cotto_work: it is just understood that no one should commit to upstream or master, since it is a mirror
cotto_work: but nothing is *currently* enforcing that 01:49
and the github mirror is not being updated tonight, since my box died and I am still rebuilding it 01:51
01:59 eternaleye joined
dalek rrot-linear-algebra: b86fc16 | Whiteknight++ | src/pmc/nummatrix2d.pmc:
add a new interate_function method that creates a new matrix with the results
02:11
shorten dalek's url is at xrl.us/bf2z6u
02:31 kid51 joined
cotto dukeleto, right. I meant read-only in the sense that without additional work, changes made to github parrot won't end up in a parrot release. 02:33
plobsing as I am finding out the hard way 02:35
cotto It seems that nuking the bitwise vtable functions will have to wait until the ops in bit.ops can be properly deprecated. 02:36
unless "move to dynops" is a euphemism for delete. 02:37
chromatic If only. 02:39
cotto I suppose ops that throw exceptions are still ops.
There's a possibility that'd break compatibility though. 02:40
dalek rrot: r42293 | jkeenan++ | trunk/t/steps/auto/gettext-01.t:
Internal sub _handle_gettext() takes three arguments. Correct tests to reflect this interface.
rrot: r42294 | jkeenan++ | trunk/config/gen/makefiles/root.in:
Have 'make realclean() delete src/dynpmc/Makefile. Cf.: trac.parrot.org/parrot/ticket/1211.
TT #1211 closed by jkeenan++: make realclean doesn't remove src/dynpmc/Makefile 02:42
rrot: r42295 | jkeenan++ | branches/convert_OSNAME/config/auto (7 files):
Convert get_p5('OSNAME') to get('osname').
02:50
rrot: r42296 | cotto++ | trunk (2 files):
[pmc] remove the unused type_keyed vtable function
cotto what purpose does the scalar PMC serve? 02:53
chromatic I think it's only there so that other PMCs can 'does scalar'.
kid51 msg tetragon See trac.parrot.org/parrot/ticket/1203 02:55
purl Message for tetragon stored.
diakopter is a segfault a rakudo bug or a parrot bug 02:56
(could a segfault be a rakudo bug?)
chromatic Rakudo has its own C code, so it could be a Rakudo bug.
cotto rakudo has C so it could be, but it's probably parrot's
diakopter ok
chromatic *Usually* it's a Parrot bug though.
cotto parrot has a lot more C 02:57
diakopter ./perl6 -e 'subset Five of Any where { $_ = 5 }; say (Five.new = 4)'
:)
it came up b/c of this other (what I consider to be a) bug:
./perl6 -e 'subset Five of Any where { $_ = 5 }; say (my Five $a = 4)'
5
dalek rrot: r42297 | jkeenan++ | branches/configtests (33 files):
Continue to convert steps tests to use of Parrot configuration data. Some of these test files have failures or expose bugs for the first time.
03:00
diakopter (the first segfaults on p6eval, which is amd64 linux parrot r42158 and rakudo latest)
Coke chromatic: 'does' doesn't need inheritance. Any ole thing can lie about 'does' 03:01
Scalar is probably a holdover from ye Olde PerlSTuff.
chromatic Maybe, but I don't remember if we supported 'does' when Scalar first existed. 03:03
03:03 petdance joined
diakopter ok, that's weird. it sometimes segfaults, and sometimes outputs 4. 03:03
oh. maybe a false alarm. :) sorry. it's possible rakudo (or parrot) was being rebuilt/cleaned at the time :D sorry, again 03:04
Coke cotto: I think removing vtables probably breaks PBC_COMPAT 03:05
dukeleto cotto: yes, you are correct about that. it is a uni-directional mirror. 03:13
cotto: the main use is a single place for people working on git branches to host them and ask for code reviews 03:14
plobsing dukeleto: speaking of github, can you update it? it seems a little stale 03:21
03:35 janus joined
dalek rrot: r42298 | jkeenan++ | branches/configtests/t/steps/auto/cpu-01.t:
Continue to convert steps tests to use of Parrot configuration data.
03:39
rrot: r42299 | jkeenan++ | branches/configtests/config/auto/opengl.pm:
Delete commented-out, superseded code.
03:42
japhb wonders who put that line in in the first place .... 03:46
dalek rrot: r42300 | jkeenan++ | branches/convert_OSNAME/config (2 files):
Convert two configuration steps from 'get_p5('OSNAME')' to 'get('osname')'.
04:02
kid51 must sleep 04:05
purl $kid51->sleep(8 * 3600);
dukeleto 'ello 04:42
plobsing hi dukeleto
having patching problems
don't apply my previous patch yet
dukeleto plobsing: ruh roh
plobsing: ok
plobsing oops sorry, wrong person
meant to talk to darbelo. maybe I should sleep...
msg darbelo I found some small problems with the lumped patch. tweaked a bit, attached another file 04:51
purl Message for darbelo stored.
plobsing time for sleep
pmichaud_ chromatic: ping 05:16
chromatic pong 05:18
pmichaud allison says we can add vivify, but to check with you first 05:23
specifically about the code duplication
chromatic ops files have PREAMBLE sections, so I can put a static function up there to abstract it out. That should work. 05:24
pmichaud I don't see a good way around it -- I propose to add some text to vivify and fetch that says "we know theres code duplication here, we ought to get rid of it"
it doesn't quite work
at least, it didn't when I tried it
chromatic The PREAMBLE section doesn't?
pmichaud the separating it into a function. somehow you have to return dest
or return next, or whatever gets returned in the exception part of the if
I suppose it could work by returning null if the object creation failed, and key off of that 05:25
(the PREAMBLE itself works fine)
chromatic I think I can make that work, but the duplication isn't a blocker for me to adding the opcodes now. 05:26
pmichaud okay
I was thinking we might add some text to the file that says "we know there's ugly code duplication here, it really ought to be fixed" and maybe a ticket or pointer to it somewhere so it doesn't get lost
chromatic +1 here 05:27
pmichaud +1 to the text, or to filing a ticket, or ... ?
chromatic Do you want me to add them, based on your tests, or did you have a nopaste with the code in them?
+1 text and ticket
pmichaud I had a nopaste ... I think I can dig it up. Just a sec
nopaste.snit.ch/18535 05:28
I can apply if you wish me to do it. I'm going to bed soon but could really use this in the (possibly early) morning 05:29
chromatic I should be able to get to that later tonight.
It's only 9:30 here. Do you have tests somewhere, or should I modify the ones from fetch.t?
pmichaud that would be great. if you're unable to do it for some reason, I'll go ahead and do it tomorrow and you can correct it
I have tests. 05:30
posting
nopaste "pmichaud" at 72.181.176.220 pasted "vivify.t - tests for vivify opcodes" (138 lines) at nopaste.snit.ch/18587 05:32
pmichaud I'm not sure I ever got around to running the code with the tests yet.... so the tests might have an error or two in them (I doubt it but I could've easily typoed something)
Tene I read "pointer" as "phone number", and went off on a little confused "Trac has a telephone interface now?" tangent for a bit.
pmichaud 1-800-BUG-GONE 05:33
chromatic I'll make sure everything works before I commit.
pmichaud thanks
chromatic 912
Tene way too incoherent for following any discussion; leaves again.
pmichaud if bacek is around, I also have a task for which he'd be uniquely suited.
chromatic Not even a Stonecutters reference? For shame.
pmichaud last I checked there's not a way to iterate over the entries in a LexPad
since he's recently refactored Hash and iterators, having a mechanism to iterate over a LexPad would be a big help to getting a working REPL (for all HLLs) 05:34
chromatic Does the standard iteration mechanism work as an interface for that? 05:35
pmichaud I don't quite understand the question (more)
LexPads are not subclass of Hash, they do support the set_pmc_keyed interfaces
so no, a standard Hash iterator did not work previously
I'm not sure about current Parrot 05:36
wait, let's do this a different way
chromatic If they had the same interface as a Hash iterator, would you find that useful?
pmichaud Ideally I'd like to be able to simply iterate over a LexPad in the same way I do with other Hash objects, i.e. $P0 = iter lexpad; $P1 = shift $P0 ... etc.
so the answer to your question is yes 05:37
however
let me write the tests first, and then we can pass that to bacek
chromatic Sounds good.
purl it has been said that Sounds good. is there a good way for me to find out when branches are merged, other than read every svn commit?
chromatic purl, forget Sounds good.
purl chromatic, I didn't have anything matching sounds good
chromatic purl, forget Sounds good
purl chromatic, I didn't have anything matching sounds good
pmichaud where should I post the tests or this request?
chromatic I think you can leave a message with purl, especially if it has a nopaste url. 05:38
pmichaud trac? wiki? parrot-dev?
I can do it with purl
and nopaste
thanks a bunch.
chromatic This is a small and obvious enough feature that there's no question of its utility.
pmichaud right. and having a working REPL would be nice for a change
chromatic Definitely a plus. Following an existing interface (the way we iterate over Hash) is a bonus too. 05:39
pmichaud inability to iterate over a lexpad is what has blocked me from doing a good repl in the first place
I wonder where the rt ticket went for that... :)
pmichaud searches 05:40
chromatic I didn't see it when I blazed through like General Sherman last night.
pmichaud oh, hot dog 05:41
Coke++
originally it was RT #40156
it's now TT #1028
apparently there's already a (TODO) test for DynLexPad 05:43
I'll write one for LexPad as well. 05:44
new ticket, or attach to TT #1028 (since they're different PMCs?)
chromatic One moment.
They have no connection to each other, so a separate ticket is probably best. 05:46
I thought if DynLexPad subclassed LexPad, we might be able to get away with sharing... but no such luck.
pmichaud and they're radically different
DynLexPad might be able to be modified to subclass Hash
that would make better sense, if it can be done 05:47
Because of the way LexPad maps to pmc registers held in a context, I'm less certain it could subclass Hash. But it should support the same iterator interface
chromatic I'm not worried about the hierarchy there right now. I just thought we might be able to get both of them for the same work. Unfortunately not. 05:48
pmichaud okay. I'm a bit tired tonight so I think I'll have to write the test tomorrow morning. I know that misses bacek's timeframe but I can wait a short while for this 05:49
chromatic He might backlog and magically do it anyway.
pmichaud since TT #1028 already has tests, it would be good for him to go ahead and resolve that one, if he can. It's a tcl blocker. 05:50
purl: message bacek since you're our iterator guru, any chance you could resolve TT #1028 for tcl? 05:51
purl Message for bacek stored.
pmichaud purl: message bacek I'd also like to be able to iterate LexPad PMCs (to support a better HLL REPL), although that will require some different code. I'll make a separate ticket and some LexPad iterator tests soon. Thanks! 05:52
purl Message for bacek stored.
pmichaud chromatic: okay, thanks for your quick responses
time for rest here.
chromatic You're welcome; that's why I'm here. That, and I was typing, not eating ice cream.
pmichaud .oO ( What does ice cream have to do with it? I missed a reference. Darn dangling references always get me ) 05:53
:-)
chromatic I told myself I couldn't have any ice cream until I'd written 1200 words of fiction. I was at 1130 when you pinged me. 05:54
pmichaud a-ha. I had my ice cream already.
calculus is this the november competition for 50,000 word novel?
pmichaud I told myself I couldn't have any ice cream until I'd driven to the store to buy it.
chromatic Not this year. I did that two years ago calculus, and I just received the first copy of that novel today, calculus. 05:55
This is a new novel I started a couple of months ago. I hope to have it published sometime next year.
calculus chromatic: cool. my coworker is doing the competition this year
pmichaud good night all, thanks 05:56
chromatic 1667 words a day is quite a bit, unless you've warmed up to it. You get little leeway for writer's block.
06:02 davidfetter joined 06:15 theory joined 06:23 mokurai joined
dukeleto is hacking on pl/parrot 06:27
postgres's internals are icky
dalek parrot: 6f5c8d7 | (Joshua Tolley)++ | test.sql:
Add most basic tests
06:28
shorten dalek's url is at xrl.us/bf22v4
cotto dukeleto, that's interesting. I've heard that they're pretty well designed.
dukeleto cotto: i am mostly talking about the names of the internal functions. not intuitive at first glance 06:33
but that could be me
06:34 selenamarie joined
selenamarie dukeleto is just complaining because he is not using grep properly 06:34
dukeleto selenamarie: who are you, stranger? 06:35
cotto You just have to properly warp your brain. After that, everything makes sense. 06:37
selenamarie dukeleto: here --> pljava.projects.postgresql.org/ 06:40
dalek parrot: 5cdff48 | dukeleto++ | t (2 files):
Move our basic sanity test to t/
06:45
shorten dalek's url is at xrl.us/bf22w5
cotto It's fun seeing all this embryonic stuff start to spring up. 07:02
dalek rrot: r42301 | mikehh++ | trunk/config (2 files):
fix codetest failures - trailing spaces
07:03
parrot: 4cc0bfb | (Joshua Tolley)++ | (3 files):
Skeleton call handler and associated Makefile. This passes the first set of tests.
07:08
shorten dalek's url is at xrl.us/bf22yg
dalek parrot: 5a31045 | dukeleto++ | IDEAS:
Update IDEAS
07:14
shorten dalek's url is at xrl.us/bf22yn
dalek parrot: 67340b3 | dukeleto++ | :
Merge branch 'master' of github.com:leto/plparrot
shorten dalek's url is at xrl.us/bf22yp
dalek parrot: db096b7 | dukeleto++ | IDEAS:
More IDEAS
shorten dalek's url is at xrl.us/bf22yr
07:15 uniejo joined 07:33 fperrad joined 07:47 nbrown joined 07:59 eternaleye joined, iblechbot joined 08:03 desertm4x joined
eternaleye Considering purl includes URL-shortening, is there a reason the 'shorten' bot is needed? It seems to be rarely used, and it just adds to dalek's spamminess 08:06
moritz eternaleye: I already removed it once, but it respawned 08:07
eternaleye Oh noez!
08:07 selenamarie joined
moritz wonders why ruoso is banned 08:07
eternaleye o.0 08:08
dukeleto yeah, why is ruoso banned?
chromatic Wasn't he having a lot of trouble connecting and disconnecting a while back? 08:09
moritz maybe
but that can be "solved" by /ignore, no need for a ban
dukeleto moritz++
moritz in fact in "noisy" channels like here and #perl6 I ignore joins/leaves/quits totally 08:11
szbalint yeah, just use channel specific ignores. irssi++ 08:14
dalek rrot: r42302 | chromatic++ | trunk (2 files):
[ops] Added experimental vivify opcode and tests; much credit to Patrick
08:22
TT #1215 created by chromatic++: Factor out Duplicated Code in vivify/fetch opcodes 08:26
dukeleto chromatic: nice vivify tests 08:28
chromatic Patrick and I wrote those; he copied over the fetch tests and added some new behavior. 08:31
08:39 payload joined
dalek parrot: 016cd60 | (Joshua Tolley)++ | IDEAS:
Add details about what needs to be built
08:45
dukeleto please tell me that trunk is not broke 08:57
dalek rrot-linear-algebra: 67a86d5 | (Markus Mayr)++ | src/pmc/ (2 files):
Implemented add for transposed matrices, fixed some accesses to transposed matrices, implemented multiply for transposed matrices.
08:59
rrot-linear-algebra: 0f19918 | (Markus Mayr)++ | :
Merge commit 'origin/master'

  \tsrc/pmc/nummatrix2d.pmc
dukeleto trunk is broke 09:01
dalek parrot: a1f670a | (Joshua Tolley)++ | IDEAS:
Clarify intended interactions between the two major bits of PL/Parrot
09:02
parrot: 4cec50d | (Joshua Tolley)++ | src/plparrot.c:
Add simple function to interact with pgsql APIs, and make something for the NQP bits to export
nopaste "dukeleto" at 69.64.235.54 pasted "trunk r42302 does not compile" (21 lines) at nopaste.snit.ch/18588
dukeleto is is after a make realclean 09:03
who broke trunk? 09:05
dalek rrot: r42303 | dukeleto++ | trunk/t/op/inf_nan.t:
[t][TT #1210] Convert t/op/inf_nan.t to PIR, bubaflub++
09:11
TT #1210 closed by dukeleto++: [PATCH] t/op/inf_nan.t converted to PIR 09:12
chromatic No problem for me with r42302. 09:18
dalek parrot: 759010d | dukeleto++ | (2 files):
Add to IDEAS and remove unnecessary line from src/Makefile
09:20
dukeleto perhaps realclean is leaving something behind 09:25
chromatic: are you using --optimize? 09:34
NotFound dukeleto: I've built with and wihtout --optimize, no problems, amd64 linux 09:47
dukeleto i can make corevm, but 'make' fails with: push_string() not implemented in class 'Getopt::Obj' 09:52
i am checking out a new, fresh trunk now, to see if my current checkout is fuxored 09:53
dalek TT #1110 closed by NotFound++: parrot fails to build with g++ 4.4.1 on Ubuntu 9.10 beta amd64 10:00
10:22 whoppix joined 10:29 davidfetter joined
dalek parrot: 441f02c | dukeleto++ | IDEAS:
Add more links to IDEAS
10:39
rrot: r42304 | dukeleto++ | trunk/t/op/00ff-dos.t:
[t][TT #1185] Convert t/op/00ff-dos.t to PIR, tweaked version of bubaflub++'s initial patch
10:45
rrot: r42305 | dukeleto++ | trunk/t/op/00ff-dos.t:
[cage] Remove some debug messages accidentally added in previous commit
10:48
TT #1185 closed by dukeleto++: [PATCH] attempted to rewrite t/op/00ff-dos.t in PIR 10:50
11:01 payload joined 12:19 masak joined 12:26 he__ joined 12:32 leto joined 12:48 payload joined 12:50 whiteknight joined
dalek l: 66df44d | fperrad++ | (12 files):
convert tests to PIR (from Perl)
12:58
purl I don't know how to convert tests to PIR (from Perl).
l: 3868bf1 | fperrad++ | (3 files):
convert Configure in PIR (from Perl)
l: cc45ffd | fperrad++ | (3 files):
move Makefile.in
l: 8e5ec63 | fperrad++ | (9 files):
chmod +x
purl chmod +x is an executable.
whiteknight purl forget chmod +x
purl whiteknight: I forgot chmod +x
dalek rkdown: 529db87 | fperrad++ | (3 files):
move root.in
13:04
rrot: r42306 | jkeenan++ | branches/configtests/config (2 files):
Replace get_p5('OSNAME') with get('osname').
13:19
rrot: r42307 | jkeenan++ | branches/configtests/t/steps/auto (5 files):
Continue to convert steps tests to use of Parrot configuration data.
13:23
13:31 pmichaud joined 13:34 mj41 joined 13:35 jsut joined 13:45 whoppix joined, davidfetter joined 13:46 payload joined 13:50 patspam joined 14:03 kj joined 14:15 particle joined
dalek TT #1216 created by doughera++: [PATCH] Fix dependency in docs/Makefile 14:31
15:13 Andy joined
whiteknight all tests pass on win32 with strawberry 15:22
whiteknight needs to figure out the incantation again to make it build with MSVC
15:26 Psyche^ joined
dalek rrot: r42308 | NotFound++ | trunk (3 files):
make downcase and titlecase throw on null like upcase already doed, add tests for passing null to upcase, downcase and titlecase
15:27
a: 157204c | fperrad++ | (4 files):
convert Configure to PIR (from Perl)
15:37
purl I don't know how to convert Configure to PIR (from Perl).
a: dbf7fb5 | fperrad++ | (5 files):
move Makefile templates
a: 9df7621 | fperrad++ | Makefile.in:
target test
15:44 bubaflub joined 16:25 PacoLinux joined 16:27 PacoLinux joined
dalek parrot: 3f2e4bb | (Joshua Tolley)++ | src/ (12 files):
Separate the two major pieces (language handler, NQP stuff) into their own directories
16:28
parrot: 684bc49 | (Joshua Tolley)++ | :
Merge branch 'master' of git@github.com:leto/plparrot
16:37 particle joined
dalek rrot: r42309 | mikehh++ | trunk/MANIFEST:
regenerate manifest
16:45
rrot: r42310 | mikehh++ | trunk/t/op/vivify.t:
set svn properties
16:48
rrot: r42311 | mikehh++ | trunk/src/ops/experimental.ops:
fix codetest failure - pod syntax
16:54
17:02 pjstadig joined 17:07 cogno joined 17:14 theory joined 17:47 mokurai joined
dukeleto 'ello 17:48
a fresh checkout of parrot trunk still fails to compile on my box 17:49
whiteknight dukeleto: which box? How long has this been an issue?
dukeleto i am starting to think that it could be that i installed nqp-rx 17:50
whiteknight: since yesterday
gmake -C compilers/tge
gmake[1]: Entering directory `/Users/leto/svn/parrot-testing/compilers/tge'
../../parrot ../../runtime/parrot/library/PGE/Perl6Grammar.pbc --output=TGE/Parser.pir TGE/Parser.pg
push_string() not implemented in class 'Getopt::Obj'
make corevm passes, but PGE fails to compile
whiteknight could be NQPRX, I don't know what it's installed files are named 17:51
or what all libraries it installs
dukeleto whiteknight: it installs into parrot's bin dir and stuff. i don't know how I feel about that 17:52
whiteknight: for exactly reasons like this
whiteknight dukeleto: regardless of how it makes anybody feel, if there are no name collisions it's a non-isue
name collisions are the problem
dukeleto whiteknight: this is happening on darwin/x86
whiteknight ok
dukeleto whiteknight: no one else seems to be experiencing it 17:54
but it is happening to me with a fresh checkout
whiteknight so to verify: uninstall NQPRX and try to build parrot again 17:55
dukeleto whiteknight: actually, nqp-rx is not installed anywhere that parrot would find it. it is installed into ~/git/nqp-rx/parrot_install 17:56
whiteknight what is the error that PGE gives you?
Coke dukeleto: what's your build failure?
(trying a new checkout)
nopaste "dukeleto" at 32.158.114.168 pasted "trunk r42302 build failure" (35 lines) at nopaste.snit.ch/18589 17:59
Coke PGE works here; I would recommend moving aside installed parrot, or perhaps restricting your path.
dukeleto yes, installed parrot could be it 18:00
Coke I have problems when I only install every N releases and something changes.
makes sad coke sad.
dukeleto Coke: yes, this issue makes me sad as well
whiteknight find everything that's installed and delete it 18:03
dukeleto whiteknight: i do that often to parrot, but who wants to explain that to end users? not me.
Coke msg pmichaud I'm going to be on vacation next week, and pretty non-responsive to parrot.
purl Message for pmichaud stored.
dukeleto parrot needs an uninstall method 18:04
whiteknight dukeleto: at the moment, we're looking to isolate the problem
isolated problems lend themselves to solutions
Coke (uninstall) that's up to the packagers.
dukeleto whiteknight: yes, for the moment I will do that
whiteknight: i was commenting in general
whiteknight ok
dalek kudo: 6670e70 | moritz++ | t/spectest.data:
[t/spectest.data] track filename changes
18:08
kudo: 830e2cf | moritz++ | src/setting/Any-list.pm:
the named argument to .pick is now called :replace
dukeleto is compiling again after nuking installed parrot from orbit 18:12
it seems as if i have pleased the parrot elder gods 18:16
i should have known it was an installed parrot, but fiddling with nqp-rx lately provided a red herring 18:17
whiteknight okay, problem isolated. dukeleto++ 18:26
18:28 chromatic joined 18:32 darbelo joined
dalek rrot: r42312 | darbelo++ | branches/libjit_frame_builder:
Too many patching mistakes on this branch. Let's try this again in a new one.
18:46
pmichaud Coke: enjoy your vacation 18:49
dalek rrot: r42313 | darbelo++ | branches/libjit_framebuilder:
Create a new branch for plobsing's work on the libjit frame builder (TT#1105).
pmichaud is there a document somewhere that describes or gives examples of using the profiling output? 18:52
barring that, could someone walk me through an explanation of what I'm seeing in kcachegrind ?
pmichaud.com/sandbox/snapshot1.png 18:53
chromatic I can give some quick tips. 18:54
pmichaud this is a parse of Rakudo's Actions.pm using nqp-rx
sorry
this is a *compile* of Rakudo's Actions.pm using nqp-rx
I know that nqp-rx is presently slower than PGE, so understand that. I want to know where ripe places for optimization are
chromatic See those icons in the upper middle of the screen? Show Relative Costs and Percentage Relative to Parent? Click those. 18:55
pmichaud done
chromatic Also in the upper right panel, click the Callers tab.
pmichaud let me know when/if you need snapshots
callers tab, done 18:56
chromatic Bottom panel, click the Call Graph tab.
pmichaud done
chromatic Okay. Now the leftmost panel shows the top n functions sorted by combined time. That is, their cost plus the cost of all of the functions they call. 18:57
18:57 mj41 joined
chromatic The bottom right panel should show a call graph of the function highlighted in the left panel as well as everything it calls. 18:57
Thicker lines to (and higher percentages in the boxes of) children represent greater expenses.
pmichaud pmichaud.com/sandbox/snapshot2.png 18:58
18:58 DrForr_ joined
pmichaud these are sorted by ... time? 18:59
chromatic Expense, but basically time.
pmichaud that's odd
chromatic This measures the number of instructions executed.
pmichaud at least, it doesn't at all match my expectations.
cotto_work and the time taken by those instructions
chromatic cotto_work, some of those functions get called 0 times. That doesn't look right. 19:00
pmichaud, how complex is the control flow here? Are you using tailcalls or coroutines?
pmichaud no coroutines that I recall, but likely lots of tailcalls
should I eliminate those ? 19:01
chromatic No; just wondering if the profiler tracks those correctly.
pmichaud PCT is full of tailcalls
cotto_work That definitely doesn't look right.
chromatic cotto_work, we probably need a small test case of PIR with a tailcall and an expected profiler output to get those working. 19:02
pmichaud checks to see how many tailcalls are in past
107.
well, that's a little high 19:03
89
chromatic I usually look for (1) time spent in a function and its kids (left panel, leftmost column) (2) number of total calls to a function (left panel, middle column), and (3) amount of time spent in current function (third panel, second column from left).
The bottom right panel is good for exploring control flow up and down the graph, to find which code paths call the expensive code.
pmichaud right. but I agree these numbers don't look right. They don't match my expectation of the control flow, for one. 19:04
cotto_work chromatic, any kind of profiler tests would be an improvement. If you could add support for testing the profiler, I'd love to add some tests.
The perl test code scares and confuses me.
pmichaud cotto_work: me too :)
anyway, given that these are tree structures, there's an awful lot of recursion and tailcalls taking place 19:05
if these numbers are correct, it would make me somewhat happy, because they'd be places for easy optimizations. But I have trouble believing they're correct. 19:06
19:06 cognominal joined
pmichaud let me give a quick example 19:07
chromatic You could temporarily remove the tailcalls and profile it again to see if the numbers look more realistic. I have no trouble believing we don't represent tailcalls well.
pmichaud 87 tailcalls is a lot of removals, though :-|
chromatic Yeah, I agree. 19:08
Could you put the bzipped callgrind.out file somewhere online temporarily?
pmichaud oh, sure!
pmichaud.com/www/sandbox/snapshot3.png
the callgrind.out file would be the parrot.pprof.*.out one? 19:09
er, *.out.*
parrot.out.13725 ?
chromatic Yes, I believe so.
pmichaud it's only 131k
did you mean the pprof file?
chromatic Whichever one you had to generate with the Perl program.
pmichaud that's the .out file
chromatic Whichever one you fed to KCachegrind.
pmichaud -rw-r--r-- 1 pmichaud pmichaud 131232 2009-11-06 12:24 parrot.out.13725 19:10
-rw-r--r-- 1 pmichaud pmichaud 798568165 2009-11-06 11:50 parrot.pprof.13725
*.out.* it is
pmichaud.com/sandbox/parrot.out.13725
chromatic Hm. 19:11
pmichaud anyway, from snapshot3.png, I think it's telling me that a lot of time was spent in Node.iterator, which was called 5251 times.
chromatic Look at Cursor;!protoregex
The call graph there is better.
pmichaud okay. 19:12
I see the call graph, it matches my expectations to a large degree. 19:13
dalek rrot: r42314 | darbelo++ | branches/libjit_framebuilder (30 files):
This time with an all in one approach:

   - Bring over the changes made by the auto_libjit branch.
   - Fix errors introduced by the above.
pmichaud it doesn't really seem to tell me where to look to optimize things, though
chromatic This is where experience and intuition come in. 19:14
pmichaud my intuition has been that mark_push was going to be relatively expensive
chromatic I'd look at the Grammar package rules -- term;sym<package_declarator>, statementlist, statement.
pmichaud not for any single call, but overall because it would get called so many times
well, statementlist just calls statement 19:15
(yes, I'll look at the code...just giving an idea of what's going on inside these)
chromatic Right. Sometimes it takes me a few minutes of browsing around and exploring and reading the source code to figure out that something's an optimization candidate. 19:16
pmichaud okay
it's a bit tricky though, as these are all generated code 19:17
chromatic Yeah, and we know some numbers are off.
I'm never quite sure whether it's Parrot's weird control flow or some subtlety of Callgrind/KCachegrind that I don't understand.
pmichaud not too hard to read the generated code, but I generally know what it's likely to look like, and it doesn't feel like these are bottlenecks
chromatic If you run this from a directory above the NQP-rx src/ directory, you can change the top right panel to show annotated source code. 19:18
Otherwise, go to Settings, Configure KCachegrind, and the Annotations tab and you can add that source directory.
pmichaud settings will be easier here
hmmm. that froze my kcachegrind hard 19:20
I'll just look at the source code in vim :) 19:21
chromatic If annotations worked, you could see cost per line, which can be helpful. 19:22
19:23 whiteknight joined
pmichaud admires the code generated by nqp-rx. Much prettier than PGE code. 19:25
chromatic There's a reason I only tried to optimize PGE code once or twice. 19:26
pmichaud NQP-rx is much nicer
I'll nopaste a snippet
cotto_work and I'm sure it'll get even nicer with fetch/vivify 19:27
pmichaud the regex code doesn't tend to need fetch/vivify, but yes, other code will like it a lot
whiteknight any reason we can't put those opcodes in as experimental?
cotto_work they're in now
darbelo whiteknight: I though they were. 19:28
nopaste "pmichaud" at 72.181.176.220 pasted "snippet of nqp-rx generated output" (105 lines) at nopaste.snit.ch/18590
pmichaud anyway, you can just basically follow the original source of the rule and see that reflected in the generated code 19:29
alt128_0 and alt128_1 are the two branches of the top-level alternation
whiteknight quite impressive
pmichaud within alt128_0 is the test for $ (rxanchor eos)
within alt128_1 is the tests for <.ws>, a * quantifier, a call to the <statement> subrule followed by the <.eat_terminator> subrule 19:30
(and <.ws> in appropriate slots)
most of the calls to "!cursor_*" are designed to be inlinable
and that's what I've been expecting to eat up a fair bit of time 19:31
(which is why I designed it to be inlinable, so as to eliminate a bunch of methodcalls from the match)
darbelo msg plobsing I obliterated the branch and created a new one with your latest patch. 19:33
purl Message for plobsing stored.
darbelo msg plobsing I think it should be fuckup-free this time, msg me if not. 19:34
purl Message for plobsing stored.
pmichaud okay, this tells me a couple of things to do first (none of which are optimizations on their own, but should make it easier to use the profiler)
darbelo msg plobsing trac.parrot.org/parrot/changeset/42314/
purl Message for plobsing stored.
chromatic Yeah, even without guaranteed accuracy, it does help.
darbelo whiteknight: ping 19:35
pmichaud first, I should go ahead and either get nqp to compile from the four .pir files (with .include statements already squashed), to make it easier to see the annotated source code
whiteknight darbelo: pong
pmichaud (I think kcachegrind might be confused by the -I options used during compile)
or I should work a bit on getting nqp-rx into the parrot repo
(allison has indicated that we can go ahead and bundle nqp-rx with parrot, at least for the time being)
darbelo whiteknight: I created a new branch (libjit_framebuilder) with plobsing's latest libjit patch. 19:36
whiteknight: saw you cc'ed on the ticket, figured you migh want to give it a spin.
pmichaud then after doing those, I should probably remove the tailcalls from PCT and see if that makes it easier to use the profiler
chromatic If it's a short thing, I'm interested to see if that helps. 19:37
darbelo I don't have libjit here, so I only checked that it doesn't regress anything. But it looks good.
pmichaud I might be able to write a perl script to do the .tailcall conversions
whiteknight darbelo: okay, I'll try to look at it tonight
pmichaud if I do them automatically, it'd be in a form where it could be easily reversed back, I suspect
darbelo whiteknight++ 19:38
pmichaud or I could try creating a tailcall macro that let's us swit.... <SLAP!> Sorry.
(imcc macros = evil)
chromatic They're less evil now.
darbelo I'd really like to get this merged before the next Great Disruption.
pmichaud basically I think it involved taking lines of the form 19:39
.tailcall <something>.'methodname'(<args>)
and turning it into
$P9999 = <something>.'methodname'(<args>)
.return ($P9999)
whiteknight that only covers single-item return signatures 19:40
pmichaud ....but have to be careful to specifically handle the cases where the thing being tailcalled is r.... right
have to handle multi-return items
but there aren't many of those in PCT
whiteknight ($P999 :slurpy) = <something>.'methodname'(<args>)
.return($P9999 :flat)
pmichaud more often is ($P0, $P1) = ...
anyway, I'll do that conversion also
and then re-run the profiler and see what happens 19:41
if someone was looking for an easy-ish "I don't have to really know what I'm doing" sort of task, converting the tailcalls in PCT would be a good one :) 19:42
anyway, thanks for the profiler help. I'm looking forward to having tailcalls working (if that is indeed why the call totals look weird here) 19:43
chromatic It's not always. Callgrind on C code can be weird too sometimes. 19:45
I'm sure there are bugs in the profiler though.
cotto_work chromatic, do you think you'll have the tuits to add perl Test::More code to enable testing the profiler? 19:46
the PARROT_PROFILING_OUTPUT environment variable will probably come in handy there 20:00
20:03 kj joined
dalek rrot: r42315 | darbelo++ | branches/libjit_framebuilder/src/frame_builder.h:
Rename a header guard to make codingstd test happy.
20:06
chromatic I'm thinking about how to do that, cotto_work. 20:11
cotto_work Thanks. 20:12
dalek rrot: r42316 | darbelo++ | branches/libjit_framebuilder (8 files):
Set svn props for new files.
20:13
20:22 particle joined 20:25 joeri joined 21:00 mikehh joined
chromatic Ugh, no .deb for libjit. 21:03
auto::libjit - Is LibJIT installed..../test_20464: error while loading shared libraries: libjit.so.0: cannot open shared object file: No such file or directory 21:10
darbelo odd, I don't get that here. 21:15
chromatic Do you have libjit installed? 21:18
darbelo No. I thought you didn't either. 21:19
You have it but can't open the .so?
chromatic I just installed it. 21:20
I have the .so in /usr/local/lib and I can run nm and ldd on it.
darbelo Hm. Is /usr/local/lib in your $LIBPATH (or eqivalent)? 21:23
chromatic Yes, the linker looks there. 21:25
I can never remember how to run a single configuration step, and Configure.pl's --help doesn't tell me. Does anyone remember? Can we patch the docs to help? 21:29
darbelo I didn't even know Configure allowed that. 21:32
particle chromatic: see reconfigure.pl 21:35
chromatic perl tools/dev/reconfigure.pl --step=auto::libjit ? 21:38
particle sounds right to me 21:39
chromatic cc -L/usr/local/lib -Wl,-E test_25527.o -ljit -o test_25527 -ldl -lm -lpthread -lcrypt -lrt -lgmp -lreadline
particle you might want --verbose
chromatic No -L/usr/local/lib there; that must be the problem.
auto::libjit - Is LibJIT installed.................................yes. 21:40
21:42 desertm4x joined
chromatic t/pmc/nci.t ................................. 568/652 21:46
# Failed test 'nci_ssc'
# at t/pmc/nci.t line 596.
# got: 'loaded
# dlfunced
# nok 1
# 1075970054
# '
# expected: 'loaded
# dlfunced
# ok 1
# '
Otherwise, everything is fine on 32-bit Linux.
modulo that /usr/local/lib isn't in my library path.
... and after running ldconfig, it is. 21:48
21:52 whoppix joined
darbelo We should try to get some better error messages into that step. 21:54
But I'm not sure where to put them. 21:55
22:14 masak joined
darbelo caves in and gets a 32-bit linux. 22:31
dalek l: 2059793 | fperrad++ | (2 files):
install as 2 libraries
22:37
l: 99ae092 | fperrad++ | (23 files):
reorg tree (step 1)
l: 6ce7dc3 | fperrad++ | (5 files):
reorg tree (step 2)
l: f394414 | fperrad++ | (5 files):
reorg tree (step 3: builtins)
l: 685bb8d | fperrad++ | (10 files):
reorg tree (step 5)
l: af5db76 | fperrad++ | plumage/xml.json:
add xml.json (Plumage)
pmichaud chromatic / cotto : update on profiling 22:41
independently we've discovered that the code gen phase *is* far slower than it ought to be -- i.e., the results that kcachegrind are showing are in fact somewhat real 22:42
in the sense that the thing eating up all of the time are indeed the subroutines at the top
so I'm investigating why it suddenly got so slow
I'll keep you posted :) 22:43
chromatic I like the phrase "somewhat real".
japhb I like quasi-real myself. 22:44
chromatic <bender>I'm out, meatbags! I'd be lying if I said it's been fun. Keep it somewhat real.</bender>
cotto_work It's nice to know that the profiler was right. 22:45
chromatic Right-ish. 22:46
pmichaud I'll let you know how right soon
cotto_work yes, as in not completely wrong
My value of "right" is a bit depressed atm. 22:47
japhb cotto_work, chromatic: how difficult would it be to change the format of the raw profile lines to be faster to parse? Might make pprof2cg a decent amount faster ...
chromatic Less data ======> faster.
cotto_work It's a ripe area for optimization. 22:48
chromatic One problem is that we don't know exactly where it's wrong yet, nor why.
Though I know that line numbers are wrong-ish in some places.
cotto_work btw, is there a probe for zlib? it'd be nice to use that to compress the pprof output. 22:49
chromatic Did I hear a hint drop? YES WE CAN.
cotto_work chromatic, how feasible do you think it'd be to write profiler tests in pir? It might not be too bad if I could use nqp-rx regexes to scrub out timing information. 22:58
chromatic We need a way to run a subprocess and capture its output. That's not difficult, but I don't know if we can do that from PIR yet. 22:59
I keep getting hung up on the other feature, though.
We need a way to review that output and see if *pieces* of it are sane.
That is, if we profile a specific tailcall, we should be able to see if we've recorded that information in a way that makes sense to us and (hopefully) to the Callgrind output format. 23:00
cotto_work Yes. Checking the whole output for every test would be burdensome.
chromatic I know that we need to do that, but I don't have a good idea about *how* to do that. 23:01
cotto_work I suppose annotation-awareness could be a big help here. 23:05
chromatic I don't really want to write a *third* parser/emitter for our profiling format. 23:07
If we had a PIR object model to represent profiling output, we could check nodes and attributes.
Then we wouldn't need the Perl 5 parser. 23:08
cotto_work That's be really nice.
chromatic We could even fork() off a new Parrot instance at the appropriate time to parse the output into callgrind format.
Just when I get excited about that, I think "But we don't know it's correct now!" and "Hey, we really need STRINGNULL!" and "That's a lot of work!" and "Aren't you supposed to be writing a book today?" 23:09
pmichaud nqp(-rx) might be able to do a reasonable job here 23:13
I dunno.
you would get regexes
I'm hoping to write some Test::* modules in nqp :-) 23:14
chromatic I think it's a reasonable avenue of exploration.
cotto_work sounds like it's time for some exploring then 23:18
23:19 kesselhaus joined
dalek rkdown: b2ef811 | fperrad++ | (14 files):
reorg tree (step 1)
23:20
rkdown: a5d1d68 | fperrad++ | (3 files):
reorg tree (step 2: builtins)
rkdown: 050f234 | fperrad++ | (7 files):
reorg (step 3)
japhb chromatic: Plumage has a working qx() in NQP/PIR. Is that what you were looking for earlier about capturing output from a subprocess? 23:22
chromatic Yes, basically a profiler test would need to run a subprocess, figure out where its output is, parse that output, and test portions of that output. 23:23
pmichaud I wonder what it would take for me to put a qx{...} diretly into nqp 23:25
*directly
kesselhaus if i install parrot 1.7.0 not in C:\\parrot-1.7.0\\ but in C:\\parrot\\ how can i set parrot to use C:\\parrot as prefix to look for it and the languages? 23:28
chromatic If you used the --prefix to Configure.pl, that behavior should happen automatically. 23:29
23:30 kid51 joined
kesselhaus i installed from the installers 23:30
darbelo installers? 23:31
purl installers are HARD
chromatic fperrad might have more information then. 23:32
jonathan as far as I know, the Parrot installed by the installer is not relocatable.
(this has come up before) 23:33
IIRC you can install it on a different drive.
But not a different directory.
:-/
kesselhaus don't tell me. the paths are hardcoded into the executables...
jonathan Believe so.
kesselhaus hmm 23:34
dalek kudo: fe6dd27 | (Kyle Hasselbacher)++ | src/setting/Any-str.pm:
[setting] comb takes Regex, not Code. Fixes RT #66340
23:40
23:40 mikehh joined 23:45 selenamarie_ joined
kesselhaus hmm, the whole windows builds seem to be flawed... unless you are on drive C:, none of the parrot executables run properly 23:50