Camelia, the Perl 6 bug

IRC log for #parrot, 2008-06-26

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:10 AndyA joined #parrot
00:10 apeiron_ joined #parrot
00:19 DietCoke smoke is on life support. Smolder hasn't quite made it yet.
00:20 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
00:21 * magnachef waves
00:21 kid51 Yeah, Dan, I was going to send you that link.
00:21 kid51 Also http://rt.perl.org/rt3/Tic​ket/Display.html?id=49276
00:21 magnachef yeah, I came across it and it looks like it ties in with the other stuff I wanted to do
00:22 kid51 hachi:  purl just did it again!
00:22 hachi yeah, I get an SMS anytime she goes down
00:23 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. =-)
00:23 hachi zsh: segmentation fault  ./purl1
00:23 hachi wonder if I have gcc
00:23 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.
00:24 DietCoke I will try to get the test harness stuff done by the weekend at the latest.
00:24 Zaba_ joined #parrot
00:26 purl joined #parrot
00:26 hachi msg kid51 hello
00:26 purl Message for kid51 stored.
00:26 hachi dang, she stored it
00:27 * kid51 says hello world and waits to see what purl does.
00:28 kid51 She's working.
00:28 kid51 BTW, when did purl acquire gender?
00:28 kid51 Now let me try to store a message.
00:28 DietCoke she's always been she.
00:29 DietCoke kid51: another good way to get feedback from me on a ticket is to assign it to me.
00:29 DietCoke though I'm not sure how scalable RT makes that.
00:30 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:31 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.
00:31 kid51 Correct?
00:31 DietCoke if you do it as a reply and not a comment, yes.
00:31 DietCoke in a year we'll all be using trac, for better or ill.
00:31 kid51 What is trac?
00:32 DietCoke ticketing system/wiki/svn integration.
00:32 kid51 I was about to say, "purl, trac?" -- but she ducked out again!
00:32 DietCoke nothing to worry about yet.
00:32 kid51 Does it include a pony as well ;-)
00:59 Limbic_Region joined #parrot
01:02 DietCoke joined #parrot
01:03 bacek joined #parrot
01:03 hachi kid51: she's always been a she
01:03 hachi see pound.perl.org, I think
01:06 hachi so guess what kid51
01:06 kid51 Eh?
01:06 hachi no more using message center for now
01:07 hachi sleepycat on 10.4 appears to be broken or someething
01:07 kid51 Was I a bad boy?
01:07 hachi not you, just... something
01:07 kid51 Can purl's other wonderful talents continue to be used?
01:08 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 hachi I need to get some work (dayjob) done, and then I can get about to debugging her again
01:08 kid51 Can you go back to #parrot and post that section via nopaste?
01:09 hachi I'm on #parrot, what the devil are you asking for?
01:09 kid51 Oops, last message was meant for side conversation.
01:09 hachi :D
01:09 kid51 magnachef and I are discussing smoke testing.
01:09 tetragon joined #parrot
01:10 purl joined #parrot
01:10 kid51 purl nopaste?
01:10 purl somebody said nopaste was at http://nopaste.snit.ch/ (ask TonyC for new channels) or http://rafb.net/paste or http://paste.husk.org/ or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ or don't bother me while I'm eating or App::Nopaste or tools/dev/nopaste.pl
01:13 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 http://nopaste.snit.ch/13401
01:13 magnachef http://pastebin.ca/1056128
01:14 magnachef there ya go kid51
01:15 kid51 Got it.
01:15 kid51 I guess that since you live near the Canadian border, you use a Canadian pastebot, eh?
01:15 magnachef heh
01:16 magnachef I can see Canada from work
01:16 bacek kid51: what about dprofpp?
01:17 * magnachef heads home
01:17 purl Slacker!
01:17 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.
01:35 * bacek kid51:
01:35 bacek use Memoize;
01:35 bacek memoize('name');
01:35 bacek in Pmc2c/Method.pm
01:35 bacek use Memoize;
01:35 bacek memoize('subst')
01:36 bacek in Emittter.pm
01:36 bacek Gives me 30% performance boost
01:36 bacek ok. 20% :)
01:37 kid51 Hmm.  Didn't realize Memoize was Perl 5 core.
01:39 bacek hmm... We stuck with coreonly modules?
01:40 DietCoke yes.
01:40 DietCoke in general.
01:40 kid51 If it's not core, then we have to include it in the Parrot distribution itself.
01:40 DietCoke see: 'corelist'. it's core in 5.7.3
01:40 bacek Memoize was first released with perl 5.007003 (patchlevel perl/15039, released on 2002-03-05
01:40 DietCoke anything in core as of 5.8.0 is fair game.
01:41 DietCoke 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)?
01:42 bacek kid51: In general - yes
01:43 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 (http://rt.perl.org/rt3/Tic​ket/Display.html?id=38194).
01:43 bacek rewrite_vtable_method is next good candidate
01:45 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 http://nopaste.snit.ch/13402
01:47 bacek kid51: looks like your disk is very slow...
01:47 DietCoke purl?
01:47 purl DietCoke?
01:47 DietCoke corelist?
01:47 purl hmmm... corelist is wrong, then.
01:48 DietCoke no, corelist is how you find out when a module was included in perl core.
01:48 purl okay, DietCoke.
01:48 DietCoke ->
01:49 Auzon purl, corelist is also http://search.cpan.org/per​ldoc?Module%3A%3ACoreList
01:49 purl okay, Auzon.
01:50 pmichaud is there a way to indicate that a sub should not accept any params?
01:50 pmichaud (in PIR)
01:50 bacek_ joined #parrot
01:51 stupidbot joined #parrot
01:55 bacek_ I promise that stupidbot will be good :)
01:55 bacek_ stupidbot: corelist Memoize
01:55 stupidbot bacek_: Memoize was first released with perl 5.007003 (patchlevel perl/15039, released on 2002-03-05)
01:55 bacek_ there is no other modules loaded in stupidbot.
01:57 magnachef joined #parrot
01:58 kid51 bacek_:  And that was my *fast* disk:  my Linux VM.
01:59 bacek_ Elapsed Time = 0.408132 Seconds
01:59 bacek_ User+System Time = 0.148132 Seconds
01:59 bacek_ It's definitely spend most time on IO...
02:00 kid51 But that's what we would expect for the --dump option, I'd think?
02:00 kid51 it's printing to disk.
02:00 pmichaud (my question is RT#39844, so answer is now.)
02:00 pmichaud er, "no"
02:00 purl i heard er, "no" was a short answer
02:05 bacek_ RT#39844
02:05 stupidbot RT 39844d: [BUG] Parrot doesn't do args checking for a sub without params - open
02:16 bacek_ pmichaud: about (RT#56230) I can move all Complex's related functions into Complex.pir. Do it?
02:16 pmichaud sure.
02:16 bacek_ pmichaud: ok
02:16 bacek_ later today...
02:16 purl well, later today is Hingis-Seles, the winner of that one playing Venus.
02:16 pmichaud note that some of them will be moving _out_ of Complex.pir into Any.pir  :-)
02:17 bacek_ pmichaud: ok :)
02:34 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...
02:41 dalek r28699 | pmichaud++ | trunk:
02:41 dalek : [rakudo]:
02:41 dalek : * Add workarounds for argument checking of 0-ary functions (RT#56366).
02:41 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28699
02:59 dalek r28700 | cotto++ | libs4php:
02:59 dalek : [plumhead] make clean doesn't clobber important files now and $(LOAD_EXT) is
02:59 dalek : properly defined.  There are also a couple more granular PMC-related targets.
02:59 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28700
03:01 dalek r28701 | cotto++ | libs4php:
03:01 dalek : [plumhead] removed trailing whitespace.  d'oh!
03:01 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28701
03:02 cotto_home It's so nice to finally be able to commit changes (provided they're not made at work).
03:15 tetragon joined #parrot
03:17 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
03:17 polyglotbot ..(src/PAST/Compiler.pir:492)␤called from Sub 'par...
03:19 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:20 tetragon joined #parrot
03:20 Coleoid Oh, and hi!  :D
03:22 Coleoid I know I've seen links for running the spectests around somewhere,
03:22 bacek_ Coleoid: make spectest_regression
03:22 bacek_ in languages/perl6
03:22 Coleoid but suddenly I've found enough p6 resources around that I can't find the relevant link.
03:23 Coleoid bacek:  Thanks!  Trying...
03:23 Coleoid Oh argh.
03:24 Coleoid 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:25 Coleoid ...which is incompatible with svn 1.4.x, which are the only packaged svn builds out there yet...
03:26 Coleoid Is this just one of the things that goes without saying, that the deeper you get into open source...
03:27 Coleoid ...the more time you spend getting your prerequisites in order, and their prerequisites, & c?
03:28 cotto_home yeah, but after a while you get them all in order
03:28 Coleoid ...
03:28 cotto_home then you forget how much of a pain it was until you have to set it up on a new machine
03:29 Coleoid Probably about three days after I wipe Windows and install some Linux or BSD...  :D
03:30 cotto_home win32 developers are welcome too
03:30 Coleoid I'd like to be such.
03:31 clunker3_ joined #parrot
03:31 cotto_home if/when you get it working, you can update the wiki page: http://www.perlfoundation.org/parrot/i​ndex.cgi?parrot_development_on_windows
03:31 shorten cotto_home's url is at http://xrl.us/bjcdh
03:33 Coleoid I'm still paddling to get all the way up to zero.
03:33 Coleoid 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...
03:52 Coleoid Uh.
03:52 Coleoid For pity's sake.
03:54 Coleoid 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?
03:55 Coleoid TortoiseSVN works great for getting parrot and friends,
03:56 Coleoid but the spectest_regression target relies on the command-line SVN tools.
03:56 Coleoid Which aren't included in TSVN 1.5, and there's no pre-built for that anywhere on the net that I find...
03:56 Coleoid (1.5 is brand-new...)
03:57 Coleoid And 1.5 does an auto-upgrade of local copies (incompatible with 1.4.x...)
03:57 Coleoid And gah.
03:58 Coleoid 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 http://sourceforge.net/project/showfiles.​php?group_id=138498&package_id=151948
03:58 shorten cotto_home's url is at http://xrl.us/gdgvw
03:59 cotto_home it strikes me that this wouldn't be a bad time to try to get my xp vmware machine booting again
04:00 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:01 Coleoid 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:03 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.
04:03 cotto_home good luck
04:03 purl good luck is probably all I can say.
04:03 Coleoid :D
04:07 cotto_home Coleoid++
04:13 diakopter Coleoid: tigris has win32 command-line svn installers... svn-1.4.6-setup.exe from http://subversion.tigris.org/servlet​s/ProjectDocumentList?folderID=8100  do you really have to have 1.5.0?
04:13 shorten diakopter's url is at http://xrl.us/gdobo
04:16 cotto_home msg Coleoid tigris has win32 command-line svn installers... svn-1.4.6-setup.exe from http://subversion.tigris.org/servlet​s/ProjectDocumentList?folderID=8100  do you really have to have 1.5.0?
04:16 purl Message for coleoid stored.
04:16 shorten cotto_home's url is at http://xrl.us/gdobo
04:40 Zaba joined #parrot
05:02 Ademan joined #parrot
05:04 Psyche^ joined #parrot
05:08 Theory joined #parrot
05:09 Infinoid joined #parrot
05:11 dalek r28702 | petdance++ | trunk:
05:11 dalek : regex tweaked so vim does not get confused
05:11 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28702
05:21 pmichaud bacek_: list assignment isn't implemented
05:24 bacek_ pmichaud: I can see it :)
05:25 bacek_ pmichaud: What about 'structural colonpair'?
05:28 pmichaud ...structural colonpair?
05:29 bacek_ | <postcircumfix>                                    {*}    #= structural
05:29 bacek_ this from token colonpair.
05:30 pmichaud that would be for things like :(...),  :{...}, :<...>, etc?
05:30 bacek_ yes
05:30 pmichaud I don't think those are implemented either.  I don't even remember what they mean.  :-)
05:30 bacek_ they definetly not implemented :)
05:30 bacek_ My question is how to implement it? :)
05:31 bacek_ 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:32 pmichaud depends on the structure.  :(...) is for signatures.  :<...> and :[...] are for identifier extensions.  :{...} is an adverbial closure.
05:33 pmichaud in each case it's not likely to be a simple PAST node, but will depend on the context.
05:33 pmichaud for example, :<...>  is used after category identifiers, as in   infix:<+>
05:41 bacek_ all this handled in 'method postcircumfix' I think...
05:42 bacek_ So, in 'method coonpair' I just have $<postcircumfix>.
05:42 bacek_ colonpair
05:42 purl well, colonpair is really a term
05:44 bacek_ what difference between 'token', 'term' and 'rule'?
05:44 bacek_ (And colonpair is token in STD.pm...)
06:00 dalek r28703 | pmichaud++ | trunk:
06:00 dalek : [rakudo]:
06:00 dalek : * Add .pick methods and functions.
06:00 dalek : * Add .elems methods and functions to Any.
06:00 dalek : * Resolves RT#56266 and RT#49085.
06:00 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28703
06:00 stupidbot RT 56266d: rand gets "invoke() not implemented in class 'Float' " - Revision: 28671 - open
06:06 dalek r28704 | petdance++ | trunk:
06:06 dalek : adding some type sanity
06:06 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28704
06:18 Zaba joined #parrot
06:25 Zaba_ joined #parrot
06:33 dalek r28705 | pmichaud++ | trunk:
06:33 dalek : [rakudo]:
06:33 dalek : * spectest-progress.csv update
06:33 dalek : * 73 files, 944 passing tests as of 2008-06-26 00:00
06:33 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28705
06:36 dalek r28706 | petdance++ | trunk:
06:36 dalek : consting and reheaderizing
06:36 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28706
06:51 pmichaud bacek:  'token' is a regex that doesn't backtrack (except where explicitly indicated)
06:51 pmichaud back:  'rule' is a regex where whitespace in the pattern corresponds to intertoken separators in the string to be matched
06:56 dalek r28707 | pmichaud++ | trunk:
06:56 dalek : [rakudo]:
06:56 dalek : * Move .cis and .unpolar into Any.
06:56 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28707
07:01 bacek_ pmichaud: thanks for clarification.
07:27 dalek Christoph Otto | plumhead_renaming:
07:27 dalek link: http://www.perlfoundation.org/pa​rrot/index.cgi?plumhead_renaming
07:27 shorten dalek's url is at http://xrl.us/d2gpk
08:17 TiMBuS|Away joined #parrot
08:18 TiMBuS rebooted in time to see myself go. damn windows games in WINE :(
08:39 cognominal joined #parrot
09:30 jonathan morning all
09:30 purl morning, jonathan
09:30 jonathan So, Rakudo day. Time-shifted a little, because I seem to have got some insomnia...
09:33 masak joined #parrot
09:54 Ademan joined #parrot
09:56 bacek joined #parrot
09:57 dalek r28708 | jonathan++ | trunk:
09:57 dalek : [core] Parse :lexid('foo').
09:57 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28708
10:08 iblechbot joined #parrot
10:26 jonathan Oh IMCC
10:26 jonathan The sight of your internals
10:26 jonathan Will not bring world peace
10:27 dalek r28709 | fperrad++ | libs4php:
10:27 dalek : [php] to_number in PMC
10:27 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28709
10:31 bacek jonathan, rewrite IMCC in Parser::Yapp?
10:33 bacek stupidbot, search Parser::Yapp
10:36 bacek stupidbot, find Memoize
10:36 bacek stupidbot, corelist search Parser::Yapp
10:36 stupidbot bacek: Found no module matching /Parser::Yapp/
10:37 bacek hmm... not in corelist of cause...
10:38 jonathan bacek: Would prefer to write something that does POST to PBC.
10:38 jonathan Then parse PIR with PGE, and use the actions to produce POST.
10:40 bacek hey, It's different approach! Then you have to provide precompiled pbc for PGE
10:45 jonathan Yeah, of course, that's the issue.
10:46 jonathan Phew. Finally got :lexid to work. That should make pmichaud happy.
10:54 dalek r28710 | jonathan++ | trunk:
10:54 dalek : [core] Implement :lexid(...).
10:54 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28710
10:56 skv joined #parrot
11:01 jan joined #parrot
11:23 mj41 Hi, I added MSWin32 machine to TapTinder - http://tt.ro.vutbr.cz/report/pr-Parrot/rp-trunk
11:24 jonathan mj41: Great, thanks!
11:25 jonathan mj41: How hard would it be to also get reports like this, for make spectest_regression target in languages/perl6/ ?
11:26 mj41 It is next on my TODO list :-)
11:26 jonathan Oh, great. :-)
11:26 moritz mj41++
11:27 cognominal jonathan, how can I add the buiild on my macbook to taptinder?
11:27 moritz does that make you mj42? ;-)
11:27 jonathan cognominal: I don't know - but mj41 is the person to ask. :-)
11:28 cognominal ok
11:28 mj41 moritz: no, 42 is too great number for me :-)
11:28 purl okay, mj41.
11:29 moritz mj41: ;)
11:30 cognominal mj41?  I did a ack -i  on parrot source and did not see taptinder
11:30 mj41 http://taptinder.org
11:32 mj41 cognominal: it is not easy to add next machine, but doable
11:33 cognominal ho, that's a per branch thing?
11:34 mj41 it is prepared for it
11:37 mj41 but many parts are prototypes only
11:41 ruoso joined #parrot
11:42 moritz mj41: after reading the wiki, it seems that you have an IRC bot for reporting
11:42 moritz mj41: would you care to send it here to report test failures?
11:43 mj41 no IRC bot yet, probably you should fix my English
11:44 moritz oh no, I just didn't read the "future" in "long future feature list" ;)
11:53 mj41 :-)
12:13 skv_ joined #parrot
12:14 mj41_ joined #parrot
12:16 nopaste joined #parrot
12:35 moritz half of my spectest_regression runs are failures due to some GC problems
12:38 pmichaud I've started using the tools/test_summary.pl script, which passes -G to parrot
12:47 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 #parrot
13:08 dalek r28711 | pmichaud++ | trunk:
13:08 dalek : [rakudo]:
13:08 dalek : * Small update to postfix:<i>, so that (1i)i comes up with the
13:08 dalek :   correct result.
13:08 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28711
13:09 moritz is that tested somewhere?
13:10 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 :(
13:12 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)?
13:13 pmichaud the odds are very high that it's a parrot bug.
13:13 masak what makes the CG bug(s) hard to fix?
13:13 pmichaud any change -- even turning on tracing -- causes the bug to disappear.
13:13 moritz masak: mostly that they aren't easy to reproduce with small code
13:13 masak ouch
13:14 masak http://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.
13:15 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
13:15 pmichaud they can be reproduced in the exact circumstances, yes.
13:15 masak but that includes not being able to introspect the environment, I guess...
13:16 moritz pmichaud: re whiteknight, probably - but he'lll also introduce new ones :(
13:17 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:18 pmichaud (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 pmichaud (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.  :-)
13:19 moritz I can write a test for it
13:22 pmichaud perl6:  say (1i)i;   # testing
13:22 polyglotbot OUTPUT[0+1i␤]
13:22 pmichaud polyglotbot hasn't updated either :-(
13:29 jonathan pmichaud: Currently working on using :instanceof so we can have Sub, Method, Block types etc.
13:29 Zaba joined #parrot
13:29 pmichaud jonathan: excellent
13:30 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)
13:30 pmichaud jonathan: thanks for quick work on :lexid -- I'll give it a fuller test shortly
13:32 jonathan pmichaud: Sure, hopefully it works for you.
13:33 pmichaud I'll add my (updated) test, at any rate.
13:36 dalek r28712 | pmichaud++ | trunk:
13:36 dalek : [core]:
13:36 dalek : * Add a test for :lexid/:outer implementation by jonathan++ .
13:36 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28712
13:39 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
13:39 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.
13:40 * DietCoke hurls http://www.perlfoundation.org/p​arrot/index.cgi?fixing_gc_bugs :: Fixing GC Bugs
13:40 DietCoke (that has links to chromatic's bugs on the bottom.)
13:41 DietCoke s/bugs/articles/
13:41 DietCoke warning: sloooooooooow.
13:41 nopaste "pmichaud" at 76.183.97.54 pasted ":outer in .pbc still uses wrong sub" (55 lines) at http://nopaste.snit.ch/13404
13:42 jonathan wtf...
13:42 pmichaud let me see if I can verify that it is in fact the wrong sub....
13:42 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...
13:42 pmichaud yes, that's what I think as well
13:42 pmichaud but *something* isn't right.
13:43 DietCoke I didn't see a patch that updated how outer works, just one to parse lexid.
13:43 dalek r28713 | jonathan++ | trunk:
13:43 dalek : [core] Make multiple dispatch work when you have your own sub type.
13:43 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28713
13:43 DietCoke was that all in r28708?
13:44 pmichaud DietCoke: there were two commits for :lexid
13:44 pmichaud one for parse, one for implementation.
13:44 jonathan That one you just mentioned was just parse.
13:44 DietCoke ah, 28710 was the impl. danke.
13:44 gryphon joined #parrot
13:45 nopaste "pmichaud" at 76.183.97.54 pasted ".pbc definitely grabs the wrong :outer" (55 lines) at http://nopaste.snit.ch/13405
13:45 DietCoke gah, commented out code.
13:45 DietCoke bad jonathan, no donut. =-)
13:45 jonathan DietCoke: Yeah, I have it removed locally, I spotted that just now in a debug trace.
13:46 DietCoke jonathan++
13:46 DietCoke Sorry, been fighting against that in a codebase I have to maintain at work. =-)
13:46 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 #parrot
13:47 pmichaud but that's an easy change, once we get the .pbc working.
13:47 jonathan DietCoke: it's gone
13:47 dalek r28714 | jonathan++ | trunk:
13:47 dalek : [core] Remove commnented out code accidentally left from earlier commit.
13:47 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28714
13:48 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.
13:48 pmichaud I need a short break anyway, so bbiab
13:48 jonathan ok
13:48 DietCoke I don't see anything obviously wrong with the patches.
13:49 jonathan Thanks for sanity check.
13:49 DietCoke pmichaud: I've seen 0-ary referred to as "nullary".
13:50 DietCoke 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:54 DietCoke 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
13:54 DietCoke stupidbot, owner?
13:54 DietCoke (what's with the d after the ticket #?)
13:54 moritz DietCoke: that would be bacek
13:55 DietCoke purl, stupidbot owner is bacek
13:55 purl OK, DietCoke.
13:55 DietCoke message bacek < stupidbot> RT 39844d: ... what's with the d?
13:55 purl Message for bacek stored.
13:55 stupidbot RT 39844d: [BUG] Parrot doesn't do args checking for a sub without params - open
13:56 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 #parrot
14:04 jhorwitz joined #parrot
14:08 tco joined #parrot
14:14 magnachef joined #parrot
14:16 * DietCoke rethinks including Test::Harness 3 into parrot.
14:20 Andy joined #parrot
14:23 jay left #parrot
14:30 jonathan pmichaud: ping - need PAST/PCT help!
14:30 purl I can't find - in the DNS.
14:32 Tene jonathan: what's the problem?
14:32 purl hmmm... the problem is that URI is not subclassible
14:32 Tene purl: forget the problem
14:32 purl Tene: I forgot problem
14:33 jonathan Tene: methods are not getting :outer generated
14:34 jonathan I haven't got much more on it than that yet...
14:37 * DietCoke sums up his pondering to RT and asks for comments.
14:39 jonathan oh, arses
14:39 jonathan ##  FIXME: RT#47794 - Parrot currently doesn't allow both
14:39 jonathan ##  :method and :outer flags on a sub, so if we have :method
14:39 jonathan ##  we automatically skip :outer processing.
14:39 stupidbot RT 47794d: [BUG] objects - :method doesn't work with :outer() - open
14:40 jonathan and
14:40 jonathan ##  FIXME: RT#47956
14:40 jonathan ##  PIR doesn't compile properly if :outer points to a sub
14:40 jonathan ##  with :init/:load flags on it.
14:40 stupidbot RT 47956d: [BUG]  :init :load cannot be target of :outer in compiled PIR - open
14:44 DietCoke "simple fix" not so simple. =-)
14:44 jonathan class Foo { method bar { say &bar.WHAT; } }; Foo.new.bar
14:44 jonathan Method
14:44 jonathan sub foo { say 42 }; say &foo.WHAT;
14:44 jonathan Sub
14:44 jonathan ...progress...
14:53 jonathan Hmm. Well, :method and :outer together seem to work fine here for me.
14:55 NotFound joined #parrot
15:03 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
15:03 pmichaud (bots should not speak unless spoken to...)
15:03 * Zaba is leaving so sicily for 2 weeks tomorrow
15:03 Zaba to*
15:04 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 jonathan nopaste?
15:04 clunker3 http://pasta.test-smoke.org/ or http://paste.husk.org/ or http://nopaste.snit.ch:8001/ or http://rafb.net/paste or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/
15:04 purl rumour has it nopaste is at http://nopaste.snit.ch/ (ask TonyC for new channels) or http://rafb.net/paste or http://paste.husk.org/ or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ or don't bother me while I'm eating or App::Nopaste or tools/dev/nopaste.pl
15:04 was kicked by jonathan: clunker3
15:04 cjfields joined #parrot
15:04 pmichaud how about my test case in the ticket?
15:04 dalek r28715 | jonathan++ | trunk:
15:04 dalek : [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).
15:04 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28715
15:05 jonathan pmichaud: OK, I'll try that.
15:05 pmichaud I still get "method not found".
15:06 jonathan C:\Consulting\parrot\trunk>parrot testm2.pir
15:06 jonathan abc
15:06 jonathan xyz
15:06 jonathan That's your test case.
15:07 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?
15:07 jonathan The first one
15:07 purl The first one is gone
15:07 DietCoke in the repository, on the mailing lists...
15:07 DietCoke is there something in particular we can answer?
15:07 pmichaud let me svn up and try it.
15:07 DietCoke (we're kind of looking forward to 1.0, rather than back historically)
15:07 jonathan Oh, I have one local change...hmm :-)
15:08 * 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..
15:08 pmichaud can't run perl without a virtual machine of some sort.  :-)
15:08 jonathan DietCoke: It's not one that I *expected* to fix the bug.
15:09 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...
15:09 dalek r28716 | jonathan++ | trunk:
15:09 dalek : [core] Fix another place where we tested for enum_class_Sub rather than any subclass of of Sub.
15:09 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28716
15:09 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)
15:09 pmichaud Zaba: a bit of forward thinking, I think -- virtual machines really ought to be more generic than language-specific.
15:09 DietCoke at some point we picked up "support other dynamica languages" as a goal, and perl6 picked up "support other implementations"
15:09 nopaste "jonathan" at 85.216.151.226 pasted "pmichaud - this is the test that works here" (19 lines) at http://nopaste.snit.ch/13406
15:10 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.
15:11 pmichaud neither (1) nor (3) were very appetizing.
15:11 Zaba i see now
15:11 DietCoke though 3 has some traction elsewhere. and clearly 1 is still in use.
15:12 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 pmichaud (but that's just speculative on my part)
15:12 Zaba #3 is happening?
15:12 jonathan pmichaud: Actually, the local change I had might realistically have made this work...checking...
15:13 pmichaud jonathan: something you committed in the past two hours caused it to work.
15:13 jonathan pmichaud: Yeah, it was my last commit.
15:13 pmichaud the x.pir didn't run before I svn up'd, but it does now.
15:13 pmichaud that is fantastic if that's working now.
15:13 jonathan I hadn't been trying to fix that specific issue, but I'm glad I have.
15:14 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.
15:14 pmichaud good idea.  :-)
15:14 DietCoke well, there was always jacl. and ironpython has been around for some time.
15:14 jonathan Once they get :outer's, it can go.
15:15 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 #parrot
15:16 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:17 cjfields I saw compose(), doesn't seem to work for me
15:17 slightlyoff left #parrot
15:17 pmichaud cjfields: I had to roll my own for PGE and Rakudo.
15:18 pmichaud one of the Data::* libraries might have something, though.
15:18 moritz DietCoke: maybe we should just answer that with "because it's fun" ;-)
15:19 pmichaud it is fun, but in some ways it's been a very frustrating sort of fun.  :-|
15:19 pmichaud it's a lot more fun today than it was a few years ago :-)
15:19 jonathan moritz: There's 2 tests "unexpectedly" suceeding now due to Sub type working. ;-)
15:19 NotFound We have C functions, but don't know if they are accesible from bytecode.
15:20 DietCoke rakudo certainly looks more fun than partcl was, for example. =-)
15:20 jonathan It's more fun than net2pbc was...
15:20 DietCoke but that's probably just jealousy. =-)
15:21 pmichaud if rakudo and pct are making parrot more fun, then I think the mozilla grant has been a success.  :-)
15:21 pmichaud time for another!  :-)
15:21 jonathan Aye!
15:21 * jonathan is looking forward to his extra Rakudo time during July.
15:21 * pmichaud realizes he *really* needs to write his mozilla grant report today.
15:22 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...
15:22 jonathan cjfields: Nice! :-)
15:23 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 Theory joined #parrot
15:25 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
15:25 cjfields NotFound: okay, I can look into that
15:26 pmichaud are you looking for interpreting escapes for trans()?  If so, why?
15:26 * cjfields hates emoticons, when I mean ':c'
15:26 cjfields trans() is supposed to handle /n, /b, and other escaped chars
15:27 pmichaud ...but won't Rakudo have already done that translation?
15:27 cjfields but it 'just works' if you use double quotes
15:27 cjfields yes
15:28 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
15:28 pmichaud if I wanted a newline, I would have specified "\n"
15:28 cjfields "/n" => 'A'
15:28 cjfields Exactly
15:29 cjfields S05 is a bit fuzzy re: that
15:29 * cjfields meant "n" => 'A'
15:30 NotFound What's that 'trans' you talk about?
15:30 cjfields transliteration
15:30 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).
15:30 cjfields Meh...
15:31 pmichaud NotFound: .trans() -- p6's version of the p5  tr///;
15:31 NotFound Ah, yes.
15:31 pmichaud afk for a bit
15:31 jonathan pmichaud: Found out why. Hating Parrot guts lots today.
15:31 cjfields A bit important for us bioinformatics folks
15:32 cjfields would like to have a way to reverse complement a DNA strand
15:32 cjfields or translate DNA->protein
15:32 purl babelfish cannot translate from en to en.  Try translating through English.
15:32 cjfields Interesting...
15:36 DietCoke purl's lack of directions is frustrating.
15:36 DietCoke jonathan: what now? =-)
15:39 jonathan DietCoke: Turns out that we re-do the "what is the otuer sub" logic when loading the packfile.
15:39 jonathan There's a big comment in there about why.
15:40 jonathan 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 jonathan Long story short, we're going to have to stash lexid away in the bytecode.
15:41 jonathan I'd thougth we were going to avoid that. :-|
15:45 pmichaud I was hoping that wasn't the case.
15:45 pmichaud (storing lexid)
15:45 pmichaud where's the comment?
15:45 purl well, the comment is pretty gold.
15:45 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.
15:46 pmichaud NotFound: but then the question becomes "whose version of escaping?"
15:46 pmichaud not everyone escapes the same way.  Even perl 5 and perl 6 don't have the same escapes.
15:47 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.
15:47 NotFound pmichaud: the one used by the function string_unescape_cstring
15:47 pmichaud zaba:  there are a _lot_ of differences.
15:47 Zaba oh
15:47 pmichaud perl 5 uses \012 for octal notation, perl 6 uses \o012  (and doesn't allow \012)
15:48 jonathan pmichaud: closure.pmc
15:48 jonathan pmichaud: Maybe one day we can avoid this. For now, we'll just have to put up with it.
15:49 jonathan 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
15:49 pmichaud jonathan: looking
15:49 Zaba oh that's nice
15:50 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.
15:51 pmichaud 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 #parrot
15:52 pmichaud oh, that's possible.
15:53 pmichaud but I don't know that there are many parts of parrot doing unescaping outside of string_unescape_cstring
15:54 jhorwitz joined #parrot
15:54 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.
15:58 particle how do you get at the lexids at runtime without storing them in bytecode?
15:58 particle i don't understand how that would work
15:59 pmichaud normally you don't need the lexids at runtime
15:59 pmichaud :outer is a compile-time feature
15:59 pmichaud 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
16:00 pmichaud 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
16:00 particle right,
16:00 pmichaud which means any cross-references between subs is lost
16:00 particle yes, precisely.
16:01 particle in parrot, a sub is a compilation unit
16:01 pmichaud ...and that's probably a mistake.
16:02 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
16:03 pmichaud r28715 adds files but doesn't update MANIFEST.
16:03 particle manifest must die
16:03 jonathan OK, well, better than removing them and not updating MANIFEST
16:03 pmichaud true.  :-)
16:03 pmichaud but we still get test failures.  :-)
16:03 jonathan Someone else can do it, or I'll do it once I've got this saving lexid mess sorted out.
16:04 pmichaud I'll take care of it.
16:04 jonathan Thanks.
16:04 dalek r28717 | moritz++ | trunk:
16:04 dalek : [perl6] added tools/progress-graph.pl. Also added missing test file to
16:04 jonathan This is a tad painful...
16:04 dalek : MANIFEST
16:04 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28717
16:04 * moritz forgot to make codingstd test before commiting
16:05 moritz will do now
16:06 dalek r28718 | pmichaud++ | trunk:
16:06 dalek : Update MANIFEST with files added in r28715.
16:06 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28718
16:07 pmichaud ugh!
16:07 pmichaud having separate classes for subs means we also have to have .pmcs for every type?!?
16:08 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.
16:08 pmichaud parrot releases aren't in the source data for the graph.
16:08 jonathan pmichaud: Yes, we need PMCs.
16:08 pmichaud (separate pmc types for subs isn't going to work)
16:08 particle pmichaud: but the data is in the parrot repo
16:09 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
16:09 dalek r28719 | moritz++ | trunk:
16:09 dalek : [perl6] codingstandards
16:09 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28719
16:09 pmichaud jonathan: what happens when someone subclasses Sub, Block, Routine, etc. ?
16:09 particle moritz: s/perl6/rakudo/ please
16:10 moritz particle: ok, will do
16:10 jonathan pmichaud: Right now, they can't...does the spec allow for this?
16:10 pmichaud it doesn't *disallow* it
16:10 jonathan OK
16:10 pmichaud so I suspect it's allowed
16:11 pmichaud 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.
16:11 jonathan With :instanceof
16:11 jonathan Or as a sub, in fact.
16:12 jonathan 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
16:12 pmichaud (and other methods as appropriate)
16:14 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
16:14 jonathan You could do something like that, but delegation ins't free, and calling in Parrot is costly enough already.
16:14 particle oops, not grammar
16:14 pmichaud Block, Routine, Sub, etc. derive from Code, iirc.
16:14 particle ah, code.
16:15 pmichaud how important is it to be able to distinguish Block/Routine/Sub/etc. at this point?
16:16 pmichaud i.e., what do we lose if we don't have that?
16:16 moritz pmichaud: distinctiion between return() and leave() for example
16:16 rhr Routine vs non-Routine is probably the most important distinction (return only works in Routines)
16:16 pmichaud rakudo's already handling that
16:17 pmichaud perhaps not perfectly in the case of leave(), but return does understand the Routine vs. non-Routine distinction.
16:18 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?
16:18 pmichaud as opposed to delegating?
16:18 rhr also you can .wrap a Routine
16:18 pmichaud (I can get .wrap to work also w/o having to distinguish the code types)
16:18 jonathan Same problem - the PMC_Sub macro that gets at a sub's internals assumes it's a sub PMC.
16:19 jonathan 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?
16:19 jonathan I think it can be fixed, but I'm not sure it's trivial.
16:19 pmichaud or we could just have a single perl6code.pmc that is the base class for all code objects
16:19 pmichaud (and that understands HLL types)
16:20 pmichaud instead of separate perl6block.pmc, perl6method.pmc, etc.
16:20 jonathan I don't see that working.
16:20 pmichaud I _really_ have a bad feeling about the proliferation of pmc types.
16:20 pmichaud like really really really bad
16:21 jonathan As soon as you end up with a HLL type being expected to be a sub PMC, you hit the problem.
16:22 pmichaud ....because sub PMC operations don't go through vtables, or...?
16:22 jonathan Right.
16:22 jonathan Well, some do.
16:22 jonathan Some don't.
16:22 DietCoke all should.
16:22 DietCoke shouldn't be poking at guts unless they're your own.
16:22 moritz particle: I investigated a bit, and found no way to annotate releases or some such.
16:22 jonathan I looked at solving this, and it looked non-trivial.
16:23 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.
16:23 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.
16:24 jonathan 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.
16:24 pmichaud see, for example, the 'infix:,' stuff I had to rip out and fix.
16:25 pmichaud 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:26 pmichaud 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 Zaba_ joined #parrot
16:27 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 pmichaud and that'll take a little time to think through.
16:27 jonathan It wasn't my plan A - I wanted high level classes for the lot of them.
16:28 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:29 pmichaud in particular, I'd be willing to accept the delegation runtime cost in preference to enshrining this approach.  :-|
16:30 Ademan joined #parrot
16:30 jonathan Feel free to re-do it that way if you prefer it.
16:31 jonathan 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.
16:31 pmichaud 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.
16:31 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.
16:32 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.
16:32 pmichaud most of my thoughts have been "oh, jonathan's working on it"  :_)
16:32 pmichaud can signatures be properties on subs?
16:32 pmichaud we need to be able to introspect them anyway, I suspect.
16:32 jonathan Hmm.
16:33 jonathan 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)
16:33 pmichaud even if they're not frozen in the bytecode -- we can generate :load :init to attach the properties
16:33 DietCoke We also need them for introspection.
16:33 jonathan DietCoke: TclProc is a PMC?
16:33 DietCoke no.
16:34 jonathan Oh?
16:34 DietCoke all the nasty bits are handled by .Sub
16:34 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.)
16:34 DietCoke I only did it this way because you couldn't have attributes on PMCs until recently.
16:34 DietCoke see languages/tcl/src/class/tclproc.pir
16:35 DietCoke (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 :-)
16:35 purl okay, pmichaud.
16:36 DietCoke purl, forget (btw, this
16:36 purl DietCoke: I forgot (btw, this
16:36 jonathan DietCoke: And how do you bless subs into TclProc?
16:36 jonathan As in, give them that type?
16:36 DietCoke moment.
16:36 jonathan thanks
16:37 DietCoke line 251 of languages/tcl/runtime/builtin/proc.pir
16:37 DietCoke I had a sub, I assign it to a new tcl proc, and then set the attributes.
16:37 DietCoke er, not a sub, an Eval.
16:38 DietCoke in an ideal world, IMCC would say "oh, you don't want Eval, you want TclProc, here you are."
16:38 Zaba joined #parrot
16:38 jonathan Hmm
16:39 DietCoke but this worked.
16:39 jonathan So you can subclass Sub and have it work somehow. That's...curious.
16:39 DietCoke welcome to my life as a partcl developer. :|
16:39 jonathan I tried that with :instanceof and it didn't work out... :|
16:39 DietCoke this predates instanceof by several years. =-)
16:39 pmichaud part of the issue may be "when does the blessing occur"
16:40 pmichaud it can't occur immediately at compile time, because the class may not exist yet.
16:40 pmichaud but this isn't much different from things like :multi('MyHLLClass')
16:40 pmichaud or even :method in a namespace.
16:40 jonathan :instanceof is designed to work when you eval code and the relevant class has already been created.
16:41 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
16:42 pmichaud I agree that's more difficult.
16:42 pmichaud but i think it's ultimately what we'll have to do.
16:42 pmichaud (or come up with a somewhat different approach altogether)
16:43 pmichaud there have been many times lately when I doubt the intrinsic value of PMCs
16:43 pmichaud er, of PMC classes.
16:44 pmichaud 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.
16:44 pmichaud right, so having this PMC class type seems to get in the way a lot :-)
16:45 jonathan Huh?
16:46 jonathan What do you mean by "PMC class type"?
16:46 pmichaud things like Integer, String, Sub, Perl6Str, etc.
16:46 pmichaud 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.
16:46 pmichaud that feels wrong.
16:47 DietCoke And I thought you were crazy when you started doing it. =-)
16:47 pmichaud I haven't figured out an alternative yet
16:47 pmichaud short of writing wrapper classes that delegate vtable methods
16:48 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 #parrot
16:48 DietCoke right, I'm not saying you have a choice. =-)
16:49 DietCoke 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:50 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.
16:50 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.
16:50 DietCoke define good. You can implement METHOD's in PMCs now.
16:51 pmichaud yes, but Str is an Object, not a PMC
16:51 pmichaud so I have to have a Perl6Str PMC intermediary to have a place to attach the method.
16:51 DietCoke Ah, I see.
16:51 pmichaud (and actually it's a vtable override of get_number)
16:51 pmichaud but even here I could have a vtable override in PIR that calls the C named method.)
16:51 DietCoke You could write it in C and dispatch via NCI today.
16:52 DietCoke 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.
16:52 particle that's an easy fix
16:52 pmichaud I'll look at it again when I rewrite get_number and fix the radix issues.
16:53 DietCoke k. if you get stuck on it, please let us know, obviously.
16:53 pmichaud sure thing.
16:53 pmichaud actually, having an example of overriding get_number in a (non-PMC) class would be sufficient.
16:53 pmichaud i.e., subclass String and change its get_number vtable entry.
16:54 pmichaud (but have the work for get_number be written in C.  A simple  return 12345;  would be enough to demonstrate that it works :-)
16:59 pmichaud afk, lunch.
17:03 pmichaud 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:04 pmichaud and you keep running into the tickets I've alredy submitted.  :-)
17:04 pmichaud I am _very_ happy that :method and :outer work now
17:04 jonathan pmichaud: Well, I fixed the :method :outer one, it seems. ;-)
17:04 jonathan And lexid freezing, I am debugging right now...hope to have it done soon.
17:04 pmichaud oh, that will be fantastic
17:05 pmichaud 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:
17:05 dalek : [php] more type functions
17:05 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.
17:05 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28720
17:05 jonathan For the interim, at least.
17:06 jonathan 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?
17:06 jonathan I hadn't thought of that, and yes, that would perhaps work.
17:06 pmichaud let's both think on it a bit.  You've thought about mmd and signature issues far more than I have
17:07 pmichaud (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.
17:07 pmichaud I feel like a property is the right thing to do there, or an attribute on subs.
17:07 pmichaud (and as far as I'm concerned, it can be an attribute on Parrot Sub :-)
17:08 pmichaud (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.
17:09 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.
17:09 pmichaud well, we'll keep working on it then.  :-)
17:09 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.
17:09 pmichaud anyway, I have to go.  bbiaw
17:09 jonathan ok
17:17 AndyA joined #parrot
17:20 * DietCoke curses. Dates for yapc are set, and they conflict with the school year again.
17:23 particle dates set already!
17:24 particle sheesh, i'd better book a dorm room soon
17:25 Zaba_ joined #parrot
17:27 jonathan In Europe, we haven't had our YAPC yet this summer! :-P
17:30 dalek r28721 | fperrad++ | libs4php:
17:30 dalek : [php] oops
17:30 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28721
17:31 nopaste "jonathan" at 85.216.151.226 pasted "pmichaud - fixed PBC issue, demo, patch coming after make test..." (30 lines) at http://nopaste.snit.ch/13407
17:32 jonathan particle: Where is the next YAPC::NA?
17:32 DietCoke jonathan: pittsburg
17:32 purl i guess pittsburg is Soho-West, isn't?
17:32 DietCoke (PA)
17:33 dalek r28722 | fperrad++ | libs4php:
17:33 dalek : [php] rename decode_base64 to base64_decode
17:33 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28722
17:34 _shane joined #parrot
17:35 particle pittsburgh?
17:36 jonathan OK
17:36 particle pittsburgh is the host of yapc::na 2009
17:36 particle pittsburgh?
17:36 * particle kicks purl
17:36 * purl bites particle!
17:39 cotto_work literal pittsburg
17:39 purl cotto_work: pittsburg =is= Soho-West, isn't?
17:39 cotto_work no,  pittsburgh is the host of yapc::na 2009
17:39 purl okay, cotto_work.
17:40 DietCoke pittsburg is also hosting PPW in October of '08
17:40 purl okay, DietCoke.
17:40 Zaba joined #parrot
17:40 cotto_work that bot is getting weirder and weirder
17:42 japhb jonathan++ # Haiku in the face of Cthulu -- er, IMCC's internals
17:43 DietCoke IMCC FTAGN!
17:43 davidfetter iaaa! iaaa!
17:44 cotto_work wow.  It's spreading.
17:45 particle why is there no tpf news about pittsburgh for 09?
17:45 particle rdice: shouldn't somebody blog about that?
17:45 DietCoke there was an article about PPW which referenced YAPC::NA'09
17:45 * davidfetter prepares a memo about the new cover sheets on the tpf repors
17:46 davidfetter reports*
17:47 particle maybe i'll bother jmcadams about http://news.perlfoundation.org/
17:52 DietCoke particle: GO GET HIM!
17:52 * DietCoke grins at davidfetter.
17:54 dalek r28723 | jonathan++ | trunk:
17:54 dalek : [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.
17:54 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28723
17:55 jonathan That, was one of the most non-fun patches I've done in a while...
17:59 DietCoke jonathan++
17:59 DietCoke jonathan++
17:59 rdice particle:  You could also bother jeremy flumann, who is the conferences chair.
18:00 particle aha, thanks
18:00 particle jeremy@perlfoun... ?
18:00 particle i'll look it up
18:01 jonathan OK, I need to take a break for a while...
18:01 TimToady pittsburg is also in California
18:01 purl okay, TimToady.
18:01 * jonathan goes to check a map of the US
18:01 particle note the lack of h
18:01 avar jonathan: Was that change why perl6.pbc was failing?
18:01 avar or - the fix for that issue
18:02 jonathan Oh! Dude, that confused me...
18:02 jonathan avar: I wasn't aware perl6.pbc was failing - it wasn't using :lexid yet.
18:02 jonathan (unless you svn up'd and didn't re-build, mind)
18:03 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 avar no this is 2-3 days ago, not related to your change
18:03 jonathan Aha, OK.
18:03 avar I just thought maybe lexid was related to namespaces ..
18:03 jonathan It's dealing with a problem that I think pmichaud discovered around the time he was fixing that particular issue.
18:04 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 Zaba_ joined #parrot
18:05 avar TimToady: Same crap, fancier nomenclature ? :)
18:06 TimToady Sufficiently advanced properties are indistinguishable from magic. :/
18:06 jonathan S12: "A property is defined by a role like this: ..."
18:06 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.
18:06 TimToady yes, as of about 5 years ago  :)
18:06 jonathan Or are we talking about some other definition of properties?
18:07 jonathan 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
18:07 jonathan Right. The implementation of that bit of S12 in Rakudo really is just a role with an attribute.
18:07 TimToady the basic problem is passive properties that must be interpreted by other code
18:08 TimToady all "properties" in P6 are really methods
18:09 TimToady and hence are innately active (at least potentially)
18:16 TimToady 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:23 apeiron joined #parrot
18:24 rdice particle:  I gave Jeremy a poke about this.
18:27 particle beat me to it, thanks!
18:29 Theory joined #parrot
18:31 rdice It turned out there were a few things I needed to say to him anyhow so I bundled it all together.
18:36 barney joined #parrot
18:38 TimToady n
18:38 TimToady or sometimes y
19:07 Ivatar joined #parrot
19:24 Theory joined #parrot
19:30 dalek bernhard.schmalhofer@gmx.de | plumhead_renaming:
19:30 dalek link: http://www.perlfoundation.org/pa​rrot/index.cgi?plumhead_renaming
19:30 shorten dalek's url is at http://xrl.us/d2gpk
19:33 dalek r28724 | pmichaud++ | trunk:
19:33 dalek : [pct]:
19:33 dalek : * RT#44794 appears to have been resolved (jonathan++), so we
19:33 dalek :   can now eliminate the :method :outer workaround.
19:33 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28724
19:33 stupidbot Error calling said() for rt: Ticket 44794 does not exist.
19:33 pmichaud er, RT#47794
19:33 pmichaud oh well.
19:33 stupidbot RT 47794d: [BUG] objects - :method doesn't work with :outer() - open
19:37 jonathan pmichaud: Nice! :-)
19:37 jonathan Glad that's one ticket cleared up.
19:37 pmichaud me too.  That should also make lexicals in classes work a little more sanely.
19:37 pmichaud It's hard to have methods nested in a class scope when :outer doesn't work :-|
19:37 jonathan Well, we've :init :load bug too...if it still exists. Didn't check that one.
19:38 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 pmichaud now I'm going to see if I can get :lexid to work.
19:39 jonathan Cool
19:39 jonathan I'm sorta hacking out the PMCs you dislike, but...Euro 2008 semi-final. ;-)
19:40 pmichaud then we can fix $_.  And then we can fix .method()
19:40 pmichaud 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.
19:40 particle ack enum_class_Sub --parrot
19:41 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
19:41 particle 15:#define enum_class_SubProxy -1
19:41 particle that's all
19:41 pmichaud and Euro 2008 semi-final *is* important.  :-)
19:43 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 jonathan My thought is: we just put it as a property on the Sub PMC, as you suggested.
19:43 jonathan And we'll also stash, as a prop, the proto of the type of that sub too.
19:44 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.
19:44 jonathan Sound workable?
19:44 pmichaud right
19:44 pmichaud yes
19:44 jonathan OK
19:44 pmichaud it can be made to work, at any rate.
19:44 pmichaud oh, you probably won't want to see my next nopaste...
19:45 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 http://nopaste.snit.ch/13409
19:46 pmichaud (yes, that's after svn up and make realclean)
19:46 pmichaud I'm trying a fresh checkout now.
19:46 jonathan Oh, argh.
19:46 jonathan And I think I know right now what that is.
19:49 pmichaud same error with fresh checkout.
19:49 jonathan Yeah
19:50 jonathan Building something that in theory has a fix now...
19:50 pmichaud ...but Theory just left...?   ;-)
19:51 nopaste "jonathan" at 85.216.151.226 pasted "pmichaud - try this patch out" (23 lines) at http://nopaste.snit.ch/13410
19:51 jonathan :-P
19:51 TimToady Theory went off to Practice...
19:51 jonathan Ooh, game has started...
19:53 pmichaud jonathan: that seems to have fixed it.
19:53 * NotFound puts his red t-shirt on
19:54 pmichaud who is in the semi-final?
19:54 NotFound Spain :)
19:54 TimToady and Nobody?
19:54 purl nobody fucks with the Jesus.
19:54 TimToady is that a Spanish name?
19:54 NotFound Nobody important X-)
19:55 NotFound Russia.
19:55 jonathan Spain just scored.
19:56 jonathan pmichaud: OK, running make test on it there
19:56 jonathan erm
19:56 jonathan here
19:56 jonathan I'll ci if it passes.
19:56 pmichaud excellent.
19:56 jonathan NotFound: Russia have played some good football this tournament!
19:56 TimToady in Russia, the inquisition doesn't expect nobody!!!
19:56 pmichaud rebooting here (kernel upgrade and other package updates)
19:57 NotFound jonathan: is not easy to reach semifinal without some good play ;)
20:00 NotFound 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:03 * barney hopes for Russia in the final   and does not understand check_isxxx.t
20:05 dalek r28725 | jonathan++ | trunk:
20:05 dalek : [core] Fix memory management bug in :lexid implementation.
20:05 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28725
20:07 jonathan NotFound: Yes, I remember the football fever in Spain well, from when I lived there. :-)
20:09 NotFound jonathan: add to that the time from last semifinal we played, and all is explained.
20:12 Theory joined #parrot
20:17 dalek bernhard.schmalhofer@gmx.de | plumhead_renaming:
20:17 dalek link: http://www.perlfoundation.org/pa​rrot/index.cgi?plumhead_renaming
20:17 shorten dalek's url is at http://xrl.us/d2gpk
20:17 NotFound 2-0
20:17 purl 2
20:22 cotto_work thanks, purl
20:22 purl no worries cotto_work
20:25 NotFound 3_0
20:26 jonathan Awww...it's really all over for the Russians now.
20:27 dalek r28726 | fperrad++ | libs4php:
20:27 dalek : [php] add a PhpArray PMC
20:27 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28726
20:27 cotto_work this worries me slightly
20:30 DietCoke cotto_work: which now?
20:30 dalek r28727 | bernhard++ | trunk:
20:30 dalek : svn merge -r 28566:28724 https://svn.perl.org/parrot/bran​ches/libs4php/languages/plumhead
20:30 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28727
20:30 cotto_work fperrad's change, but it looks like it's just stub code
20:30 shorten dalek's url is at http://xrl.us/goi5o
20:30 cotto_work it's fine
20:33 dalek r28728 | jkeenan++ | trunk:
20:33 dalek : Add some POD and comments explaining what ICU is.  Some typographical reformatting.
20:33 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28728
20:33 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?
20:35 barney cotto: The libs with implementations have tests which are passing for the PHC variant.
20:36 cotto_work nice
20:36 cotto_work barney, it'd be helpful if you could add a stub test for phparrays as t/pmc/array.t
20:36 NotFound Spain wins!
20:36 barney s/passing/mostly passing/
20:37 barney It's Germany vs. Spain on Sunday
20:38 barney cotto: Will do tomorrow
20:39 cotto_work in that case I'll probably just do it tonight when I get home
20:39 cotto_work it's not a big deal either way
20:41 * cotto_work grumbles about the slowness of the legal dep't
20:42 barney k. Or put sanity tests for all PMCs in a single file.
20:45 dalek r28729 | fperrad++ | libs4php:
20:45 dalek : [php] to_number() for PhpArray
20:45 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28729
20:47 purl joined #parrot
20:48 cognominal joined #parrot
20:50 DietCoke did I send my perlcritic RFC to the list?
20:52 DietCoke (so I did.
20:52 DietCoke perl5 is sure getting a lot of new tickets.
21:05 jonathan pmichaud: Having any joy with lexid?
21:20 pmichaud jonathan: had to take another break for a bit
21:20 gmansi joined #parrot
21:20 pmichaud trying it now
21:20 jonathan pmichaud: OK, sure.
21:20 cjfields jonathan: got trans working with d: and s:
21:20 cjfields say "bookkeeper".trans(:d, 'ok' => '');  # beeper
21:21 cjfields say "bookkeeper".trans(:s, 'A..Za..z' => ''); # bokeper
21:21 cjfields Haven't wrapped my head around how to implement complement yet...
21:21 jonathan :d is presumably delete, :s?
21:21 cjfields yup
21:22 cjfields s = squash (repeats)
21:22 pmichaud complement would be any character not in the range.
21:22 jonathan Nice work.
21:22 jonathan cjfields++
21:22 cjfields yes, but how do we implement the complement of
21:22 cjfields "  <>&".trans( ( [' ',      '<',    '&'    ]=> ['&nbsp;', '&lt;', '&amp;']))
21:23 cjfields or
21:23 cjfields "&nbsp;&lt;&gt;&amp;".trans( (['&nbsp;', '&lt;', '&amp;'] => [' ',      '<',    '&'    ]))
21:23 cjfields ?
21:23 * cjfields at a loss
21:23 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
21:23 pmichaud move to the next position
21:24 pmichaud repeat until no more positions
21:24 pmichaud one could potentially do some optimizations by keeping track of where each key occurs earliest
21:24 bacek morning everyone.
21:24 pmichaud instead of having to check every key at every position
21:25 pmichaud 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:26 jonathan OK, sure, no hurry.
21:28 bacek DietCoke, I'll try to add some brains to stupidbot
21:29 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 $/
21:29 pmichaud $($/) is the result object, $/ is the match object
21:30 pmichaud or, if doing a submatch, then  $<foo>  is the match object, and $($<foo>) is the result object that was set in $<foo>
21:35 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
21:35 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)
21:35 pmichaud excellent.
21:36 pmichaud 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
21:36 jonathan pmichaud: Aha, good.
21:39 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.
21:40 moritz cjfields: if you need help fudging the tests, please let me know
21:40 cjfields thanks
21:43 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.
21:43 pmichaud (in roughly any sequence.)
21:44 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
21:44 pmichaud (beyond very basic tests, that is)
21:45 pmichaud 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
21:45 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
21:46 pmichaud however, one can use .text to get the original matched text
21:46 pmichaud (at least, I think .text works -- if not it needs to be added)
21:47 * tewk really likes nqp, and is getting excited about perl6
21:48 tewk I know its late, but I've just started writing production nqp/perl6 code.
22:01 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 moritz any idea what's wrong with it?
22:01 moritz (when I run spectest_regression I get that usage message)
22:02 pmichaud usually that means fudge can't find the file.
22:04 * moritz tries a third time
22:05 pmichaud jonathan: so far so good on :lexid -- got it added into POST and things compile okay
22:06 pmichaud nqp runs okay.
22:06 jonathan Nice
22:06 pmichaud basic rakudo tests run -- now trying spectest_regression
22:07 pmichaud then I'll do it all again after converting immediate blocks to no longer be run as closures
22:07 pmichaud (which is where the real problems began before)
22:11 dalek r28730 | moritz++ | trunk:
22:11 dalek : [rakudo] one more test for spectest_regression
22:11 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28730
22:12 bacek_ joined #parrot
22:12 teknomunk joined #parrot
22:12 gmansi joined #parrot
22:12 cognominal joined #parrot
22:12 purl joined #parrot
22:12 Theory joined #parrot
22:12 apeiron joined #parrot
22:12 _shane joined #parrot
22:12 Ademan joined #parrot
22:12 peepsalot joined #parrot
22:12 cjfields joined #parrot
22:12 NotFound joined #parrot
22:12 AndyAway joined #parrot
22:12 tco joined #parrot
22:12 gryphon joined #parrot
22:12 nopaste joined #parrot
22:12 mj41 joined #parrot
22:12 skv joined #parrot
22:12 ruoso joined #parrot
22:12 bacek joined #parrot
22:12 Infinoid joined #parrot
22:12 Patterner joined #parrot
22:12 stupidbot joined #parrot
22:12 DietCoke joined #parrot
22:12 cxreg joined #parrot
22:12 avar joined #parrot
22:12 davidfetter joined #parrot
22:12 magnachef_away joined #parrot
22:12 zostay joined #parrot
22:12 cosimo joined #parrot
22:12 Coleoid joined #parrot
22:12 rhr joined #parrot
22:12 japhb joined #parrot
22:12 particle joined #parrot
22:12 zarchne joined #parrot
22:12 jjore joined #parrot
22:12 Khisanth joined #parrot
22:12 GeJ joined #parrot
22:12 tewk joined #parrot
22:12 cotto_work joined #parrot
22:12 omega joined #parrot
22:12 TonyC joined #parrot
22:12 Tene joined #parrot
22:12 dngor joined #parrot
22:12 Piper joined #parrot
22:12 hachi joined #parrot
22:12 cotto_home joined #parrot
22:12 workbench joined #parrot
22:12 diakopter joined #parrot
22:12 spinclad joined #parrot
22:12 bobwhoops joined #parrot
22:12 TimToady joined #parrot
22:12 obra joined #parrot
22:12 rjbs joined #parrot
22:12 confound joined #parrot
22:12 cout joined #parrot
22:12 Auzon joined #parrot
22:12 jjuran joined #parrot
22:12 vhold joined #parrot
22:12 jq joined #parrot
22:12 integral joined #parrot
22:12 MagNET joined #parrot
22:12 rafl joined #parrot
22:12 baest joined #parrot
22:12 jrockway joined #parrot
22:12 slavorg joined #parrot
22:12 Debolaz joined #parrot
22:12 szbalint joined #parrot
22:29 cjfields interesting....
22:29 cjfields pmichaud: let me know if rt#55492 is okay whenever you have the time (I'll check backlog).  No hurry.
22:29 stupidbot RT 55492: [PATCH] partial implementation of transliteration - open
22:29 cjfields left #parrot
22:33 bgeron_ joined #parrot
22:33 d4l3k_ joined #parrot
22:34 ilbot2 joined #parrot
22:34 Topic for #parrotis now Parrot 0.6.3 "Beautiful Parrot" Released | http://parrotcode.org/ | 5/649/88 new/open/stalled tix | logged in http://irclog.perlgeek.de/parrot/today
22:35 cotto_work to whomever maintains stupidbot, a url after the RT info would be nice
22:37 Maddingue joined #parrot
22:38 moritz that would be bacek_ ;)
22:39 moritz cotto_work: btw if you look at the irc logs (see /topic), #\d{5} is turned into a link to the ticket
22:39 rdice joined #parrot
22:41 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.
22:41 pmichaud nqp passes all of its tests, but perl6 fails pretty spectacularly.
22:41 cotto_work thank for pointing that out
22:42 slavorg joined #parrot
22:44 jonathan pmichaud: Is that when you removed the newclosure, or just with :lexid in general?
22:44 pmichaud removing the newclosure
22:44 pmichaud with just :lexid in general everything still works.
22:44 jonathan OK
22:44 pmichaud (but I would somewhat expect that :-)
22:46 moritz enough karma for today, good night ;-)
22:46 pmichaud (since it already works now.)
22:46 pmichaud anyway, I'll keep playing with it and see if I can track it down.
22:46 pmichaud rakudo has gotten so large it's a lot harder to track these things down, though.
22:46 particle you should commit with just :lexid
22:46 dalek r28731 | moritz++ | trunk:
22:46 dalek : [rakudo] one more test for spectest_regression
22:46 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28731
22:46 Maddingue joined #parrot
22:46 jonathan Because I've just hit upon something odd with lexicals too.
22:46 jonathan Do you see issues when you have a case where you've got something like:
22:46 jonathan { ...scome scope... sub foo { ...so this is nested... } } foo()
22:46 jonathan Basically, when you call into a nested scope, when you've never called the outer one?
22:46 jonathan night moritz
22:47 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?
22:47 pmichaud it's not what I'm seeing now.  After getting rid of newclosure I can't even get  "say 'ok 1'" to work.
22:48 pmichaud (it won't compile -- there's a problem somewhere in gen_actions.pir)
22:48 pmichaud (related to the fact that there aren't newclosures.)
22:49 jonathan Ah, you mean the actions from NQP don't even run to completion before hitting the problem?
22:50 pmichaud correct.
22:51 jonathan I have a test case you might be interested in.
22:52 nopaste "jonathan" at 85.216.151.226 pasted "pmichaud" (21 lines) at http://nopaste.snit.ch/13411
22:52 jonathan Run this
22:52 pmichaud somewhere it gets confused and expects a PAST::Val node to have a .pasttype
22:52 pmichaud (when running perl6)
22:52 jonathan It fails. Then comment out the call to test().
22:53 pmichaud yes, I'm aware that one can be an issue.
22:53 jonathan OK.
22:54 pmichaud it fails because 'outer' was never called.
22:54 jonathan OK, but it doesn't fail in test.
22:54 pmichaud so there's not really a context for test() to work from.
22:54 pmichaud oh...?  checking.
22:54 jonathan Add say "ok here" after test()
22:55 pmichaud the problem is probably that outer thinks it already has a context
22:55 pmichaud because the call to test() will build one for it.
22:55 jonathan Yeah.
22:56 jonathan 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.
22:56 jonathan OK
22:56 pmichaud currently in PCT  immediate blocks are called via newclosure
22:56 jonathan It is decidedly an issue for the :immedidate with :outer.
22:56 pmichaud I want to switch those to be normal calls
22:56 pmichaud i.e., without calling newclosure
22:57 pmichaud 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.
22:57 pmichaud (but obviously there is, since it's not working for some reason :-)
23:00 jonathan src/sub.c from line 505 is what happens when you call newclosure
23:01 pmichaud I'm wondering if it's attaching the wrong :outer somehow.
23:01 pmichaud because it's acting like the lexical it's expecting isn't the one it's getting.
23:02 pmichaud and since the lexicals are fairly common (i.e., always '$/', '$past', and '$key'), a misplaced context would be difficult to spot.
23:02 pmichaud (it could also be that POST is generating incorrect lexid/outer pairs.)
23:03 pmichaud (i.e., that POST is getting the wrong lexids for each outer)
23:03 jonathan That would certainly cause issues, if it is. ;-)
23:03 pmichaud yes, but the code to do it turned out to be fairly straightforward, so I'm thinking that's not likely it.
23:03 jonathan *nod*
23:03 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...
23:04 jonathan It wouldn't exactly be surprising if it were a Parrot issue.
23:06 bacek_ joined #parrot
23:06 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.
23:07 jonathan The invoke vtable method in closure.pmc is the interesting one.
23:07 purl joined #parrot
23:07 pmichaud yes, I looked at it over the weekend.
23:09 pmichaud looks like $args in build_call
23:09 pmichaud or whatever is being passed to build call
23:11 pmichaud oh, perhaps store_lex isn't working.
23:11 * pmichaud turns on some tracing.
23:12 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:14 silug joined #parrot
23:15 jonathan pmichaud: OK, I really, really need to try and get some rest now.
23:15 jonathan Good luck debugging.
23:15 pmichaud thanks for all of the improvements!
23:16 jonathan Will write my report tomorrow...it ain't going to be a very exciting one. :-S
23:16 jonathan Yeah, lots of under-the-hood work that was needed, but no shiny new features for people to play with.
23:16 pmichaud tis okay.   we've already busted through 1000 passing spectests today
23:16 jonathan Nice.
23:16 jonathan :-)
23:16 pmichaud my current count is 1073, and that doesn't include a few things that are failing
23:17 pmichaud (that were previously passing)
23:17 jonathan Does your :lexid change, without newclosure being removed, fix any?
23:17 pmichaud probably not
23:17 jonathan Grrr.
23:18 pmichaud when newclosure is there, :outer doesn't really make a difference
23:18 pmichaud because it automatically takes the context of the caller, regardless of :outer says
23:18 pmichaud er, "regardless of what :outer says"
23:18 jonathan Ah, OK.
23:18 jonathan So we need both to make it work right.
23:18 pmichaud right, unless we want to be calling newclosure prior to every subroutine invocation
23:19 pmichaud (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:21 jonathan OK.
23:22 jonathan Hopefully you can work out a smaller test case.
23:22 jonathan Maybe one of the other languages using NQP with a smaller actions file?
23:22 particle joined #parrot
23:23 pmichaud oh, I think I found it.
23:23 pmichaud or at least a part of it.
23:23 jonathan Oh?
23:23 jonathan Just taking the garbage out...brb
23:24 Limbic_Region joined #parrot
23:24 pmichaud if this is indeed the problem it could likely suck big time.
23:27 pmichaud ....but I think I can make a smaller test case.
23:27 pmichaud brb
23:34 nopaste "pmichaud" at 76.183.97.54 pasted "more lexical badness :-( -- simple case" (70 lines) at http://nopaste.snit.ch/13413
23:37 bacek_ joined #parrot
23:39 pmichaud I can simplify the PIR quite a bit and then I'll submit a ticket.
23:42 jonathan That looks like new invocations of a sub aren't getting a clean lexpad.
23:43 jonathan oh, no
23:43 jonathan it's not that...
23:43 jonathan hmmm
23:43 pmichaud the closure is permanently tied to the original lexpad
23:43 jonathan The inner one is holding...right.
23:43 jonathan Which is probably what my :immediate bug boils down to as well.
23:43 pmichaud could be.
23:44 jonathan It seems to make sense.
23:44 pmichaud here's a simpler case
23:44 nopaste "pmichaud" at 76.183.97.54 pasted "more lexical badness :-( -- simpler case" (50 lines) at http://nopaste.snit.ch/13414
23:44 pmichaud it removes all of the NQP cruft.
23:45 pmichaud should I file a ticket?
23:45 pmichaud I think I'll just file this as a ticket for the moment, so others can perhaps start looking at it.
23:45 pmichaud I need to get dinner and walk the dog.
23:47 jonathan Yeah, do it.
23:48 jonathan I'm too tired to look now
23:48 jonathan Maybe Saturday.
23:48 jonathan If someone doesn't beat me to it.
23:48 jonathan Grrr. So many Parrot bugs. :-(
23:52 TiMBuS joined #parrot
23:54 jonathan OK, sleeep - night

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

Parrot | source cross referenced