#parrot Parrot 2.2.0 "Like Clockwork" Released! | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Improve Rakudo rx and buildtime performance | Fix HLL bugs (TT #389, #1040) | Prioritize Rakudo Needs and roadmap items
Set by moderator on 30 March 2010.
Whiteknight are you sure about that? Have an example? 00:00
arnsholt Well, my point of departure is the bug you spotted, with the missing .return when I removed .tailcall
Lemme see if I can find the nopaste 00:01
Coke the problem is that the HLL of the grammar is not the HLL of my language.
Austin That's what I meant about checking for some kind of boundary... 00:02
arnsholt Whiteknight: nopaste.snit.ch/20025 00:03
Whiteknight arnsholt, so what's wrong in this example? 00:04
arnsholt If you remove the .tailcall directive without making it .return explicitly (like I had done), city in blob() will hold the string "la" after the continuations are invoked
Whiteknight oh, ok 00:05
arnsholt But when the first continuation is created at least, it shouldn't have that value
Which is what makes me wonder
Whiteknight in that case, it pulls the return value out of interp->current_sig, which hasn't been overwritten because there was no .return
so yes, it probably is a bug 00:06
nopaste "coke" at 72.228.52.192 pasted "austin - this fails" (40 lines) at nopaste.snit.ch/20142
Whiteknight more realistically, it should throw an exception because a result is requested, but nothing is returned
00:06 tcurtis joined
arnsholt True, true 00:07
Whiteknight make a ticket, can post this IRC chat as a description
Austin Coke: Try assign_vpp
arnsholt I'll do that
00:09 snarkyboojum joined
Coke getlist not found for undef. 00:10
Austin Heh. What does that mean?
Coke that is putting an Undef into the list. 00:11
Austin Yeah.
00:12 eternaleye joined
Austin Are you still using the lset-a-1-aa example as a test case? 00:12
Coke yup.
Austin And what's the expected output?
purl the expected output is very long, so i scrolls for screens and screens
Austin Because I get no output, and $? == 0 00:13
Coke A AA
er, a AA
Austin Really?
it should print something?
Coke er... if you add a puts, yes! =-) 00:14
./partcl -e 'set a {a {b c}}; puts [lset a 1 AA]'
Austin Now I get a blank line 00:15
Coke what's your diff/
?
arnsholt Oh. FFS. Just for good measure, I made Parrot segfault as well 00:16
nopaste "Austin" at 68.37.47.32 pasted "list method" (10 lines) at nopaste.snit.ch/20143 00:17
Austin Hmm... 00:18
My version of "lset" is perhaps a tad minimal...
Coke @list.push: $element; ?
arnsholt At least the segfault was my fault (no pun intended)
Coke Austin: have you pulled?
Austin Nope
Coke you'll need to do that. =-)
Whiteknight segfault?
purl well don't DO that, then.
arnsholt But segfaulting when invoking an uninitialised continuation is probably a bit over the top 00:19
Whiteknight definitely not right
file another ticket!
arnsholt Whiteknight: I removed a line too much and killed the one that inited a continuation
Whiteknight in C?
purl in C is there some rational choice between for (;;){...} and while(1){...}?
arnsholt Yeah. I just have to obsess a bit more over how to word this first one =)
No, PIR
Austin partcl-nqp?
purl well, partcl-nqp is github.com/partcl/partcl-nqp
Austin botsnack
purl :)
Coke Austin: with your patch, I get the same thing I get with my patch. 00:20
you probably aren't triggering the error because it's invoked from inside [lset]
Austin Right.
00:23 ruoso joined
arnsholt Whiteknight: Oh dang. Our conversation overflowed the day change in the IRC logs =) 00:24
00:25 payload joined
Whiteknight nice 00:26
arnsholt: I know it must be frustrating for you, but you're performing an invaluable bug-finding service for Parrot 00:27
arnsholt++
arnsholt Well, this one isn't an actual issue for me (thankfully)
There was just something that didn't quite sit right
tcurtis Is there any sort of standard benchmark suite I could use to make sure a change doesn't make Parrot excessively slow? "time make fulltest"(my current plan) is probably not the best way to do so. 00:28
Whiteknight tcurtis: yes, there are benchmarks 00:30
let me look
arnsholt Whiteknight: Do you know off-hand what the correct C incantations are to cause Parrot to die() 00:31
Whiteknight examples/benchmarks/*.pir
arnsholt: in C? I think it's Parrot_exit()
arnsholt: src/exit.c
cotto_work tcurtis, dukeleto had something set up that should make finding performance regressions relatively simple
Austin tcurtis: svn ci -m "here's a change" ; kold=$(echo "karma tcurtis" | wirc irc.parrot.org/parrot) ; sleep $((24 * 3600)) ; knew=$(echo "karma $USER | wirc irc.parrot.org/parrot) ; if expr "$knew < $kold" ; echo "Bad change" ; fi 00:32
cotto_work actually, ripping off speed.pypy.org wouldn't be a bad gsoc project if it's not too easy
Austin The bacek approach: Check it in, wait 24 hours, check your karma... 00:33
cotto_work chromatic usually runs some small-ish nqp program under valgrind and uses the instruction count as an indicator 00:34
Whiteknight that's good too. But in talking about changes to the internals, the opcount can stay the same but the cost per op can change 00:35
tcurtis I think I'll try just using "make benchmark_tests", which I only now noticed.
Austin Whiteknight: I think he meant the host CPU opcode count.
cotto_work yeah 00:36
Austin (valgrind)
Whiteknight oh. Duh.
I might be stupid, but there's one thing I am not: stupid
dalek TT #1537 created by arnsholt++: Continuations fail to revert all registers to the correct state 00:37
TT #1537: trac.parrot.org/parrot/ticket/1537
Whiteknight okay, I'm off to bed 00:42
actually, Lost is on in a few minutes, then bed
later
cotto_work night
Coke Lost? no spoilers, I just finished season 1. 00:47
... every time I see arnsholt, I think "you got some artz on you." 00:48
arnsholt artz?
Coke lostpedia.wikia.com/wiki/Leslie_Arzt
I know it's not the same name. Just some sort of mental trigger. 00:49
arnsholt Right. Never watched Lost, so no wonder I didn't get the reference 00:50
At any rate, it's a bit of a portmanteau on my real name
Coke Austin: ah. I think my undef error is because I'm getting further. whee. 00:53
arnsholt There, another issue opened. It even has a patch =)
Austin COngrats.
dalek TT #1538 created by arnsholt++: Invoking uninitialised continuation causes segfault 00:54
TT #1538: trac.parrot.org/parrot/ticket/1538
Coke *cry* 01:01
01:02 bubaflub joined 01:04 atrodo joined 01:07 bubaflub joined 01:09 bacek joined
dalek rtcl-nqp: c09f71c | Austin_Hastings++ | src/Tcl (2 files):
Added Data::Dumper support for TclString, List
01:13
cotto good evening 01:16
purl Ah, evening. The tumultuous mind tarries and contemplates, reveling in the silence afforded by the diurnal proletariat. Good evening, indeed.
cotto go away, purl 01:17
purl No, YOU go away, bud.
Austin smackdown
purl somebody said smackdown was the only one of those i've ever even heard anyone mention.
Austin purl++
dalek rtcl-nqp: 3152687 | Coke++ | src/Partcl/commands/main.pm:
use a more natural for-style loop.
01:19
rtcl-nqp: a7900e9 | Coke++ | src/Tcl (2 files):
Merge branch 'master' of github.com:partcl/partcl-nqp
Austin Man, the next time Whiteknight bitches about subscripting in NQP, I'm doing to send him to the lset manual page. 01:21
Coke Austin: =-) 01:28
tcl is soo much fun. =-)
Austin Coke: I got up to 10 (out of range) working 01:44
01:53 kid51 joined 01:55 Psyche^ joined, eternaleye joined
Austin Hey, coke: does this commit of yours work? 01:56
Coke Austin: out of range? 01:59
purl well, out of range is good
Austin yeah, test #10
I got 'em all, now.
had em all. 02:00
git--
Coke Austin++ 02:02
nopaste "coke" at 72.228.52.192 pasted "this is close, but occasionally gets assign $PXX, <void>" (26 lines) at nopaste.snit.ch/20144 02:03
Austin Coke: is it really an error to lset a non-existent var? Or does that just vivify one? 02:11
02:12 jimk joined
Coke error. 02:13
(at least with the vintage tclsh I have lying about.)
Austin wfm 02:14
Code just gets a little uglier.
Coke working trumps ugly.
lset should already be dying on that, btw.
Austin Code just gets a little uglier. 02:15
ww
Okay
This should be the last change...
Get rid of the dumps..
Hey, in case you didn't see it, I added __dump methods to TclString and TclList so that Data::Dumper would print more than just { ... } 02:16
02:16 Mokurai1 joined
Austin That got old quick. 02:16
Coke I did. Austin++
Austin Pushing 02:17
push it
dalek kudo: 8ba6030 | (Solomon Foster)++ | src/core/ (2 files):
Int and Num do Real. jnthn++ for patching it so this works with augument.
Coke push it is <reply>Push it real good.
Austin push it is <reply>Push it real good!
Heh.
great minds..
purl you wish you thought like me, dude
Austin push it
push it?
purl Oh!
Austin bah
Anyway, it's pushed 02:18
nopaste "coke" at 72.228.52.192 pasted "austion - close..." (26 lines) at nopaste.snit.ch/20145 02:20
dalek rtcl-nqp: 458f2f6 | Austin_Hastings++ | src/Partcl/ (2 files):
Got lset working
02:22
rtcl-nqp: 4335646 | Austin_Hastings++ | src/Partcl/commands/main.pm:
Got lset working (again). Undid some cleanups that actually changed behavior.
Coke untodo'd the tests... 02:23
02:25 snarkyboojum joined
Coke Austin: we are now failing t/sanity.t 02:25
Austin ? 02:26
Coke 'make test' has failures.
dalek rtcl-nqp: 39af750 | Coke++ | t/cmd_lset.t:
These tests pass now (Austin++)
02:27
Austin okay, back 02:28
What sort of failures?
I've been seeing this weird "unexpected \\n" but I figured it was a unix/dos thing.
Coke no, that's a real failure in the generated PIR. 02:32
if you run parrot -D60 partcl.pbc <some file>, you can capture the generated EVAL files and see the bad PIR. 02:33
./partcl t/sanity.t shows the erorr. 02:34
Austin Damn.
Coke++
I *never* knew about that, but I wish I had..
02:34 tcurtis joined 02:35 janus joined
Coke it's helpful. =-) 02:36
Austin assign weirdness in "is"
Coke sanity.t is showing a different error. 02:37
Austin Where's that defined?
Coke lib/test_more.tcl
it's in tcl. 02:40
02:41 atrodo joined
Austin Yeah, it's trying to assign a default value to an unspecified parameter. 02:41
Why is it being evaled, though?
Coke why is what being eval'd. is? 02:42
Austin Yeah
Coke because It's being compiled?
source "lib/test_more.tcl" reads in the tcl, compiles it to PIR, then compiles the PIR.
Austin Okay. 02:43
Coke I wonder if it's the list {special {}}
Austin It's description
Coke (the second, empty element looks suspicious.)
given that you just changed list processing.
Austin Wait
No
Coke (or {description ""}
Austin It's special
tcurtis I think I've gotten rid of the last uses of Parrot_string_cstring without breaking anything, although it might have a small performance penalty since Parrot_str_to_cstring copies, while Parrot_string_cstring doesn't.
Coke "" and {} are the same thing.
Austin Heh 02:44
Coke (well, after past)
Austin Except one of them is a list, right?
Now, it's a blocked_something-or-other
Coke no, they're both strings. =-)
things aren't lists unless you treat them like lists. 02:45
so, /proc/ will take those and treat them like lists.
but the tcl compiler will pass them as strings to the proc command.
Austin But doesn't the parser handle "" and {} differently?
Coke (unless pmichaud did something odd.)
"" is like qq{}, {} is like q[}
q{}
so, yes, the parser does different things, but when the parser is done, that's still a string. 02:47
if you look at the Grammar, you'll see that list is self contained - nothing else refers to it.
(that's why we have .getList() all over the place, to coerce the strings.) 02:48
Austin Heh 02:50
Not as independent as you think...
Coke it's tangled. 02:51
ugh. feel crappy. later.
->
dalek TT #1539 created by tcurtis++: Remove deprecated Parrot_string_cstring function 02:53
TT #1539: trac.parrot.org/parrot/ticket/1539
02:54 Patterner joined 02:56 Mokurai1 joined 03:11 hercynium joined 03:36 Coke joined
cotto Is anyone else seeing a t/compilers/imcc/syn/regressions.t failure? 03:51
dalek rrot: r45333 | bacek++ | branches/avl_string_cache:
Branch to implement constant string caching described on FixingConstantSTRINGCaching wikipage
bubaflub cotto: i reopened a ticket about that earlier 03:56
l
lemme fin dit
*find it
cotto: trac.parrot.org/parrot/ticket/641#comment:4
cotto Good for you. bubaflub++. Is that the first revision where that test fails? 04:00
bubaflub first that i noticed 04:02
it can't be too many revisions before that; i usually build pretty regularly
an
04:02 eternaleye joined
bubaflub d it may just be my compiler doesn't like it 04:02
bacek I can reproduce it on Linux/i386/g++ 04:03
not on gcc.
bubaflub Coke mentioned that as well
though i'm on Mac OS X and gcc
cotto It is helpful if you can bisect when posting a bug though 04:05
bubaflub cotto: i've got some time, a svn and git-svn checkout. what should i do? 04:06
should i check out the revision that Coke mentioned in the ticket and then start bisceting from there?
search.cpan.org/~infinoid/App-SVN-B...svn-bisect looks useful 04:09
cotto That'd be a reasonable approach. 04:14
bubaflub cotto: i'll try to get to it tonight and update the ticket 04:18
Austin msg coke I've committed changes that appear to work - make test passes, t/cmd_lset.t passes. The problem with String vs. TclString is down in the PCT library, where it explicitly processes the type of the value given to PAST::Val nodes. To use TclString will require either setting "returns" parameters, or modifying the global type info hash. (Then there will be a different bug, natch...) 04:21
purl Message for coke stored.
bubaflub cotto: i just checked out and built the revision that Coke said he had it working in and it failed for me. i'm updating the ticket. 04:26
Coke bubaflub: 0.9 is old. 04:39
bubaflub Coke: whoops. first result in google. i'll make sure to grab the newest
Coke Austin: don't forget to push.
bubaflub Coke: I also have a patch for TT #1534 (removing the svk developer support)
it builds clean off trunk, make coretest doesn't report any extra failures 04:40
Coke: there is also a note in the description of tools/dev/mk_manifest_and_skip.pl about how it works with svk 1.08 - do you want me to remove that as well? 04:42
04:45 eternaleye joined
dalek rtcl-nqp: 7b351b9 | Austin_Hastings++ | src/Partcl/ (2 files):
Fixed test failures introduced by lset mods.
04:48
rtcl-nqp: 089e69c | Austin_Hastings++ | t/cmd_lset.t:
Merge branch 'master' of github.com:partcl/partcl-nqp
Coke bubaflub: yup. 04:54
bubaflub Coke: k, it's on 45334. i've closed the ticket.
04:54 janus joined
Coke Austin++ # YAY 04:55
bubaflub++ danke.
dalek rrot: r45334 | bubaflub++ | trunk (3 files):
[TT #1534] remove svk developer support
04:57
cotto Do we have a way for PIR code to get entropy? 05:02
bacek scared...
cotto you down with entropy? 05:03
bacek make coretest just passed after first successful compilation of AVL based constant string cache...
dalek TT #1534 closed by bubaflub++: Remove svk developer support 05:04
TT #1534: trac.parrot.org/parrot/ticket/1534
cotto nice
bacek make test passed... 05:05
cotto doubly nice
bacek I did miss something. It couldn't happen!
Holy shit. It really works! 05:06
cotto It's nice using someone else's already-debugged code. 05:07
bacek We already reinvented quite few wheels. I think it enough. 05:08
seen chromatic 05:09
purl chromatic was last seen on #parrot 7 hours, 22 minutes and 15 seconds ago, saying: Given the source of the memory bug, I half expect that the design of this system included the line "The resulting must resemble a shark when printed on a 132-column line printer at midnight under a full moon."
dukeleto wheels within wheels... 05:11
purl Wheels within wheels in a spiral array. A pattern so grand and complex. Time after time we lose sight of the way. Our causes can't see their effects.
dalek rrot: r45335 | bacek++ | branches/avl_string_cache (2 files):
Copy AVL tree implementation.
05:13
rrot: r45336 | bacek++ | branches/avl_string_cache (2 files):
Initial implemenation of string cache based on AVL tree
05:19 Mokurai1 joined
Coke Austin: you still in? 05:20
I ported over [lreplace] 05:21
dalek rtcl-nqp: 2393e1a | Coke++ | (2 files):
run t/cmd_list.t in 'make test', marking the few failures todo.
05:22
rtcl-nqp: 8f342db | Coke++ | (2 files):
Add [lreplace], based on partcl's PIR version but in NQP.
bacek msg chromatic to you have any benchmarks for "string cache"? 05:46
purl Message for chromatic stored.
dalek rrot: r45337 | cotto++ | trunk/runtime/parrot/library/ProfTest/PIRProfile.nqp:
[proftest] use more generic, if predictable, temp files
05:48
rrot: r45338 | bacek++ | branches/avl_string_cache (3 files):
Create function str_new_constant_ex (due lack of imagination for better name) to create new constant STRING with provided charset and encoding
rrot: r45339 | bacek++ | branches/avl_string_cache/src/string/api.c:
Finish string_node_compare implementation.
05:52 parthm joined 05:53 parthm left
cotto What's p6regex for a 0-width negative assertion? 05:53
or positive 05:54
bacek cotto: <?before>? 06:09
06:11 uniejo joined
cotto That kinda did what I wanted, but it's too late for me to be writing regexes. 06:11
It's better to understand what I'm doing than to throw stuff at the compiler and see if it magically works. 06:12
night 06:14
happy avl tree hacking
bacek good night, cotto 06:16
msg chromatic AVL string cache is kinda done. Feel free to measure performance :) 06:19
purl Message for chromatic stored.
06:20 AndyA joined
dalek rrot: r45340 | bacek++ | branches/avl_string_cache/src/string/api.c:
Use fixed size allocator for AVL nodes.
06:21
rrot: r45341 | bacek++ | branches/avl_string_cache/src/packfile/pf_items.c:
Fetch strings from PBC using new constant string cache.
06:46 plobsing joined 06:59 iblechbot joined 07:23 cotto joined 07:26 snarkyboojum left
dalek rrot: r45342 | bacek++ | branches/avl_string_cache (3 files):
Made string_node_compare non-static
07:27
rrot: r45343 | bacek++ | branches/avl_string_cache (2 files):
Swap old const string hash with new AVL cache in interpeter
07:31 fperrad joined 07:37 riffraff joined 07:48 jjore joined
dalek kudo: a33fc9f | moritz++ | t/spectest.data:
two more passing test files
07:49
sorear Is there a defined protocol for /loading/ language support? 08:06
08:06 bacek joined
sorear i.e. if pir::compreg__PS("tcl") fails, should I, say, pir::load_bytecode("tcl")? 08:06
(hello bacek) 08:08
bacek aloha sorear
08:11 payload joined
dalek kudo: a0fe385 | moritz++ | t/spectest.data:
we pass undef.t
08:14
08:16 payload1 joined
dalek rrot: r45344 | bacek++ | branches/avl_string_cache/src/string/api.c:
Always allocate new string constant from root interpreter. Fix crash when new constant allocated from thread-specific interpreter.
08:18
08:22 AndyA joined 08:26 snarkyboojum joined, payload joined 08:28 eternaleye joined 08:34 cognominal joined
dalek rrot: r45345 | bacek++ | branches/avl_string_cache (2 files):
Fix couple of codetest failures
08:34
09:01 eternaleye joined 09:10 riffraff joined 09:25 clinton joined
sorear Do I currently have carte blanche to redesign PDD-31 as necessary for seamless P5-P6 integration? 09:33
I'm not sure to what extent I'm the only one working on cross-language issues
09:36 janus joined 09:44 bacek joined 09:51 payload joined 09:56 estrabd joined
sorear pokes Tene 09:57
10:07 payload joined
dalek rrot: r45346 | mikehh++ | trunk/tools/dev/mk_manifest_and_skip.pl:
fix codetest failure - trailing whitespace - copyright and shebang line
10:45
rrot: r45347 | mikehh++ | trunk/src/pmc/complex.pmc:
fix codetest failure - assert args and linelength - src/pmc/complex.pmc
rrot: r45348 | mikehh++ | trunk/src/pmc/hashiterator.pmc:
fix codetest failure - assert args - src/pmc/hashiterator.pmc
11:01
rrot: r45349 | mikehh++ | trunk/src/pmc/default.pmc:
fix codetest failure - assert args - src/pmc/default.pmc
11:12 Coke joined
dalek rrot: r45350 | mikehh++ | trunk/src/pmc/bigint.pmc:
fix codetest failure - assert args - src/pmc/bigint.pmc
11:19
rrot: r45351 | mikehh++ | trunk/src/pmc/default.pmc:
fix codetest failure - assert args - src/pmc/default.pmc
11:31 estrabd joined 11:37 cotto joined 11:41 estrabd_ joined
bacek mikehh, ping 11:45
msg mikehh if you have time can you test avl_string_cache branch? Something like amd64/g++ will be helpful 11:47
purl Message for mikehh stored.
mikehh bacek: ok will do 11:49
bacek mikehh, thanks
11:50 iblechbot joined
bacek Enough for today. 11:51
See you tomorrow!
dalek rrot: r45352 | bacek++ | branches/avl_string_cache/include/parrot/avl_tree.h:
Reformat AVL tree code.
11:52
rrot: r45353 | bacek++ | branches/avl_string_cache/include/parrot/avl_tree.h:
Simplify and restyle AVL code.

   - Reindent according to Parrot codestyle.
   - Small optimization to avoid second call to compare() during lookups.
rrot: r45354 | bacek++ | branches/avl_string_cache/config/gen/makefiles/root.in:
Add avl_tree.h into string/api.c dependencies.
rrot: r45355 | bacek++ | branches/avl_string_cache/include/parrot/avl_tree.h:
More codestd restyling of AVL tree.
11:52 whiteknight joined
11:53 bluescreen joined
mikehh codetest failure - t/codingstd/pir_code_coda.t - for file t/profiling/profiling.t which is in fact nqp so the test is wrong 11:54
all other tests PASS (pre/post-config, make corevm/make coretest, smoke (#32943), fulltest) at r45351 - Ubuntu 9.10 amd64 (g++ with --optimize)
mikehh just updated llvm - it's at r100001 12:04
12:17 ruoso joined
whiteknight good morning #parrot 12:30
arnsholt Morning whiteknight 12:36
whiteknight hello arnsholt 12:37
dalek kudo: 872898d | (Solomon Foster)++ | src/core/ (6 files):
Move all Real versions of .abs to Real.abs, remove "multi" from all .abs definitions.
12:43
mikehh bacek: looks good - some codetest failures with include/parrot/avl_tree.h - others fixed in trunk except the one reported above but other tests PASS 12:45
bacek: pre/post-config, corevm/coretest, smoke (#32945) fulltest except as noted above 12:48
12:54 lucian joined
mikehh /msg bacek 12:54
avl_string_cache branch:
some codetest failures with include/parrot/avl_tree.h (and distro_tests)) - others fixed in trunk
all other tests PASS (pre/post-config, make corevm/make coretest, smoke (#32945), fulltest) at r45355 - Ubuntu 9.10 amd64 (g++ with --optimize)
dammit 12:56
msg bacek - avl_string_cache branch: some codetest failures with include/parrot/avl_tree.h (and distro_tests)) - others fixed in trunk - otherwise all other tests PASS (pre/post-config, make corevm/make coretest, smoke (#32945), fulltest) at r45355 - Ubuntu 9.10 amd64 (g++ with --optimize)
purl Message for bacek stored.
13:04 tetragon joined, eternaleye joined 13:10 GodFather joined 13:17 PerlJam joined
whiteknight the only part I dislike about the GSoC program is the infuriating mailing list 13:23
moritz whiteknight: you don't have to read that 13:24
whiteknight: luckily it's enough if the program admins read it
whiteknight I try not to anymore, but it still comes to my inbox
Coke whiteknight: I tend to mute any of the long running conversations. 13:25
whiteknight I'm going to tell gmail to redirect all those emails to the damn trash
Coke like "HI MY NAME IS WILL AND I'm HAPPY TO BE A MENTOR THIS YEAR. WHO ARE YOU!?"
perhaps I'm too antisocial.
whiteknight or the ones I'm getting this morning "How to be student? Thanks!
Coke I don't mind people asking questions. I mind the jerks who pile on. 13:28
you can answer the question and redirect. Don't just say "google it, jerkface."
whiteknight it takes a certain ignorance of mailing lists to spam everybody with questions that blatantly don't belong
13:29 atrodo joined
whiteknight ...and to spam the same absurd questions to the list several times 13:30
13:39 khairul joined
dalek rrot: r45356 | mikehh++ | branches/avl_string_cache/include/parrot/avl_tree.h:
parrot copyright and Id and svn properties
13:47
rrot: r45357 | mikehh++ | branches/avl_string_cache/t/codingstd/copyright.t:
add permitted duplicate copyright for include/parrot/avl_tree.h
13:48
14:26 Andy joined 14:28 bubaflub joined
Coke I'm looking at the GSOC proposal for the instrumentation; how is this output different from ... hey. where did 'parrot -p' go? 14:34
(and why is it still listed as an option if it's been removed.) 14:35
cotto, was that you?
Coke wonders how to google for the literal -p 14:36
cotto ? 14:47
What does/did -p do?
Coke cotto: generated profiling output based on opcode. 14:48
looked very much like the proof of concept that the GSOC student submitted.
"this opcode was invoked N times", that sort of thing.
wondering if you ripped it out when you added the callgrindy profiling.
14:48 pmichaud joined
mikehh Coke, cotto: how are you on unwrapped macro arguments - include/parrot/avl_tree.h in avl_string_cache branch has a bunch (struct oriented etc.) 14:49
Coke mikehh: I think enforcing coding standards on a file we're copying from another repo is silly.
mikehh Coke: yeah I thought of that 14:50
Coke (unless we're forking it.)
mikehh well it has changed - Parrot stuff
khairul hi Coke, I'm the student who wrote that proposal. 14:51
what i intended to do with the proof is to see if i can intercept and inspect the instructions.
that was the simplest thing that i could think of at that time.
Coke khairul: hio.
14:51 theory joined
cotto I do recall ripping something like that out. 14:52
Coke khairul: I figured that it wasn't the final product. It just made me wonder where the old version of that particular item went.
looks like the short help still refers to -p as a valid option, that probably needs to be cleaned up.
cotto chromatic and I didn't see it as being particularly valuable for debugging/profiling.
14:56 patspam joined
Coke nope. sub level was much more interesting to me, for sure. 15:02
15:05 davidfetter joined 15:06 davidfetter joined 15:31 jjore joined 15:36 cotto_work joined
tewk Coke, do you know how to silence "warning: function returns address of local variable" for a specific function in GCC? 15:37
atrodo you don't want to silence it, you want to fix it 15:45
if i remember correctly, your return value is a pointer, but the value you're returning is a local variable on the stack, not a pointer. If you end up calling anything between the return and using the result, unpredicted stuff can happen since the stack could have changed 15:51
tewk atrodo, I know what I'm doing. I actually fixed it by putting it on a separate line. It was already casted, but gcc somehow ignored the cast on the return line in the static analysis. 15:54
atrodo, taking the address of a stack variable is one way finding out the stack depth when doing vm and gc work.
atrodo tewk> Alright. I just have bad flashbacks of that error
tewk> Ah, makes perfect sense 15:55
NotFound tewk: casting casts the type. Being localy declared isn't a type. 15:58
tewk atrodo, for the normal programmer doing typical coding that warning can be disastrous.
atrodo tewk> Aye, it was. very very disastrous. We had ignored it for years in one version of gcc with no ill effects. Recompiled with a new version and stuff stopped working. Not fun. 16:00
16:07 estrabd joined 16:08 cotto joined
whiteknight tewk: cast the pointer to size_t and return that 16:23
tewk whiteknight, thats what I did. but I had to do the cast in a distinct statement from the return to get rid of the warning.
whiteknight ok
it's my experience that silencing compiler warnings, even the well-intentioned "best practices" ones can require some of the most esoteric knowledge and crafty ninja coding 16:27
ironically, silencing the warnings can make the code more nuanced, and harder to read/maintain 16:28
16:31 hercynium joined
tewk Maybe gcc has some attribute to turn it off I just don't know which, turning off a warning (with a comment) adds info and documentation as to why this code is special and how it might be refactored in the future as compilers get smarter. 16:31
NotFound whiteknight: but the bugs and problem inexistent because warning prevented are invisible.
whiteknight NotFound: this is true. I don't argue with that 16:32
16:38 payload joined 16:56 darbelo joined
Coke tewk: IANACP. =-) 17:12
tewk Coke, but, You have recently been knighted as the keeper of C compiler warnings :) 17:13
17:13 Mokurai1 joined
tewk Coke, I figured it out though 17:13
Coke tewk++ 17:16
moritz I have a patch here that removes the 'non-existent' from the auld 'Could not find non-existent sub %s' message 17:20
any objections to applying it?
PerlJam moritz: ask forgiveness rather than permission :) 17:23
whiteknight moritz: +1 from me
moritz pushed. 17:24
dalek rrot: r45358 | moritz++ | trunk (2 files):
Remove the "non-existant" part of error messages for not finding a sub

might exist, just in a different scope.
17:43 joeri joined 17:45 davidfetter joined 17:47 iblechbot joined
Tene sorear: pong 17:54
sorear: I'm currently dealing with moving to a new state. I'll have plenty of time to work on it in the near future, but I'm very busy immediately. 17:55
Coke Tene: is it a good state? =-) 17:59
szbalint steady state? 18:02
treed Coke: I think so. 18:13
Tene Coke: Palo Alto, CA 18:20
from SLC, UT 18:21
whiteknight tene: get a new job out there?
Tene whiteknight: Yeah.
whiteknight any place good?
Tene Same place that hired treed, and convinced him to move.
Coke PA, I'm guessing google?
Tene Nope. 18:22
imvu.com/
treed Google is Mountain View
down the road
a better guess for PA would be Facebook
whiteknight oh nice, virtual porn
treed We're actually in the old Facebook offices.
whiteknight: If only.
If we had porn I might actually use it myself.
As it is, I have no need for 3D chat. 18:23
But the technology behind it is fun.
dukeleto Tene: starting a parrot cadre there?
Tene dukeleto: Hopefully. ;)
dukeleto Tene: imvu seems like a web-based second-life-kinda-thingy ? 18:24
treed dukeleto: Not web-based.
Downloadable client.
Tene but yeah, kinda like that
treed The big difference between SL and us is world persistence.
We don't have a big persistent world.
We do instances.
dukeleto treed: interesting
treed: once everyone leaves a particular instance, it goes poof? 18:25
treed So you just start a room with whatever dressings you want (that you have in your inventory)
dukeleto: Yep.
Tene AFK, driving in to last day at $oldjob
treed It's much more efficient.
We also have other things going on.
We sell music for instance.
dukeleto Tene: good luck! 18:26
purl You'll need it.
dalek rrot: r45359 | NotFound++ | trunk/src (2 files):
move paths initialization from environmental vars experimental feature from parrot main executable to interpreter initialization in library
18:30
18:39 ash_ joined
Coke tricks out his bash prompt so it shows (svn:^/trunk) or (svn:^/branches/foo) for parrot dev. 18:42
davidfetter pmichaud, around? 18:45
whiteknight Coke: my prompt always shows svn:rev or git:branch 18:55
atrodo what magic incantations do you do to make that happen? 18:56
nopaste "coke" at 72.228.52.192 pasted "extra prompty goodness" (23 lines) at nopaste.snit.ch/20149 19:00
whiteknight a script to call svn info and set the prompt using the information there. Then a series of command aliases for the svn commands that call __update_prompt on every change
Coke: fancy-schmance 19:02
darbelo Pretty colors and all- 19:03
atrodo Coke> i am impressed
Coke danke. got basic versions via google and cleaned it up. 19:05
whiteknight ssssh! Don't give away the secret! 19:06
I guess I wasn't aware that $PS1 would get evaluated each time 19:09
Austin Also, command substitution.
Coke: The parse_git_branch function is a little weird if there's more than one branch. You probably want sed -ne 's/.../p' 19:10
19:11 bacek joined
whiteknight oh snap. This crap works 19:14
this is going to simplify some of my scripts significantly
19:19 Mokurai joined, Mokurai1 joined
Coke Austin: how can you have more than one branch at a time? 19:19
(hint: 99.99% of the time, that says (git:master) for me. =-) 19:20
Austin Coke: it's easy.
19:20 brooksbp joined
Coke Austin: it's easy is one of those "i'm lying to you" trigger phrases. ^_^ 19:21
Austin Not for me.
brooksbp Parrot operates on CPS, correct?
Austin One of the whole points of git is that it's cheap and easy to create a branch, do your thing, and then re-merge.
So your local repo can easily have n>1 branches.
Your working directory will only be "on" one of those branches - that's why the sed script looks for the literal '*' character. 19:22
But git branch lists all of them...
whiteknight brooksbp: yes 19:24
brooksbp: and it's mostly correct now too
Coke Austin: I thought the * indicated the current branch, no? 19:26
Austin Right
brooksbp Why was CPS chosen?
for optimizations? 19:27
Coke Austin: OIC.
whiteknight brooksbp: It's necessary for some of the dynamic languages we want to support
Austin Coke: but by default sed passes through any lines that don't match. So if "git branch" prints "branch1 \\n branch2 \\n * branch3"
Coke yes, good catch.
Austin You'll get 3 lines of output
whiteknight plus, it has some cool features, and lots of optimization potential
Coke I didn't happen to test that. fixed.
Austin Score one for the SCM nerd... 19:28
brooksbp whiteknight: has anyone working on Parrot checked out control flow analysis work? Stuff by Olin Shivers or Matt Might
whiteknight brooksbp: sort of, but nothing implemented
brooksbp: I could use a refresher, have any papers in particular that you recommend? 19:30
brooksbp whiteknight: does Parrot do variable & dead code elimation?
whiteknight not currently. We perform very few optimizations
brooksbp I'm currently reading Control Flow Analysis in Scheme by Olin Shivers. Great stuff
Austin In case anyone cares, the state of New Jersey is giving rebates to people who purchase certain types of household appliances during the month of April, while funds last. Typically, these include refrigerators, hot water heaters, dish and clothes washers. (There may be others.) *Other states* will be doing this, possibly at different times. It's part of a federal stimulus package - a sort of...
..."cash for clunkers" program for appliances. 19:31
brooksbp But CPS is crucial to all these analyses 0CFA, kCFA
Coke actually, I think IMCC does do dead code elimination.
brooksbp There's also Control Flow Analysis of Functional Programs by Jan Midtgaard (good overview of techniques) 19:32
whiteknight damnit, eventually I'm going to need to get a damn ACM subscription
brooksbp there are PDF copies floating around. I believe Citeseerx has all these papers 19:33
Coke (if it does it's in "compilers/imcc/optimizer.c")
Austin Whiteknight: probably not. The ACM/citeseer "let's get in the way and charge money" scam is being effectively destroyed by the internet. Google is your friend.
whiteknight Austin: Yeah, I'll find a copy of it eventually. 19:34
Coke: the stuff in compilers/imcc/optimizer.c is relatively light and I don't think it's used very often
ash_ whiteknight: if you know who its by you could always ask if they'd donate a copy of the article to your cause, some people would probably be fine with sending you a pdf of the article
Coke yah, pbc_disassemble shows it's not optimized out. (but parrot -O does shuffle things a bit.) 19:35
also, allison has said in the past she'd get people copies of papers, IIRC.
whiteknight ash_: I can get things through google too. My desire to follow the "rules" doesn't extend very deep 19:37
Coke: yes, allison has gotten me copies of things before 19:38
I have a whole pile of papers at home that I read and re-read
bacek ~~ 19:40
whiteknight hello bacek 19:41
bacek morning whiteknight
19:42 payload joined
whiteknight brooksbp: Parrot definitely needs optimizations though. We have a handful but we need a lot more 19:43
And we need them at multiple levels. We need them at the assembler level, but we also need tree optimizers for PAST 19:44
ash_ whiteknight: maybe I could add that to my GSoC proposal? work on AST optimizations for pir? 19:45
whiteknight ash_: What is your proposal?
ash_ whiteknight: mine was the llvm stack frame builder, but that doesn't sound like it will take me 11 weeks 19:46
whiteknight ash_: When I was a prospective student, particle gave me two options: AST optimizations, or GC. I asked which was more important at the time and they said GC
bacek Speaking of GSoC. We do need immutable strings early than end-of-gsoc. Before R*. 19:47
For performance reasons.
whiteknight ash_: What if you instead create an optimized code-generating backend for PCT?
19:47 bluescreen joined
whiteknight ash_: be able to generate .PBC directly from PAST without using PIR/IMCC as an intermediary 19:48
bacek ash_, I can probably help with optimizations. May be I still remember how to do it...
whiteknight ash_: and adding in optional optimization stages in between would be a nice touch that would fill time
bacek whiteknight, s/PAST/POST/
brooksbp whiteknight: can you provide a reference to what optimizations need to be worked on?
whiteknight bacek: well, he could be adding the stages that perform the optimizations in POST
brooksbp: I don't have a list. start with "everything" and go from there. 19:49
bacek whiteknight, semantics of PAST is way too fuzzy.
whiteknight you mentioned dead-code elimination. constant folding might be nice but there will be some difficulties there. Global variable extraction may be nice
bacek brooksbp, even simple things like DCE, CF, etc will be good start 19:50
anyway, time to go.
whiteknight later, bacek
bacek Catch you later.
ash_ i have the blue book and the dragon book, so i'll re-read those chapters on optimizations
whiteknight ash_: awesome
we need a better register allocator too
bacek ash_, find Munchick (if I spell it correctly)
whiteknight though that's not exactly an optimization
bacek ash_, "Advanced Compilers Design and Implementation" 19:51
ash_ umm by PCT, do you mean the whole compiler toolkit or is there a specific place i'd be looking to work on? i don't know it that well
whiteknight I think one of the biggest optimizations we could add (though it would be a destructive optimization) would be elimination of unnecessary nested lexical scopes
ash_: actually, it would mostly be in NQP-RX now
I guess PCT has been superceeded by that
ash_ hmmm 19:52
okay, i can do that, lol, i am implementing my own version of nqp right now
whiteknight you will definitely want to get in touch with pmichaud if you're seriously considering this project
even if you did nothing besides create a proper framework for adding optimizations and writing documentation for it, it would be a huge success
PBC generation would be awesome too
ash_ so, specifically, the ability to generate a PBC directly from various formats (like .nqp to .pbc) would be a good goal 19:53
dalek rrot: r45360 | NotFound++ | trunk (2 files):
fix FPA.init_int and add a test for it
brooksbp hmmm so what optimizations does parrot do?
ash_ also, better code generation from nqp specifically, or from other areas? Would i need to do anything with pir's compiler?
whiteknight brooksbp: trac.parrot.org/parrot/browser/trun...ptimizer.c 19:55
that's the complete list, as far as I knw, and not all of these may be currntly used
cotto_work imcc's optimizer is pretty broken.
ash_ whiteknight: i also have www.amazon.com/gp/product/013606705...ss_product "Crafting a Compiler" (formally "Crafting a Compiler with C", its a bit more generalized now, it talks about C and Java approaches) 19:56
whiteknight ash_: how is that book? I've browsed it but never bought 19:57
cotto_work: yeah, that's my current understanding too
we really don't have any optimizations
Parrot really has two abstraction layers where optimizations can be inserted: At the HLL level (in NQP, and PAST), and at the PIR level (in IMCC/PIRC)
ash_ in some area's its more specific than the dragon book, as it gives more working examples, but i haven't seen anything it does that much better than the dragon book, but it does have good examples 19:58
whiteknight we don't really have any optimizations in either of those places
19:59 payload joined
TimToady phone 20:00
ash_ whiteknight: so most of the nqp improvements would be PAST level optimizations 20:01
davidfetter pesky gadget
whiteknight ash_: yes. Better PAST leads to less PIR
and then better PIR leads to faster PBC
ash_ would it be useful to also work on imcc level improvements to?
whiteknight those are the two optimization levels
ash_: Everything would be useful. You have to pick a project that you think you can do in a single summer 20:02
ash_: it would be *very* easy to take more work than you can complete
ash_ kk, how would those kinds of improvements compare to the llvm based stack frame builder? 20:03
whiteknight ash_: Both projects have merits. The frame builder obviously should get rid of our NCI thunks and therefore reduce code size 20:04
optimization stages for PAST would likely have a more immediate performance impact on HLLs, the frame builder would bring more flexibility to NCI-based projects
send an email to the list asking for input, see what people think is best 20:05
ash_ kk 20:06
PerlJam Both! ;) 20:08
PAST optimization would be most useful IMHO as it could be immediately used by all HLLs that target parrot. 20:10
NCI improvements could be immeidately used, but there aren't that many people doing NCI-ish things by comparison 20:11
NotFound PerlJam: fot all HLLs that use PAST 20:12
20:12 kurahaupo joined
whiteknight We do a lot of NCI internally to Parrot, but there are a limited number of signatures used internally, and the thunks necessary to support that are small and few 20:13
PerlJam NotFound: That's true, more and more are. 20:14
I guess it really is a toss-up then.
whiteknight plus, replacing built-in thunks with dynamically-built frames trades off some performance, so it would actually be a net loss, in the short term, to move to compeltely llvm-based frame builds
PerlJam I'd still leant towards the PAST optimizations though
s/leant/lean/
whiteknight anyway, I'm leaving. Later
cotto_work 4796565365/4860859864 20:17
purl 0.986773019424779
cotto_work 4796565365/4860859864/1
purl 0.986773019424779
cotto_work 1/4796565365/4860859864 20:18
purl 4.28900479773598e-20
Coke pmichaud++ # SQUEE 20:19
cotto_work What are you squeeing about? Is his life back to normal? 20:20
Coke karma is good. =-) 20:22
purl is good. =-) has neutral karma
Coke purl, botdeath.
purl Coke: i'm not following you...
NotFound purl: Do you use twitter?
purl i don't know, notfound
20:25 chromatic joined
Coke cheese it, it's the chromatic. 20:26
20:26 davidfetter joined
chromatic Maybe I need a title like "Dean". 20:26
dalek rrot: r45361 | NotFound++ | trunk/src/interp/inter_misc.c:
check for compreg hash PMC nullness, not for NULL, in Parrot_compreg
rrot: r45362 | NotFound++ | trunk/src/global_setup.c:
shorten and fix iglobals initialization
Coke reminder, last day to submit talks for YAPC::NA. 20:29
kurahaupo Vice chancellor chromatic ? 20:31
Coke you've disappointed me for the last time, Admiral chromatic. 20:32
atrodo Internally, I automatically say "chromatic, his holiness,"
NotFound Padisha Imperator
20:40 brooksbp_ joined
kurahaupo :w 20:42
chromatic Space Pope His Excellency
kurahaupo Your nondiatonicitousness 20:43
Austin I'd be a little leery of anything with "pope" in the title right now.
20:44 preflex joined
Austin You may find yourself in front of a judge in Kentucky trying to explain that you really didn't know anything about any child molestation, and besides, you're a head of state.. 20:44
NotFound They can even add 'Abusing little parrots' to the list of sins 20:45
kurahaupo As a foreign head of state, don't you automatically get diplomatic immunity?
Austin kurahaupo: There's a whole bunch of things wrong with that question.
kurahaupo use humour_guard qw( applies_to => 'all mention of chromatic\\'s title' ); 20:47
Austin He's not accused of a crime, but wanted as a witness. He's not accused in criminal, but rather civil court. And he may not have been a head of state when the crimes were committed. Finally, diplomatic immunity generally applies to designated representatives operating in another country, which he isn't - especially relevant if the suit is civil.
Heh
kurahaupo But if one fails to appear for a witness summons, that's a criminal matter ... from which one is immune, no? 20:48
Austin Nope.
kurahaupo argh. </politics> 20:49
Austin In the US, failure to appear isn't criminal.
It's procedural.
kurahaupo So you can't be arrested for not appearing?
Austin You can be arrested, but it's a procedural matter - we're arresting you to force you to appear.
There's some latin phrase that applies - appropriate, for a pope. 20:50
kurahaupo wonders what "diplomatic immunity" is worth if it doesn't mean you're exempt from arrest
Austin But the courts turn a blind eye to how witnesses and criminals appear
chromatic Hostes alienigeni me abduxerunt?
PerlJam kurahaupo: it means you're immune from prosecution. 20:51
NotFound Even for bacteriae?
Austin Kura - diplomatic immunity is "good for" not being arrested for "crimes." 20:52
And in general, failing to respect (grant immunity) a foreign representative is a bad idea. 20:53
But when the Ukranian UN diplos in NYC got drunk and hit and killed a girl, they spent the night in jail.
(And the next day they got put on an airplane...)
kurahaupo chromatic: what did you see while you were off-planet? 20:54
chromatic The Vorlon homeworld, Patrick McGoohan was in charge. 20:55
kurahaupo Aah, so now you're just a number, not a man. How about 1.05946309435929526455 ? 20:56
(2^(1/12))
purl 2
kurahaupo (2**(1/12)) 20:57
purl 1.0594630943593
21:03 jsut|work joined, jsut|werk joined 21:33 atrodo joined
Andy please confirm: src/dynpmc/*.pmc are going away? 21:57
dalek kudo: 6a2e0ae | jonathan++ | src/ (2 files):
Lexical multis now incorporate outer candidates.
22:03
kudo: 47ab4c2 | jonathan++ | t/spectest.data:
Turn S06-multi/lexical-multis.t back on.
22:09 tcurtis joined 22:11 Mokurai1 joined
dalek rrot: r45363 | petdance++ | trunk/lib/Parrot/Ops2c/Utils.pm:
protect the args passed into the generated funcs
22:24
22:36 snarkyboojum joined 22:44 kid51 joined 22:57 tetragon joined
dalek kudo: 7d00af1 | jonathan++ | src/Perl6/Grammar.pm:
Add the C++ constructor detection/error and a slightly simpler version of the Perl 5 regex modifier detection/error as per STD.
23:07
rrot-plumage: f1708eb | japhb++ | Configure.nqp:
[BUILD] Add extra trailing newline on final Configure message
23:08
rrot-plumage: c6347ce | japhb++ | src/plumage.nqp:
[plumage] Apply slightly altered patch from fperrad++ to support PLUMAGE_HOME env var, especially useful on Windows
23:18 TiMBuS joined 23:21 kurahaupo joined
kid51 I see our Smolder site is back to its old tricks: HTTP CODE: 500 (read timeout) 23:30
23:43 jsut joined
allison Andy: only deprecated PMCs in src/dynpmc/*.pmc are going away 23:44
Andy: and we'll be adding some new ones
23:58 snarkyboojum joined