Camelia, the Perl 6 bug

IRC log for #parrot, 2008-11-12

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:00 jonathan Here we'd only ever invoke trait_auxiliary:is one time.
00:00 pmichaud just one time?
00:00 jonathan Right.
00:00 pmichaud isn't it once per activation?
00:00 jonathan See discussion I had on #perl6 yesterday with TimToady for more. :-)
00:01 jonathan But it seems that since traits are a compile time thing, they actually more act upon the thingy at compile time.
00:01 pmichaud my eyes glazed over a bit first time I looked at it.
00:01 jonathan At the discussion on #perl6?
00:01 pmichaud yes.
00:01 pmichaud I can look again.
00:01 jonathan I'm still trying to work out what it really means.
00:02 pmichaud I think (naively) that we compile the trait once at compile time but apply it on every @x that gets created.
00:02 pmichaud in the Parrot sense I think of it like a PMC property.
00:02 jonathan What do you mean by "compile the trait"?
00:03 pmichaud in this case, the fact that we have a certain type of dimension
00:03 pmichaud but I _really_ need to read the discussion and traits a bit more
00:03 jonathan Or maybe the real question here is, what do we pass to trait_auxiliary:is
00:03 pmichaud because I know very little of what I'm saying here :-)
00:03 jonathan Obviously, one parameter is the "dim"
00:03 pmichaud ...what do we pass, and when do we pass it?
00:04 jonathan But the other? On the one hand, it could be the PAST::Var node, which can then tweak the viviself to actually contain the code to set the dimensions.
00:04 pmichaud (I'm glad we're talking about traits here and not food :-)
00:04 jonathan ewwww...
00:04 purl ewwww is, like, tp's middle name
00:04 pmichaud I'm actually planning to do this for parameters.
00:04 * jonathan looks at his chips and salsa with less hunger now
00:04 pmichaud i.e., that trait applications are part of the PAST::Var node.
00:04 jonathan OK. I think that is the Right Thing.
00:04 pmichaud that's why viviself is created the way it is :-)
00:04 jonathan Yes. We dispatch to trait_auxiliary:is during compile.
00:05 jonathan OK, discussing this is starting to make it feel less scary and more workable. :-)
00:05 pmichaud in particular, the setproperty opcode is going to be set up so that it returns its first argument in the PAST tree
00:05 pmichaud i.e., it's like getting a :scope('register') node for free
00:06 pmichaud so I can do
00:06 pmichaud PAST::Op.new(:pirop('setproperty'), PAST::Var.new( ... ) )
00:06 pmichaud and the "result" of that is the PAST::Var node with the property set on it.
00:06 jonathan Ah.
00:07 jonathan I'm not sure if that works unless trait_auxiliary:is returns something?
00:07 pmichaud same for other "set" opcodes that don't normally return a value
00:07 pmichaud we'll see how it goes :-)
00:07 jonathan I mean, I'm thinking here we want to write something like
00:07 kj joined #parrot
00:08 jonathan role rw { multi sub 'trait_auxiliary:is'(rw $, PAST::Var $var) { ...something involving $var.viviself... }
00:09 jonathan }
00:09 jonathan So the dispatch to trait_auxiliary gets the Var node and is able to tweak it somehow to set up the rw semantics.
00:09 AndyA joined #parrot
00:10 pmichaud I think we can do that.
00:10 bacek joined #parrot
00:10 * kj has dates confused and missed #ps
00:10 pmichaud or something like that.
00:10 jonathan OK.
00:10 jonathan I think that's what needs to happen.
00:10 pmichaud I'd like to leave that for a medium-term goal.
00:10 pmichaud (i.e., as part of your grant)
00:10 pmichaud short term I'd like to get some of the other class/method refactors in place.
00:11 * jonathan looks terrified
00:11 jonathan Sure
00:11 pmichaud and clean up parameter handling a bit.  it may be that the traits falls out naturally from that, if so we can do it then.
00:11 pmichaud this is all starting to look very good.
00:11 jonathan Sure, if we can do it like that, great. If not, let's at least try and do something that doesn't make it harder to do that later.
00:11 pmichaud absolutely
00:11 pmichaud I'm sure the refactors will all make this much easier
00:11 pmichaud that's been the general case
00:12 jonathan Sure.
00:12 pmichaud oh, for MAIN -- I'm thinking maybe we could do better by introducing a !MAIN subroutine
00:12 pmichaud ?
00:12 jonathan But sometimes you have to do it the Other Way first to know the refactor.
00:12 pmichaud rather than building it into the AST
00:12 pmichaud i.e., the AST simply makes a call to !MAIN (passing args array)  and it does the rest?
00:12 jonathan That may work.
00:13 jonathan If smaller AST is a goal.
00:13 pmichaud well, that means less generated code, mainly
00:13 jonathan Sure
00:14 pmichaud and simplifies actions.pm, which is a goal.
00:14 jonathan Yes, it's compilation time is creeping up...
00:14 pmichaud well, not just that, but also trying to keep it somewhat understandable.
00:14 pmichaud anyway, I have to go
00:15 jonathan OK, sure, cu
00:15 pmichaud see ya soon
00:19 nopaste "japhb" at 76.191.190.8 pasted "Demo of Parrot and Rakudo problems, from crashers to mere annoyances" (132 lines) at http://nopaste.snit.ch/14542
00:23 dalek r32568 | japhb++ | trunk:
00:23 dalek : [OpenGL] Perl 6 examples fixes
00:23 dalek : * Don't exit() from a callback.
00:23 dalek : * shapes.p6:
00:23 dalek :   + Get rid of $now variable
00:23 dalek :   + Add comment about += failure
00:23 dalek :   + Enable keyboard callback
00:23 dalek :   + Fix braino in FPS display
00:23 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32568
00:30 jonathan "Everything can go wrong, and usually does
00:31 jonathan What a life outlook! ;-)
00:33 jonathan Thanks for preparing that file, though.
00:34 * jonathan hopes we can get the bugs ironed out in not too long
00:37 chromatic That return bug bothers me.
00:42 Whiteknight what return bug?
00:42 jonathan chromatic: The exit one isn't too wonderful either.
00:43 jonathan Whiteknight: in the code japhb posted
00:49 gmansi joined #parrot
00:55 bacek joined #parrot
01:08 Lorn joined #parrot
01:09 hachi left #parrot
01:19 MariachiElf joined #parrot
01:21 japhb jonathan, chromatic: thanks for taking a look at that for me.
01:41 jimmy joined #parrot
02:08 rhr joined #parrot
02:16 rblackwe Hey any parrot gurus that know anything about http://www.osgi.org that could help me with me efforts to get parrot on http://buglabs.net if so please let me know at robert@robertblackwell.com.
02:17 davidfetter joined #parrot
03:06 Andy joined #parrot
03:16 stockwellb joined #parrot
03:21 stockwellb Parrot test question. pir_output_is? Why the output to file?
03:22 stockwellb One more. I discoverd prove can run the perl tests, is there a cli tool to run the PIR tests?
03:58 Psyche^ joined #parrot
04:02 elmex_ joined #parrot
04:05 stockwellb Anyone now how to run a single PIR test?
04:09 Ademan joined #parrot
04:25 jimmy is pirc implemented by c, and other by pirc self ?
04:27 dalek bruce.stockwell@gmail.com | Parrot:
04:27 dalek link: http://www.perlfoundation.o​rg/parrot/index.cgi?parrot
04:29 dalek bruce.stockwell@gmail.com | Parrot:
04:29 dalek link: http://www.perlfoundation.o​rg/parrot/index.cgi?parrot
04:33 dalek bruce.stockwell@gmail.com | Starting at the bottom:
04:33 dalek link: http://www.perlfoundation.org/parro​t/index.cgi?starting_at_the_bottom
05:14 cotto stockwellb, the *_output_* files are useful when testing an aspect of parrot that isn't easy to make part of a pure PIR test suite, i.e. something that might segfault.
05:16 cotto Most tests can be rewritten as pure PIR tests, although there are some exceptions.
05:18 cotto pure PIR tests can be run directly with the parrot executable or with prove.
05:19 stockwellb I'm getting errors when I run PIR tests with prove
05:19 stockwellb Perl tests work file with prove
05:20 cotto example?
05:20 stockwellb hold on.
05:20 cotto nopaste?
05:20 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/
05:20 purl nopaste is, like, at http://nopaste.snit.ch/ (ask TonyC for new channels) or http://rafb.net/paste or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at http://www.extpaste.com/
05:20 rhr joined #parrot
05:21 stockwellb No plan found in TAP output
05:22 stockwellb parrot runs the test just fine.
05:23 cotto can you nopaste what you ran and its output?
05:23 stockwellb yep
05:24 nopaste "stockwellb" at 70.160.222.145 pasted "prove pir error" (14 lines) at http://nopaste.snit.ch/14544
05:26 cotto you need to run prove from the root of the build dir (or have a parrot in your $PATH).
05:28 stockwellb ah yes prove works when run from the build root. Thank you
05:28 cotto np
05:29 stockwellb cotto, do you know a lot about the test suite?
05:29 stockwellb do all of the Perl tests need to be converted to PIR tests?
05:29 cotto That depends on who's asking. ;)  I know more than nothing.
05:30 cotto They don't.  It speeds up the test suite if they are and it's a good way to learn your way around parrot, but it's not necessary.
05:31 stockwellb I'm new to parrot and perl. I really want to learn more PIR, I thought I'd start by converting some tests.
05:32 stockwellb So that won't really help the project, but it should help me.
05:33 cotto Go for it.  I'd be glad to review and commit any patches of that nature.
05:34 cotto A faster test suite is always welcome.
05:34 stockwellb I've never done any collaborative development before, so I'll definately have to lean on and learn from you vets.
05:36 cotto docs/* is your friend
05:37 cotto There's a surprising amount of useful information there.
05:38 stockwellb there certainly is.
05:57 dalek bruce.stockwell@gmail.com | Starting at the bottom:
05:57 dalek link: http://www.perlfoundation.org/parro​t/index.cgi?starting_at_the_bottom
06:05 stockwellb Sleepy time...
06:05 dalek bruce.stockwell@gmail.com | Starting at the bottom:
06:05 dalek link: http://www.perlfoundation.org/parro​t/index.cgi?starting_at_the_bottom
06:20 davidfetter joined #parrot
06:33 jimmy is particle here now?
06:37 davidfetter particle: idle for 9 hours, 21 minutes, 18 seconds (on since Tue, Nov 11, 2008 2:31:52 PM)
06:40 jimmy i just want this patch can be aplied in other place.http://svn.perl.org/viewvc/parrot/trunk/runtime/p​arrot/library/File/Spec.pir?r1=32388&r2=32488
06:42 jimmy unification of usage.
06:54 masak joined #parrot
06:59 dalek r32569 | allison++ | calling_conventions:
06:59 dalek : [calling_conventions] Standardize parameter processing so the invocant is
06:59 dalek : handled while iterating through the paramters, rather than being a special
06:59 dalek : case.
06:59 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32569
07:04 MariachiElf How do you recover from a failed test?
07:05 MariachiElf t/stm/runtime...............................NOK 4/5#   Failed test 'queue adapted for the library'
07:06 masak jonathan++ # $?PACKAGE
07:06 moritz masak: what do you mean by "recover from"? the test harness doesn't die after a failed test
07:07 MariachiElf moritz: Mine did
07:07 masak moritz: sorry, need more context. where are we?
07:07 MariachiElf Failed 1/394 test programs. 1/11452 subtests failed.
07:07 MariachiElf NMAKE : fatal error U1077: 'C:\Perl\bin\perl.exe' : return code '0x1'
07:07 MariachiElf Stop.
07:07 MariachiElf I'm on Vista
07:07 moritz uhm, that's weird.
07:07 MariachiElf Just did a fresh SVN checkout a few moments ago
07:07 masak moritz: did I say 'recover from'? where?
07:08 moritz masak: sorry, I meant MariachiElf :/
07:08 masak moritz: that explains it.
07:08 purl Damn right it does.
07:08 moritz masak: my usual ma<tab> mistake :/
07:08 masak moritz: don't type with your eyes closed!
07:09 MariachiElf nmake went fine
07:09 MariachiElf nmake html seems to have gone well too
07:10 masak chromatic: re refcount, continuations/exceptions: sounds reasonable. anything a lower-rung coder like me can do to eliminate any of those errors? I get them often enough to feel antipathy against them.
07:10 moritz ah well, 'make test' returns a non-zero exit value if the test failed
07:10 moritz MariachiElf: what else do you want 'make' to do?
07:11 MariachiElf moritz: I'm assuming there were more tests to run
07:11 moritz MariachiElf: don't assume. It already printed the summary (Failed 1/394 test programs. 1/11452 subtests failed.), so it's done now.
07:12 MariachiElf Ohhhhh
07:13 MariachiElf http://poundperl.pastebin.com/m9adfffb
07:13 MariachiElf There's the full output of the stop
07:14 MariachiElf The output was just scary and not what I'm used to
07:14 MariachiElf my apologies
07:14 moritz it happend to be the last test that failed, no worries ;)
07:15 * MariachiElf nods.
07:33 uniejo joined #parrot
07:33 samlh joined #parrot
07:34 masak rakudo: my @a = (1,2,3); @a.[2] = 5; say @a.perl
07:34 polyglotbot OUTPUT[[1, 2, 5]␤]
07:34 masak S09 says this should be a compile-time error.
07:34 * masak reports
07:35 chromatic masak, mostly we just have to understand all of the places we refer to an existing context and make sure that we update its reference count appropriately.
07:35 moritz wtbh?
07:35 chromatic With regard to the double-free errors.
07:36 masak chromatic: aye.
07:36 moritz masak: it says my @a.[5] should be an error
07:36 moritz masak: you didn't confuse that, I hope?
07:36 masak moritz: oh, I did.
07:36 masak moritz: thx.
07:36 * masak doesn't report
07:37 * moritz was very disturbed, for a second ;)
07:37 masak ah. right now my @a[5] doesn't work either.
07:37 masak moritz: sorry ;)
07:37 moritz np :-)
07:38 dalek r32570 | allison++ | calling_conventions:
07:38 dalek : [calling_conventions] Bringing the calling_conventions branch up-to-date with trunk r32569.
07:38 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32570
07:53 mj41 joined #parrot
08:07 Zaba joined #parrot
08:18 allison joined #parrot
09:06 iblechbot joined #parrot
09:10 tomyan joined #parrot
09:12 idemal joined #parrot
09:16 cosimo joined #parrot
09:53 Zaba joined #parrot
10:16 Zaba joined #parrot
10:30 masak joined #parrot
10:31 masak szabgab: http://weblog.infoworld.com/fatalexcepti​on/archives/2008/10/perl_6_isnt_vap.html
10:37 szabgab yeah, I read that already a few days ago,
10:38 szabgab lucky that at least you ppl don't  get discouraged by such things
10:39 szabgab btw is there any plan when can one install parrot ?
10:39 ruoso joined #parrot
10:39 szabgab as in not running it from svn workspace
10:39 konstantin joined #parrot
10:39 masak szabgab: not discouraged, but sad to see such outside opinions.
10:40 masak szabgab: you can install parrot already.
10:40 masak szabgab: it's on CPAN.
10:40 moritz szabgab: reini urban was working on a proper 'make install'
10:40 szabgab yeah, but I thought it keeps saying, you better not run make install
10:40 moritz szabgab: there's a branch for it, but sadly his work as stalled atm
10:41 masak szabgab: ah.
10:41 szabgab ah, so the recomenndation for people who want stable (realatively) is to download from CPAN, compile it and run it from there>
10:42 szabgab ?
10:42 masak I suppose.
10:42 masak since I don't have those requirements myself, I don't really know, though.
10:42 masak I always work on bleeding edge Parrot.
10:48 cotto That way when you cut yourself, you can give Parrot a bandage.
10:49 masak bandages++
10:49 moritz and chromatic is master of bandages ;)
10:50 masak ...and of de-FUDding, incidentally.
10:51 szabgab what about rakudo? it does not have separate release cycle from parrot right?
10:51 masak no.
10:51 szabgab so I should consider the released parrots to be stable rakudos as well?
10:52 masak szabgab: depending on what you put into the term, yes.
10:52 szabgab the stabelest we can have now
10:52 masak right.
10:55 szabgab and btw is there some estimation for parrot 1.0?
10:56 * masak esteems Parrot 1.0
10:56 masak :)
10:58 szabgab anything like "more than 6 months for sure" or "might be in 3 month"
10:59 masak szabgab: when you ask about the release of 1.0, what particular feature(s) do you wish for?
10:59 * moritz says 6 months
10:59 szbalint you know the standard estimate, szabgab
10:59 szbalint ready by xmas
10:59 szabgab I don't care so much about features, more about the marketing bit
10:59 szabgab thats' for perl 6
11:00 szabgab parrot is almost independent from perl 6
11:01 Patterner the standard answer is "xmas". the standard omission is the year.
11:01 masak szabgab: well, yes and no. a dep for the release of Parrot is "two stable HLLs" or something like that. Rakudo will be one of them.
11:02 barney joined #parrot
11:02 masak s/release/1.0 release/
11:02 moritz masak: but "stable" ne "full"
11:02 masak true.
11:02 szabgab I know all the Xmas answers and I am not expecting anything like it will be done by that time, I am ok with an answer, at least 6 month
11:03 szabgab so basically the "two stable HLLs" make it parrot quite dependent on the perl 6 design process, right?
11:06 masak szabgab: um, depends on whether "stable" means "not changing" or "useable"
11:08 moritz szabgab: I don't think that one of them has to be Perl 6. It could be partcl (tcl) and cardinal (ruby), for example
11:09 szabgab I want to be able to run Padre on Parrot at least paritally written in Perl 6, I don't mind using a subset of the language
11:09 szabgab and of course I'd like to let people use tcl and/or ruby to add plugins to Padre
11:11 szabgab but I have to give the user a relatively painless and fearless way to install it
11:11 moritz szabgab: in a comment on http://perlbuzz.com/2008/10/per​l-6-isnt-exactly-vaporware.html I wrote down what I think is needed to actually code in Perl 6, without too many "wtfs per minute" (No. 2 has been fixed since then)
11:11 szabgab painless is technical, fearless is more psychological, marketingish issue
11:12 moritz that's the "painless" part I was referring to ;)
11:16 szabgab moritz: and do you any kind of time estimate for the other 3 ?
11:18 masak szabgab: I'd rate #1 as "almost fixed now". maybe a week or two.
11:26 szabgab and the other two? even a minimum time would do it for me. see I am begging :-)
11:28 masak szabgab: you'll probably have to beg pmichaud++ and jonathan++ for estimates to #3 and #4. :)
12:08 jonathan #4 is waiting on a refactoring of part of the grammar to get us more in line with STD.pm.
12:08 jonathan I don't think it should be so bad to do, and I think we've got enough tests now that I shouldn't break too much. :-)
12:14 ruoso joined #parrot
12:29 Lorn joined #parrot
12:44 konstantin joined #parrot
12:53 DietCoke joined #parrot
12:53 konstantin joined #parrot
13:08 jimmy joined #parrot
13:19 pmichaud (from http://perlbuzz.com/2008/10/per​l-6-isnt-exactly-vaporware.html comment):  "There's no way to turn an array ref into an array" ... example?
13:21 iblechbot joined #parrot
13:27 szbalint you need to give an example to disprove that statement
13:28 jonathan @array.values?
13:28 jonathan er
13:28 jonathan $arrayref.values?
13:28 pmichaud I don't understand what "turn an array ref into an array" means here.
13:31 szbalint me neither, but I didn't make that statement :)
13:32 jonathan pmichaud: I suspect they're trying to do the Perl 5 equivalent of @$array_ref
13:32 pmichaud ah.
13:32 jonathan But you really don't need to in Perl 6.
13:32 jonathan In most circumstances.
13:32 pmichaud sometimes you do
13:32 pmichaud actually, often you do
13:32 pmichaud for $arrayref { ... }
13:32 jonathan Ah, yes, that won't iterate over the array's values, will it...
13:32 pmichaud you really need     for @$arrayref { ... }     or    for $arrayref.values { ... }
13:33 jonathan Right
13:33 * jonathan needs more coffee
13:33 jonathan Anyway, the .values way exists now
13:33 pmichaud I wonder why .list isn't working.
13:34 jonathan It's not?
13:34 pmichaud according to jhorwitz yesterday it wasn't.
13:34 pmichaud building now so I can check.
13:34 jonathan kk
13:34 Coke ... what does for $arrayref do ?
13:35 Coke it just fires once on the ref?
13:35 pmichaud coke:  it would loop over the single array element.
13:35 pmichaud it's essentially the same as   for ($arrayref, 2, 3) { ... }
13:35 pmichaud except without the 2, 3 part.
13:35 ChrisDavaz joined #parrot
13:36 Coke Hurm. I am thinking I'd rather that act like an array in that context, and have to specify I wanted the ref instead of the array.
13:37 pmichaud how would one "specify I want the ref" ?
13:37 pmichaud anyway, that's a language design issue, so I get to pass the question off to p6l.  :-)
13:38 Coke ayup. (can't be a method, because that'd return a ref... which i already said I wanted to be special.)
13:38 * Coke guesses $$
13:39 pmichaud in this sense it's really the same as Perl 5, though
13:40 pmichaud my $a = [1, 2, 3];
13:40 pmichaud for ($a)    { print "$_\n"; }     #  "1 2 3\n"
13:40 pmichaud for (@{$a}) { print "$_\n"; }     #  "1\n2\n3\n"
13:40 pmichaud (perl 5 code above)
13:40 pmichaud oops
13:40 pmichaud in reality
13:40 purl in reality is probably that it is generated by on setup_function
13:41 pmichaud for ($a)    { print "$_\n"; }     #  "ARRAY(0x......)"
13:42 pmichaud ahhh, I see the problem with 'list'.
13:42 pmichaud jonathan: do we have a way to go from an ObjectRef to the thing it references?
13:44 bacek joined #parrot
13:44 pmichaud (in PIR)
13:47 jonathan pmichaud: Anything that invokes get_pmc would probably do it...
13:47 jonathan But I can't think of an op right away...
13:47 jonathan hmm
13:47 pmichaud is there a get_pmc op?
13:47 jonathan maybe
13:47 pmichaud I think there's a set_pmc op.
13:47 jonathan It's a vtable
13:48 pmichaud hrm, guess there isn't.
13:48 pmichaud ah, setref and deref
13:49 pmichaud how strange that they're actually called by names that indicate what they do.  :-P
13:50 jonathan lol!
13:50 jonathan pmichaud++
14:14 Zaba joined #parrot
14:16 nopaste "pmichaud" at 72.181.176.220 pasted "going from arrayref to a list" (12 lines) at http://nopaste.snit.ch/14547
14:17 gryphon joined #parrot
14:23 Lorn joined #parrot
14:23 dalek r32571 | pmichaud++ | trunk:
14:23 dalek : [rakudo]: spectest-progress.csv update: 216 files, 4528 passing, 8 failing
14:24 dalek : Failure summary:
14:24 dalek :     S02-literals/radix.rakudo aborted 8 test(s)
14:24 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32571
14:24 dalek r32572 | pmichaud++ | trunk:
14:24 dalek : [rakudo]: update test_summary.pl to report failures, output < 80 cols
14:24 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32572
14:26 Zaba joined #parrot
14:28 jimmy parrotvm is so slow...
14:29 bacek joined #parrot
14:35 dalek joined #parrot
14:43 rdice joined #parrot
14:51 dalek r32573 | pmichaud++ | trunk:
14:51 dalek : [rakudo]:  Fix .list method on arrays (and arrayrefs).
14:51 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32573
14:52 Zaba joined #parrot
14:58 Zaba joined #parrot
15:02 dmknopp joined #parrot
15:05 dmknopp left #parrot
15:05 dmknopp joined #parrot
15:06 Lorn joined #parrot
15:18 Andy joined #parrot
15:18 Zaba joined #parrot
15:20 NotFound joined #parrot
15:20 NotFound Hi
15:20 purl hey, NotFound.
15:22 Coke jimmy: I am often inclined to agree with that.
15:30 jimmy had parrot implemented array class?
15:31 Coke s/class/PMC/ yes.
15:32 Coke $P1 = new 'Array' # or 'ResizablePMCArray', usually.
15:32 Coke # or any of a lot of other more specific container types.
15:32 AndyA joined #parrot
15:32 jimmy where is the s dir?
15:33 Coke s// is a perl-ism, it means replace the first part with the second.
15:33 Coke so, to expand that, "if by class, you mean PMC, then yes."
15:33 szbalint s// is an error actually
15:33 szbalint :]
15:33 Coke sorry about the confusion.
15:34 Coke and about szbalint.
15:36 jimmy find it, thanks coke
15:37 szbalint purl: regexp?
15:37 purl i guess regexp is short for regular expression
15:37 szbalint purl: regular expression?
15:37 purl regular expression is a predicate on strings
15:37 szbalint pfft
15:38 jimmy i thought there is a class, because i saw it ever.
15:40 jimmy purl: regexp?
15:40 purl regexp is short for regular expression
15:42 Zaba joined #parrot
15:44 cosimo joined #parrot
15:47 hercynium joined #parrot
15:52 ruoso joined #parrot
15:53 dalek r32574 | pmichaud++ | trunk:
15:53 dalek : [rakudo]:  Make log(0) return a Failure (RT #60490, masak++)
15:53 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32574
15:56 jonathan particle: ping
16:31 Coke pmichaud: (anon) perhaps: .namespace ['Signature']
16:31 Coke .sub 'onload' :anon :init :load
16:31 Coke that doesn't correspond directly to a user-defined block, does it?
16:31 Coke (it's also neither an inner block nor a anonymous sub, of course.)
16:32 pmichaud that's correct, those are auto-generated.
16:40 jhorwitz joined #parrot
16:40 Zaba joined #parrot
16:42 * jonathan thinks that the bytecode annotations stuff really needs doing so we can generate good errors soon
16:43 jonathan But it goes with a whole bunch of bytecode handling refactors which are quite a bit of work, though Infinoid++ has made a good start.
16:45 Coke I wonder if it would be possible to create an artistic-license'd version of cold fusion running on parrot.
16:46 Coke I don't think it would be  it,
16:47 pmichaud jonathan: btw, I think I've convinced myself that $?PACKAGE, $?CLASS should indeed be held as lexicals.
16:47 Coke er, be worth the effort, but I wonder if legally it would be doable.
16:47 pmichaud in particular, we can replace existing instances of 'def' with $?CLASS  :-)
16:50 jonathan (implementing it like the spec says)++
16:50 jonathan Yes, that's very true.
16:51 pmichaud oh, there was a proposed PCT change that came out during your vacation
16:52 pmichaud I'm thinking of allowing string/int/num constants directly in the PAST tree
16:52 jonathan Rather than needing PAST::Val nodes?
16:52 pmichaud yes.
16:52 jonathan Rational, other than less objects to create?
16:52 jonathan Or is that enough?
16:52 pmichaud we still have PAST::Val nodes for things that have special requirements (typing, construction, etc.), but simple string/int/num can go directly in the tree
16:52 pmichaud less objects to create, easier to read and process
16:53 jonathan OK
16:53 jonathan No immediate objections from me.
16:53 pmichaud it just seems cleaner in a lot of ways
16:53 jonathan I've at lesat a couple of times mistakenly not created a PAST::Var node when I shoulda done and just stuck a value in, anyway...
16:55 pmichaud right.
16:56 pmichaud for this limited case I think it's worth dwim instead of enforcing a rigid strictness
16:57 Theory joined #parrot
16:57 jonathan Yes.
16:57 jonathan Makes sense.
16:57 jonathan Go for it.
16:58 Zaba joined #parrot
17:03 * Coke goes WOOOT for a reason entirely not to do with parrot.
17:03 pmichaud I don't know when it'll occur, but it's in the planning stage.
17:04 jonathan Sure, I guess not high priority compared to other things.
17:04 jonathan *cough*lexicals*cough*protoregexes*cough*
17:04 pmichaud well, there's a fair bit of refactoring to do in actions.pm, which is what makes me think of it.
17:04 jonathan *nod*
17:04 pmichaud I'll be really glad to give someone else lexicals to do, btw.  :-)
17:05 jonathan Erm.
17:05 pmichaud the only reason I'm doing it is because nobody else seems to want to take care of it.  :-|
17:05 jonathan How do the lolcats say...
17:05 jonathan ...DO NOT WANT.
17:05 jonathan ;-)
17:05 jonathan It's...hard.
17:05 jonathan How far along is the lex branch?
17:05 pmichaud I'll bite the bullet and spend a day on it soon.
17:06 jonathan As in, what's missing? What's done?
17:06 pmichaud the basics are in place -- I have the capture_lex and newclosure opcodes done.
17:06 pmichaud The hard part is autoclose semantics.
17:06 Coke pmichaud: are you a coffee drinker?
17:06 pmichaud I _think_ I have autoclose worked out mostly -- just need to write it down and then implement it.
17:07 jonathan If you've got it worked out, then it's probably best you do at lesat one half of that.
17:07 pmichaud part of the problem is that I'm working with code where I understand very few of the design parameters that are involved, so I don't know if I'm breaking anything
17:07 pmichaud Coke: I very rarely drink coffee.
17:07 pmichaud like, usually only in Europe.  :-)
17:07 Coke pmichaud: heh
17:07 Coke so throwing a DD or SB card at you will not help you code faster. Roger. =-)
17:07 jonathan pmichaud: If you can write up what you want, I maybe can help on implementing it.
17:08 pmichaud jonathan: that's what I'm working on now.  :-)
17:08 jonathan I need to refactor variable_decl (I think it's that one) to look more like STD.pm.
17:08 jonathan Then we can have things like "has $.x = 42"
17:08 pmichaud what I have so far is at http://www.pmichaud.com/perl6/lexical.txt
17:09 pmichaud refactoring variable_declarator really means we should have signature fixed first.
17:09 jonathan Perhaps - I'd rather do the first refactor which is just shuffling around code mostly, rather than changing too much at one go.
17:10 jonathan But yes, it will want to change with respect to sigs also.
17:10 pmichaud it's all the same pieces
17:11 jonathan Autoclose
17:11 jonathan Autoclose
17:11 jonathan erm
17:11 tewk_ joined #parrot
17:12 jonathan The stuff under that heading doesn't sound that vastly different to what we do today?
17:12 jonathan Other than mentioning capture_lex?
17:12 pmichaud the big difference is that I won't be chasing up the caller chain.
17:12 jonathan Aha.
17:12 pmichaud s/is/will be/
17:12 pmichaud so far none of this requires looking up the caller chain
17:13 pmichaud which is where I think the current problems lie.
17:13 jonathan OK
17:13 pmichaud (well, we might look at the immediate caller as part of invoke, but that's about it.)
17:14 pmichaud iiuc, what happens today is that autoclose tries to chase up the caller chain looking for contexts that match its criteria
17:14 jonathan Ah, OK.
17:14 pmichaud which is bad, especially if an outer lexical scope isn't even *in* the caller chain.
17:14 jonathan Yes.
17:14 jonathan Plus perhaps a source of subtle bugs.
17:15 pmichaud anyway, I'll finish the writeup today if I can.
17:16 jonathan OK.
17:16 ruoso joined #parrot
17:22 * jonathan ponders subtypes
17:22 jonathan I think the SubSet class needs to go away.
17:23 jonathan I suspect since the subset types are just refinements to real types, we can do it as an anonymous subclass of the proto that overrides ACCEPTS
17:23 * jonathan JFDI
17:38 rob joined #parrot
17:42 PacoLinux_ joined #parrot
17:46 konstantin joined #parrot
17:47 PerlJam joined #parrot
17:54 dalek r32575 | Whiteknight++ | trunk:
17:54 dalek : [Book] Fix up the first half of Chapter 2. Fix prose and flow, grammar, and the occasional spelling problem.
17:54 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32575
18:09 cognominal joined #parrot
18:11 jonathan rakudo: subset Even of Int where { $^n %2 == 0 }; say Even.WHAT;
18:11 polyglotbot OUTPUT[Subset␤]
18:11 rhr joined #parrot
18:12 wonko joined #parrot
18:15 chromatic joined #parrot
18:15 pmichaud (anonymous subclass)++
18:16 jonathan pmichaud: Yeah, the current bug (as shown there) will go away then.
18:16 pmichaud for that matter, does it have to be anonymous?  ;-)
18:16 pmichaud looks to me like it has a name ("Even")
18:16 jonathan Oh, in that case, yes.
18:16 jonathan In the general case they can be anonymous.
18:17 pmichaud yes.  :-)
18:17 jonathan but yeah, may well name the named ones
18:17 jonathan Just trying to make sure my approach is going to work first.
18:22 pmichaud afk, lunch
18:24 bacek joined #parrot
18:28 Coke jonathan: what should that have output? Even ?
18:30 jonathan Coke: Yes.
18:30 jonathan I think so.
18:30 jonathan Oh,no
18:30 jonathan I think maybe Int
18:30 jonathan Since subtypes are just refinements on real types.
18:31 jonathan It certainly shouldn't have emitted Subset.
18:31 jonathan I can argue it either way on the other one, but I suspect Int is the answer.
18:31 * jonathan -> dinner
18:31 Zaba joined #parrot
18:37 pmichaud I suspect Int is the answer, also.
18:38 pmichaud I'm not even sure that .WHAT works on Even
18:38 pmichaud (since it's really a macro)
18:38 pmichaud afk, lunch for real this time.
19:07 Zaba joined #parrot
19:29 dalek r32576 | coke++ | trunk:
19:29 dalek : use of .return as a synonym for .tailcall is [DEPRECATED]
19:29 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32576
19:35 particle so, WHAT gives a shortname of "Int", and WHO gives "Even of Int"?
19:35 particle or can you not get the name of a subclass even after you've named it?
19:36 pmichaud note that subset != subclass
19:37 particle oops, i meant subset of course
19:37 particle my point is that if you name a subset, you should be able to somehow recover that name
19:38 pmichaud maybe.  I'm not sure that we could do things like    my $x = Even;
19:38 findlay joined #parrot
19:39 particle no, i'm not sure of that either
19:39 particle but why bother with having a name if it's declaration-only
19:43 kj joined #parrot
19:45 pmichaud oh, it's still usable wherever we expect a typename
19:45 pmichaud i.e.,    my Even $x = 2;
19:45 pmichaud but the fact that it's visible as a name doesn't necessarily imply it's a value that can be .WHAT
19:45 pmichaud (it doesn't imply that it can't either -- I'm just saying we're not clear on it yet)
19:46 particle yes, we're not clear.
19:46 particle i suspect the fullname (.WHO) will contain the subset name
19:49 * Coke runs "make TEST_JOBS=3 test"
19:52 dalek r32577 | coke++ | trunk:
19:52 dalek : using .return as a synonym of .tailcall is [DEPRECATED]
19:52 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32577
19:54 Coke that's the last test failure regarding .return/.tailcall, I think.
19:59 johbar joined #parrot
20:00 TimToady phone
20:00 dalek r32578 | coke++ | trunk:
20:00 dalek : RT #58974; remove [DEPRECATED] .return syntax; use .tailcall instead. (all tests pass)
20:00 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32578
20:00 Coke TimToady: 1m.
20:01 pmichaud be there in 3
20:03 Coke TimToady++
20:17 particle coke: does r32578 requires realclean?
20:25 Coke I don't think so.
20:26 Coke presuming the deps are correct.
21:01 AndyA joined #parrot
21:16 masak joined #parrot
21:19 masak have I got a Rakudo bug for you tonight!
21:20 nopaste "masak" at 130.238.45.242 pasted "a bug involving gather, pattern matching and .substr" (15 lines) at http://nopaste.snit.ch/14553
21:20 bacek masak: good morning :)
21:20 masak bacek: y0 Ö=
21:20 masak :)
21:21 masak when looking at the above code, keep in mind that it shouldn't produce anything. that's because I've removed all the parts that didn't cause trouble.
21:22 masak IOW, I'm aware that one would never want a program exactly like this. the point is that the program crashes.
21:23 bacek bacek@icering:~/src/parrot/languages/perl6$ ../../parrot perl6.pbc g.pl
21:23 bacek Cannot take substr outside string
21:23 masak bacek: that's it.
21:24 masak it's a reasonable error, in some circumstances. but I think you can look at the code and prove to yourself that it shouldn't do that.
21:24 bacek masak: (crash) same bug with "die in subroutines"
21:25 pmichaud that's a Parrot message
21:25 pmichaud Parrot complains (with that message) if you attempt to take a substring beyond the end of a string.
21:25 masak ok.
21:25 pmichaud the answer is probably for rakudo's .substr method to check for that and do something reasonable.
21:26 masak bacek: I don't understand what you mean with "same bug with 'die in subroutines'"
21:26 pmichaud or, catch the exception and convert it to something reasonable.
21:26 masak pmichaud: if you remove the gather block, the program doesn't crash
21:26 bacek pmichaud: #56216 :)
21:27 masak pmichaud: something is horribly wrong here.
21:27 bacek pmichaud: patch is quite old. It should call '!FAIL' in moder rakudo
21:27 bacek masak: it's #57330.
21:28 masak bacek: yes, what about it? is this the same thing?
21:28 bacek 57396 & 57398 is actually duplicates.
21:28 bacek masak: technically - yes.
21:29 masak I'm lost -- how can adding a gather block cause the crash?
21:29 pmichaud I don't believe they are all the same thing.
21:29 masak the program works fine without it
21:29 bacek masak: try 'sub foo { die }; foo'
21:29 pmichaud Let's not assume things are the same until we can prove it.
21:29 masak bacek: I know about that one, it's not the same.
21:29 masak trust me.
21:29 pmichaud masak: the gather block imposes an exception handler in the mix
21:29 masak ok.
21:29 bacek masak: NO WAY :)
21:30 masak bacek: :)
21:30 pmichaud masak: so it may be the existence (or non-existence) of the exception handler that is affecting things here.
21:30 masak would looking at the PIR code make things clearer, perhaps?
21:30 pmichaud let me look at the perl 6 snippet a bit closer, first.
21:30 bacek afk # $kids->school
21:31 masak pmichaud: yes, of course.
21:31 purl Indubitably.
21:31 nopaste "Coke" at 65.91.151.195 pasted "small-ish PIR from phone" (11 lines) at http://nopaste.snit.ch/14554
21:32 Coke chromatic, particle, pmichaud: that sample depends on the perl6 code you're trying to eval. if you use a different invalid bit of perl6, it works.
21:32 Coke e.g. if you leave off the trailing }; something about that particular exception is causing trouble.
21:32 bacek masak: try to put try around gather. It will fix crash
21:32 Coke could probably narrow it down further if necessary.
21:32 masak bacek: hokay.
21:33 bacek masak: because of "handle all exceptions handler"...
21:33 pmichaud of course, it's not clear why an exception is generated in the first place.
21:33 chromatic That's an ASSERT failure.
21:33 masak bacek: thing is, I don't want it to crash, try block or no try block.
21:34 chromatic I think it's related to the exception handler gyrations.
21:34 chromatic Huh.
21:34 chromatic It's compiling code.
21:34 chromatic do_sub_pragmas
21:34 pmichaud (we now have two exception conversations going... my comments are aimed at the masak/bacek one :-)
21:34 chromatic PackFile_fixup_subs
21:34 masak pmichaud: aye, it's not clear why. that's what troubles me.
21:35 pmichaud masak:  it throws an exception only if gather is present?
21:35 masak correct.
21:35 chromatic I can't get it to segfault though.
21:36 pmichaud masak:  I'll need to svn up and rebuild parrot -- need about 5 mins
21:36 Coke pmichaud: when running target=pir, there's an .include file that is included -after- constants from it are used.
21:36 masak pmichaud: no problems -- I'm blogging right now, take your time.
21:36 Coke chromatic: lemme double check.
21:37 pmichaud Coke: is the file included more than once, or just the once?
21:37 pmichaud Coke: I suspect that may have been from jonathan's MAIN change yesterday.
21:37 pmichaud or the $?PACKAGE one
21:37 Coke chromatic: crap. now i can't either.
21:37 Coke pmichaud: just once.
21:37 pmichaud okay, I'll have to check on the code there.
21:38 Coke chromatic: but we can worry about that once the assert failure goes away.
21:38 pmichaud I'm trying to eliminate the use of the constants from the generated code, but someone keeps adding them back in :-)
21:38 davidfetter joined #parrot
21:38 pmichaud or, I should say:  adding new ones in :-)
21:38 PerlJam masak: does #november-wiki actually exist anywhere?
21:38 moritz PerlJam: on freenode
21:39 masak moritz is faster than I am :)
21:39 masak PerlJam: did some documentation lead you to believe otherwise?
21:39 Coke (hurm. if c. can fix this assert, maybe I'll start throwing some of tcl's spec test explosions at him.)
21:40 Coke chromatic++
21:40 PerlJam no, that I joined #november-wiki and I'm the only one on the channel led be to believe otherwise
21:40 PerlJam (on freenode)
21:40 moritz PerlJam: netsplit, I think
21:40 moritz 22:26 -!- Netsplit kubrick.freenode.net <-> irc.freenode.net quits: @masak,  @viklund, @zarah, p6eval
21:41 masak PerlJam: looking forward to seeing you there after the netmerge :)
21:41 chromatic I don't know if we can trust the backtrace, thanks to all of the setjmp/longjmp.
21:44 pmichaud masak: I think it may be a lexicals issue.
21:45 masak pmichaud: I'm all ears.
21:46 pmichaud I suspect the 'gather' scope isn't getting the correct set of lexicals.
21:47 Coke (netsplits) purl, be Coke.
21:47 masak pmichaud: is there any sense in me reporting the code snippet to rakudobug?
21:48 moritz masak: put it as a test under t/spec/integration/
21:48 pmichaud works for me.
21:48 masak moritz: aye.
21:48 pmichaud (putting it as a test works for me)
21:48 masak moritz: how should I test it, according to you?
21:48 masak put a try block around it and check $! ?
21:49 moritz masak: yes, or lives_ok
21:49 pmichaud ouch.
21:49 masak moritz: will do.
21:50 masak pmichaud: note also that looping over only one of the strings doesn't crash.
21:50 pmichaud yes
21:50 pmichaud it happens on the second iteration
21:50 masak aye.
21:50 pmichaud what appears to be happening is that we retrieve the $c from the previous execution
21:51 pmichaud but retain the $/ from the current execution
21:51 masak not good.
21:51 pmichaud so when it tries to do a .substr($/.from)   that becomes .substr(3) on an empty string and we get the exception.
21:51 pmichaud more precisely, the   $c .= substr($/.from);   uses the $c from the previous execution.
21:52 masak pmichaud++
21:52 masak that makes perfect sense.
21:52 masak (except that it's wrong, of course)
21:52 pmichaud yes.
21:53 pmichaud and if I remove the explicitly 'newclosure' op that is being run on gather nodes, I get even stranger output.
21:53 pmichaud *explicit
21:53 masak uh huh.
21:54 pmichaud there are times that I think the only thing more broken than imcc is Parrot's lexicals.
21:54 masak I know the feeling.
21:56 nopaste "pmichaud" at 72.181.176.220 pasted "the diagnostic I ran (for masak)" (34 lines) at http://nopaste.snit.ch/14555
21:56 pmichaud it's actually doing .substr(3) on '1', not the empty string.  But it's still the string left over from the previous execution.
21:57 masak aye.
21:57 masak I was wondering where the heck that "1" came from.
21:57 masak now I understand.
21:58 * pmichaud checks with family members to see if he can devote the evening to trying to fix lexicals.
21:59 PerlJam pm: heh!
22:00 PerlJam pm: Wednesdays are supposed to be "mine" for hacking or whatever.  So far it hasn't worked out that way.
22:00 PerlJam 4 kids + wife + other relatives are too demanding of my time.
22:01 MariachiElf joined #parrot
22:02 dalek r32579 | coke++ | trunk:
22:02 dalek : remove [DEPRECATED] warning - this is gone now.
22:02 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32579
22:15 gmansi joined #parrot
22:16 sjansen joined #parrot
22:20 masak test added in r22996
22:20 masak it fails in Rakudo.
22:20 moritz masak++
22:24 hercynium joined #parrot
22:31 Zaba joined #parrot
22:45 dalek r32580 | moritz++ | trunk:
22:45 dalek : [rakudo] more test files for spectest, and restored alphabetical order.
22:45 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32580
23:08 jonathan OK folks, I'm off for my pre-flight sleeps - be seeing some of you in California soonish. :-)
23:08 pmichaud sounds good
23:08 pmichaud see you in 48 hrs
23:08 pmichaud oh, more like 50
23:09 pmichaud (forgot the timezone difference)
23:10 jonathan Yes
23:10 jonathan Looking forward to it. :-)
23:11 pmichaud same here.  Any particulars on how we should meet up?
23:11 pmichaud just on IRC, perhaps?
23:11 jonathan I will be arriving with particle, on the van he will be brining from SJC.
23:11 jonathan I'm taking the first night in San Francisco, then coming to the airport and meeting particle and others there.
23:11 pmichaud oh, then I'll see you there.
23:11 jonathan I think you're arriving about then.
23:11 jonathan Yes.
23:11 pmichaud I arrive an hour before particle.
23:12 jonathan Ah, OK.
23:12 pmichaud (unless he's changed his travel arrangements ... /me checks)
23:12 jonathan He gets in at 4:10pm I think.
23:12 pmichaud I arrive 2:30p
23:13 jonathan Ah, OK, a bit before.
23:13 jonathan To SJC?
23:13 pmichaud I'm arriving American 1865
23:13 pmichaud yes, to SJC
23:13 pmichaud should we designate a meeting point at SJC?
23:15 jonathan I don't know SJC at all.
23:15 pmichaud me neither.  I guess we can just wing it.
23:15 jonathan OK, I will come to the airport a bit earlier so we can mee.
23:15 jonathan *meet
23:15 jonathan Well, I am armed with a cell phone. ;-)
23:15 pmichaud me too... 214-682-9420
23:15 jonathan OK. That allows lazy evaluation of the problem. ;-)
23:15 pmichaud works for me.
23:16 pmichaud before departing you might also grab the latest copy of lexical.txt -- I'm adding some updates now (and plan to work on it much of the evening)
23:16 jonathan aha, OK
23:16 jonathan I'm getting my half-done subset patch shoved over to the laptop too
23:19 jonathan OK
23:19 jonathan Will take an earlier trian than I'd planned.
23:19 pmichaud see you in 48.
23:19 jonathan Yes
23:20 jonathan Safe journey - see you there :-)
23:22 dalek r32581 | coke++ | trunk:
23:22 dalek : Add a failing TODO test for RT#45859
23:22 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32581
23:23 bacek_ joined #parrot
23:27 Coke hurm. anyone know enough lex/yacc to figure out where methods calls are processed in IMCC? I am prettysure that .tailcall <blah> allows them, so I think I'm looking for sub_call, but I can't see where sub_call is processed.
23:29 chromatic Processed how?
23:30 pmichaud .tailcall <blah> does allow method calls -- in fact, they're used quite heavily in much of PGE, PCT, Rakudo, etc.
23:30 Coke aha. found it.
23:35 Zaba joined #parrot
23:47 Coke chromatic: if you make an imcc patch to remove bareword method names (45859), I'll fixup everything in 'make test' to comply.
23:47 Coke (I thought I had it, but am failing to pass the new test I just added)
23:48 pmichaud (fixup everything)  that sounds like a big job.  Worth doing, but big nonetheless.  :-)
23:49 nopaste "coke" at 72.228.52.192 pasted "thought this was it." (16 lines) at http://nopaste.snit.ch/14557
23:50 Coke but that also breaks foo.'foo'()
23:51 chromatic Coke, will do.
23:52 Coke it's gotta be in that section, damnit.
23:53 Coke ... hurm.
23:53 Coke ooh, idea.
23:54 Coke aha!
23:55 chromatic I think there's a trick to it.
23:55 chromatic Check to see if there's a symreg defined with that name (so you already have a PMC or a String register of that name).  If not, check that it has quotes.
23:55 Coke ah.
23:56 chromatic If it doesn't, throw a parse exception.
23:56 Coke I was thinking just replacing STRINGC with STRINGCONSTANT might do it.
23:56 Coke ok. I leave the tricky bits to you. I can do all the grunt work after. =-)

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

Parrot | source cross referenced