Camelia, the Perl 6 bug

IRC log for #parrot, 2009-01-08

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:09 tetragon joined #parrot
00:10 AndyA joined #parrot
00:34 DietCoke joined #parrot
01:13 cotto should new $P0, ['BigInt'] work in PIR?
01:32 Tene cotto: no, only in PASM, iirc
01:32 Tene in PIR you need $P0 = new ['BigInt']
01:32 Tene iirc
01:37 cotto that make sense
01:39 gravity joined #parrot
01:39 particle can't use $ in pasm, of course
01:43 dalek r35182 | cotto++ | trunk/t/pmc (3 files):
01:43 dalek : [t] start moving tests to $P0 = new ['Foo'] syntax
01:43 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35182
01:44 kid51 joined #parrot
01:46 TiMBuS joined #parrot
01:47 Fayland joined #parrot
01:52 TimToady joined #parrot
01:52 jimmy joined #parrot
01:56 dalek r35183 | cotto++ | trunk/t/pmc (9 files):
01:56 dalek : [t] bracket more PMC names
01:56 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35183
01:58 chromatic $P0 = new [ 'Type' ] and new $P0, [ 'Type'] should work identically in PIR.
01:59 chromatic Only the latter works in PASM.
01:59 particle no, $P0 doesn't work in pasm.
01:59 chromatic Right, modulo that.
02:02 MariachiElf joined #parrot
02:03 particle and in pirc, new $P0 ['type'] doesn't work in pir, either
02:03 particle er, forgot the comma
02:03 chromatic pirc needs to support that then.
02:03 particle i think we've done away with that in pir
02:04 particle i may be wrong
02:04 particle pir isn't pasm++ anymore
02:05 Whiteknight pasm-- # karma fairness
02:13 pmichaud please tell me we haven't done away with    new $P0, ['Type']
02:13 pmichaud PCT depends on it.
02:18 chromatic I don't see how we can avoid it.
02:18 chromatic Nor do I want to, as much as I hate keys.
02:18 pmichaud no, I mean the   new $P0, $P1 syntax
02:18 pmichaud it sounds to me as though particle is saying that it has to be  $P0 = new $P1
02:19 pmichaud i.e., the equals sign is required.
02:20 particle pmichaud: i *think* that's the direction pir has headed. i may be wrong, and i don't like it either, but that's what i recall
02:20 particle PDD19 likely has the answer
02:20 pmichaud I don't recall _ever_ hearing that we would disallow   new $P0, $P1
02:20 pmichaud I do know that we were going to disallow things like     $P0 = say
02:20 dalek r35184 | cotto++ | trunk/t/pmc (10 files):
02:20 dalek : [t] more test updates
02:20 particle that, for sure, is true
02:20 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35184
02:21 GeJ I'm finishing to migrate t/oo/new.t from Perl to PIR (I'm giving names to the half bazillion of tests).
02:21 particle gej++
02:22 GeJ I'm switiching all the $I3 = isa $P1, $S3 to isa_ok($P1, $S3) patterns
02:22 pmichaud GeJ: good, as long as 'isa' isn't the thing being tested :-)
02:23 GeJ pmichaud: usually the 'isa' line is followed by a is($I3, 1)
02:23 pmichaud GeJ: in that case isa_ok is better.
02:23 cotto GeJ, are there other tests you're working on?
02:23 GeJ cotto: t/oo/*.t
02:23 pmichaud I don't see anything in pdd19 to indicate that   new $P0, <whatever>  is disallowed in PIR.
02:23 GeJ new.t is the last one.
02:24 cotto the rest are committed?
02:24 cotto nm.  I'm in t/pmc
02:24 particle is the ? modifier in .*? known as 'non-greedy' or is there another word for it?
02:25 particle 'minimal matching semantics' perhaps?
02:25 GeJ not yet. I pastebin'd them for review. chromatic seemed ok with it. But once I'm done with new.t, I'll bundle them in a TT
02:25 pmichaud particle:  "eager"
02:25 particle the opposite of eager, i want ?'s name
02:26 pmichaud The ? means "eager"
02:26 particle oh. hrmm.
02:26 pmichaud without the ? it's "greedy"
02:26 pmichaud "eager" in the sense of "stop matching as soon as you can"
02:26 particle so, it's eager to finish the match
02:26 pmichaud right.
02:26 particle thanks.
02:29 GeJ isa/typeof question : if I `isa_ok($P0, $S0)` is it worth it to `$S1 = typeof $P0; is($S1, 'ExpectedClassName')` right after?
02:29 pmichaud GeJ: they test different things.
02:29 GeJ new.t has a lot of those double checks (one with typeof, and then next with isa)
02:30 pmichaud isa_ok($P0, $S0)  is true if $P0 is of the same type as $S0, or any of $S0's subclasses
02:30 GeJ ok, so I'll keep the typeof tests then.
02:30 pmichaud the latter form verfies that $P0 is _exactly_ the same type as $S0
02:30 pmichaud (modulo my continuing complaint about using string names to identify classes in PIR.)
02:31 GeJ but just to be sure, it's OK to replace `$I3 = isa $P0, $SO; ok($I3, 1)` with `isa_ok($P0, $S0)` right?
02:31 Hinrik I think I recall the book Mastering Regular Expressions calls the '?' in .*? lazy
02:31 pmichaud GeJ: yes, I'd accept that for now.  There aren't good alternatives at the moment.
02:32 chromatic Yeah, I remember disallowing $P0 = say, but nothing else.
02:32 pmichaud Hinrik: the Perl 6 synopses say "eager backtracking", so that's the term I've been using.
02:38 cotto ok.  In PIR, new ar, 'FixedPMCArray' works but new ar, ['FixedPMCArray'] doesn't
02:38 pmichaud odd.  I think that's a bug.
02:39 pmichaud in which case I'd report it to trac, and I wouldn't bother trying to convert them all now.
02:39 pmichaud (because it means that many others are likely to not work also.)
02:40 pmichaud I think that's something that allison++ needs to review and respond to before going much further.
02:40 cotto ar = new ['FixedPMCArray'] works fine, so I've just been converting PIR code to use that
02:40 cotto I'll file a TT and find other things to do.
02:40 pmichaud they're actually the same, though.
02:40 pmichaud i.e.,  ar = new ['FixedPMCArray']   means exactly the same opcode as   new ar, ['FixedPMCArray']
02:40 pmichaud so there must be something else happening there.
02:43 chromatic Ugh, sounds like an IMCC bug.
02:49 cotto TT'd
02:50 dalek r35185 | cotto++ | trunk/t/pmc (9 files):
02:50 dalek : [t] more test updates
02:50 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35185
02:51 cotto I'll hold of on further test conversions until that bug is fixed.
02:56 jimmy what is the difference? ar = new ['FixedPMCArray'] && ar = new 'FixedPMCArray'
02:57 Andy joined #parrot
02:58 chromatic The former is a Key and the latter is a STRING
02:59 chromatic new_p_pc versus new_p_sc
03:02 jimmy I can't understand it completely
03:03 cotto You're a happier person if you don't completely understand Keys.
03:05 chromatic Maybe it's clearer to say that [ 'My'; 'Cool'; 'Class' ] is a three-element Key, while 'My::Cool::Class' is a single-element STRING.
03:06 chromatic If 'My::Cool::Class' representes a class name with three separate components, it's only because of the convention that '::' separates class components in a class name.
03:06 chromatic Parrot doesn't support such a convention for STRINGs used as class names.
03:06 jimmy maybe I want when I should use 'ar = new ['FixedPMCArray']' and when I should use 'ar = new 'FixedPMCArray''
03:08 * GeJ is confused, typeof can return an empty string, but isa won't match against it.
03:08 GeJ is this expected behavior?
03:09 jimmy null $I0 and then typeof $I0, it will be error too.
03:10 jimmy NULL != PMCNULL and can't typeof NULL
03:12 GeJ in this case I have: $P0 = new 'Class'; $P1 = new $P0; $S1 = typeof $P1; is($S1, '')
03:12 jimmy I don't know it is expected behavior.
03:15 jimmy cotto: I know what's Keys, but, I don't why we should use it.
03:17 cotto jimmy, docs/pdds/draft/pdd08_keys.pod (although it's in need of an update)
03:20 jimmy I can't find anything but array && hash.
03:32 * jimmy is so stupid that he can't understand them.
03:33 GeJ jimmy: IIRC according to chromatic, nobody is supposed to understand Keys.
03:41 * jimmy doesn't know how to reply it.
03:52 cotto jimmy, the pdd should give you an overview of Keys.  Some of the Key code (src/pmc/key.pmc and src/key.c) is ugly, but you don't need to look at it unless you're trying to fix something.
04:06 jimmy the pdd_08 describes what's keys only, like php. Did I forget anything?
04:08 jimmy and, ar = new ['FixedPMCArray'], if FixedPMCArray is a key, i don't know whose key it is?
04:20 dalek r35186 | pmichaud++ | branches/rvar2/languages/perl6 (3 files):
04:20 dalek : [rakudo]:  A different approach to handling our class lies --
04:20 dalek : we maintain a %?CLASSMAP hash enumerating our lies and keep on lying.
04:20 dalek : We'll get rid of these lies when it's safe to tell Parrot the truth
04:20 dalek : (i.e., when RT #43419 and/or TT #71 are fixed).
04:20 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35186
04:20 dalek r35187 | infinoid++ | trunk/languages/befunge (3 files):
04:20 dalek : [cage] Fix some trailing whitespace.
04:20 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35187
04:20 dalek r35188 | infinoid++ | trunk/languages/pheme:
04:20 dalek : [cage] Add $Id$ to pheme's new Configure.pl.  (It still needs a copyright line)
04:20 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35188
04:20 cotto jimmy, afaict ar = new ['FixedPMCArray'] creates a new key containing the single value 'FixedPMCArray' and uses it on the "new" opcode.
04:28 jimmy thanks, I think I understand now.
04:39 ChrisDavaz joined #parrot
05:00 cotto Can Keys only contain Integers or STRINGs, or can they also contain PMCs?
05:01 cotto i.e. is KEY_pmc_FLAG obselete or still used?
05:04 chromatic They can definitely contain PMCs, especially String PMCs.
05:08 Infinoid general PMC etiquette question.  if PackfileDirectory.get_pmc_keyed_str() can't find a segment of the specified name, should it throw an exception, or return PMCNULL, or what?
05:09 chromatic Depends on the segment and what you're doing with it.
05:11 Infinoid this vtable is the normal mechanism for getting segments from the packfile by name.
05:12 Infinoid failure to find it is roughly equivalent to not finding a key in a hash, I guess
05:13 Infinoid so can I return PMCNULL?  or is that a no-no in PMC-land?
05:13 dalek r35189 | pmichaud++ | branches/rvar2/languages/perl6/src/classes:
05:13 dalek : [rakudo]:  Restore => to build Pairs like it did before.
05:13 dalek : This might not be correct semantics; clarification request
05:13 dalek : sent to p6l.
05:13 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35189
05:15 chromatic PMCNULL is reasonable in general.
05:15 Infinoid ok, thanks.
05:15 chromatic I'm just thinking about what happens if you find a malformed packfile.
05:15 chromatic For example, what if the packfile has no directory or no constant table.
05:16 Infinoid maybe we should throw an exception in that case.  But this code is run way after the parsing phase.
05:16 masak joined #parrot
05:17 chromatic PMCNULL seems fine then.
05:42 On joined #parrot
05:43 On joined #parrot
06:18 jimmy the $ id: $ line in CREDITS displays ' <feff> # $Id: CREDITS 35120 2009-01-07 13:09:43Z jkeenan ' here by using vim. seems that there is a special character.
06:21 masak jimmy: 早上好!
06:22 jimmy masak: 早上好
06:26 masak jimmy: 你最后怎么样? (did I say that right?)
06:31 nopaste "infinoid" at 75.28.74.113 pasted "Implement compare() for the binary charset plugin. Is there any reason why this isn't a good idea?" (36 lines) at http://nopaste.snit.ch/15239
06:33 Infinoid (yes, it assumes the same encoding.  I'm not sure how all of that stuff works yet.)
06:34 chromatic As a first order approximation, it's better than nothing!
06:34 Infinoid I'm not sure a binary compare with an encoding other than FIXED_8 makes any sense...
06:35 Infinoid but making sure the two are equal may be more generally useful.
06:53 dalek r35190 | infinoid++ | trunk/src/charset:
06:53 dalek : Make a first stab at implementing compare() for the binary charset plugin.
06:53 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35190
06:53 dalek r35191 | infinoid++ | trunk/docs/pdds:
06:53 dalek : [pdd13] Clarify a TODO item somewhat regarding the potential use of
06:53 dalek : ManagedStruct and/or UnmanagedStruct.
06:53 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35191
06:53 dalek r35192 | infinoid++ | trunk/src/pmc (2 files):
06:53 dalek : [pdd13] packfile.pmc's class-name is "Packfile".  Rework some of the exception
06:53 dalek : strings, to avoid confusion over the capitalization.
06:53 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35192
06:54 dalek r35193 | infinoid++ | trunk (4 files):
06:54 dalek : [pdd13] Implement PackfileDirectory.get_pmc_keyed_str (fetch segment by name)
06:54 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35193
07:30 dalek r35194 | chromatic++ | branches/pdd09gc_part2 (9 files):
07:30 dalek : [GC] Refactored GC functions into files which better reflect the division of
07:30 dalek : responsibilities.  In particular:
07:30 dalek :     - functions used throughout Parrot go in src/gc/api.c
07:30 dalek :     - individual collectors have their own files
07:30 dalek :     - src/smallobject.c has become src/gc/mark_sweep.c
07:30 dalek :     - src/gc/mark_sweep.c contains functions shared between the incremental and
07:30 dalek :       generational mark and sweep collectors
07:30 dalek : There should be no functional changes visible to the rest of Parrot, assuming I
07:30 dalek : have the headers correct.
07:30 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35194
07:34 chromatic Hm, svn merge is slow.
07:35 Tene chromatic: speaking of, did you get that email about git that you asked for?
07:38 chromatic I did.
07:39 chromatic I heard Stephen Hawking.  "To bake an apple pie, you must first create the universe."
07:39 chromatic Then I played Guitar Hero.
07:39 Tene Man, I haven't played GH in ages.
07:40 chromatic I am a better and worse drummer than I remember.
07:44 cotto That'd better be a *really* good pie.
07:44 Tene It's the only pie.
07:45 masak Want pie now!
07:45 cotto pie?
07:45 purl rumour has it pie is true. or http://www.piecouncil.org/national.htm or http://london.randomness.org.uk/wiki.cgi?action=in​dex;format=map;index_type=category;index_value=Pie or http://www.austinthirdgen.org/upload/piechart.jpg or http://www.weebls-stuff.com/wab/ or http://flickr.com/photos/cowfish/3137913195/
07:49 chromatic In function ‘trace_system_areas’:
07:49 chromatic src/cpu_dep.c:67: error: ‘ASSERT_ARGS_trace_system_areas’ undeclared (first use in this function)
07:49 chromatic hmm
08:22 dalek r35195 | chromatic++ | branches (499 files):
08:22 dalek : Brought the GC refactoring branch up to date with trunk r35194.
08:22 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35195
08:36 tomyan joined #parrot
08:48 namenlos joined #parrot
08:53 iblechbot joined #parrot
09:06 Zaba joined #parrot
09:15 Zaba_ joined #parrot
09:15 chromatic msg Infinoid r35190 (binary compare) seems to have broken Rakudo's t/00-parrot/07-op-string.t.
09:15 purl Message for infinoid stored.
09:17 elmex joined #parrot
09:22 alvar joined #parrot
09:39 Zaba joined #parrot
10:42 mberends left #parrot
11:01 GeJ joined #parrot
11:07 ruoso joined #parrot
11:12 ruoso_ joined #parrot
11:14 ruoso_ joined #parrot
11:19 slavorg joined #parrot
11:22 clunker3 joined #parrot
11:41 gaz joined #parrot
11:58 donaldh joined #parrot
12:04 masak mod_lolcode currently gives 53 Google hits.
12:04 Zaba_ joined #parrot
12:04 riffraff joined #parrot
12:04 riffraff hi
12:04 purl privet, riffraff.
12:08 masak pmichaud: are there examples somewhere of PIR actions and assertions in Rakudo regexes?
12:10 jonathan masak: {{ PIR HERE }} and <?{{ PIR HERE }}> should be the syntax
12:10 masak jonathan: excellent, thank you.
12:15 masak I have an OpenID, but I still can't log in to the Perl 6 wiki at www.perlfoundation.org -- how do I know what my OpenID URL is? I've never needed it for other pages.
12:15 Zaba joined #parrot
12:15 moritz masak: what's your openid-provider?
12:16 masak moritz: myOpenID
12:16 purl myOpenID is pretty easy, but it *feels* confusing
12:17 masak moritz: thanks, that helped! :)
12:17 moritz masak: you're welcome
12:17 moritz ususually it's masak.myopenid/ or myopenid/masak
12:18 masak it was http://carl.masak.myopenid.com/ -- I found out by Gmail-searching for 'myopenid'
12:19 moritz :)
12:23 Zaba_ joined #parrot
12:24 riffraff how do I throw an exception in pir? I' grepping the sources but I'm finding only "rethrow"
12:25 moritz riffraff: take a look at languages/perl6/src/builtins/control.pir
12:26 moritz riffraff: and search for sub '!FAIL'
12:26 riffraff ah I see
12:26 riffraff thanks
12:26 moritz no, sub die
12:26 riffraff I was looking at src/classes/Failure
12:26 moritz 'throw ex', it seems
12:27 riffraff yes, but with an exception pmc
12:27 riffraff I assumed I could throw anything so I was trying with a string and got "no opcode", should have thought better
12:27 riffraff thanks again
12:33 jonathan riffraff: Use "die" opcode to create an exception from a string.
12:33 riffraff oh, useful, thank you
13:09 masak purl: check again?
13:09 purl masak: no idea
13:10 masak purl: could you check again?
13:10 purl bugger all, i dunno, masak
13:18 Wknight8111 joined #parrot
13:26 Coke from yesterday at 6pm eastern; what is the difference between << new $P0, ['BigInt'] >> and << $P0 = new ['BigInt'] >> ? isn't the assignment syntax just PIR sugar? (Or is there sugar for new in the way of the sugar for the assignment syntax?)
13:28 jonathan I'd expect the two to be identical.
13:28 jonathan If they're not, IMO it's a bug.
13:33 Whiteknight yeah, the two should almost definitely be the same
13:35 dalek r35196 | rurban++ | trunk/ext/SQLite3:
13:35 dalek : Fix implib names for cygwin and mingw.
13:35 dalek : Remove unneeded macros.
13:35 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35196
13:36 pmichaud agreed, they should be the same.  I think particle was misremembering some other changes being made to PIR.
13:42 jonathan pmichaud: OH HAI
13:42 pmichaud good morning
13:42 jonathan See you got us lying to ourselves properly again. ;-)
13:42 pmichaud yes.
13:43 pmichaud and now have enumerated the lies we tell :)
13:43 jonathan Did that pairs fix deal with some of the failing S29 tests?
13:43 pmichaud yes.
13:43 jonathan Great.
13:43 pmichaud well, sort of.
13:43 pmichaud I now have a question.
13:43 jonathan Yes, I saw the p6l post.
13:43 jonathan Well, skimmed it...didn't think it over much yet.
13:43 pmichaud this is another question I have, though
13:44 pmichaud my $x = 100;   my $p = Pair.new( :key<something>, :value($x) );  $p.value++;   #  $x changed?
13:44 pmichaud more generally, do the attributes to .new  cause assignment or binding?
13:44 pmichaud (because the trunk version of rakudo currently does binding)
13:45 pmichaud perl6:  my $x = 100;   my $p = Pair.new( :key<something>, :value($x) );  $p.value++;  say $x;
13:45 polyglotbot OUTPUT[100␤]
13:45 pmichaud hmmm
13:45 pmichaud okay, that's weird.
13:45 pmichaud perl6:  my $x = 100;   my $p = ( something => $x );  $p.value++;  say $x;
13:45 polyglotbot OUTPUT[100␤]
13:46 jonathan perl6: class Foo { has Int $.x }; say Foo.new(x => "OH HAI").x
13:46 polyglotbot OUTPUT[OH HAI␤]
13:46 jonathan Not going through infix:= then, or we'd get a type check error there.
13:46 jonathan perl6: class Foo { has Int $.x }; Foo.new.x = "OH HAI";
13:46 polyglotbot OUTPUT[Cannot assign to readonly variable.␤current instr.: 'die' pc 14950 (src/builtins/control.pir:204)␤called from Sub 'infix:=' pc 13316 (src/builtins/assign.pir:24)␤called from Sub '_block14' pc 98 (EVAL_12:47)␤called from Sub '!UNIT_START' pc 16311 (src/builtins/guts.pir:327)␤called from Sub
13:46 polyglotbot ..'parrot;PCT;HLLCompiler;eval' pc 950 (src/PCT/HLL...
13:47 jonathan perl6: class Foo { has Int $.x is rw }; Foo.new.x = "OH HAI";
13:47 polyglotbot OUTPUT[Type mismatch in assignment.␤current instr.: 'die' pc 14950 (src/builtins/control.pir:204)␤called from Sub 'infix:=' pc 13352 (src/builtins/assign.pir:32)␤called from Sub '_block14' pc 98 (EVAL_12:47)␤called from Sub '!UNIT_START' pc 16311 (src/builtins/guts.pir:327)␤called from Sub
13:47 polyglotbot ..'parrot;PCT;HLLCompiler;eval' pc 950 (src/PCT/HLLCompile...
13:47 pmichaud perl6:  my $x = 100;   class Foo { has $.y; method set { $.y = 'xyz' } }; my $obj = Foo.new( y => $x );  $obj.set;  say $x;
13:47 polyglotbot OUTPUT[Cannot assign to readonly variable.␤current instr.: 'die' pc 14950 (src/builtins/control.pir:204)␤called from Sub 'infix:=' pc 13316 (src/builtins/assign.pir:24)␤called from Sub 'parrot;Foo;set' pc 315 (EVAL_12:126)␤called from Sub '_block14' pc 129 (EVAL_12:59)␤called from Sub '!UNIT_START'
13:47 polyglotbot ..pc 16311 (src/builtins/guts.pir:327)␤called fro...
13:47 pmichaud perl6:  my $x = 100;   class Foo { has $!y; method set { $!y = 'xyz' } }; my $obj = Foo.new( y => $x );  $obj.set;  say $x;
13:47 jonathan That's another question. ;-)
13:47 polyglotbot OUTPUT[xyz␤]
13:47 pmichaud that's my real question, there.
13:48 jonathan Ah.
13:48 pmichaud (it doesn't work this way in rvar, but I'm wondering "how should it work"?)
13:48 jonathan I *think* assignment.
13:48 pmichaud I'm pretty sure the attribute should not be bound to the argument.
13:48 jonathan Aye. Feels wrong.
13:48 pmichaud but that was the source of the pairs bug I ran into
13:48 pmichaud because we were using   =>  to create Pairs
13:49 pmichaud which in turn was calling   Pair.new( key => ..., value => ...)
13:49 pmichaud which in trunk does a binding
13:49 pmichaud but in rvar2 it's now doing an assignment
13:49 pmichaud which means the list of Pairs is not bound to the original values
13:49 jonathan *nod*
13:49 pmichaud which is where I said "okay, what _should_ this be doing?" and bumped it up to p6l.  :-)
13:50 jonathan I think for classes in general we should assign not bind.
13:50 jonathan Pairs may or may not be a special case.
13:50 pmichaud I agree, assign not bind.   But then that begs the question of what Pairs should do.
13:50 jonathan Well, see what p6l says. :-)
13:50 pmichaud Personally, I would be surprised if    my $pair = (key => $x);     meant that we could then modify $x via the Pair
13:51 moritz same here
13:54 pmichaud anyway, I've gone ahead and set rvar2 to use the same Pair semantics as trunk, so that we can pass tests until we know what the real answers are.
13:54 jonathan pmichaud: Got Slovak lesson now - back in 1h30
13:54 pmichaud okay, that works fine for me.
13:54 pmichaud enjoy
13:54 jonathan Please fix the rest of rvar2 fails ;-)
13:54 pmichaud that's my only real task for the day.
13:55 jonathan w00t! :-)
13:55 jonathan I'll come and help later on. :-)
13:55 pmichaud and Paula said she'd try to be less interruptive
13:55 pmichaud (which she always does anyway)
14:10 Andy joined #parrot
14:13 Zaba joined #parrot
14:21 iblechbot joined #parrot
14:30 Lorn joined #parrot
14:34 Whiteknight does anybody use morph?
14:35 Whiteknight and a follow-up question: would anybody be interested in the ability to override morph in PIR?
14:36 pmichaud I've been thinking that it would be really nice to be able to use morph to change the type of a Sub PMC
14:36 Whiteknight I'm trying to fix vtable overrides of morph, I'm just sort of looking for some use cases to justify it
14:37 pmichaud I'm not entirely certain what niche morph is intended to fill.
14:38 pmichaud but I do know that at some point I need the ability to change the type of a Sub PMC to a different type
14:39 Whiteknight what I'm wondering is how exactly an overridden morph will work
14:39 pmichaud I don't know.
14:39 Whiteknight will we say "self = new 'OtherType'"?
14:40 Coke Infinoid: thanks for updating the configure.pl; i took the original one from tcl, which doesn't have same strictures.
14:40 pmichaud that would be something different.
14:40 pmichaud one would have to probably use the 'copy' opcode
14:40 pmichaud or maybe 'assign'
14:40 alvar joined #parrot
14:40 weechat_user joined #parrot
14:40 Coke Whiteknight: same way an overridden morph works in PMCs?
14:40 Whiteknight well, however it happens. Can you fundamentaly change "self" in a vtable override?
14:40 pmichaud Whiteknight: sure, Rakudo does it.
14:41 pmichaud you just can't do it with a simple 'set'
14:41 Whiteknight okay
14:50 gryphon joined #parrot
15:10 masak masak?
15:10 purl it has been said that masak is _not_ my best friend! or the cause of much confusion for purl or my worst nemesis or the anti-purl or out to get you or greatly tired of purl
15:10 dalek r35197 | pmichaud++ | trunk/languages/perl6/docs:
15:10 dalek : [rakudo]: spectest-progress.csv update: 279 files, 6175 passing, 0 failing
15:10 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35197
15:11 Andy joined #parrot
15:15 Whiteknight I take it that masak and purl don't get along well?
15:16 moritz masak is *the* purl hater in #parrot
15:16 moritz masak?
15:16 purl i heard masak was _not_ my best friend! or the cause of much confusion for purl or my worst nemesis or the anti-purl or out to get you or greatly tired of purl
15:16 moritz it didn't capture that :-)
15:16 kj joined #parrot
15:17 pmichaud masak is also *the* purl hater in #parrot
15:17 purl okay, pmichaud.
15:17 pmichaud it captured that.  :-)
15:17 masak thanks.
15:17 Whiteknight whiteknight?
15:17 pmichaud purl, whiteknight?
15:17 purl pmichaud: bugger all, i dunno
15:17 Whiteknight Whiteknight?
15:17 Whiteknight wknight8111?
15:17 purl wknight8111 is, like, going to find some spare time this week and hack in some better error messages into PCT or seeing A LOT of warnings about incompatible type conversions
15:18 Whiteknight haha, neither of those are accurate anymore
15:18 Whiteknight purl forget wknight8111
15:18 purl Whiteknight: I forgot wknight8111
15:18 moritz moritz?
15:18 purl somebody said moritz was Moritz Lenz, mailto:moritz@faui2k3.org
15:19 moritz how very boring
15:19 dalek r35198 | Whiteknight++ | branches/jit_h_files/src/jit/i386 (2 files):
15:19 dalek : [jit_h_files] move a few more functions over
15:19 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35198
15:21 particle moritz is also very boring
15:21 purl okay, particle.
15:21 particle better? ;)
15:21 moritz sure
15:23 masak particle?
15:23 purl mailto:jerry.gay@gmail.com
15:23 masak oh, and _that's_ not boring? :P
15:25 moritz purl: particle is also thinking that others are boring
15:25 purl okay, moritz.
15:25 moritz :-)
15:27 jonathan back
15:28 jonathan purl, jonathan
15:28 purl you are mailto:jnthn@jnthn.net or trying to put together a grant application.
15:29 jonathan It'll probably be true at some point in the future...
15:29 pmichaud big set of commits coming to rvar2, as soon as I finish some tests
15:32 jonathan pmichaud: Happily, I have no local diffs. :-)
15:32 dalek r35199 | Whiteknight++ | branches/jit_h_files/src/jit/i386 (2 files):
15:32 dalek : [jit_h_files] another handful of functions
15:32 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35199
15:33 AndyA joined #parrot
15:41 dalek r35200 | pmichaud++ | branches/rvar2/src/pmc:
15:41 dalek : [core]:  Improve 'key' method on CodeString PMC.
15:41 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35200
15:41 dalek r35201 | pmichaud++ | branches/rvar2/compilers/pge/PGE:
15:41 dalek : [pge]:  Improve handling of 'namespace' and 'grammar' options.
15:41 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35201
15:42 dalek r35202 | pmichaud++ | branches/rvar2/compilers/pct/src/POST:
15:42 dalek : [pct]:  Improve handling of namespaces, especially for hll_pir.
15:42 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35202
15:42 dalek r35203 | pmichaud++ | branches/rvar2/t/pmc:
15:42 dalek : [core]: Some additional tests for 'key' method of CodeString PMC.
15:42 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35203
15:42 davidfetter joined #parrot
15:42 dalek r35204 | pmichaud++ | branches/rvar2/languages/perl6/src (2 files):
15:42 dalek : [rakudo]:  Make sure grammars are in correct namespace, subclass of Grammar.
15:42 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35204
15:44 pmichaud time for another spectest run to see what's left.
15:44 masak looks like somebody had fun offline.
15:45 pmichaud I tend to make sure changes to different major components are committed separately.
15:45 pmichaud makes them easier to investigate later, and to back out if needed.
15:45 masak sounds sane.
15:46 masak atomic commits FTW.
15:51 jonathan pmichaud: spectest'ing here too
15:53 pmichaud latest commits seem to have resolved the S05 fails.
15:55 jonathan pmichaud: is make test broken for you?
15:55 pmichaud might be.
15:55 jonathan 'tis for me.
15:55 donaldh Is the purpose of the Pointer PMC to hold an unmanaged pointer?
15:55 pmichaud jonathan: yes, broken here also.
15:57 moritz t/00-parrot/07-op-string.t is also broken in trunk
15:57 moritz oh, but not in the branch :)
15:58 Infinoid donaldh: yes, where (if I understand correctly) "unmanaged" means "not subject to GC"
15:58 donaldh Infinoid: yes, that's what I need.
15:58 donaldh I think we spoke about this before. I'm pretty sure that mark() should do nothing then. Or not be overridden?
15:59 jonathan pmichaud: That's odd.
15:59 jonathan Oh! I know why.
15:59 jonathan My fault.
15:59 Infinoid donaldh: mark() is nice for the case when the struct or whatever your pointing to is not GC'd, but it contains pointers to other things which are
15:59 Infinoid s/your/you're/
15:59 jonathan pmichaud: Gotta sort out some boring web scripts for someone, and then I'll fix those and look at what remains failing.
16:00 pmichaud okay.  they don't seem to be affecting spectests significantly.
16:00 jonathan No, they won't.
16:00 pmichaud yay, all of the S05 tests pass in rvar2.
16:00 jonathan It's just the name changes to where we stick types for MMD.
16:00 pmichaud I'll work on placeholders in S06, I think.
16:00 jonathan I didn't update the tests.
16:01 jonathan Yes, placeholders would be a good fix.
16:02 donaldh Infinoid: so Pointer.mark() is broken because PMC_struct_val(SELF) is always set (to PMC_NULL?) so it always corrupts the data, or tries to dereference at least.
16:03 donaldh Question is should it do anything at all ?
16:04 dalek r35205 | Whiteknight++ | branches/jit_h_files/src/jit/i386 (2 files):
16:04 dalek : [jit_h_files] a few more functions
16:04 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35205
16:04 Infinoid oh, I see.  Pointer.mark() is only checking it against NULL, not PMCNULL
16:05 donaldh Yup. Is the intention that you can set a custom mark function as a struct val?
16:05 Infinoid yeah.  if it's been given a custom mark function (and PMC_struct_val is where we put that), then it should call it
16:05 jonathan pmichaud: Looking good. No S05 fails, and only one S29
16:05 Infinoid sounds like its just the NULL check that's off
16:05 donaldh k, I can fix that.
16:05 pmichaud excellent.
16:06 Infinoid (this used to work.  is some new PMC setting it to PMCNULL instead of NULL?)
16:06 riffraff joined #parrot
16:06 jonathan If you fix t\spec\S06-signature\code.t it would probably win back an integration tests too.
16:06 pmichaud okay.
16:06 pmichaud after placeholders.
16:06 jonathan Cool.
16:10 particle jonathan: did you get a new pc?
16:10 particle or am i wrong in thinking your tests run quicker now
16:11 pmichaud or just perhaps rakudo and parrot are faster now :-)
16:11 Coke implements the same type of solutions in a different language for a different client.
16:12 ruoso joined #parrot
16:12 particle pmichaud: i think i'd notice that here, too :P
16:12 donaldh Infinoid: all PMCs seem to be initialised with PMCNULL in these fields.
16:15 jonathan particle: Nope, same old.
16:15 jonathan particle: My desktop hasn't been that bad on 'em.
16:15 jonathan It's my laptop that is horribly slow.
16:15 particle ah, that explains it :)
16:16 jonathan I use my laptop infrequently enough that it doesn't ever bother me enough to spend money on a new one.
16:16 jonathan "Hmm...buy a new laptop which I'll use a couple of weeks a year...or go on a week's vacation..."
16:16 jonathan I'll have to at some point, but I'm not really the shiny-new-stuff-for-the-sake-of-it kind. :-)
16:20 particle boy, those annotations would really help in debugging this stuff
16:20 particle Null PMC access in get_string()
16:20 particle current instr.: '!meta_compose' pc 16757 (src\builtins\guts.pir:444)
16:20 particle called from Sub 'parrot;Str;_block1113' pc 2277 (EVAL_21:483)
16:20 particle how do i find _block1113's perl 6 code?
16:21 jonathan particle: I fear you don't, because that's initialization code.
16:21 particle ayep.
16:21 pmichaud --target=pir, search for _block1113
16:21 jonathan particle: --target=pir it
16:21 particle ok
16:21 Infinoid cool, I think I found a rakudo bug
16:21 particle i'm looking at S02-...
16:22 Infinoid string operators like ~| and ~&= appear to result in a STRING whose charset is binary, not ascii
16:22 pmichaud rakudo doesn't distinguish binary from other strings yet.
16:22 Infinoid until yesterday (r35190), compare on binary strings always returned 0 (true, equal)
16:23 Infinoid that's fine, parrot should be able to handle it
16:23 Infinoid but now that binary compare actually compares, t/00-parrot/07-op-string.t fails a couple of tests (14 and 15)
16:23 Infinoid I've set a breakpoint on the compare function, and the strings its being fed are very obviously wrong
16:23 Infinoid s/wrong/different/
16:24 Infinoid test 14 in that file, for example, seems to rely on " " being equal to "A"
16:24 Infinoid trouble is, I don't know enough perl6 to know what's supposed to be happening here
16:25 pmichaud Infinoid: no, it relies on   'a' & ' '   being 'A'
16:25 pmichaud which I think might be wrong.
16:26 Infinoid at the point the comparison function is run, $s contains " "
16:26 Infinoid whether it should or not is the bit I don't know
16:26 pmichaud thinking.
16:26 purl Oooh he is soooo fine!!!
16:26 particle perl: ord('a')
16:26 pmichaud 'a'  is 01100001
16:26 particle :)
16:26 pmichaud ' '  is 00100000
16:26 pmichaud so the result should be ' '
16:26 pmichaud so I think the test is wrong.
16:27 Infinoid great, I can fix that
16:27 pmichaud Infinoid++
16:27 Infinoid and I'm guessing test 15 should be a string of spaces, for the same reason?
16:27 pmichaud yes.
16:28 Infinoid ok, thanks for helping.  I grepped S03 for "~&=" but didn't find anything
16:28 dalek r35206 | pmichaud++ | branches/rvar2/languages/perl6/src/parser:
16:28 dalek : [rakudo]:  Remove some more helper subs that we no longer use.
16:28 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35206
16:28 donaldh Infinoid: weird, in my testcase the Pointer pmc's struct val ends up being a Pointer pmc, not PMCNULL
16:29 particle Infinoid: in the future, try grepping for the thing without the trailing =
16:30 Infinoid ah, ok.
16:32 Infinoid donaldh: a Pointer pointing to a Pointer PMC instead of a mark function?
16:33 donaldh Yup, something like that.
16:33 Infinoid beautiful.  yeah, that sounds like a bug
16:34 dalek r35207 | infinoid++ | trunk/languages/perl6/t/00-parrot:
16:34 dalek : [rakudo] Fix a couple of broken tests uncovered by r35190 (implementing the binary compare function).
16:34 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35207
16:41 particle class Str is also { method id() { self } } # Null PMC access in get_string(); current instr.: '!meta_compose' pc 16757 (src\builtins\guts.pir:444)
16:41 particle pmichaud, jonathan: are one of you working on this, or should i jump in?
16:41 pmichaud you can jump in if you want :-)
16:41 particle now i've got to figure out how...
16:42 pmichaud start by looking at the PIR that is generated for that line
16:42 pmichaud especially the call to !meta_compose
16:42 particle i have it now
16:42 pmichaud actually, I suspect the problem is in meta_compose itself.
16:42 pmichaud it might not know how to deal with is_also
16:42 particle or meta_create
16:42 pmichaud actually, I'm certain that's the case.
16:43 particle ok, i'll look there. great.
16:43 pmichaud that's a bug I just introduced, I think.
16:43 particle it's the first failure i saw in the test suite, in S02-...
16:43 pmichaud $P0 = getprop 'pkgtype', metaclass
16:44 particle figured i'd take a stab at fixing it
16:44 particle yep, that's the line
16:44 pmichaud need to deal with the case where 'pkgtype' isn't set.
16:44 particle ok then.
16:44 pmichaud if $P0 comes back null, skip the 'register' line (because the class is already registered)
16:44 kj joined #parrot
16:44 pmichaud i.e., skip beyond the call to .'register'
16:45 pmichaud alternately, change !meta_create so that it always sets 'pkgtype' on class
16:45 pmichaud but I think I prefer the former solution
16:45 particle i'll rebuild as soon as my original test run finishes
16:46 pmichaud (we shouldn't allow a declaration to change a class' pkgtype)
16:46 particle it's on S29-num now, so close.
16:46 pmichaud (don't need to trap for that yet)
16:49 hercynium joined #parrot
16:52 dalek r35208 | Whiteknight++ | branches/jit_h_files/src/jit/i386 (2 files):
16:52 dalek : [jit_h_files] moved the remainder of the functions over to the .c file.
16:52 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35208
16:52 slavorgn joined #parrot
16:58 * particle downloads windows 7 beta x64
16:59 * donaldh wonders if particle is mad, or just very very brave
16:59 particle it's just another virtual machine, so i'll have 15 total.
17:00 particle interested to see how parrot builds there, though :)
17:00 * Infinoid guesses it might fail a test or two :)
17:02 PerlJam particle++ pioneerism is good
17:04 * pmichaud shoots arrows at particle's back.  :-P
17:04 pmichaud okay, they're not really arrows.  More like "Nerf darts", of which we have an abundance around here lately.
17:04 particle i've been wondering why you're hacking and not building something out of legos this season
17:05 pmichaud oh, I'm doing legos also.
17:05 dalek r35209 | particle++ | branches/rvar2/languages/perl6/src/builtins:
17:05 dalek : [rakudo] don't try to register already registered classes; +52 tests
17:05 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35209
17:05 pmichaud Matthew got a couple of nice Lego sets for christmas.  We built one quickly -- we're in the midst of building another.
17:05 dalek r35210 | Whiteknight++ | branches/jit_h_files/src/jit/i386 (2 files):
17:05 dalek : [jit_h_files] Use the header file directly, kill duplicate definitions, some random cleanups
17:05 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35210
17:05 pmichaud but he has homework to do in the evenings so Lego-building time is limited.
17:06 * Whiteknight LOVES legos
17:07 * moritz to
17:07 pmichaud I need to take more photos of our collection, which has grown quite a bit.
17:07 Whiteknight I had so many as a kid it was a public menace
17:07 moritz pmichaud: does the ~ thing in grammars work in rakudo?
17:07 pmichaud moritz: it should.
17:07 pmichaud moritz: same engine.
17:07 moritz ah, "needs tests" status ;-)
17:08 dalek r35211 | pmichaud++ | branches/rvar2/languages/perl6/src/parser:
17:08 dalek : [rakudo]:  A bit more signature refactoring, placeholders generate a
17:08 dalek : proper Signature object.
17:08 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35211
17:08 pmichaud PGE has some tests for it, but Rakudo doesn't.
17:08 pmichaud okay, let's see how much is cleared up by r35211.
17:10 particle pmichaud: sub f{*%p) { my %p; } # should you get a redeclaration error?
17:10 particle or should it be a warning?
17:11 pmichaud particle: jonathan and I both think that should be an error or warning.
17:11 particle me too, but which?
17:11 * particle consults S02
17:11 moritz my $x; my $x; # is a warning
17:12 PerlJam aren't redeclarations a warning in the absence of a pragma to fatalize them?
17:12 PerlJam I seem to recall TimToady saying something like that.
17:12 moritz it would make sense to apply the same for signatures/lexicals
17:12 pmichaud or in the absence of a 'proto'
17:12 PerlJam right.
17:12 pmichaud I don't have a convenient warn-from-compiler mechanism yet.
17:12 particle ok, then. now i know what to look for to make a fix
17:12 pmichaud so I chose to fatal them for now.
17:12 particle ah. well, we have a test that does that, not sure why....
17:12 pmichaud particle: if you want to try to change the "Redeclare..." error message to be a warning, that'd be fine.
17:13 pmichaud might be as simple as calling warn().
17:13 particle yep, trying now
17:13 Whiteknight pmichaud, what do you mean a "warn from compiler mechanism"? Would such a beast be hard to implement?
17:14 pmichaud Whiteknight: right now compiler error messages in Rakudo are generated by calling .panic on the match object.
17:14 pmichaud we don't have a .warn method .
17:14 pmichaud not hard to implement, more a design decision about how/where to do it.
17:14 pmichaud if calling warn(...) works, then I say to use that :-)
17:15 Whiteknight okay, because I'm always looking for little projects to do
17:15 Whiteknight I'm loaded up on big projects :)
17:15 pmichaud I'd really like to see TT #8 fixed.  :-)
17:19 particle pmichaud: why do i see getprop foo, 'bar', baz and not foo = getprop 'bar', baz in rakudo code?
17:19 pmichaud particle: I don't understand the question.
17:19 particle pasm syntax rather than pir syntax
17:19 jonathan particle: Both are valid PIR.
17:19 pmichaud pasm opcode syntax is pir opcode syntax
17:20 particle yes, do you have a style preference?
17:20 pmichaud whatever style is more readable.
17:20 jonathan Whatever keys the fingers hit.
17:20 jonathan ;-0
17:20 pmichaud getprop is odd because of the way it orders arguments, however.
17:20 particle ok. i find C<foo = getprop> more readable
17:20 pmichaud (relative to setprop)
17:20 jonathan We use that form for getprop consistently.
17:20 jonathan I think.
17:20 Theory joined #parrot
17:20 pmichaud I might've used the non-PIR form
17:20 jonathan pmichaud: Yes, the parameter ordering on that op trips me up all over.
17:21 jonathan I think I've tended to use the non-PIR form.
17:21 jonathan Dunno why.
17:21 particle we need that opcode review done
17:21 particle getprop is an ugly op :(
17:21 jonathan Changing that ops operands around would be a deprecation cycle. :-(
17:21 pmichaud well, the opcode review was only going to suggest opcodes for deprecation -- I wasn't going to change any existing opcode semantics that we were going to keep.
17:21 particle yes, and this is our last chance for deprecation before march
17:21 jonathan I don't think it's so past we gotta change it.
17:21 pmichaud jonathan: we could just introduce a new opcode with the correct sequence
17:21 jonathan If that were our biggest problem, well, I'd be happy.
17:22 jonathan pmichaud: Yes, true. But we'd want to deprecate the old too.
17:22 pmichaud we can leave the old one around for a few cycles if needed.
17:22 particle sure, like get_prop :)
17:22 pmichaud I agree with jonathan -- it's waaaaaay down my list of things that bug me at the moment.
17:22 particle there's something to opcode name consistency
17:23 pmichaud please, not get_prop
17:23 particle sure, just checking, since it's been a while
17:23 particle pmichaud: i'm not making any design decisions here
17:23 particle just pointing out opcode inconsistencies that bother me
17:24 pmichaud okay, looks like placeholders are working again.
17:25 jonathan pmichaud++
17:25 jonathan particle: Which bug is it you're looking at tracking down, so we don't dupe effort?
17:25 pmichaud the list is definitely getting shorter.
17:25 pmichaud okay, time for lunch for me.
17:25 particle S04-declarations/my.rakudo aborted 47 test(s)
17:25 pmichaud particle: if you just change that to be a warning, then it should pass.
17:25 pmichaud (a redeclaration warning, that is)
17:26 particle no, there are other bugs in that file
17:26 dalek r35212 | Whiteknight++ | branches/jit_h_files/src/jit/i386:
17:26 dalek : [jit_h_files] various cleanups and fixes
17:26 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35212
17:26 tomyan left #parrot
17:26 particle Null PMC access in getprop()
17:26 particle current instr.: 'infix:=' pc 13475 (src\builtins\assign.pir:21)
17:26 particle getprop ro, 'readonly', cont
17:27 particle so cont is null
17:28 pmichaud oh
17:28 pmichaud in addition to changing the .panic to a null, you have to make sure the rest of the variable_declarator function isn't run.
17:28 particle ah, .panic to warn(), and gotcha!
17:29 pmichaud although that's not entirely enough either
17:29 pmichaud we have to somehow tell scope_declarator that this is a redeclaration, and not to handle it.
17:30 pmichaud perhaps just avoiding the .isdecl(1) call would be sufficient
17:30 pmichaud i.e., put $var.isdecl(1) as an else clause to the 'if'
17:30 particle i'll try an else clause
17:30 particle :)
17:30 pmichaud internally the problem is that the PAST is resulting in two .lex statements in PIR
17:31 pmichaud because the same lexical is being :isdecl'd twice.
17:31 pmichaud someday I hope to fix PAST::Compiler to detect and route around that.
17:31 pmichaud (currently PAST::Compiler considers re-definition as undefined and likely broken behavior)
17:31 particle a lexical registry?
17:32 pmichaud more generally there's going to be an internal registry
17:32 particle sure, with different types to track
17:32 pmichaud in particular, PAST::Compiler will be able to figure out when a given PAST::Var node is already associated with a register and re-use that register
17:32 pmichaud instead of doing a separate fetch.
17:33 particle else isn't enouph
17:33 pmichaud yeah, we'll need to flag the variable as a redeclaration somehow so that scope_declarator doesn't try reprocessing it.
17:34 pmichaud that's why I was calling .panic, I guess :-)
17:35 pmichaud anyway, lunchtime for me.
17:36 pmichaud (fwiw, I'm willing to temporarily regress on the my.t and multiple.t tests if it allows us to merge back to trunk.
17:36 * jonathan fixes make test
17:37 particle jonathan: did you see infinoid++'s commits to trunk?
17:37 dalek r35213 | jonathan++ | branches/rvar2/languages/perl6/t/pmc (3 files):
17:37 dalek : [rakudo] Update Perl6MultiSub PMC tests.
17:37 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35213
17:37 Whiteknight yay! I think I've finally finished with this damn branch
17:37 dalek r35214 | Whiteknight++ | branches/jit_h_files/src/jit/i386:
17:37 dalek : [jit_h_files] cleanups: codingstd and whitespace fixes for consistency
17:37 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35214
17:37 jonathan particle: Which ones?
17:37 particle for rakudo's make test
17:37 jonathan No, I missed those...
17:38 particle http://www.parrotvm.org/svn​/parrot/revision?rev=35207
17:38 particle that might be the only relevant commit
17:39 jonathan oh, nice
17:39 jonathan Infinoid++
17:40 jonathan OK, why does we epic fail S12-class/anonymous.t...
17:40 jonathan Segfault. Epic indeed.
17:42 jonathan ...in the COW strings code. :-|
17:44 particle got lexicals problems, too
17:45 dalek r35215 | jonathan++ | branches/rvar2/src/pmc:
17:45 dalek : [core] Add missing null check (string_copy is marked as not expecting a NULL).
17:45 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35215
17:46 pdcawley joined #parrot
17:46 jonathan That stops us segfaulting, but of course doesn't fix the test.
17:48 jonathan particle: Really? Ouch.
17:48 particle my $d = '';
17:48 particle class Int is also { method some_meth_1 { $d = $d ~ self } };
17:48 particle for 0 .. 5 { .some_meth_1 };
17:48 particle # Lexical '$d' not found
17:51 jonathan particle: Oh, that's not new.
17:51 purl so bite me
17:51 jonathan particle: We haz that in trunk also.
17:51 particle oh?
17:51 jonathan Interaction between :init :load (or one of 'em) and :outer, IIRC.
17:51 jonathan As in, bad interaction.
17:51 particle so it seems
17:52 particle .sub "some_meth_1"  :subid("13") :method :outer("12")
17:52 particle .sub "_block22" :load :init :subid("12")
17:52 jonathan Right. We don't emit a :outer there as it triggers parrotbug.
17:53 particle .lex '$d' is in :subid("11")
17:53 particle grr.
17:53 particle however, i do see
17:53 particle .sub "" :load :init :subid("post16") :outer("10")
17:53 particle in the same file
17:53 particle which has :load, :init, and :outer
17:53 jonathan Oh, hmm.
18:01 alvar joined #parrot
18:01 donaldh joined #parrot
18:03 donaldh wahoo. I've finally tracked down my elusive bug.
18:03 Whiteknight donaldh++
18:04 donaldh All PMCs returned from the free pool have their _struct_val pointing back into the free pool.
18:04 nopaste "donaldh" at 144.254.91.104 pasted "PATCH: zero the _struct_val pointer before returning an object from the free pool" (12 lines) at http://nopaste.snit.ch/15241
18:07 Infinoid as discussed in #ps, I've just created TT #138 to request moving to git when we switch from svn.perl.org to git.  If anyone has an opinion (or even just +1 or -1), please comment.
18:08 PerlJam assuming s:2nd/git/parrot.org/  :-)   +1 from me
18:09 * donaldh needs to start using git
18:09 Infinoid though, even if the main repository isn't using git, some sort of bidirectional mirror/gateway would get a +1 for me.
18:09 * jonathan hasn't tried git yet
18:10 PerlJam jonathan: understanding that there this thing called the "index"  that's a staging area for commits is the biggest hurdle IMHO.  The rest is just knowing that there are git-commands for everything
18:10 PerlJam (some people around here might find git-bisect very useful for instance  :)
18:11 Coke (moving to git) so by that request, svn would no longer be supported?
18:11 donaldh Can someone look at my nopasted patch?
18:11 Tene Infinoid: +1
18:11 purl 1
18:12 Infinoid Coke: I don't know how the details would work out yet.  It's possible that we can do some gatewaying, one way or the other
18:13 jonathan PerlJam: How is support on various platforms?
18:13 donaldh I can submit a bug but it might be worth patching sooner than later.
18:13 jonathan PerlJam: Win32 support is my main concern.
18:13 jonathan donaldh: looking
18:13 PerlJam jonathan: I figured you were going to say that ... I've never used it on windows.
18:14 Tene jonathan: I'm told that win32 support is just fine these days
18:14 jonathan donaldh: Makes sense.
18:14 jonathan donaldh: However, why 0 and not NULL?
18:14 Tene I've never used it myself, as I have no win32 boxes.
18:14 jonathan 0 may cause warnings?
18:14 donaldh jonathan: sure, is that the codingstd?
18:14 jonathan It's a pointer, so I'd expect to set it to NULL.
18:15 donaldh np
18:15 jonathan But that aside, the patch makes sense and it wouldn't surprise me if it helps with bugs other than that you were searching for, or avoids them in the future.
18:17 dalek r35216 | jonathan++ | branches/rvar2/languages/perl6/src (2 files):
18:17 dalek : [rakudo] Mostly fix anonymous classes; only problem now is that .WHAT doesn't hand back the empty string, but should be easily fixable. 9/10 tests pass.
18:17 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35216
18:19 donaldh Fantastic. I'm a step closer to a reliable rakudo / sqlite / mod_parrot app.
18:19 Infinoid donaldh++
18:20 * donaldh wasn't expecting to become a parrot internals hacker along the way.
18:20 jonathan donaldh: You have my sympathies. ;-)
18:21 donaldh jonathan: http://code.google.com/p/msysgit/
18:22 dalek r35217 | rurban++ | branches/pdd30install_stage4/t/pmc:
18:22 dalek : TT#121 also on cygwin. same as trunk.
18:22 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35217
18:25 Tene I really wish someone could help me with the loadlib/HLL bug I posted about.  I'm not looking forward to diving into that part of the internals.
18:25 jonathan Tene: Nor is whoever you might sucker into helping you, I suspect. :-)
18:26 Tene Well, yeah, but obviously my feelings count more than anyone else's.
18:27 jonathan Tene: My main cycles at the moment are going on rvar branch, since I can't do much else on Rakudo until it's done.
18:27 jonathan Tene: But once that's merged, I'll see if I can come up with anything.
18:28 moritz (make -j)++
18:28 Whiteknight Tene, what's the ticket number?
18:28 Tene jonathan: that's fine.  I'm supposed to be spending cycles on $realjob right now anyway.  :)
18:28 Whiteknight I've got a tuit or twoits to spare today
18:28 Tene Whiteknight: I haven't gotten it into a ticket yet.  Web interfaces bug me.
18:29 Tene "load_bytecode, loadlib, and HLL" on parrot-dev
18:29 Tene if you want to post it to a ticket, that would be great.
18:29 Whiteknight great...now I have to go digging through my email inbox
18:29 * Whiteknight gets way too much email
18:30 Tene I could send 100k copies to you with randomly generated subjects and from: addresses if that would help.
18:30 Infinoid Whiteknight: Subject: load_bytecode, loadlib, and HLL
18:30 Infinoid ah, Tene++ already said it.  oops :)
18:32 Whiteknight wow, that issue looks like a doozy
18:32 Whiteknight what does Parrot_register_HLL_lib do?
18:32 Tene I'm not sure.
18:38 dalek r35218 | Whiteknight++ |  (6 files):
18:38 dalek : [jit_h_files] merging this branch into trunk. Should only affect JIT on i386 platforms, so if anybody sees and ill-effects anywhere else, let me know.
18:38 dalek : Messes with the makefile, so you might need to do a make realclean && perl Configure.pl after this.
18:38 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35218
18:43 Whiteknight it appears Parrot_register_HLL_lib only adds the library to the list of HLL libraries. says to me that it expects that library to define a new HLL
18:51 moritz http://nopaste.snit.ch/15243
18:52 moritz Whiteknight: I get the build failure in the above (JIT stuff)
18:52 Whiteknight urg
18:52 moritz that was with make -j 2
18:52 moritz I now try a serial make
18:53 Whiteknight I've been testing the hell out of that branch, how did I miss this error?
18:53 moritz also fails for a serial build
18:53 Whiteknight ...I'm looking at it again now
18:53 Whiteknight did you make realclean?
18:53 moritz this is Debian Stable, on i386 32 bit
18:53 moritz yes
18:55 Whiteknight I'm running it again. that stupid JIT_EMIT macro is the thing that's been making this work so hard
18:56 mj41 Whiteknight: http://tt.ro.vutbr.cz/report/pr-Parrot/rp-trunk/
18:57 Whiteknight thanks
19:01 dalek r35219 | Whiteknight++ | trunk/src/jit/i386:
19:01 dalek : [JIT] fix tests for a macro which might actually not be defined everywhere (eventually, JIT_EMIT is going to disappear entirely)
19:01 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35219
19:02 Whiteknight moritz, can you svn up and try it again please?
19:02 dalek r35220 | jonathan++ | branches/rvar2/languages/perl6/src/parser:
19:02 dalek : [rakudo] Restore handling of : param separator for the invocant somewhat. This fixes some tests, and is a step towards getting multimethods working again.
19:02 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35220
19:02 moritz Whiteknight: svn-upping right nwo
19:02 Whiteknight thanks
19:03 Whiteknight I'm going to be so happy when I can delete that stupid macro once and for all
19:03 moritz Whiteknight: src/jit_defs.c:2632: error: non-static declaration of ‘arch_info’ follows static declaration
19:03 chromatic joined #parrot
19:03 moritz src/jit_emit.h:1898: error: previous declaration of ‘arch_info’ was here
19:05 Whiteknight why don't any of these errors show up in my compiler?
19:05 dalek r35221 | Whiteknight++ | trunk/src/jit/i386:
19:05 dalek : [JIT] fix extraneous "static" modifier, which should have been an "extern" instead.
19:05 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35221
19:06 Whiteknight as far as MSVC is concerned, the code is perfect
19:07 moritz Whiteknight: build gets much further than before
19:08 moritz no errors so far
19:08 jonathan pmichaud: Going for dinner. Next up for me is getting multi-methods working again, which should win us back a decent few more tests.
19:08 Whiteknight haha! I keep hoping it's going to go all the way
19:08 moritz ... and succeeds. Now for 'make test'
19:08 Whiteknight moritz++
19:10 clunker3 joined #parrot
19:11 petdance joined #parrot
19:14 Whiteknight okay make test passed for me with no failures
19:14 moritz same here
19:14 Whiteknight w00t
19:14 Whiteknight I'm running make testj too, just to be sure.
19:15 jsut|work joined #parrot
19:17 * particle logs in to windows 7
19:18 * moritz bisects a perl5 bug
19:18 moritz git-bisect++
19:21 pmichaud particle: (Lexical $d not found)  -- I marked that as skip in t/spec, I thought.
19:21 particle maybe i need to update t/spec...
19:22 moritz Whiteknight: I even got two TODO passed in `make testj'
19:22 geof joined #parrot
19:23 Whiteknight nice, I only got 1 TODO to pass
19:23 chromatic One of those TODO is probably a mis-pass, in the annotations tests.
19:24 moritz /op/debuginfo 8 and t/pmc/exception 30
19:24 particle gotta figure out how to fix the smoke failures i keep getting notified about. they're rolling in like nobody's business.
19:24 Coke I think we should adopt a policy that if a test fails on a platform consistently, we should todo it.
19:24 particle pmichaud: down to 344 failing tests here, but i'll re-run for.t
19:24 Coke (if we're going to rely on smolder to tell us when new things are broken.)
19:25 particle we should fix it, and if not possible, todo it.
19:25 Coke sorry, implied that with teh consistently. should have been explicit.
19:25 particle eventually (soon, i hope) failing tests will become #1 priority
19:25 chromatic We don't already have that policy?
19:25 chromatic I TODO tests I see failing consistently on other platforms.
19:25 particle it's not enforced.
19:26 chromatic I suppose that's predicated on people actually reporting failures.
19:26 Coke chromatic: arguably, running 'make smoke' /is/ reporting them.
19:27 dtg joined #parrot
19:28 chromatic Someone (sigh, why does it always end up being me?) should look at trends there then.
19:28 Coke I would rather you stayed on GC. =-)
19:28 Coke it doesn't even need to be someone with commit bits.
19:28 Coke mostly just knowing test::more in perl would do.
19:29 particle 344-37
19:29 purl 307
19:29 particle 5895+37
19:29 purl 5932
19:29 particle pmichaud: got 5932 passing, 307 failing atm
19:29 pmichaud okay.
19:30 pmichaud I'm running an updated spectest on my box to see what's left.
19:32 particle shall we delete the jit code for these non-core archs?
19:33 particle it's virtually untestable, so should it appear in 1.0?
19:33 chromatic I'd hate to have to recreate it.
19:33 chromatic But it's not that stable.
19:34 chromatic And it's not going to get maintained without a platform champion.
19:34 particle we do have svn log
19:34 particle NEWS: removed jit code for non-core platforms
19:34 chromatic How about we deprecate it, pending the appearance of a platform champion, then whack it if no progress in a month.
19:35 particle worksforme
19:35 gmansi joined #parrot
19:48 Whiteknight works for me, then we can just close those tickets I opened
19:51 riffraff joined #parrot
20:01 pmichaud jonathan: ping (when you get back)
20:01 purl I can't find (when in the DNS.
20:06 alvar joined #parrot
20:13 Whiteknight purl is also retarded
20:13 purl okay, Whiteknight.
20:28 Whiteknight purl purl?
20:28 purl purl is, like, a she. or captain obvious or so corny sometimes or creepy or a he or is also is also is also or retarded
20:31 riffraff does someone else feels that PAST::Val would be slightly nicer with a key arg named :as('foo') instead of :returns('foo') ?
20:32 pmichaud not me.  :-)
20:36 Whiteknight pmichaud, why aren't more of the rakudo classes and builtins defined in NQP?
20:36 Whiteknight ...if you don't mind me asking...
20:37 pmichaud Whiteknight: because they're going to be defined in rakudo.
20:37 pmichaud also, NQP can't handle all of the special signature requirements that the Perl 6 builtins will need.
20:37 pmichaud (i.e., NQP doesn't know anything about multimethods)
20:37 Whiteknight well, I'm talking about a lot of the *.pir files, like the various classes
20:37 pmichaud I'm talking about those also.
20:37 Whiteknight oh, okay
20:37 pmichaud nearly all of the Perl 6 builtins are multis
20:38 pmichaud and NQP doesn't have any clue how to handle those
20:38 Whiteknight how hard would it be to add multi support to NQP?
20:38 pmichaud also NQP doesn't know how to coerce arguments into arrays or hashes if there's an array or hash signature
20:38 pmichaud also NQP doesn't support assignment
20:38 pmichaud and...
20:38 pmichaud well, you get the picture.
20:38 Whiteknight ...I get the point
20:38 pmichaud it's better to just write them directly in Perl 6
20:38 pmichaud which we will do as soon as we can get parameter passing working
20:38 pmichaud which is the whole point of the rvar branch :_)
20:39 Whiteknight so all those .pir files are eventually going to be bootstrapped in Perl 6?
20:39 pmichaud many, not all.
20:39 pmichaud some things don't bootstrap well into Perl 6
20:39 pmichaud if you can tell me how to write  substr() in Perl 6, I'm all ears.  :-)
20:40 Whiteknight you could probably do it with some creative regexs
20:40 pmichaud possibly.  But that kinda throws efficiency out the window :-)
20:41 pmichaud I'll give another example, the:   implement   infix:<+>   in Perl 6  :-) :-)
20:41 Whiteknight $string =~ . ** $start  (. ** $num), or however it's written
20:41 pmichaud s/the/then/
20:41 Whiteknight i didn't say anythng about efficiency!
20:43 particle multi infix:<+> (Any $x, Any $y) { q:PIR { $P0 = find_lex '$x' ; ... } } :P
20:43 Tene multi sub infix:<+> { ('.' x $^a ~ '.' x $^b).chars }
20:43 pmichaud okay, define  infix:<x> and infix:<~>  then :-)
20:43 pmichaud and you can't use infix:<+>  :-)
20:44 Tene multi sub infix:<~> { $^a ~~ s/$$/$^b/ }
20:44 particle hint, use substr :)
20:45 Tene multi sub infix:<x> { [~] gather { take $^a for 1..$^b } }
20:47 * jonathan is back
20:47 PerlJam Tene: is this some sort of contest?  :-)
20:47 pmichaud jonathan: I think I know why multimethods fail -- we don't have an entry in the signature for implicit self
20:47 jonathan pmichaud: That was going to be my first guess. :-)
20:47 pmichaud getting one there is a bit tricky, though.
20:48 jonathan Yes, it was last time around too. :-P
20:48 pmichaud okay, I'm about to commit a change that might help.
20:48 Tene PerlJam: I'm dodging $realjob ;)
20:48 pmichaud or might make things worse.
20:48 jonathan My plan (but you'll maybe not like it) is to add a method !add_implicit_self to Signature
20:48 jonathan And If we see we have a method, we'll emit a call to it.
20:49 pmichaud oh, that might work.
20:49 jonathan And it will check, do we have something marked invocant.
20:49 jonathan and if not unshift one.
20:49 jonathan I can't remember how I do it in trunk.
20:49 jonathan s/do/did/
20:49 pmichaud but we also have to make sure it doesn't try to do anything funny when SIGNATURE_BIND is called.
20:49 jonathan That's OK, it'll be labelled invocant
20:49 jonathan (Unless what you're about to commit undoes that...)
20:49 jonathan So we can spot that and skip it.
20:50 pmichaud don't we also need to potentially do type checking on the invocant, though?
20:50 jonathan Yeah, we should do that.
20:50 pmichaud okay.
20:50 pmichaud anyway, you gave me the answer
20:50 pmichaud I like add_implicit_self better than the approach I was taking.
20:50 jonathan Ah, nice.
20:50 * jonathan must be on form after dinner :-)
20:51 jonathan Curry for the win!
20:51 jonathan Do you know what came of the code that handled 'is default'?
20:51 pmichaud it's probably gone.
20:51 jonathan e.g. do you know if it's still there, or was it likely removed?
20:51 jonathan Gah, OK.
20:51 Tene $jonathan.assumming('curry');
20:51 pmichaud what does 'is default' do again?
20:51 jonathan Marks a multi candidate as being the default one to go for if there's a conflict.
20:52 pmichaud okay.
20:52 pmichaud we don't do any traits on subs yet.
20:52 pmichaud I need to do that for 'is export' though.
20:52 jonathan OK.
20:52 jonathan I'll let you put that in how you like it (if you already have a plan, anyways...)
20:52 pmichaud I have most of a plan.
20:52 davidfetter joined #parrot
20:52 jonathan And then can add is default on top of that, if you don't beat me to it.
20:52 jonathan It should be trivial.
20:53 pmichaud how about I let you take over multimethods, since you've got a good handle on it.
20:53 jonathan IIRC, just sets a default property.
20:53 pmichaud the change I'm making at the moment is to emit
20:53 jonathan Well, once the invocant thing is fixed up, and we have is default back in, we should be passing the bunch of multi-method tests again.
20:53 pmichaud .lex '$invocant', self
20:53 pmichaud instead of
20:54 pmichaud .lex '$invocant', $Pnn
20:54 pmichaud set $Pnn, self
20:54 jonathan Oh, I wondered how to do that. :-)
20:54 pmichaud I think I prefer that the lexical be directly bound to self
20:54 jonathan Agree - I just couldn't think of what PAST to make.
20:54 GeJ Good morning everyone
20:55 jonathan morning GeJ
20:55 Infinoid hi GeJ
20:55 dalek r35222 | pmichaud++ | branches/rvar2/languages/perl6/src/parser:
20:55 dalek : [rakudo]:  Bind invocants directly to self.
20:55 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35222
20:55 pmichaud when handling the implicit invocant parameter, make sure that we have some way of telling BIND_SIGNATURE not to try to look in the caller's lexical for it (since it won't exist)
20:55 pmichaud with that I'll switch over to routine traits
20:56 pmichaud (sorry, SIGNATURE_BIND)
20:57 pmichaud the approach I was going to take was to add an entry to the Signature for lexical 'self'
20:57 pmichaud (since we know it's there.)
20:57 pmichaud actually, you could probably do that and it would just work.
20:57 pmichaud i.e., in SIGNATURE_BIND, if varname == 'self' then skip further checking.
20:59 jonathan pmichaud: The thing is that we may have something else that we bind to.
20:59 jonathan Wait, let me try and get straight in my head what you're suggesting...
20:59 pmichaud I'll rephrase it.
21:00 pmichaud (1)  create !add_implicit_self, which is called by method_def.  This checks to see if an invocant param has already been added, if not it unshifts a new entry for 'self' onto the params list.
21:00 pmichaud that means the Signature is correct for MMD.
21:00 jonathan Right, with you so far.
21:00 pmichaud (2) in SIGNATURE_BIND, we currently walk through all of the variables in the signature so that they can be adjusted/re-bound and typechecked as necessary.
21:01 pmichaud If we come across a parameter named 'self', skip it.
21:01 pmichaud I think that's it.
21:01 jonathan Ah, gotcha.
21:01 jonathan Should do it.
21:02 pmichaud we don't need to do rebinding or typechecking of (implicit) self.
21:02 jonathan Right.
21:02 pmichaud we would only need to do typechecking if an explicit invocant was listed.
21:02 jonathan So you want me to put those two bits in?
21:02 pmichaud yes.
21:02 jonathan OK, let me make a cuppa, and I'll get onto it.
21:02 pmichaud and r35222 shows how I bound lexicals directly to self, if you're curious.
21:02 jonathan Yes, I am. :-)
21:03 jonathan I was writing the bind thinking, "wish I didn't need this..." :-)
21:03 pmichaud We're down to 25 failing test files.
21:04 pmichaud I'm thinking we can finish this branch today.  :-)
21:04 pmichaud (especially since I'm feeling better today than yesterday)
21:05 chromatic Yes please!
21:05 chromatic Merge soon!
21:10 jonathan pmichaud: moze byt!
21:10 jonathan er
21:10 jonathan maybe!
21:18 kj joined #parrot
21:23 confound joined #parrot
21:24 confound joined #parrot
21:24 moritz pbc_to_exe seems quite slow
21:24 pmichaud it can be, yes.  It's doing a bunch of string concatenations.
21:24 pmichaud and byte conversions.
21:26 moritz rakudo: for undef, 1 { say .?sqrt }
21:26 kjs_ joined #parrot
21:26 polyglotbot OUTPUT[Use of uninitialized value␤0␤1␤]
21:26 * moritz is fairly impressed
21:27 jonathan .? is a cool operator. :-)
21:28 moritz class { something }\n for ... { } doesn't parse for me
21:28 moritz adding a ; after the closing curly of the class works
21:28 pmichaud yes, long known bug.
21:28 moritz ok
21:28 pmichaud needs parsing fix.
21:28 pmichaud same bug as the one that trips up
21:28 pmichaud sub { } \n while ...
21:28 moritz I remebered something like that, but I thought you fixed somethiing like that recently
21:29 pmichaud I fixed it for regex { } \n while, yes.
21:29 moritz that was it, aye
21:29 jonathan .? is great when an object may have a role mixed in that provides a method, and you want to call it if it's there, but don't care if not.
21:29 pmichaud omg
21:29 pmichaud is <trait> on sub is now soooo easy
21:30 pmichaud will be even easier once we start doing traits-as-roles
21:35 kj joined #parrot
21:35 PerlJam jonathan: so what happens with $foo = $obj.?method;  when method() doesn't exist for that object?  What value does $foo get?  (An appropriate version of undef I would assume)
21:36 pmichaud rakudo:  $foo = 3.?nosuchmethod;  say $foo.PARROT;
21:36 polyglotbot OUTPUT[Scope not found for PAST::Var '$foo'␤current instr.: 'parrot;PCT;HLLCompiler;panic' pc 146 (src/PCT/HLLCompiler.pir:102)␤called from Sub 'parrot;PAST;Compiler;post_children' pc 2008 (src/PAST/Compiler.pir:411)␤called from Sub 'parrot;PAST;Compiler;call' pc 4219
21:36 polyglotbot ..(src/PAST/Compiler.pir:1091)␤called from Sub 'parrot;PAST;Compiler;post_childr...
21:36 pmichaud rakudo:  my $foo = 3.?nosuchmethod;  say $foo.PARROT;
21:36 polyglotbot OUTPUT[ObjectRef->Failure␤]
21:36 pmichaud returns a Failure (undef)
21:37 dngor joined #parrot
21:37 kjs_ joined #parrot
21:37 cotto year of the perdue wonder chicken?
21:38 jonathan PerlJam: An undef, but then you can use // to pick a default quite neatly too.
21:38 pmichaud rakudo:  my $foo = 3.?nosuchmethod // 'yay!';  say $foo.PARROT;
21:38 polyglotbot OUTPUT[Str␤]
21:38 chromatic cotto, see "Infinite Jest" by David Foster Wallace.
21:39 mberends joined #parrot
21:41 cotto thanks
21:41 Coke rakudo: my $foo = 3; say $foo.PARROT; say $foo.WHAT
21:41 polyglotbot OUTPUT[Int␤Int␤]
21:41 Coke hurm. pmichaud, why was your .PARROT a Str?
21:41 pmichaud because 'yay!' is a Str ?
21:42 moritz $a // $b is the same as defined($a) ?? $a !! $b;
21:42 moritz (except that $a is evaluated only once)
21:42 pmichaud 3.?nosuchmethod returned undef
21:42 pmichaud so $foo was given the value 'yay!'
21:42 pmichaud and $foo.PARROT came back with 'Str'
21:43 Coke ah, danke.
21:43 jonathan pmichaud: Seem to have multimeths working again.
21:43 pmichaud jonathan: yay.
21:43 Coke Missed that $foo did not have 3 at that point.
21:43 jonathan Doing spectest to make sure I didn't break other stuff.
21:43 pmichaud okay.
21:43 pmichaud in the branch it's okay to commit-then-test :-)
21:44 pmichaud I think I almost have the basic "is export" working.
21:49 jonathan pmichaud: I've been doing that somewhat, but want to know now what side-effects this patch has, if any (I expect none, toher than those I intend...)
21:50 polyglotbot joined #parrot
21:51 kj good evening
21:51 * kj moved to a new apartment :-)
21:52 kj If I need to PARROT_EXPORT some new functions, do I need to rerun the headerizer? Or just add PARROT_EXPORT to them?
21:52 kj PIRC needs access to the PackFile_Annotate functions recently added
21:53 jonathan kj: If you're going to do it by hand, just be sure to update both the .c and the .h file.
21:53 kj jonathan: that's doable
21:53 jonathan kj: But I made sure make headerizer worked on them.
21:53 kj I'm not entirely clear on how I should use the headerizer
21:53 jonathan kj: So it's fine to add them to the C file and then nmake headerizer
21:54 pmichaud it's just "make headerizer" and then make sure everything still tests properly.
21:54 polyglotbot joined #parrot
21:54 kj k
21:55 dalek r35223 | jonathan++ | branches/rvar2/languages/perl6/src (2 files):
21:55 dalek : [rakudo] Make sure we always get an implicit self for methods. Also fix up .perl on Signatures.
21:55 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35223
21:56 polyglotbot joined #parrot
21:56 jonathan pmichaud: If you get the latest change I put in, and then implement is default to just setprop default to a true value on the sub, you should pass S12-multi/default.t :-)
21:56 pmichaud okay.
21:57 pmichaud I'll have to merge your changes with mine, there's likely to be a small conflict.
21:57 jonathan OK.
21:57 pmichaud wheeee
21:57 * jonathan looks at what we're still failing.
21:57 moritz t/spec/S02-builtin_data_types/nested_ar​rays.t....................ok
21:57 moritz ===(     525;39   1/48  0/? )===========================================Null PMC access in type()
21:58 moritz the first remaining failure
21:58 Infinoid well... in the process of trying to add a "partcl" alias for tcl, I've totally broken polyglotbot.  Stay tuned.
21:58 jonathan Oh, that's scary, that's pms. :-)
21:58 moritz no, it's actually in t/spec/S02-builtin_data_types/num
21:58 moritz the parallel testing output just skewed that line
22:02 Infinoid is there a Configure.pl flag to turn jit *off*?
22:02 jonathan Hmm. We don't parse anonymous methods any more...
22:02 jonathan Infinoid: --jit-capable=0 maybe
22:02 pmichaud ...we don't _parse_ them?
22:02 jonathan rule method_def { [ | <longname=name> [ <multisig> | <trait> ]* ]
22:03 jonathan we end up parsing method { ... } as a sub call passing a block. :-)
22:03 * jonathan checks STD.pm
22:03 pmichaud rule method_def { [ | <[ ! ^ ]>?<longname> [ <multisig> | <trait> ]* | <multisig> <trait>*
22:04 pmichaud we're probably missing the | <multisig> <trait>* part.
22:04 jonathan yes
22:05 * jonathan just adds it hopefully
22:05 davidfetter jonathan++ for using "hopefully" as an adverb
22:06 Infinoid jonathan++ # looks like that will work, and probably get polyglotbot working again
22:06 jonathan pmichaud: Not quite.
22:06 jonathan As we don't have a signature in this case.
22:06 jonathan pmichaud: What does this line mean
22:06 jonathan | <?>
22:06 pmichaud same as   | <null>
22:06 jonathan Ah, that'd be the one that handles this case.
22:07 pmichaud PGE doesn't support it yet, but should.
22:07 jonathan Which one?
22:07 jonathan Either?
22:07 purl hmmm... Either is correct
22:07 pmichaud <?>
22:07 pmichaud pge supports <null>
22:07 * jonathan does <null>
22:07 pmichaud but you can also use ::
22:07 pmichaud :: is cheaper
22:07 confound joined #parrot
22:07 pmichaud (because it doesn't involve a subrule call)
22:08 jonathan What does it mean?
22:08 pmichaud it's a "cut"
22:08 jonathan Ah, OK.
22:08 pmichaud backtracking over that point fails the alternative
22:08 jonathan cut meaning, at this point we match?
22:08 jonathan ah, gotcha.
22:08 pmichaud (since we're in a token/rule anyway, it's a noop.
22:09 dalek r35224 | jonathan++ | branches/rvar2/languages/perl6/src/parser:
22:09 dalek : [rakudo] Handle anonymous methods.
22:09 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35224
22:09 jonathan indirect_notation.t passes all that it does in trunk again.
22:09 PerlJam so who runs parrot.org?
22:09 pmichaud yay
22:10 PerlJam i'm interested in setting up gitosis and a git repo clone of the svn repo
22:10 dalek r35225 | pmichaud++ | branches/rvar2/languages/perl6/src (2 files):
22:10 dalek : [rakudo]:  Some basic trait handling for subs.
22:10 dalek : I'll probably want to refactor this (to avoid the code
22:10 dalek : duplication) but this works for now.
22:10 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35225
22:10 pmichaud PerlJam: see particle
22:11 pmichaud jonathan: after r35225 you can probably trivially implement "is default"
22:11 pmichaud I'm still working on the parameterized forms of "is export"
22:11 jonathan Thanks.
22:12 pmichaud jonathan: hint:  "!sub_trait_default"
22:12 pmichaud (see "!sub_trait_export" for model in guts.pir)
22:12 pmichaud (eventually these will be done with mmd dispatch.)
22:13 jonathan pmichaud: Yup, I see the pattern.
22:14 pmichaud it's so nice to not have all of these cases in actions.pm, and to be moving towards mmd for them :-)
22:16 jonathan *nod*
22:18 PerlJam I wish I wasn't so ADD.
22:18 PerlJam pm: your last statement makes me want to go read actions.pm in rvar2 now
22:18 pmichaud pj:  then I need to be making more of these statements.
22:20 Tene Can someone remind me of the big advantages Parrot has over the other big VMs?  dotnet/jvm?
22:20 Tene I'm giving a presentation on Parrot to the local LUG next week.
22:20 dalek r35226 | jonathan++ | branches/rvar2/languages/perl6/src/builtins:
22:20 dalek : [rakudo] Add back 'is default' trait. Passes S12-multi/default-trait.t.
22:20 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35226
22:20 Casan joined #parrot
22:20 Tene I know nearly nothing about .net or jvm.
22:21 jonathan Tene: The compiler toolchain we hvae has gotta be one of them.
22:21 PerlJam Tene: parrot is designed for dynamic languages whereas .net/jvm are for static languages.
22:21 moritz Tene: 1) designed for dynamical(ly typed) languages
22:21 jonathan Tene: Also, built from the ground up for...yes, aht pj said.
22:21 moritz Tene: 2) language interop
22:21 pmichaud there ought to be a parrot wiki page where we collect the answers to this question.
22:21 pmichaud also, open source.
22:21 Tene moritz: what type of design choices matter for dynamic vs. static in a VM?
22:21 pmichaud (parrot is open source while .net and jvm would be difficult to get modifications added to.)
22:22 jonathan Tene: You can probably find some inspiration in some of the Parrot-y talks I've given... http://www.jnthn.net/articles.shtml
22:22 * PerlJam boggles that there isn't already a wiki page or something for this.
22:22 pmichaud PerlJam: too many coders, not enough writers.
22:22 Tene moritz: how are the other VMs more restrictive in hll interop?  I remember hearing that one of them only allows one language per bytecode file or something...
22:22 moritz Tene: in .net and jvm the byte code relies heavily on type annotations...
22:22 chromatic Tene, the JVM doesn't allow dynamic dispatch.
22:23 chromatic You have to roll your own dispatch mechanism if you want later-than-compile-time binding.
22:23 moritz Tene: whereas parrot makes untyped variables very easy, and type coercions, context, ...
22:23 PerlJam Hmm. this IRC discussion + what's at http://www.parrotcode.org/faq/ would make a good start
22:23 Tene PerlJam: volunteering?
22:23 purl somebody said volunteering was dangerous
22:23 moritz Tene: re hll interop - dunno what's better than in onther VMs
22:24 * pmichaud wonders what he could say to make PerlJam want to go author a wiki page.  :-)
22:24 PerlJam Tene: sure!  Someone point me at a good place to write it.
22:24 PerlJam pm: Tene already said it :)
22:24 pmichaud PerlJam: trac.parrot.org
22:24 purl hmmm... trac.parrot.org is giving me "Internal Server Error"
22:25 bacek joined #parrot
22:25 Tene purl: forget trac.parrot.org
22:25 purl Tene: I forgot trac.parrot.org
22:25 szabgab chromatic: there are a few ticktes I opened in trac with tests script for  Parrot::Embed
22:25 PerlJam What's the relationship between www.parrot.org and trac.parrot.org?
22:26 moritz PerlJam: maybe start https://trac.parrot.org/parrot/wiki/About
22:26 szabgab whom should I nag to get them added to the repository ?  or how can I get commit bit to add them myself ?
22:26 pmichaud www.parrot.org is the parrot foundation site
22:26 pmichaud while trac.parrot.org is the "working" site
22:26 chromatic szabgab, if you submit a CLA, I'm happy to have to poking at Parrot::Embed and writing tests and such.
22:26 pmichaud (and yes, we're still working out the details)
22:26 chromatic to have YOU I mean
22:27 szabgab CLA ?
22:27 purl rumour has it CLA is Contributor License Agreement or http://www.perlfoundation.org/​contributor_license_agreement or http://www.parrot.org/foundation/legal
22:27 PerlJam When I want to know stuff about perl, I go to perl.org or perl.com.  When I want to know stuff about parrot, I'd go to parrot.org, only all of the useful info seems to be on trac.parrot.org
22:27 pmichaud PerlJam: I agree with you -- forward to particle :-)
22:27 pmichaud particle seems to be the primary *.parrot.org person
22:27 szabgab I printed it, shall I sign it and snail mail it ?
22:28 chromatic Yes.
22:28 pmichaud szabgab: I think scan+email works also.
22:28 chromatic That too.
22:28 particle perljam: email directors@parrot.org please, or submit a trac ticket
22:28 particle i don't own parrot.org, i just work there
22:28 Infinoid ok, polyglotbot should be happy again.  some issues with lolcode, but APL, rakudo and tcl seem to work.
22:28 szabgab ok, I can fax it to my fax2email address and send you the copy
22:29 chromatic legal@parrot.org for CLAs?
22:29 particle doesn't it say on the cla?
22:29 chromatic I don't remember my middle name some days.
22:29 chromatic (it's "Danger")
22:29 szabgab I think I only see snail mail address
22:29 Tene tcl: omg
22:29 polyglotbot OUTPUT[invalid command name "omg"␤]
22:30 particle ok, well directors@ or legal@ go to the same place
22:30 PerlJam chromatic: you've got more than one name? :)
22:30 particle chroDANGERmatic
22:31 Tene chroDANGERmatic
22:31 Tene ^5 particle
22:31 jonathan pmichaud: S12-attributes\clone.t needlessly redeclared a var (accidental rather than a feature of the test) so I've made it not do so.
22:31 jonathan So it now runs...apart from we fail the last few. Geck.
22:31 pmichaud jonathan: yes, I've run across some of those also.  Same solution.
22:31 szabgab ok I'll do it tomorrow morning,
22:31 Limbic_Region joined #parrot
22:34 chromatic I mean my legal name.  Brian Danger Ingerson.
22:34 Infinoid you forgot the döt
22:34 jonathan pmichaud: Ah. We don't built method forms of attributes accessors any more.
22:34 chromatic Where do you think he got it?
22:34 pmichaud jonathan: do we need them?
22:35 jonathan .clone relied on them
22:35 pmichaud what form do you mean?
22:35 pmichaud you mean   '!x' ?
22:35 jonathan The S12-sort-of-half-implies-it-but-wob-knows form. ;-)
22:35 pmichaud right.
22:35 jonathan class Foo { has $!x }
22:35 pmichaud make clone use the attributes directly for now, I think.
22:36 jonathan Foo.new!x # is callable?
22:36 jonathan And does $!x call it or access the underlying storage?
22:36 pmichaud let me re-review S12 again
22:36 jonathan (S12 says underlying storage. But later, from what I remember of this, implied it could be the other thing too.)
22:36 pmichaud right now it's underlying storage.
22:37 jonathan Yeah. I have argued both sides to myself out of S12 so far. :-)
22:37 jonathan Aye, and that's I've been thinking for much time.
22:37 pmichaud I'd like to keep it as underlying storage for the branch, if possible.
22:37 pmichaud if we need to move to private method, perhaps after branch merge sometime.
22:38 jonathan The awkard bit is
22:38 jonathan For a call on your own private method, you may also use the attribute-ish form:
22:38 jonathan $!think($pinky)
22:38 szabgab oh I see there are two CLAs, one for TPF and one for the Parrot foundation?
22:38 szabgab oh I see there are two CLAs, one for TPF and one for the Parrot foundation?
22:38 pmichaud yes
22:38 particle yes, indeed
22:38 jonathan But what happens if we have a method that takes no args? Can we call it as $!thingy?
22:38 pmichaud but I think even STD.pm isn't parsing that.
22:38 * PerlJam tried emailing directors@parrot.org and is was rejected with "user unknown"
22:38 jonathan OK, in that case I'll choose not to care. :-)
22:39 particle szabgab: just send the parrot cla
22:39 pmichaud or if it is, then it's as postcircumfix on a var
22:39 * jonathan modifies clone to directly touch attributes.
22:39 pmichaud oh, that's probably what it is.
22:39 moritz particle: since your recent Makefile updates, 'make spectest' doesn't work if t/spec is a symlink
22:39 szabgab particle: ok, that will wait as I don't have a printer here
22:39 PerlJam szabgab: does this mean that you're going to work in parrot as much as padre?  :)
22:39 moritz particle: it tries to checkout pugs to that, and fails
22:39 pmichaud anyway, $!think($pinky) makes me think there's a spec inconsistency there
22:39 PerlJam s/in/on/
22:40 szabgab PerlJam: I hardly work on Padre nowdays
22:40 pmichaud what if $!think is actually   my $!think = sub { ... }   ?
22:40 szabgab and I would like to finish the Parrot integration into Padre
22:40 particle moritz: i don't know how i changed the functionality, i just renamed 't/spec :' to 'spectest_checkout :'
22:40 pmichaud so _maybe_ what really happens is that   my method think { ... }    creates a $!think attribute?
22:40 PerlJam szabgab++
22:40 szabgab so we can swicth to  run part of our code on Rakudo
22:41 jonathan pmichaud: I don't like that way of looking at it.
22:41 jonathan pmichaud: But I totally agree, the spec is inconsistent.
22:41 pmichaud anyway, merge branch first, clarify later :-)
22:41 jonathan Sure
22:41 szabgab pressure is growing to use Moose in Padre, but I'd rather go for the real thing :-)
22:42 moritz particle: the difference is that 't/spec' won't run if 't/spec' exists, and is up-to-date (whatever this means)
22:42 PerlJam szabgab++ again!
22:42 szabgab PerlJam: collecting them :-)
22:42 jonathan Oh, I know why I wanted the !attr method. Because we don't have to know the sigil of the attribute we're setting.
22:42 * jonathan does the bigger change to clone.
22:42 pmichaud right.
22:42 pmichaud but if we're cloning, we already know the sigils of the attributes, yes?
22:43 jonathan $x.clone(attr => ...)
22:43 jonathan So what sigil does attr has? Well, we gotta go look it up. :-)
22:43 Tene pmichaud: what's the big goal of the rvar branch?  Just "rewrite variable handling to eliminate hacks" or something specific?
22:43 pmichaud use whatever BUILD is using now.
22:43 szabgab has anyone tried Padre and the Perl6 plugin of azawawi  here?
22:43 pmichaud Tene: it's a major refactor of variable handling, yes.
22:43 particle moritz: will it work to have:
22:43 particle spectest_update : t/spec
22:43 particle t/spec :
22:43 particle -cd t/spec && svn up
22:43 pmichaud the way we were doing things was long-term-unsustainable.
22:44 particle moritz: if so, change it, because i can't test that right now
22:44 pmichaud (and we had reached the point of unsustainability)
22:44 chromatic I could forward it on if you like.
22:44 jonathan pmichaud: It's iterating over the attributes that the class knows about.
22:44 PerlJam szabgab: I've been meaning to, but there's already enough other stuff running around in my brain.
22:44 jonathan pmichaud: Which is what I figured we'd have to do.
22:44 pmichaud jonathan: isn't there just a way to call .new to make a clone?
22:44 moritz particle: aye, works. Committing. Thanks!
22:44 szabgab and the fact that you can write plugins to Padre in PASM ?
22:45 particle moritz++
22:45 pmichaud jonathan: nm, I can see why that might be difficult.
22:45 PerlJam particle: okay, if directors@parrot.org doesn't work, where should I email?
22:45 jonathan pmichaud: I'm looking at BUILD thinking, hey, we could call that... ;-)
22:45 jonathan But fear it'll only burn us later. :-)
22:45 pmichaud yes, I was just thinking the same thing.
22:45 jonathan When somebody defines there won.
22:46 jonathan *own
22:46 pmichaud well, BUILD just does things from a candidate object.
22:46 particle pj: rejected, not moderated? hrmm. particle@parrot.org is fine.
22:46 jonathan And then is like "huh? why is clone broken"
22:46 pmichaud so if the candidate object is a clone, and then we call BUILD to handle any "extra" args, it might just work.
22:46 dalek r35227 | moritz++ | trunk/languages/perl6/config/makefiles:
22:46 dalek : [rakudo] 'make spectest' works again if t/spec is a symbolic link, particle++
22:46 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35227
22:46 pmichaud anyway, make it work for today and we can worry about subtleties later.
22:46 PerlJam particle: "user unknown" from google-land (for directors@parrot.org)
22:49 jonathan pmichaud: Ah, calling BUILD won't fly.
22:49 particle PerlJam: my mistake, it's directors@lists.parrot.org
22:49 jonathan pmichaud: Because it goes re-inits existing attrs!
22:49 particle i'll forward there, and copy you
22:49 pmichaud jonathan: feel free to update BUILD to make it fly :-)
22:49 pmichaud again, whatever is simplest at this point.
22:50 jonathan pmichaud: That'd be horribly nasty. I'll just do what I originally planned. It's no harder.
22:50 pmichaud sounds good.
22:51 PerlJam particle: thanks.
22:54 dalek r35228 | jonathan++ | branches/rvar2/languages/perl6/src/classes:
22:54 dalek : [rakudo] Get clone to at least somewhat work, while we get S12's method/storage location stuff sussed.
22:54 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35228
22:54 jonathan pmichaud: Committed, clone.t passes.
22:54 pmichaud jonathan: yay
22:58 jonathan Oh, no. Nasty...
22:59 * pmichaud braces for nastiness.
22:59 Whiteknight joined #parrot
22:59 jonathan perl6: class WHAT_test { has WHAT_test $.b is rw; }; WHAT_test.new()
22:59 polyglotbot RESULT[Method 'perl' not found for invocant of class 'WHAT_test'␤current instr.: '_block14' pc 64 (EVAL_13:39)␤called from Sub '!UNIT_START' pc 16311 (src/builtins/guts.pir:327)␤called from Sub 'parrot;PCT;HLLCompiler;eval' pc 950 (src/PCT/HLLCompiler.pir:527)␤called from Sub
22:59 polyglotbot ..'parrot;PCT;HLLCompiler;evalfiles' pc 1275 (src/PCT/HLLCompiler.pir:68...
22:59 jonathan perl6: class WHAT_test { has WHAT_test $.b is rw; }; say WHAT_test.new().WHAT
22:59 polyglotbot OUTPUT[WHAT_test␤]
22:59 jonathan pmichaud: In the branch we get
23:00 jonathan Method 'ACCEPTS' not found for invocant of class 'WHAT_test'
23:00 jonathan current instr.: 'infix:=' pc 13601 (src\builtins\assign.pir:30)
23:00 jonathan called from Sub 'parrot;Perl6Object;BUILD' pc 516 (src\classes\Object.pir:326)
23:00 pmichaud is this for clone or build?
23:00 jonathan I'm fearing it's an ordering thingy.
23:00 jonathan Buld.
23:00 jonathan *build
23:00 jonathan It's what we get for the example I just fed perl6 bot above.
23:01 pmichaud I don't think it's an ordering thingy.  Or if it is, it's actually just a minor issue somewhere.
23:01 pmichaud oh.
23:01 jonathan Yes.
23:01 jonathan Oh. :-)
23:01 jonathan I think we're looking up the proto before it exists to set the type of the attribute.
23:02 pmichaud in which case we're going to need protoprotos
23:02 particle isn't that what knowhows are for?
23:02 chromatic Those little rolled up chocolate pastries?
23:02 jonathan Yes, we are.
23:02 jonathan particle: no.
23:02 pmichaud how many tests do we lose if we don't implement that feature right now?
23:03 jonathan Well, in that script only a handful.
23:03 pmichaud I'm thinking we regress it.
23:03 jonathan But not being able to define recursive typed data structures is a loss.
23:03 jonathan I don't know either way for sure, but it woudln't surprise me if we broke November.
23:03 pmichaud it shouldn't be a long regression.
23:03 pmichaud no, we just disable the typechecking in that case.
23:04 pmichaud i.e., if we attempt to assign a constraint that isn't fully formed yet, just ignore the constraint for now.
23:05 particle do you know the names of constraints that aren't "fully formed" or do you mean a constraint that isn't known
23:05 jonathan pmichaud: Can we go from a Parrot class to its proto?
23:05 pmichaud either that or we figure out some way to apply the constraints at !meta_compose time.
23:05 pmichaud jonathan: I'll be adding a way to go from Parrot class to proto at some point in the very near future, yes.
23:05 jonathan pmichaud: I'm thinking more that, we can detect if we have a Parrot class when applying the constraints and fix it up.
23:05 jonathan pmichaud: Of course, for now we can skip it and not enforce the cons.
23:06 pmichaud we'll come back to it very soon if we regress it.
23:06 mberends left #parrot
23:06 dalek r35229 | Whiteknight++ | branches:
23:06 dalek : deleting branch that's already been merged
23:06 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35229
23:07 * jonathan spots '!CALLMETHOD' and gets all curious what that's for...
23:08 pmichaud it's a cheap way to get 'Any' methods to apply to objects from outside rakudo.
23:08 pmichaud s/cheap way/cheap and dirty hack/
23:09 pmichaud in particulary, it's used when I want to ask an object for its Scalar, Array, or Hash coercion
23:09 pmichaud which doesn't work if we happen to get an object from "somewhere else" that doesn't define Scalar, Array, or Hash
23:09 pmichaud (I think PGE is the prime suspect at the moment.)
23:13 dalek r35230 | jonathan++ | branches/rvar2/languages/perl6/src/builtins:
23:13 dalek : [rakudo] Disable type checking in the case that we have captured a type before it's been full defined. We'll have to come back and re-visit this later, this this gets us through another test.
23:13 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35230
23:13 dalek r35231 | pmichaud++ | branches/rvar2/languages/perl6/src (2 files):
23:13 dalek : [rakudo]:  Add more complete 'is export' handling.  S11-modules/export.t passes.
23:13 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35231
23:13 jonathan Between those two commits, that's 44 more subtests passing.
23:14 jonathan us++
23:14 chromatic Valgrind 3.4.0 release announcement: Memcheck can now report the origin of uninitialised values!
23:14 jonathan Shiny!
23:15 * pmichaud tries a new 'make localtest' to see what's left.
23:16 * jonathan is make spectest'ing also
23:17 jonathan pmichaud: hmm
23:17 jonathan t\spec\S02-builtin_data_types\hash..​......................Null PMC access in get
23:17 jonathan _string()
23:17 jonathan current instr.: '!sub_trait' pc 17247 (src\builtins\guts.pir:636)
23:17 jonathan called from Sub '' pc 3997 (EVAL_15:997)
23:17 jonathan You seeing that one?
23:18 pmichaud no, hadn't seen that yet.  Wasn't testing it yet.
23:18 pmichaud from my previous subset of 25 failing files we only have seven left.
23:18 pmichaud I'll do a full make spectest.
23:18 moritz did somebody re-enable the undef warnings in the branch?
23:18 moritz or did that happen by accident?
23:18 pmichaud by accident.
23:18 purl by accident is probably fine!
23:19 pmichaud I'm not sure what happened there.
23:19 pmichaud I probably removed something that was initializing it.
23:24 pmichaud okay, I see the problem with hash.
23:24 pmichaud fixing.
23:25 pmichaud (there's a 'returns' trait on one of the subs)
23:25 nopaste "moritz" at 91.10.153.135 pasted "test summary in rvar2" (93 lines) at http://nopaste.snit.ch/15245
23:25 jonathan Ah.
23:26 pmichaud I'm actually just going to modify the test. :-)
23:26 pmichaud since that's not something we're testing there.
23:26 jonathan Makes sense.
23:26 nopaste "jonathan" at 85.216.157.73 pasted "rvar2 here" (29 lines) at http://nopaste.snit.ch/15246
23:26 mberends joined #parrot
23:27 jonathan Failed 23/279 test scripts. 122/7812 subtests failed.
23:28 pmichaud 16 subtests unexpectedly succeeded?!?
23:28 pmichaud :-)
23:28 jonathan Yeah! I noticed that. :-)
23:28 jonathan I bet an autounfudge run would find more too.
23:29 jonathan t\spec\S03-operators\arith.rakudo is a major source of fail
23:29 particle jonathan: those are trunk failures, too, related to Inf/NaN
23:29 pmichaud odd, it only fails 5 tests on my box.
23:30 particle they're win32 failures
23:30 jonathan pmichaud: It fails 153-194
23:30 jonathan For me.
23:30 pmichaud right, win32 failure.
23:30 particle actually, non-linux failures, i think they fail on sun and bsd too
23:30 jonathan portability fail
23:30 jonathan Divide by zero
23:30 purl DOES NOT COMPUTE
23:30 jonathan current instr.: 'infix:/' pc 19418 (src\builtins\op.pir:178)
23:31 jonathan Taht's where the test dies.
23:31 particle yeah, that's annoying
23:31 particle msvc is too smart or gcc is too stoopid
23:31 pmichaud maybe parrot can check for NaN there and dtrt?
23:31 chromatic I'm open to that idea.
23:31 jonathan What's the root cause of the failure?
23:32 pmichaud NaN support on Win32 is broken.
23:32 pmichaud (root cause.)
23:32 jonathan Ugh.
23:32 pmichaud -or-
23:32 pmichaud Parrot has insufficient support for NaN.
23:32 pmichaud depending on your perspective.
23:32 chromatic Both are true.
23:32 pmichaud okay, not -xor- then :-)
23:33 jonathan Is this a case of, problem when dividing by NaN?
23:33 jonathan Because it treats it as a 0?
23:34 pmichaud I don't have Win32 here, so I can't say.
23:34 nopaste "pmichaud" at 72.181.176.220 pasted "my rvar2 failure summary" (28 lines) at http://nopaste.snit.ch/15247
23:35 jonathan is 100/Inf, 0; I think
23:36 jonathan > say 100/Inf
23:36 jonathan Divide by zero
23:36 purl DOES NOT COMPUTE
23:36 jonathan perl6: say 100/Inf
23:36 polyglotbot OUTPUT[0␤]
23:36 jonathan perl6: say Inf
23:36 polyglotbot OUTPUT[inf␤]
23:36 jonathan > say Inf
23:36 jonathan 0
23:36 jonathan Hmm.
23:37 pmichaud rakudo just passes inf/nan to Parrot to handle.
23:37 jonathan pmichaud: Where do we set up Inf?
23:38 pmichaud globals.pir, I suspect.
23:38 pmichaud no, that's not it.
23:38 pmichaud ummm....
23:38 pmichaud src/builtins/Math.pir
23:38 jonathan Of it's a sub
23:38 jonathan *oh
23:38 pmichaud it's currently handled as a named_0ary
23:38 pmichaud right
23:39 pmichaud I wonder if changing  $N0 = 'Inf'   to   $N0 = 'inf'   would fix it in Win32  :-)
23:40 kid51 joined #parrot
23:40 jonathan pmichaud: Just tried that.
23:40 pmichaud how does Parrot test inf/nan on Win32?
23:41 jonathan No difference.
23:41 jonathan Hmm, good question.
23:41 purl Yeah, it is. I'm stumped.
23:43 particle parrot should have its own inf/nan
23:43 particle now it relies on the platform implementations
23:44 chromatic We need to normalize that in src/platform/
23:44 particle ayep
23:44 particle need to deal with -0, too
23:45 chromatic I wish I had some idea of how to do that.
23:45 jonathan There's code to deal with -0 in string_to_num
23:45 jonathan Under MSVC++
23:47 chromatic That still leaves NaN and Inf.
23:47 particle that should move to a platform-dependent file
23:47 TiMBuS joined #parrot
23:47 * kid51 is just joining this conversation, but notes that we experience similar failures on OpenBSD ... but not Free* or Net*.
23:48 kid51 Cf.:  http://rt.perl.org/rt3/Tic​ket/Display.html?id=60312
23:48 particle i assume perl 5 punts to the platform
23:48 particle wonder what java does
23:49 kid51 Andy D wrote in that RT on Nov 13:  "I'm pretty sure Perl 5 just does whatever the underlying system does. At
23:49 kid51 lesat I don't remember ever writing any Configure tests to do otherwise ..."
23:54 * jonathan can't believe that there isn't a constant for INF
23:54 jonathan In the headers.
23:54 pmichaud there's not.  I was surprised also.
23:54 jonathan Or at least, if it is, it's documentation is well hidden.
23:54 kid51 Whiteknight ping
23:55 pmichaud I even looked in my "Standard C Library"  (Plaguer) and it doesn't have one.
23:55 chromatic It's difficult to search for on the Internet.
23:55 jonathan I just looked in the MSDN and see no sign.
23:55 jonathan There is a function to test if a value is infinity.
23:55 jonathan But nothing to create one.
23:56 * kid51 notes that, unlike RT, in Trac we don't have a "this ticket refers to this other one" feature.
23:56 pmichaud just use "TT #nn" and it's automatically turned into a link.
23:56 Limbic_Region w
23:57 * kid51 doesn't see a dependency feature either.
23:57 pmichaud haven't seen an official "dependency" feature, no.
23:57 kid51 Problem with "TT #nn" is that it doesn't create anything on the ticket being linked to, does it?
23:58 kid51 In RT, both the referrer and the referree got links.
23:59 TonyC C99 includes an INFINITY constant, but Plauger is C89 (unless there was a second edition)
23:59 chromatic We're stuck with C89, thank you incompetent compiler developers.

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

Parrot | source cross referenced