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