Parrot 0.6.3 "Beautiful Parrot" Released | parrotcode.org/ | 5/649/88 new/open/stalled tix | logged in irclog.perlgeek.de/parrot/today
Set by moderator on 17 June 2008.
00:10 AndyA joined, apeiron_ joined
DietCoke smoke is on life support. Smolder hasn't quite made it yet. 00:19
magnachef I'm reading through the "RFP: Parrot Needs Better Smoke Reports", and it seems like something I could take on 00:20
kid51 is back from dinner
magnachef waves 00:21
kid51 Yeah, Dan, I was going to send you that link.
Also rt.perl.org/rt3/Ticket/Display.html?id=49276
magnachef yeah, I came across it and it looks like it ties in with the other stuff I wanted to do
kid51 hachi: purl just did it again! 00:22
hachi yeah, I get an SMS anytime she goes down
kid51 Now on a different topic: It appears all my failure to 'make perl6' problems were bogus. 00:23
DietCoke I was afraid of that. =-)
hachi zsh: segmentation fault ./purl1
wonder if I have gcc
DietCoke that RFP may not reflect state of the art smolder reality, which i think is on a mail to the list around the time of the hackathon.
I will try to get the test harness stuff done by the weekend at the latest. 00:24
00:24 Zaba_ joined 00:26 purl joined
hachi msg kid51 hello 00:26
purl Message for kid51 stored.
hachi dang, she stored it
kid51 says hello world and waits to see what purl does. 00:27
She's working. 00:28
BTW, when did purl acquire gender?
Now let me try to store a message.
DietCoke she's always been she.
kid51: another good way to get feedback from me on a ticket is to assign it to me. 00:29
though I'm not sure how scalable RT makes that.
kid51 DietCoke: I've always thought that the assignee (?) should be the person who is taking responsibility for a ticket -- whether that be the owner or one who has taken on the task of solving it. 00:30
DietCoke yah. in other ticketing systems there's a "person who owns" and a "person whose job it is to work on ticket right now." 00:31
kid51 In the case of this ticket, you were the original requestor, so I think that means you always get mail about the ticket.
Correct?
DietCoke if you do it as a reply and not a comment, yes.
in a year we'll all be using trac, for better or ill.
kid51 What is trac?
DietCoke ticketing system/wiki/svn integration. 00:32
kid51 I was about to say, "purl, trac?" -- but she ducked out again!
DietCoke nothing to worry about yet.
kid51 Does it include a pony as well ;-)
00:59 Limbic_Region joined 01:02 DietCoke joined 01:03 bacek joined
hachi kid51: she's always been a she 01:03
see pound.perl.org, I think
so guess what kid51 01:06
kid51 Eh?
hachi no more using message center for now
sleepycat on 10.4 appears to be broken or someething 01:07
kid51 Was I a bad boy?
hachi not you, just... something
kid51 Can purl's other wonderful talents continue to be used?
hachi yeah, I'm gonna start her back up... but I'm gonna ask that you not try the message center for a few hours 01:08
I need to get some work (dayjob) done, and then I can get about to debugging her again
kid51 Can you go back to #parrot and post that section via nopaste?
hachi I'm on #parrot, what the devil are you asking for? 01:09
kid51 Oops, last message was meant for side conversation.
hachi :D
kid51 magnachef and I are discussing smoke testing.
01:09 tetragon joined 01:10 purl joined
kid51 purl nopaste? 01:10
purl somebody said nopaste was at nopaste.snit.ch/ (ask TonyC for new channels) or rafb.net/paste or paste.husk.org/ or poundperl.pastebin.com/ or paste.scsys.co.uk/ or don't bother me while I'm eating or App::Nopaste or tools/dev/nopaste.pl
kid51 Anyone here familiar with 'dprofpp'? 01:13
nopaste "kid51" at 71.247.50.75 pasted "perl -d:DProf tools/build/pmc2c.pl --c src/pmc/null.pmc" (22 lines) at nopaste.snit.ch/13401
magnachef pastebin.ca/1056128
there ya go kid51 01:14
kid51 Got it. 01:15
I guess that since you live near the Canadian border, you use a Canadian pastebot, eh?
magnachef heh
I can see Canada from work 01:16
bacek kid51: what about dprofpp?
magnachef heads home 01:17
purl Slacker!
kid51 I'm wondering if we can speed up tools/build/pmc2c.pl, as it's called >100 times by 'make'. Of the various ways it's called, the '--c' option runs the longest. So I'm wondering if dprofpp can show me where to look for speedups.
bacek kid51: 01:35
use Memoize;
memoize('name');
in Pmc2c/Method.pm
use Memoize;
memoize('subst')
in Emittter.pm 01:36
Gives me 30% performance boost
ok. 20% :)
kid51 Hmm. Didn't realize Memoize was Perl 5 core. 01:37
bacek hmm... We stuck with coreonly modules? 01:39
DietCoke yes. 01:40
in general.
kid51 If it's not core, then we have to include it in the Parrot distribution itself.
DietCoke see: 'corelist'. it's core in 5.7.3
bacek Memoize was first released with perl 5.007003 (patchlevel perl/15039, released on 2002-03-05
DietCoke anything in core as of 5.8.0 is fair game.
Yes. liberally apply Memoize, esp. if you're seeing a 20% boost. 01:41
kid51 bacek: So your recommendation would be to focus on the most frequently called subroutines (4th column in dprofpp output)?
bacek kid51: In general - yes 01:42
kid51 Okay. I won't get to this tonight, but I will make a note of it, as this is the oldest RT ticket which I myself have taken (rt.perl.org/rt3/Ticket/Display.html?id=38194). 01:43
bacek rewrite_vtable_method is next good candidate
kid51 Here's dprofpp output for an instance of the --dump option: 01:45
nopaste "kid51" at 71.247.50.75 pasted "perl -d:DProf tools/build/pmc2c.pl --dump src/pmc/null.pmc" (21 lines) at nopaste.snit.ch/13402
bacek kid51: looks like your disk is very slow... 01:47
DietCoke purl?
purl DietCoke?
DietCoke corelist?
purl hmmm... corelist is wrong, then.
DietCoke no, corelist is how you find out when a module was included in perl core. 01:48
purl okay, DietCoke.
DietCoke ->
Auzon purl, corelist is also search.cpan.org/perldoc?Module%3A%3ACoreList 01:49
purl okay, Auzon.
pmichaud is there a way to indicate that a sub should not accept any params? 01:50
(in PIR)
01:50 bacek_ joined 01:51 stupidbot joined
bacek_ I promise that stupidbot will be good :) 01:55
stupidbot: corelist Memoize
stupidbot bacek_: Memoize was first released with perl 5.007003 (patchlevel perl/15039, released on 2002-03-05)
bacek_ there is no other modules loaded in stupidbot.
01:57 magnachef joined
kid51 bacek_: And that was my *fast* disk: my Linux VM. 01:58
bacek_ Elapsed Time = 0.408132 Seconds 01:59
User+System Time = 0.148132 Seconds
It's definitely spend most time on IO...
kid51 But that's what we would expect for the --dump option, I'd think? 02:00
it's printing to disk.
pmichaud (my question is RT#39844, so answer is now.)
er, "no"
purl i heard er, "no" was a short answer
bacek_ RT#39844 02:05
stupidbot RT 39844d: [BUG] Parrot doesn't do args checking for a sub without params - open
bacek_ pmichaud: about (RT#56230) I can move all Complex's related functions into Complex.pir. Do it? 02:16
pmichaud sure.
bacek_ pmichaud: ok
later today...
purl well, later today is Hingis-Seles, the winner of that one playing Venus.
pmichaud note that some of them will be moving _out_ of Complex.pir into Any.pir :-)
bacek_ pmichaud: ok :) 02:17
pmichaud: stupid question. I tried to add adverbs into parser. Successfully hacked grammar. But can't figure out, what should be created for 'structural' in colonpair... 02:34
dalek r28699 | pmichaud++ | trunk: 02:41
: [rakudo]:
: * Add workarounds for argument checking of 0-ary functions (RT#56366).
diff: www.parrotvm.org/svn/parrot/revision?rev=28699
r28700 | cotto++ | libs4php: 02:59
: [plumhead] make clean doesn't clobber important files now and $(LOAD_EXT) is
: properly defined. There are also a couple more granular PMC-related targets.
diff: www.parrotvm.org/svn/parrot/revision?rev=28700
r28701 | cotto++ | libs4php: 03:01
: [plumhead] removed trailing whitespace. d'oh!
diff: www.parrotvm.org/svn/parrot/revision?rev=28701
cotto_home It's so nice to finally be able to commit changes (provided they're not made at work). 03:02
03:15 tetragon joined
bacek_ perl6: my $a; my $b; ($a, $b) = 1..2; 03:17
polyglotbot OUTPUT[Method 'lvalue' not found for invocant of class 'PAST::Stmts'␤current instr.: 'parrot;PAST::Compiler;as_post' pc 2787 (src/PAST/Compiler.pir:718)␤called from Sub 'parrot;PAST::Compiler;post_children' pc 1692 (src/PAST/Compiler.pir:364)␤called from Sub 'parrot;PAST::Compiler;as_post' pc 1957
..(src/PAST/Compiler.pir:492)␤called from Sub 'par...
Coleoid I've built parrot and rakudo locally, on a windows box--can anyone help me with the next steps to run the spectests? 03:19
03:20 tetragon joined
Coleoid Oh, and hi! :D 03:20
I know I've seen links for running the spectests around somewhere, 03:22
bacek_ Coleoid: make spectest_regression
in languages/perl6
Coleoid but suddenly I've found enough p6 resources around that I can't find the relevant link.
bacek: Thanks! Trying... 03:23
Oh argh.
I'm going to need to get subversion building on my machine, it seems. I've unfortunately updated to a tool which advanced my local svn working copy to 1.5, 03:24
...which is incompatible with svn 1.4.x, which are the only packaged svn builds out there yet... 03:25
Is this just one of the things that goes without saying, that the deeper you get into open source... 03:26
...the more time you spend getting your prerequisites in order, and their prerequisites, & c? 03:27
cotto_home yeah, but after a while you get them all in order 03:28
Coleoid ...
cotto_home then you forget how much of a pain it was until you have to set it up on a new machine
Coleoid Probably about three days after I wipe Windows and install some Linux or BSD... :D 03:29
cotto_home win32 developers are welcome too 03:30
Coleoid I'd like to be such.
03:31 clunker3_ joined
cotto_home if/when you get it working, you can update the wiki page: www.perlfoundation.org/parrot/index...on_windows 03:31
shorten cotto_home's url is at xrl.us/bjcdh
Coleoid I'm still paddling to get all the way up to zero. 03:33
I'm off to get the SVN project loaded, and built, at which point I should be able to run spectests. Thanks for the hand so far, I'll be back if I stall out...
Uh. 03:52
For pity's sake.
So to build svn, I should install Python, and ActiveState Perl (after already building my own from source, which didn't satisfy Parrot, then installing Strawberry), and Apache 2, and does this ever bottom out? 03:54
cotto_home tortoisesvn doesn't work?
Coleoid TortoiseSVN works great for getting parrot and friends, 03:55
but the spectest_regression target relies on the command-line SVN tools. 03:56
Which aren't included in TSVN 1.5, and there's no pre-built for that anywhere on the net that I find...
(1.5 is brand-new...)
And 1.5 does an auto-upgrade of local copies (incompatible with 1.4.x...) 03:57
And gah.
Perhaps if I come back in a couple of weeks everything will be over this temporary twistup. 03:58
cotto_home if the older versions include the cli tools, you can get them from sourceforge.net/project/showfiles.p..._id=151948
shorten cotto_home's url is at xrl.us/gdgvw
cotto_home it strikes me that this wouldn't be a bad time to try to get my xp vmware machine booting again 03:59
Coleoid Yeah, that may be best. I'd just have to nuke my current working copies, downgrade to TSVN 1.4.x, reup, I should be good... 04:00
cotto_home: Really? All my whining and you think it's a good time to dive in? Am I whining wrong or something? :D 04:01
cotto_home I'm most likely going to be doing it later anyway, so now'd be a good time to get familiar with the process. 04:03
Coleoid Thanks for your help, gonna scram, wife is home from city council. I'll let you know how I fared when next we meet.
cotto_home good luck
purl good luck is probably all I can say.
Coleoid :D
cotto_home Coleoid++ 04:07
diakopter Coleoid: tigris has win32 command-line svn installers... svn-1.4.6-setup.exe from subversion.tigris.org/servlets/Proj...derID=8100 do you really have to have 1.5.0? 04:13
shorten diakopter's url is at xrl.us/gdobo
cotto_home msg Coleoid tigris has win32 command-line svn installers... svn-1.4.6-setup.exe from subversion.tigris.org/servlets/Proj...derID=8100 do you really have to have 1.5.0? 04:16
purl Message for coleoid stored.
shorten cotto_home's url is at xrl.us/gdobo
04:40 Zaba joined 05:02 Ademan joined 05:04 Psyche^ joined 05:08 Theory joined 05:09 Infinoid joined
dalek r28702 | petdance++ | trunk: 05:11
: regex tweaked so vim does not get confused
diff: www.parrotvm.org/svn/parrot/revision?rev=28702
pmichaud bacek_: list assignment isn't implemented 05:21
bacek_ pmichaud: I can see it :) 05:24
pmichaud: What about 'structural colonpair'? 05:25
pmichaud ...structural colonpair? 05:28
bacek_ | <postcircumfix> {*} #= structural 05:29
this from token colonpair.
pmichaud that would be for things like :(...), :{...}, :<...>, etc? 05:30
bacek_ yes
pmichaud I don't think those are implemented either. I don't even remember what they mean. :-)
bacek_ they definetly not implemented :)
My question is how to implement it? :)
bacek_: pmichaud: stupid question. I tried to add adverbs into parser. Successfully hacked grammar. But can't figure out, what should be created for 'structural' in colonpair... 05:31
pmichaud depends on the structure. :(...) is for signatures. :<...> and :[...] are for identifier extensions. :{...} is an adverbial closure. 05:32
in each case it's not likely to be a simple PAST node, but will depend on the context. 05:33
for example, :<...> is used after category identifiers, as in infix:<+>
bacek_ all this handled in 'method postcircumfix' I think... 05:41
So, in 'method coonpair' I just have $<postcircumfix>. 05:42
colonpair
purl well, colonpair is really a term
bacek_ what difference between 'token', 'term' and 'rule'? 05:44
(And colonpair is token in STD.pm...)
dalek r28703 | pmichaud++ | trunk: 06:00
: [rakudo]:
: * Add .pick methods and functions.
: * Add .elems methods and functions to Any.
: * Resolves RT#56266 and RT#49085.
diff: www.parrotvm.org/svn/parrot/revision?rev=28703
stupidbot RT 56266d: rand gets "invoke() not implemented in class 'Float' " - Revision: 28671 - open
dalek r28704 | petdance++ | trunk: 06:06
: adding some type sanity
diff: www.parrotvm.org/svn/parrot/revision?rev=28704
06:18 Zaba joined 06:25 Zaba_ joined
dalek r28705 | pmichaud++ | trunk: 06:33
: [rakudo]:
: * spectest-progress.csv update
: * 73 files, 944 passing tests as of 2008-06-26 00:00
diff: www.parrotvm.org/svn/parrot/revision?rev=28705
r28706 | petdance++ | trunk: 06:36
: consting and reheaderizing
diff: www.parrotvm.org/svn/parrot/revision?rev=28706
pmichaud bacek: 'token' is a regex that doesn't backtrack (except where explicitly indicated) 06:51
back: 'rule' is a regex where whitespace in the pattern corresponds to intertoken separators in the string to be matched
dalek r28707 | pmichaud++ | trunk: 06:56
: [rakudo]:
: * Move .cis and .unpolar into Any.
diff: www.parrotvm.org/svn/parrot/revision?rev=28707
bacek_ pmichaud: thanks for clarification. 07:01
dalek Christoph Otto | plumhead_renaming: 07:27
link: www.perlfoundation.org/parrot/index...d_renaming
shorten dalek's url is at xrl.us/d2gpk
08:17 TiMBuS|Away joined
TiMBuS rebooted in time to see myself go. damn windows games in WINE :( 08:18
08:39 cognominal joined
jonathan morning all 09:30
purl morning, jonathan
jonathan So, Rakudo day. Time-shifted a little, because I seem to have got some insomnia...
09:33 masak joined 09:54 Ademan joined 09:56 bacek joined
dalek r28708 | jonathan++ | trunk: 09:57
: [core] Parse :lexid('foo').
diff: www.parrotvm.org/svn/parrot/revision?rev=28708
10:08 iblechbot joined
jonathan Oh IMCC 10:26
The sight of your internals
Will not bring world peace
dalek r28709 | fperrad++ | libs4php: 10:27
: [php] to_number in PMC
diff: www.parrotvm.org/svn/parrot/revision?rev=28709
bacek jonathan, rewrite IMCC in Parser::Yapp? 10:31
stupidbot, search Parser::Yapp 10:33
stupidbot, find Memoize 10:36
stupidbot, corelist search Parser::Yapp
stupidbot bacek: Found no module matching /Parser::Yapp/
bacek hmm... not in corelist of cause... 10:37
jonathan bacek: Would prefer to write something that does POST to PBC. 10:38
Then parse PIR with PGE, and use the actions to produce POST.
bacek hey, It's different approach! Then you have to provide precompiled pbc for PGE 10:40
jonathan Yeah, of course, that's the issue. 10:45
Phew. Finally got :lexid to work. That should make pmichaud happy. 10:46
dalek r28710 | jonathan++ | trunk: 10:54
: [core] Implement :lexid(...).
diff: www.parrotvm.org/svn/parrot/revision?rev=28710
10:56 skv joined 11:01 jan joined
mj41 Hi, I added MSWin32 machine to TapTinder - tt.ro.vutbr.cz/report/pr-Parrot/rp-trunk 11:23
jonathan mj41: Great, thanks! 11:24
mj41: How hard would it be to also get reports like this, for make spectest_regression target in languages/perl6/ ? 11:25
mj41 It is next on my TODO list :-) 11:26
jonathan Oh, great. :-)
moritz mj41++
cognominal jonathan, how can I add the buiild on my macbook to taptinder? 11:27
moritz does that make you mj42? ;-)
jonathan cognominal: I don't know - but mj41 is the person to ask. :-)
cognominal ok 11:28
mj41 moritz: no, 42 is too great number for me :-)
purl okay, mj41.
moritz mj41: ;) 11:29
cognominal mj41? I did a ack -i on parrot source and did not see taptinder 11:30
mj41 taptinder.org
cognominal: it is not easy to add next machine, but doable 11:32
cognominal ho, that's a per branch thing? 11:33
mj41 it is prepared for it 11:34
but many parts are prototypes only 11:37
11:41 ruoso joined
moritz mj41: after reading the wiki, it seems that you have an IRC bot for reporting 11:42
mj41: would you care to send it here to report test failures?
mj41 no IRC bot yet, probably you should fix my English 11:43
moritz oh no, I just didn't read the "future" in "long future feature list" ;) 11:44
mj41 :-) 11:53
12:13 skv_ joined 12:14 mj41_ joined 12:16 nopaste joined
moritz half of my spectest_regression runs are failures due to some GC problems 12:35
pmichaud I've started using the tools/test_summary.pl script, which passes -G to parrot 12:38
jonathan morning pmichaud 12:47
moritz pmichaud: isn't that the wrong approach? shouldn't we try to expose bugs rather than hiding them?
13:04 iblechbot joined
dalek r28711 | pmichaud++ | trunk: 13:08
: [rakudo]:
: * Small update to postfix:<i>, so that (1i)i comes up with the
: correct result.
diff: www.parrotvm.org/svn/parrot/revision?rev=28711
moritz is that tested somewhere? 13:09
pmichaud moritz: the -G bug has (or bugs have) been around literally for years. I don't have a good feel for when it/they might get fixed. 13:10
moritz :(
pmichaud so, for the most part it's interesting to note "oh, here's another place where it showed up", but rakudo doesn't seem to provide any useful information that is likely to lead to a fix. 13:12
moritz so it's really a parrot bug (or multiple so), nothing rakudo specific (for example rakudo specific PMCs)?
pmichaud the odds are very high that it's a parrot bug. 13:13
masak what makes the CG bug(s) hard to fix?
pmichaud any change -- even turning on tracing -- causes the bug to disappear.
moritz masak: mostly that they aren't easy to reproduce with small code
masak ouch
en.wikipedia.org/wiki/Heisenbug#Heisenbugs 13:14
pmichaud they're extremely sensitive to the order in which things occur in Parrot, so once you start doing things to locate the bug, you can't reproduce it.
masak but they _can_ be reproduced in their exact circumstances, no? 13:15
pmichaud personally, I'm betting/hoping that whiteknight's new gc algorithm gets rid of the bug altogether
they can be reproduced in the exact circumstances, yes.
masak but that includes not being able to introspect the environment, I guess...
moritz pmichaud: re whiteknight, probably - but he'lll also introduce new ones :( 13:16
pmichaud at least not being able to introspect the environment in ways that seem useful thus far. Chromatic has done a lot of work on this (actually, many of us have) -- but I suspect it's just a simple algorithmic or pointer bug somewhere in Parrot's depths that is waiting for someone to stumble upon it. 13:17
(introduce new ones) -- sure, there will be new ones, but at least we'll have some fresh eyes looking at them, and hopefully the code will be a bit better structured so that it'll be easier to track them down. 13:18
(complex testing of (1i)i ) -- no, I don't think it's tested anywhere -- I just happened to notice it in scrollback a day or so ago and it's been in the back of my head to fix. :-)
moritz I can write a test for it 13:19
pmichaud perl6: say (1i)i; # testing 13:22
polyglotbot OUTPUT[0+1i␤]
pmichaud polyglotbot hasn't updated either :-(
jonathan pmichaud: Currently working on using :instanceof so we can have Sub, Method, Block types etc. 13:29
13:29 Zaba joined
pmichaud jonathan: excellent 13:29
jonathan Got two failing sanity tests after the switch...one of them turned out to be a Parrot bug, which I've fixed. The other looks like a Parrot issue too...pain to find... 13:30
moritz jonathan: partly tested in S02-builtin_data_types/anon_block.t (at least on the the perl6 level)
pmichaud jonathan: thanks for quick work on :lexid -- I'll give it a fuller test shortly
jonathan pmichaud: Sure, hopefully it works for you. 13:32
pmichaud I'll add my (updated) test, at any rate. 13:33
dalek r28712 | pmichaud++ | trunk: 13:36
: [core]:
: * Add a test for :lexid/:outer implementation by jonathan++ .
diff: www.parrotvm.org/svn/parrot/revision?rev=28712
DietCoke the gc bugs can be tracked with the --gcdebug runcore, and in my experience, if you can occasionally get a GC bug on one platform without it, you can always get the gc bug elseewhere with it. there's a wiki page and two articles on ora by chromatic about this. 13:39
pmichaud jonathan: oops, looks like you've run into the same problem I had with my lexicals patch... nopaste coming
DietCoke This was a miracle for me, because tcl would often trip over some GC bug on my osx box, and no one could duplicate it on linux.
DietCoke hurls www.perlfoundation.org/parrot/index...ng_gc_bugs :: Fixing GC Bugs 13:40
(that has links to chromatic's bugs on the bottom.)
s/bugs/articles/ 13:41
warning: sloooooooooow.
nopaste "pmichaud" at 76.183.97.54 pasted ":outer in .pbc still uses wrong sub" (55 lines) at nopaste.snit.ch/13404
jonathan wtf... 13:42
pmichaud let me see if I can verify that it is in fact the wrong sub....
jonathan That makes no sense, we look up the outer at compile time and store the outer sub PMC, then freeze the lot, or so I thought...
pmichaud yes, that's what I think as well
but *something* isn't right.
DietCoke I didn't see a patch that updated how outer works, just one to parse lexid. 13:43
dalek r28713 | jonathan++ | trunk:
: [core] Make multiple dispatch work when you have your own sub type.
diff: www.parrotvm.org/svn/parrot/revision?rev=28713
DietCoke was that all in r28708?
pmichaud DietCoke: there were two commits for :lexid 13:44
one for parse, one for implementation.
jonathan That one you just mentioned was just parse.
DietCoke ah, 28710 was the impl. danke.
13:44 gryphon joined
nopaste "pmichaud" at 76.183.97.54 pasted ".pbc definitely grabs the wrong :outer" (55 lines) at nopaste.snit.ch/13405 13:45
DietCoke gah, commented out code.
bad jonathan, no donut. =-)
jonathan DietCoke: Yeah, I have it removed locally, I spotted that just now in a debug trace.
DietCoke jonathan++ 13:46
Sorry, been fighting against that in a codebase I have to maintain at work. =-)
pmichaud I want to re-do it a bit to make sure it throws an exception if :outer refers to a lexid that is in use by multiple subs
13:47 jay joined
pmichaud but that's an easy change, once we get the .pbc working. 13:47
jonathan DietCoke: it's gone
dalek r28714 | jonathan++ | trunk:
: [core] Remove commnented out code accidentally left from earlier commit.
diff: www.parrotvm.org/svn/parrot/revision?rev=28714
jonathan pmichaud: Just fighting with the remaining test fail I have at the moment...give me a moment on that first. 13:48
pmichaud sure, no problem.
I need a short break anyway, so bbiab
jonathan ok
DietCoke I don't see anything obviously wrong with the patches.
jonathan Thanks for sanity check. 13:49
DietCoke pmichaud: I've seen 0-ary referred to as "nullary".
and there's a patch ready to go for turning that on for parrot; Just needed some feedback on how to deal with main. 13:50
jonathan: RT#39844 has another core thing that might let patrick remove some hacks in perl6, if you can get it working. Chromatic and I got close but no ciagr. 13:54
stupidbot RT 39844d: [BUG] Parrot doesn't do args checking for a sub without params - open
DietCoke stupidbot, owner?
(what's with the d after the ticket #?)
moritz DietCoke: that would be bacek
DietCoke purl, stupidbot owner is bacek 13:55
purl OK, DietCoke.
DietCoke message bacek < stupidbot> RT 39844d: ... what's with the d?
purl Message for bacek stored.
stupidbot RT 39844d: [BUG] Parrot doesn't do args checking for a sub without params - open
DietCoke message bacek You should also make stupidbot smart enough to know he's already done that in the last 5m. 13:56
purl Message for bacek stored.
13:56 rdice joined 14:04 jhorwitz joined 14:08 tco joined 14:14 magnachef joined
DietCoke rethinks including Test::Harness 3 into parrot. 14:16
14:20 Andy joined 14:23 jay left
jonathan pmichaud: ping - need PAST/PCT help! 14:30
purl I can't find - in the DNS.
Tene jonathan: what's the problem? 14:32
purl hmmm... the problem is that URI is not subclassible
Tene purl: forget the problem
purl Tene: I forgot problem
jonathan Tene: methods are not getting :outer generated 14:33
I haven't got much more on it than that yet... 14:34
DietCoke sums up his pondering to RT and asks for comments. 14:37
jonathan oh, arses 14:39
## FIXME: RT#47794 - Parrot currently doesn't allow both
## :method and :outer flags on a sub, so if we have :method
## we automatically skip :outer processing.
stupidbot RT 47794d: [BUG] objects - :method doesn't work with :outer() - open
jonathan and 14:40
## FIXME: RT#47956
## PIR doesn't compile properly if :outer points to a sub
## with :init/:load flags on it.
stupidbot RT 47956d: [BUG] :init :load cannot be target of :outer in compiled PIR - open
DietCoke "simple fix" not so simple. =-) 14:44
jonathan class Foo { method bar { say &bar.WHAT; } }; Foo.new.bar
Method
sub foo { say 42 }; say &foo.WHAT;
Sub
...progress...
Hmm. Well, :method and :outer together seem to work fine here for me. 14:53
14:55 NotFound joined
pmichaud it's possible that the other lexical changes have fixed RT#47794 15:03
stupidbot RT 47794d: [BUG] objects - :method doesn't work with :outer() - open
pmichaud (bots should not speak unless spoken to...)
Zaba is leaving so sicily for 2 weeks tomorrow
to*
jonathan pmichaud: Let me paste you my example here - if you think it's sane, we can maybe remove the workaround in PCT? 15:04
nopaste?
clunker3 pasta.test-smoke.org/ or paste.husk.org/ or nopaste.snit.ch:8001/ or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/
purl rumour has it nopaste is at nopaste.snit.ch/ (ask TonyC for new channels) or rafb.net/paste or paste.husk.org/ or poundperl.pastebin.com/ or paste.scsys.co.uk/ or don't bother me while I'm eating or App::Nopaste or tools/dev/nopaste.pl
15:04 cjfields joined
pmichaud how about my test case in the ticket? 15:04
dalek r28715 | jonathan++ | trunk:
: [rakudo] Stub in Block, Ruotuine, Sub and Method PMCs and classes. Start using them for subs and methods (not for normal blocks yet - is a tad tickier).
diff: www.parrotvm.org/svn/parrot/revision?rev=28715
jonathan pmichaud: OK, I'll try that. 15:05
pmichaud I still get "method not found".
jonathan C:\\Consulting\\parrot\\trunk>parrot testm2.pir 15:06
abc
xyz
That's your test case.
pmichaud the first one (that doesn't work) or the second one (that does) ? 15:07
Zaba is there anywhere I can read about history of parrot?
jonathan The first one
purl The first one is gone
DietCoke in the repository, on the mailing lists...
is there something in particular we can answer?
pmichaud let me svn up and try it.
DietCoke (we're kind of looking forward to 1.0, rather than back historically)
jonathan Oh, I have one local change...hmm :-)
DietCoke smacks jonathan. 15:08
Zaba DietCoke, I am just curious, why it's been decided to write a virtual machine, and did it all start because of perl6..
pmichaud can't run perl without a virtual machine of some sort. :-)
jonathan DietCoke: It's not one that I *expected* to fix the bug.
Zaba pmichaud, or rather, a virtual machine for another language but perl6, to write a perl6 interpreter on 15:09
jonathan pmichaud: Putting in my other patch now, since it smoked...
dalek r28716 | jonathan++ | trunk:
: [core] Fix another place where we tested for enum_class_Sub rather than any subclass of of Sub.
diff: www.parrotvm.org/svn/parrot/revision?rev=28716
DietCoke One of the original goals was to provide a clean separation of the virtual machine for perl6 (as opposed to perl5, where it's bundled in)
pmichaud Zaba: a bit of forward thinking, I think -- virtual machines really ought to be more generic than language-specific.
DietCoke at some point we picked up "support other dynamica languages" as a goal, and perl6 picked up "support other implementations"
nopaste "jonathan" at 85.216.151.226 pasted "pmichaud - this is the test that works here" (19 lines) at nopaste.snit.ch/13406
Zaba I see. 15:10
pmichaud essentially the choices at the time were either to (1) try to re-use the perl5 vm, or (2) build a new vm that supported dynamic languages, or (3) try to extend an existing vm to support dynamic languages.
neither (1) nor (3) were very appetizing. 15:11
Zaba i see now
DietCoke though 3 has some traction elsewhere. and clearly 1 is still in use.
pmichaud 3 has some traction elsewhere *now*, but I'm not sure that it did *then*. In fact, I think Parrot was an enabler for #3 to start happening. 15:12
(but that's just speculative on my part)
Zaba #3 is happening?
jonathan pmichaud: Actually, the local change I had might realistically have made this work...checking...
pmichaud jonathan: something you committed in the past two hours caused it to work. 15:13
jonathan pmichaud: Yeah, it was my last commit.
pmichaud the x.pir didn't run before I svn up'd, but it does now.
that is fantastic if that's working now.
jonathan I hadn't been trying to fix that specific issue, but I'm glad I have.
pmichaud I'll be testing all of the new :outer stuff in just a bit, I'll try that also and see what happens. 15:14
jonathan OK, sure. I'll leave my workaround in place for the Method stuff for now.
pmichaud good idea. :-)
DietCoke well, there was always jacl. and ironpython has been around for some time.
jonathan Once they get :outer's, it can go.
DietCoke honestly, I'm not sure the "here's why we're starting parrot" explanations were ever solidly documented; at least not to the skeptic's satisfaction. =-) 15:15
jonathan OK, you wanted me to look at :lexid and PBC interaction...
15:16 slightlyoff joined
cjfields Do we have an op for composing a string from escaped characters? I'm thinking something that converts '\\n' to a real newline. 15:16
I saw compose(), doesn't seem to work for me 15:17
15:17 slightlyoff left
pmichaud cjfields: I had to roll my own for PGE and Rakudo. 15:17
one of the Data::* libraries might have something, though. 15:18
moritz DietCoke: maybe we should just answer that with "because it's fun" ;-)
pmichaud it is fun, but in some ways it's been a very frustrating sort of fun. :-| 15:19
it's a lot more fun today than it was a few years ago :-)
jonathan moritz: There's 2 tests "unexpectedly" suceeding now due to Sub type working. ;-)
NotFound We have C functions, but don't know if they are accesible from bytecode.
DietCoke rakudo certainly looks more fun than partcl was, for example. =-) 15:20
jonathan It's more fun than net2pbc was...
DietCoke but that's probably just jealousy. =-)
pmichaud if rakudo and pct are making parrot more fun, then I think the mozilla grant has been a success. :-) 15:21
time for another! :-)
jonathan Aye!
jonathan is looking forward to his extra Rakudo time during July.
pmichaud realizes he *really* needs to write his mozilla grant report today.
jonathan OK, got the PBC with :lexid bug reproduced...now to try and work out what on earth is going on. 15:22
cjfields well, I have trans() pretty much working...
jonathan cjfields: Nice! :-)
pmichaud yes. I had that with the patch I did for :outer -- and was equally stumped as to why it didn't "just work". But I didn't investigate much farther, as I'm very unfamiliar with bytecode freezing. 15:23
15:23 Theory joined
NotFound cjfields: we have string_unescape_cstring, but I think there is no way to use it from bytecode. 15:25
cjfields It doesn't have named args yet for :c :d :s, but :d and :s shouldn't be too hard to implement
NotFound: okay, I can look into that
pmichaud are you looking for interpreting escapes for trans()? If so, why? 15:26
cjfields hates emoticons, when I mean ':c'
trans() is supposed to handle /n, /b, and other escaped chars
pmichaud ...but won't Rakudo have already done that translation? 15:27
cjfields but it 'just works' if you use double quotes
yes
pmichaud I would not expect trans to change '\\n' into a newline -- I'd want it to be a backslash + n 15:28
cjfields I suppose if you want
pmichaud if I wanted a newline, I would have specified "\\n"
cjfields "/n" => 'A'
Exactly
S05 is a bit fuzzy re: that 15:29
cjfields meant "n" => 'A'
NotFound What's that 'trans' you talk about? 15:30
cjfields transliteration
purl i guess transliteration is "as much as you like", but you'll see in dictionaries, for instance: impinge, v.t.: To touch upon, to strike, to infringe (qv).
cjfields Meh...
pmichaud NotFound: .trans() -- p6's version of the p5 tr///; 15:31
NotFound Ah, yes.
pmichaud afk for a bit
jonathan pmichaud: Found out why. Hating Parrot guts lots today.
cjfields A bit important for us bioinformatics folks
would like to have a way to reverse complement a DNA strand 15:32
or translate DNA->protein
purl babelfish cannot translate from en to en. Try translating through English.
cjfields Interesting...
DietCoke purl's lack of directions is frustrating. 15:36
jonathan: what now? =-)
jonathan DietCoke: Turns out that we re-do the "what is the otuer sub" logic when loading the packfile. 15:39
There's a big comment in there about why.
Which I read as, "well, you can solve it properly if you want to go re-write a chunk of IMCC and who knows what else". 15:40
Long story short, we're going to have to stash lexid away in the bytecode.
I'd thougth we were going to avoid that. :-| 15:41
pmichaud I was hoping that wasn't the case. 15:45
(storing lexid)
where's the comment?
purl well, the comment is pretty gold.
NotFound I'm wondering it can be convenient to have an "escaped" encoding. That way escaping and unescaping can be treated like any other recoding.
pmichaud NotFound: but then the question becomes "whose version of escaping?" 15:46
not everyone escapes the same way. Even perl 5 and perl 6 don't have the same escapes.
Zaba pmichaud, what is different? 15:47
pmichaud also, at least in Rakudo's case, it's much easier to build/decode the escapes as the string is being parsed.
NotFound pmichaud: the one used by the function string_unescape_cstring
pmichaud zaba: there are a _lot_ of differences.
Zaba oh
pmichaud perl 5 uses \\012 for octal notation, perl 6 uses \\o012 (and doesn't allow \\012)
jonathan pmichaud: closure.pmc 15:48
pmichaud: Maybe one day we can avoid this. For now, we'll just have to put up with it.
pmichaud: See in thaw vtable method 15:49
pmichaud perl 6 allows things like \\x[48,65,6c,6c,6f] instead of \\x48\\x65\\x6c\\x6c\\x6f
jonathan: looking
Zaba oh that's nice
NotFound pmichaud: but is not mandatory that every feature of parrot has to be perl6-centric, it isn't? ;) 15:50
pmichaud I'm not saying parrot has to be perl6-centric, I'm just saying that parrot's version of escaped strings would probably be useful only for Parrot.
since other HLLs almost certainly also have different escape patterns. 15:51
NotFound Yeah, I was wondering if that way can help simplify imcc and some other part of parrot.
15:52 peepsalot joined
pmichaud oh, that's possible. 15:52
but I don't know that there are many parts of parrot doing unescaping outside of string_unescape_cstring 15:53
15:54 jhorwitz joined
pmichaud I definitely don't like the idea that we have to store the lexid's in the pbc's. But at this point I'll take whatever works. 15:54
NotFound If I remember well there are some routines that convert a string to a c-string just to call that function, some improvement to that scheme will be good.
particle how do you get at the lexids at runtime without storing them in bytecode? 15:58
i don't understand how that would work
pmichaud normally you don't need the lexids at runtime 15:59
:outer is a compile-time feature
and since we know that the sub being used as :outer is in the same compilation unit, we should be able to store a reference to the outer sub as part of the bytecode
unfortunately, parrot doesn't store compilation units as a single freeze/thaw -- instead it apparently does a series of separate freeze/thaws for each sub 16:00
particle ok, storing the reference to outer sub is what i meant by lexid
right,
pmichaud which means any cross-references between subs is lost
particle yes, precisely.
in parrot, a sub is a compilation unit 16:01
pmichaud ...and that's probably a mistake.
jonathan Freezing them individually sure seems to be. 16:02
particle well, i don't know about that, but it's definitely a long-ago design decision
pmichaud r28715 adds files but doesn't update MANIFEST. 16:03
particle manifest must die
jonathan OK, well, better than removing them and not updating MANIFEST
pmichaud true. :-)
but we still get test failures. :-)
jonathan Someone else can do it, or I'll do it once I've got this saving lexid mess sorted out.
pmichaud I'll take care of it. 16:04
jonathan Thanks.
dalek r28717 | moritz++ | trunk:
: [perl6] added tools/progress-graph.pl. Also added missing test file to
jonathan This is a tad painful...
dalek : MANIFEST
diff: www.parrotvm.org/svn/parrot/revision?rev=28717
moritz forgot to make codingstd test before commiting
will do now 16:05
dalek r28718 | pmichaud++ | trunk: 16:06
: Update MANIFEST with files added in r28715.
diff: www.parrotvm.org/svn/parrot/revision?rev=28718
pmichaud ugh! 16:07
having separate classes for subs means we also have to have .pmcs for every type?!?
particle moritz: can you add vertical lines to the graph, or some other delimiter to signify parrot releases? 16:08
pmichaud thats um, not going to work.
parrot releases aren't in the source data for the graph.
jonathan pmichaud: Yes, we need PMCs.
pmichaud (separate pmc types for subs isn't going to work)
particle pmichaud: but the data is in the parrot repo
pmichaud particle: I think the graphs are being built from spectest-regression.csv, not from the repo. 16:09
moritz particle: I can take a look if GD::Graph supports that
dalek r28719 | moritz++ | trunk:
: [perl6] codingstandards
diff: www.parrotvm.org/svn/parrot/revision?rev=28719
pmichaud jonathan: what happens when someone subclasses Sub, Block, Routine, etc. ?
particle moritz: s/perl6/rakudo/ please
moritz particle: ok, will do 16:10
jonathan pmichaud: Right now, they can't...does the spec allow for this?
pmichaud it doesn't *disallow* it
jonathan OK
pmichaud so I suspect it's allowed
if using :instanceof is going to require PMC types for everything, I think I might prefer to go with a wrapper Sub/Code/Method object of some sort. 16:11
jonathan It's not possible right now to use a high level class / type.
With :instanceof
Or as a sub, in fact.
And it didn't look too easy to change that. 16:12
pmichaud I could do it with a "Block" class that "has &!sub" and delegates invoke() to the &!sub
(and other methods as appropriate)
particle does block, routine, sub, grammar, etc derive from closure? 16:14
pmichaud then it's just a matter of having appropriate initialization to generate the appropriate Block/Code/Method/whatever objects
jonathan You could do something like that, but delegation ins't free, and calling in Parrot is costly enough already.
particle oops, not grammar
pmichaud Block, Routine, Sub, etc. derive from Code, iirc.
particle ah, code.
pmichaud how important is it to be able to distinguish Block/Routine/Sub/etc. at this point? 16:15
i.e., what do we lose if we don't have that? 16:16
moritz pmichaud: distinctiion between return() and leave() for example
rhr Routine vs non-Routine is probably the most important distinction (return only works in Routines)
pmichaud rakudo's already handling that
perhaps not perfectly in the case of leave(), but return does understand the Routine vs. non-Routine distinction. 16:17
jonathan pmichaud: signature objects need to be stashed somewhere, and those are pre-requisite for MMD. 16:18
pmichaud jonathan: would it be possible to rebless parrot subs into HLL classes?
as opposed to delegating?
rhr also you can .wrap a Routine
pmichaud (I can get .wrap to work also w/o having to distinguish the code types)
jonathan Same problem - the PMC_Sub macro that gets at a sub's internals assumes it's a sub PMC.
Or something with the same internal structure. 16:19
pmichaud ...but that can be fixed, yes? same as we've had to fix the macros for the other builtin types that get derived into HLL types?
jonathan I think it can be fixed, but I'm not sure it's trivial.
pmichaud or we could just have a single perl6code.pmc that is the base class for all code objects
(and that understands HLL types)
instead of separate perl6block.pmc, perl6method.pmc, etc. 16:20
jonathan I don't see that working.
pmichaud I _really_ have a bad feeling about the proliferation of pmc types.
like really really really bad
jonathan As soon as you end up with a HLL type being expected to be a sub PMC, you hit the problem. 16:21
pmichaud ....because sub PMC operations don't go through vtables, or...? 16:22
jonathan Right.
Well, some do.
Some don't.
DietCoke all should.
shouldn't be poking at guts unless they're your own.
moritz particle: I investigated a bit, and found no way to annotate releases or some such.
jonathan I looked at solving this, and it looked non-trivial.
moritz particle: if it's important for you, try digging into GD::Graph's docs, or switch to gnuplot or grace ;) 16:23
pmichaud I don't like extending the Perl6* <-> HLL* duality any farther than I absolutely have to.
jonathan I agree we should do it eventually, and then we can have the PMCs now become HLL types, subclassable, the lot. In the meantime, what I've done doesn't break anything that did work, and does remove a roadblock.
And I'm not expecting it to be hard to switch over to using HLL level stuff for this, once Parrot allows us to do that. 16:24
pmichaud "doesn't break anything that did work" isn't completely good. I'm worried about it becoming a dependency or expectation for new stuff.
see, for example, the 'infix:,' stuff I had to rip out and fix.
works is important, but we also want to try not to box ourselves into corners that are hard to extricate ourselves from. (imcc being another example.) 16:25
because then we're continually saying "that's too hard to do the right way now... we'll just work around it and maybe we'll fix it later." 16:26
16:26 Zaba_ joined
pmichaud I'm not immediately rejecting the work; I just didn't realize it was going to require a bunch of PMC classes to work, and I have to decide if I'm willing to accept that or not. :-) 16:27
and that'll take a little time to think through.
jonathan It wasn't my plan A - I wanted high level classes for the lot of them.
pmichaud I _really_ want high-level classes for the lot of them. I'm willing to consider a lot of other workarounds to let that happen, too. This approach has huge alarm bells going off in my head. 16:28
in particular, I'd be willing to accept the delegation runtime cost in preference to enshrining this approach. :-| 16:29
16:30 Ademan joined
jonathan Feel free to re-do it that way if you prefer it. 16:30
I'm not completely sure it won't run into other Parrot issues too, though. :-| 16:31
pmichaud I'll mull it over a bit. I also think we're likely to end up with something for signature handling that maybe obliterate the need for this.
i.e., I think we're going to have to layer our own signature handling on top of Parrot _anyway_, so doing this for the sake of signature handling doesn't quite fit for me.
jonathan If you've got plans for signature handling, it'd be helpful if you told me about them like, soon. Before I dig into the MMD implementation.
pmichaud I don't have plans -- it's one of those things I hadn't thought about much yet. 16:32
jonathan That's the *point* of this - so we can stick our own signature objects somewhere.
pmichaud most of my thoughts have been "oh, jonathan's working on it" :_)
can signatures be properties on subs?
we need to be able to introspect them anyway, I suspect.
jonathan Hmm.
If the properties get frozen into the bytecode, I guess that way could work. 16:33
DietCoke tcl has been storing them as attributes on a .Sub class (TclProc)
pmichaud even if they're not frozen in the bytecode -- we can generate :load :init to attach the properties
DietCoke We also need them for introspection.
jonathan DietCoke: TclProc is a PMC?
DietCoke no.
jonathan Oh? 16:34
DietCoke all the nasty bits are handled by .Sub
pmichaud (I agree that frozen in bytecode would be cleaner/faster, but there's an overall question about how properties get frozen and I think we'll need some real use cases before that gets decided.)
DietCoke I only did it this way because you couldn't have attributes on PMCs until recently.
see languages/tcl/src/class/tclproc.pir
(I'm storing my own string for 'args', not anything pure parrot there, but if it was a parrot representation, I could get the string I needed out of it. 16:35
pmichaud (btw, this is also the reason why multisub, mmd, captures, signatures, and currying are a ways down on the ROADMAP :-)
purl okay, pmichaud.
DietCoke purl, forget (btw, this 16:36
purl DietCoke: I forgot (btw, this
jonathan DietCoke: And how do you bless subs into TclProc?
As in, give them that type?
DietCoke moment.
jonathan thanks
DietCoke line 251 of languages/tcl/runtime/builtin/proc.pir 16:37
I had a sub, I assign it to a new tcl proc, and then set the attributes.
er, not a sub, an Eval.
in an ideal world, IMCC would say "oh, you don't want Eval, you want TclProc, here you are." 16:38
16:38 Zaba joined
jonathan Hmm 16:38
DietCoke but this worked. 16:39
jonathan So you can subclass Sub and have it work somehow. That's...curious.
DietCoke welcome to my life as a partcl developer. :|
jonathan I tried that with :instanceof and it didn't work out... :|
DietCoke this predates instanceof by several years. =-)
pmichaud part of the issue may be "when does the blessing occur"
it can't occur immediately at compile time, because the class may not exist yet. 16:40
but this isn't much different from things like :multi('MyHLLClass')
or even :method in a namespace.
jonathan :instanceof is designed to work when you eval code and the relevant class has already been created.
pmichaud right. I'm thinking it needs to work like :multi and/or :method, so that it patches things up once the relevant class is created. 16:41
DietCoke (years). I lied. 2007-02-25
pmichaud I agree that's more difficult. 16:42
but i think it's ultimately what we'll have to do.
(or come up with a somewhat different approach altogether)
there have been many times lately when I doubt the intrinsic value of PMCs 16:43
er, of PMC classes.
perhaps Parrot's fundamental expectation is that every HLL will create a set of PMC types and that Class/Object types are the exception. But Perl 6 doesn't seem to be structured that way. 16:44
jonathan Class/Object types aren't meant to be the exception.
pmichaud right, so having this PMC class type seems to get in the way a lot :-)
jonathan Huh? 16:45
What do you mean by "PMC class type"? 16:46
pmichaud things like Integer, String, Sub, Perl6Str, etc.
for Perl 6 at least, we keep having to create a PMC type *and* a parallel Class type, and then somehow manage the vtable and method mappings between the two.
that feels wrong.
DietCoke And I thought you were crazy when you started doing it. =-) 16:47
pmichaud I haven't figured out an alternative yet
short of writing wrapper classes that delegate vtable methods
DietCoke the delegation should happen automagically. 16:48
pmichaud (yes, I think it's crazy. No, after doing lots of this stuff I haven't found any workable alternatives.)
16:48 kj joined
DietCoke right, I'm not saying you have a choice. =-) 16:48
For tcl, at least, i could use PMCs or objects; I went with PMCs because it lets me write some stuff in C for a (theoretical!) speed boost. I could probably get away just objects (that derive from the appropriate PMCs) just fine. 16:49
pmichaud I was hoping to keep the number of cases of this down to an absolute minimum -- i.e., where Parrot already provided a good built-in type (Integer, Float, Hash) or where performance issues _really_ seemed to dictact a C-based implementation (Perl6Str). 16:50
DietCoke in my case, parrot's types don't behave enough like tcl types, so I'd always need to override something.
pmichaud and even in the Perl6Str case, if I had a good way of writing Object methods in C then we wouldn't need Perl6Str at all.
DietCoke define good. You can implement METHOD's in PMCs now.
pmichaud yes, but Str is an Object, not a PMC 16:51
so I have to have a Perl6Str PMC intermediary to have a place to attach the method.
DietCoke Ah, I see.
pmichaud (and actually it's a vtable override of get_number)
but even here I could have a vtable override in PIR that calls the C named method.)
DietCoke You could write it in C and dispatch via NCI today.
but that is less-than-good, ya. 16:52
pmichaud I tried that at one point and didn't have much success. I suspect the NCI signature I needed wasn't available.
particle that's an easy fix
pmichaud I'll look at it again when I rewrite get_number and fix the radix issues.
DietCoke k. if you get stuck on it, please let us know, obviously. 16:53
pmichaud sure thing.
actually, having an example of overriding get_number in a (non-PMC) class would be sufficient.
i.e., subclass String and change its get_number vtable entry.
(but have the work for get_number be written in C. A simple return 12345; would be enough to demonstrate that it works :-) 16:54
afk, lunch. 16:59
before I go, though: jonathan -- if it seems I keep throwing up obstacles to the work you've put in today (i.e., :lexid, :instanceof) -- my apologies. Believe me, I'm frustrated about many of Parrot's limitations also. 17:03
and you keep running into the tickets I've alredy submitted. :-) 17:04
I am _very_ happy that :method and :outer work now
jonathan pmichaud: Well, I fixed the :method :outer one, it seems. ;-)
And lexid freezing, I am debugging right now...hope to have it done soon.
pmichaud oh, that will be fantastic
will it still be smart enough to keep track of lexids only within a code unit, or do I need to worry about making sure lexids are unique within an entire interpreter? 17:05
dalek r28720 | fperrad++ | libs4php:
: [php] more type functions
jonathan :instanceof and sub stuff - I don't disagree with you on the end goal here, I just know I've got funding to work on MMD, know I need to be able to store away Perl 6 signature objects to have a chance of getting that right, and really wanted a way to do that. This seemed like a reasonable way.
dalek diff: www.parrotvm.org/svn/parrot/revision?rev=28720
jonathan For the interim, at least.
I think it will be within a code unit, from what I understand of the code. 17:06
pmichaud would sub properties be a reasonable approach, also?
jonathan I hadn't thought of that, and yes, that would perhaps work.
pmichaud let's both think on it a bit. You've thought about mmd and signature issues far more than I have
(in case it's not obvious, the roadmap is also a rough guideline as to how much thought I've put into the implementation details of each item, too :-) 17:07
jonathan OK. Getting Method vs Sub vs Block right to me was a bonus, I was really after a place to stick the sig.
pmichaud I feel like a property is the right thing to do there, or an attribute on subs.
(and as far as I'm concerned, it can be an attribute on Parrot Sub :-)
(as opposed to something rakudo-specific ) 17:08
jonathan Heh. Then we get into the world of trying to get some common type representation that's expressive enough to handle all that Perl 6 needs and other languages need, at Parrot level.
pmichaud it may be that we just need Parrot to give us a "first cut", then rakudo takes over and refines it more. 17:09
jonathan It'd be nice, but I'm sure not smart enough to work that out without at least getting it done in Rakudo first.
pmichaud well, we'll keep working on it then. :-)
jonathan Well, the hard part isn't (erm, apart from today's discussion ;-)) storing the sig somewhere, it's building and (even more so) using it.
pmichaud anyway, I have to go. bbiaw
jonathan ok
17:17 AndyA joined
DietCoke curses. Dates for yapc are set, and they conflict with the school year again. 17:20
particle dates set already! 17:23
sheesh, i'd better book a dorm room soon 17:24
17:25 Zaba_ joined
jonathan In Europe, we haven't had our YAPC yet this summer! :-P 17:27
dalek r28721 | fperrad++ | libs4php: 17:30
: [php] oops
diff: www.parrotvm.org/svn/parrot/revision?rev=28721
nopaste "jonathan" at 85.216.151.226 pasted "pmichaud - fixed PBC issue, demo, patch coming after make test..." (30 lines) at nopaste.snit.ch/13407 17:31
jonathan particle: Where is the next YAPC::NA? 17:32
DietCoke jonathan: pittsburg
purl i guess pittsburg is Soho-West, isn't?
DietCoke (PA)
dalek r28722 | fperrad++ | libs4php: 17:33
: [php] rename decode_base64 to base64_decode
diff: www.parrotvm.org/svn/parrot/revision?rev=28722
17:34 _shane joined
particle pittsburgh? 17:35
jonathan OK 17:36
particle pittsburgh is the host of yapc::na 2009
pittsburgh?
particle kicks purl
purl bites particle!
cotto_work literal pittsburg 17:39
purl cotto_work: pittsburg =is= Soho-West, isn't?
cotto_work no, pittsburgh is the host of yapc::na 2009
purl okay, cotto_work.
DietCoke pittsburg is also hosting PPW in October of '08 17:40
purl okay, DietCoke.
17:40 Zaba joined
cotto_work that bot is getting weirder and weirder 17:40
japhb jonathan++ # Haiku in the face of Cthulu -- er, IMCC's internals 17:42
DietCoke IMCC FTAGN! 17:43
davidfetter iaaa! iaaa!
cotto_work wow. It's spreading. 17:44
particle why is there no tpf news about pittsburgh for 09? 17:45
rdice: shouldn't somebody blog about that?
DietCoke there was an article about PPW which referenced YAPC::NA'09
davidfetter prepares a memo about the new cover sheets on the tpf repors
reports* 17:46
particle maybe i'll bother jmcadams about news.perlfoundation.org/ 17:47
DietCoke particle: GO GET HIM! 17:52
DietCoke grins at davidfetter.
dalek r28723 | jonathan++ | trunk: 17:54
: [core] Make :lexid work in PBC as well as PIR. This changes the bytecode format, so you'll probably want a make clean or even make realclean after this.
diff: www.parrotvm.org/svn/parrot/revision?rev=28723
jonathan That, was one of the most non-fun patches I've done in a while... 17:55
DietCoke jonathan++ 17:59
rdice particle: You could also bother jeremy flumann, who is the conferences chair.
particle aha, thanks 18:00
jeremy@perlfoun... ?
i'll look it up
jonathan OK, I need to take a break for a while... 18:01
TimToady pittsburg is also in California
purl okay, TimToady.
jonathan goes to check a map of the US
particle note the lack of h
avar jonathan: Was that change why perl6.pbc was failing?
or - the fix for that issue
jonathan Oh! Dude, that confused me... 18:02
avar: I wasn't aware perl6.pbc was failing - it wasn't using :lexid yet.
(unless you svn up'd and didn't re-build, mind)
avar pmichaud fixed a problem that caused perl6.pbc to fail where perl6.pir worked, it had to do with some namespace stuff that was different in PBC than PIR 18:03
no this is 2-3 days ago, not related to your change
jonathan Aha, OK.
avar I just thought maybe lexid was related to namespaces ..
jonathan It's dealing with a problem that I think pmichaud discovered around the time he was fixing that particular issue.
TimToady Why do properties on PMCs smell a lot like magics on SVs? (Maybe the same reason Perl 6 doesn't have properties anymore as of about 5 years ago...) </snipe> 18:04
18:04 Zaba_ joined
avar TimToady: Same crap, fancier nomenclature ? :) 18:05
TimToady Sufficiently advanced properties are indistinguishable from magic. :/ 18:06
jonathan S12: "A property is defined by a role like this: ..."
DietCoke i am fairly certain that parrot's PMC's properties and attributes came from dan's understanding of perl6's object model at the time.
TimToady yes, as of about 5 years ago :)
jonathan Or are we talking about some other definition of properties?
BTW, PMC properties are not what are used to do what that bit of S12 is talking about... 18:07
TimToady S12 just uses that name to bridge the old notion of property to the new one of object attributes
jonathan Right. The implementation of that bit of S12 in Rakudo really is just a role with an attribute.
TimToady the basic problem is passive properties that must be interpreted by other code
all "properties" in P6 are really methods 18:08
and hence are innately active (at least potentially) 18:09
the fundamental problem with passive data is that you must interpret it the same way everywhere you use it, so you end up with tons of macros and such to enforce consistency that could have been enforced by the OO system for less overall cost. 18:16
18:23 apeiron joined
rdice particle: I gave Jeremy a poke about this. 18:24
particle beat me to it, thanks! 18:27
18:29 Theory joined
rdice It turned out there were a few things I needed to say to him anyhow so I bundled it all together. 18:31
18:36 barney joined
TimToady n 18:38
or sometimes y
19:07 Ivatar joined 19:24 Theory joined
dalek bernhard.schmalhofer@gmx.de | plumhead_renaming: 19:30
link: www.perlfoundation.org/parrot/index...d_renaming
shorten dalek's url is at xrl.us/d2gpk
dalek r28724 | pmichaud++ | trunk: 19:33
: [pct]:
: * RT#44794 appears to have been resolved (jonathan++), so we
: can now eliminate the :method :outer workaround.
diff: www.parrotvm.org/svn/parrot/revision?rev=28724
stupidbot Error calling said() for rt: Ticket 44794 does not exist.
pmichaud er, RT#47794
oh well.
stupidbot RT 47794d: [BUG] objects - :method doesn't work with :outer() - open
jonathan pmichaud: Nice! :-) 19:37
Glad that's one ticket cleared up.
pmichaud me too. That should also make lexicals in classes work a little more sanely.
It's hard to have methods nested in a class scope when :outer doesn't work :-|
jonathan Well, we've :init :load bug too...if it still exists. Didn't check that one.
pmichaud yes, I'm wondering if that's been magically fixed also. Or if it's just another case of using enum_class_Sub that could be a similarly easy fix. 19:38
now I'm going to see if I can get :lexid to work.
jonathan Cool 19:39
I'm sorta hacking out the PMCs you dislike, but...Euro 2008 semi-final. ;-)
pmichaud then we can fix $_. And then we can fix .method() 19:40
no rush on the PMC hacking. I still dislike them and want to see them come out, but perhaps we both need a few days to re-think it.
particle ack enum_class_Sub --parrot
pmichaud as long as I can virtually put up barbed wire fences and "danger danger!" signs around the current implementation I think we'll be okay :-) 19:41
particle src\\dynpmc\\subproxy.pmc
15:#define enum_class_SubProxy -1
that's all
pmichaud and Euro 2008 semi-final *is* important. :-)
jonathan pmichaud: Well, thing is, if I'm going to put signature stuff in, I'm going to need to do some stuff in the PMCs to make it happen. And if we're going to toss them in the end, I don't see much point putting more into them. 19:43
My thought is: we just put it as a property on the Sub PMC, as you suggested.
And we'll also stash, as a prop, the proto of the type of that sub too.
pmichaud I like that better for now, yes. But we do want something that works, too. I figure you'll solve it :-) 19:44
jonathan Then override WHAT on a sub to grab the proto from the prop and return that.
Sound workable?
pmichaud right
yes
jonathan OK
pmichaud it can be made to work, at any rate.
oh, you probably won't want to see my next nopaste...
jonathan Oh, I already checked earlier, that we can generate an :immediate with an :outer, get the outer sub with interpinfo and Do Stuff to it. 19:45
nopaste "pmichaud" at 76.183.97.54 pasted ":lexid oops" (99 lines) at nopaste.snit.ch/13409
pmichaud (yes, that's after svn up and make realclean) 19:46
I'm trying a fresh checkout now.
jonathan Oh, argh.
And I think I know right now what that is.
pmichaud same error with fresh checkout. 19:49
jonathan Yeah
Building something that in theory has a fix now... 19:50
pmichaud ...but Theory just left...? ;-)
nopaste "jonathan" at 85.216.151.226 pasted "pmichaud - try this patch out" (23 lines) at nopaste.snit.ch/13410 19:51
jonathan :-P
TimToady Theory went off to Practice...
jonathan Ooh, game has started...
pmichaud jonathan: that seems to have fixed it. 19:53
NotFound puts his red t-shirt on
pmichaud who is in the semi-final? 19:54
NotFound Spain :)
TimToady and Nobody?
purl nobody fucks with the Jesus.
TimToady is that a Spanish name?
NotFound Nobody important X-)
Russia. 19:55
jonathan Spain just scored.
pmichaud: OK, running make test on it there 19:56
erm
here
I'll ci if it passes.
pmichaud excellent.
jonathan NotFound: Russia have played some good football this tournament!
TimToady in Russia, the inquisition doesn't expect nobody!!!
pmichaud rebooting here (kernel upgrade and other package updates)
NotFound jonathan: is not easy to reach semifinal without some good play ;) 19:57
Anyway, I don't like football very much, I'm watching the match just to not be the only man in Spain that doesn't. 20:00
barney hopes for Russia in the final and does not understand check_isxxx.t 20:03
dalek r28725 | jonathan++ | trunk: 20:05
: [core] Fix memory management bug in :lexid implementation.
diff: www.parrotvm.org/svn/parrot/revision?rev=28725
jonathan NotFound: Yes, I remember the football fever in Spain well, from when I lived there. :-) 20:07
NotFound jonathan: add to that the time from last semifinal we played, and all is explained. 20:09
20:12 Theory joined
dalek bernhard.schmalhofer@gmx.de | plumhead_renaming: 20:17
link: www.perlfoundation.org/parrot/index...d_renaming
shorten dalek's url is at xrl.us/d2gpk
NotFound 2-0
purl 2
cotto_work thanks, purl 20:22
purl no worries cotto_work
NotFound 3_0 20:25
jonathan Awww...it's really all over for the Russians now. 20:26
dalek r28726 | fperrad++ | libs4php: 20:27
: [php] add a PhpArray PMC
diff: www.parrotvm.org/svn/parrot/revision?rev=28726
cotto_work this worries me slightly
DietCoke cotto_work: which now? 20:30
dalek r28727 | bernhard++ | trunk:
: svn merge -r 28566:28724 svn.perl.org/parrot/branches/libs4...s/plumhead
diff: www.parrotvm.org/svn/parrot/revision?rev=28727
cotto_work fperrad's change, but it looks like it's just stub code
shorten dalek's url is at xrl.us/goi5o
cotto_work it's fine
dalek r28728 | jkeenan++ | trunk: 20:33
: Add some POD and comments explaining what ICU is. Some typographical reformatting.
diff: www.parrotvm.org/svn/parrot/revision?rev=28728
DietCoke Can someone grab pmichaud's request in backscroll for a sample of a C-written method usable on an object in PIR and open a TODO ticket?
barney cotto: The libs with implementations have tests which are passing for the PHC variant. 20:35
cotto_work nice 20:36
barney, it'd be helpful if you could add a stub test for phparrays as t/pmc/array.t
NotFound Spain wins!
barney s/passing/mostly passing/
It's Germany vs. Spain on Sunday 20:37
cotto: Will do tomorrow 20:38
cotto_work in that case I'll probably just do it tonight when I get home 20:39
it's not a big deal either way
cotto_work grumbles about the slowness of the legal dep't 20:41
barney k. Or put sanity tests for all PMCs in a single file. 20:42
dalek r28729 | fperrad++ | libs4php: 20:45
: [php] to_number() for PhpArray
diff: www.parrotvm.org/svn/parrot/revision?rev=28729
20:47 purl joined 20:48 cognominal joined
DietCoke did I send my perlcritic RFC to the list? 20:50
(so I did. 20:52
perl5 is sure getting a lot of new tickets.
jonathan pmichaud: Having any joy with lexid? 21:05
pmichaud jonathan: had to take another break for a bit 21:20
21:20 gmansi joined
pmichaud trying it now 21:20
jonathan pmichaud: OK, sure.
cjfields jonathan: got trans working with d: and s:
say "bookkeeper".trans(:d, 'ok' => ''); # beeper
say "bookkeeper".trans(:s, 'A..Za..z' => ''); # bokeper 21:21
Haven't wrapped my head around how to implement complement yet...
jonathan :d is presumably delete, :s?
cjfields yup
s = squash (repeats) 21:22
pmichaud complement would be any character not in the range.
jonathan Nice work.
cjfields++
cjfields yes, but how do we implement the complement of
" <>&".trans( ( [' ', '<', '&' ]=> ['&nbsp;', '&lt;', '&amp;']))
or 21:23
"&nbsp;&lt;&gt;&amp;".trans( (['&nbsp;', '&lt;', '&amp;'] => [' ', '<', '&' ]))
?
cjfields at a loss
pmichaud start at the first position. See any of the items in the list match the string at that point. If yes, it's in the set; if no, it's in the complemented set
move to the next position
repeat until no more positions 21:24
one could potentially do some optimizations by keeping track of where each key occurs earliest
bacek morning everyone.
pmichaud instead of having to check every key at every position
jonathan: it may take me a bit of time to do :lexid in PCT, since I have to basically generate unique lexids on every outer block 21:25
jonathan OK, sure, no hurry. 21:26
bacek DietCoke, I'll try to add some brains to stupidbot 21:28
tewk pmichaud: nqp question: how do I get the match object after a result_object has been set on a match. scalar context always seens to return the result_object. 21:29
pmichaud the match object is just $/
$($/) is the result object, $/ is the match object
or, if doing a submatch, then $<foo> is the match object, and $($<foo>) is the result object that was set in $<foo> 21:30
cjfields re: trans() I'll see what I can come up with. I'm attaching the latest patch to rt#55492. 21:35
stupidbot RT 55492: [PATCH] partial implementation of transliteration - open
cjfields I'm adding a few tests in to spec (BTW, S05-transliteration//trans.t should start passing, +22 tests not counting several more I need to add)
pmichaud excellent.
jonathan: (re: RT#47956--the other flag issues) even if what you did today doesn't fix that one, allison has it fixed in the pdd25cx branch 21:36
stupidbot RT 47956: [BUG] :init :load cannot be target of :outer in compiled PIR - open
jonathan pmichaud: Aha, good.
cjfields Actually, I think the tests passed is 17 (tr/// isn't parsed yet, and there is an odd feed operator test which is also skipped). But I'll be adding in many more... 21:39
pmichaud excellent. we should be closing in on 1,000 passing tests then.
moritz cjfields: if you need help fudging the tests, please let me know 21:40
cjfields thanks
moritz pmichaud, jonathan: are there any specific topics for which you want more tests in t/spec/ (apart from S03, which Auzon currently does)? 21:43
pmichaud S02, S03, S04, and S29 are the ones I'm most interested in at the moment.
(in roughly any sequence.)
jonathan Naturally, I have an interest in S12. :-) 21:44
pmichaud it may be a couple of weeks before we're ready for S06, S10, or S11
(beyond very basic tests, that is)
I don't know that we'll be getting to S09 before the gsoc project finishes. :-) 21:45
tewk pmichaud++ thanks, I think I was getting confused with say()'s output, you and _dumper cleared things up for me
pmichaud tewk: yes, keep in mind that one a result object is set, then get_number and get_string are based on the result object
however, one can use .text to get the original matched text 21:46
(at least, I think .text works -- if not it needs to be added)
tewk really likes nqp, and is getting excited about perl6 21:47
I know its late, but I've just started writing production nqp/perl6 code. 21:48
moritz S04-statements/no-implict-block.t should succeed (fudged), but when I add it to t/spectest_regression.data I get a usage message from fudge 22:01
any idea what's wrong with it?
(when I run spectest_regression I get that usage message)
pmichaud usually that means fudge can't find the file. 22:02
moritz tries a third time 22:04
pmichaud jonathan: so far so good on :lexid -- got it added into POST and things compile okay 22:05
nqp runs okay. 22:06
jonathan Nice
pmichaud basic rakudo tests run -- now trying spectest_regression
then I'll do it all again after converting immediate blocks to no longer be run as closures 22:07
(which is where the real problems began before)
dalek r28730 | moritz++ | trunk: 22:11
: [rakudo] one more test for spectest_regression
diff: www.parrotvm.org/svn/parrot/revision?rev=28730
22:12 bacek_ joined, teknomunk joined, gmansi joined, cognominal joined, purl joined, Theory joined, apeiron joined, _shane joined, Ademan joined, peepsalot joined, cjfields joined, NotFound joined, AndyAway joined, tco joined, gryphon joined, nopaste joined, mj41 joined, skv joined, ruoso joined, bacek joined, Infinoid joined, Patterner joined, stupidbot joined, DietCoke joined, cxreg joined, avar joined, davidfetter joined, magnachef_away joined, zostay joined, cosimo joined, Coleoid joined, rhr joined, japhb joined, particle joined, zarchne joined, jjore joined, Khisanth joined, GeJ joined, tewk joined, cotto_work joined, omega joined, TonyC joined, Tene joined, dngor joined, Piper joined, hachi joined, cotto_home joined, workbench joined, diakopter joined, spinclad joined, bobwhoops joined, TimToady joined, obra joined, rjbs joined, confound joined, cout joined, Auzon joined, jjuran joined, vhold joined, jq joined, integral joined, MagNET joined, rafl joined, baest joined, jrockway joined, slavorg joined, Debolaz joined, szbalint joined
cjfields interesting.... 22:29
pmichaud: let me know if rt#55492 is okay whenever you have the time (I'll check backlog). No hurry.
stupidbot RT 55492: [PATCH] partial implementation of transliteration - open
22:29 cjfields left 22:33 bgeron_ joined, d4l3k_ joined 22:34 ilbot2 joined
moderator Parrot 0.6.3 "Beautiful Parrot" Released | parrotcode.org/ | 5/649/88 new/open/stalled tix | logged in irclog.perlgeek.de/parrot/today
cotto_work to whomever maintains stupidbot, a url after the RT info would be nice 22:35
22:37 Maddingue joined
moritz that would be bacek_ ;) 22:38
cotto_work: btw if you look at the irc logs (see /topic), #\\d{5} is turned into a link to the ticket 22:39
22:39 rdice joined
pmichaud jonathan: well, something doesn't quite work with lexicals yet -- I'll have to do a fair bit of work to track it down, though. 22:41
cotto_work moritz, so they are.
pmichaud nqp passes all of its tests, but perl6 fails pretty spectacularly.
cotto_work thank for pointing that out
22:42 slavorg joined
jonathan pmichaud: Is that when you removed the newclosure, or just with :lexid in general? 22:44
pmichaud removing the newclosure
with just :lexid in general everything still works.
jonathan OK
pmichaud (but I would somewhat expect that :-)
moritz enough karma for today, good night ;-) 22:46
pmichaud (since it already works now.)
anyway, I'll keep playing with it and see if I can track it down.
rakudo has gotten so large it's a lot harder to track these things down, though.
particle you should commit with just :lexid
dalek r28731 | moritz++ | trunk:
: [rakudo] one more test for spectest_regression
diff: www.parrotvm.org/svn/parrot/revision?rev=28731
22:46 Maddingue joined
jonathan Because I've just hit upon something odd with lexicals too. 22:46
Do you see issues when you have a case where you've got something like:
{ ...scome scope... sub foo { ...so this is nested... } } foo()
Basically, when you call into a nested scope, when you've never called the outer one?
night moritz
bacek_ g'night moritz 22:47
pmichaud do you mean is that the problem I'm seeing now, or do you mean do I think that's a problem to be addressed?
it's not what I'm seeing now. After getting rid of newclosure I can't even get "say 'ok 1'" to work.
(it won't compile -- there's a problem somewhere in gen_actions.pir) 22:48
(related to the fact that there aren't newclosures.)
jonathan Ah, you mean the actions from NQP don't even run to completion before hitting the problem? 22:49
pmichaud correct. 22:50
jonathan I have a test case you might be interested in. 22:51
nopaste "jonathan" at 85.216.151.226 pasted "pmichaud" (21 lines) at nopaste.snit.ch/13411 22:52
jonathan Run this
pmichaud somewhere it gets confused and expects a PAST::Val node to have a .pasttype
(when running perl6)
jonathan It fails. Then comment out the call to test().
pmichaud yes, I'm aware that one can be an issue. 22:53
jonathan OK.
pmichaud it fails because 'outer' was never called. 22:54
jonathan OK, but it doesn't fail in test.
pmichaud so there's not really a context for test() to work from.
oh...? checking.
jonathan Add say "ok here" after test()
pmichaud the problem is probably that outer thinks it already has a context 22:55
because the call to test() will build one for it.
jonathan Yeah.
It "fakes" a call to the outer subs to build them. 22:56
pmichaud but that shouldn't happen with the code I'm doing at the moment.
jonathan OK
pmichaud currently in PCT immediate blocks are called via newclosure
jonathan It is decidedly an issue for the :immedidate with :outer.
pmichaud I want to switch those to be normal calls
i.e., without calling newclosure
in the case of an immediate block, we're always invoking it from its outer sub, so there shouldn't be an issue. 22:57
jonathan Right.
pmichaud (but obviously there is, since it's not working for some reason :-)
jonathan src/sub.c from line 505 is what happens when you call newclosure 23:00
pmichaud I'm wondering if it's attaching the wrong :outer somehow. 23:01
because it's acting like the lexical it's expecting isn't the one it's getting.
and since the lexicals are fairly common (i.e., always '$/', '$past', and '$key'), a misplaced context would be difficult to spot. 23:02
(it could also be that POST is generating incorrect lexid/outer pairs.)
(i.e., that POST is getting the wrong lexids for each outer) 23:03
jonathan That would certainly cause issues, if it is. ;-)
pmichaud yes, but the code to do it turned out to be fairly straightforward, so I'm thinking that's not likely it.
jonathan *nod*
pmichaud At any rate, I'm not sure I want to go through gen_actions.pir and try to verify that each :outer is correct...
jonathan It wouldn't exactly be surprising if it were a Parrot issue. 23:04
23:06 bacek_ joined
pmichaud ugh. one nasty side effect of return exceptions is that they make the exception appear to be thrown from the return handler instead of the location of the original exception. :-( 23:06
pmichaud turns off "return" in NQP for now.
jonathan The invoke vtable method in closure.pmc is the interesting one. 23:07
23:07 purl joined
pmichaud yes, I looked at it over the weekend. 23:07
looks like $args in build_call 23:09
or whatever is being passed to build call
oh, perhaps store_lex isn't working. 23:11
pmichaud turns on some tracing.
jonathan From reading the sub/closure code, I don't see anything that immediately looks like it would cause the issues you're seeing. 23:12
23:14 silug joined
jonathan pmichaud: OK, I really, really need to try and get some rest now. 23:15
Good luck debugging.
pmichaud thanks for all of the improvements!
jonathan Will write my report tomorrow...it ain't going to be a very exciting one. :-S 23:16
Yeah, lots of under-the-hood work that was needed, but no shiny new features for people to play with.
pmichaud tis okay. we've already busted through 1000 passing spectests today
jonathan Nice.
:-)
pmichaud my current count is 1073, and that doesn't include a few things that are failing
(that were previously passing) 23:17
jonathan Does your :lexid change, without newclosure being removed, fix any?
pmichaud probably not
jonathan Grrr.
pmichaud when newclosure is there, :outer doesn't really make a difference 23:18
because it automatically takes the context of the caller, regardless of :outer says
er, "regardless of what :outer says"
jonathan Ah, OK.
So we need both to make it work right.
pmichaud right, unless we want to be calling newclosure prior to every subroutine invocation
(and checking to see if what we're calling is a Sub or a Closure to decide if we should be calling newclosure or not.) 23:19
jonathan OK. 23:21
Hopefully you can work out a smaller test case. 23:22
Maybe one of the other languages using NQP with a smaller actions file?
23:22 particle joined
pmichaud oh, I think I found it. 23:23
or at least a part of it.
jonathan Oh?
Just taking the garbage out...brb
23:24 Limbic_Region joined
pmichaud if this is indeed the problem it could likely suck big time. 23:24
....but I think I can make a smaller test case. 23:27
brb
nopaste "pmichaud" at 76.183.97.54 pasted "more lexical badness :-( -- simple case" (70 lines) at nopaste.snit.ch/13413 23:34
23:37 bacek_ joined
pmichaud I can simplify the PIR quite a bit and then I'll submit a ticket. 23:39
jonathan That looks like new invocations of a sub aren't getting a clean lexpad. 23:42
oh, no 23:43
it's not that...
hmmm
pmichaud the closure is permanently tied to the original lexpad
jonathan The inner one is holding...right.
Which is probably what my :immediate bug boils down to as well.
pmichaud could be.
jonathan It seems to make sense. 23:44
pmichaud here's a simpler case
nopaste "pmichaud" at 76.183.97.54 pasted "more lexical badness :-( -- simpler case" (50 lines) at nopaste.snit.ch/13414
pmichaud it removes all of the NQP cruft.
should I file a ticket? 23:45
I think I'll just file this as a ticket for the moment, so others can perhaps start looking at it.
I need to get dinner and walk the dog.
jonathan Yeah, do it. 23:47
I'm too tired to look now 23:48
Maybe Saturday.
If someone doesn't beat me to it.
Grrr. So many Parrot bugs. :-(
23:52 TiMBuS joined
jonathan OK, sleeep - night 23:54