»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
dalek ecs: f1f6183 | larry++ | S02-bits.pod:
clobber 'as' returns; use coercion types instead
00:37
ast: 9cb6c42 | larry++ | S02-types/type.t:
delete tests of 'as' return type
00:39
ast: c084f3e | larry++ | S03-binding/scalars.t:
cannot use sig syntax without using sig syntax!
00:43
dalek ast: 8b2e841 | larry++ | S03-operators/precedence.t:
convert accidental nobreak space to normal
00:49
ast: 5864e49 | larry++ | S06-traits/as.t:
convert 'as' tests to coercion tests

  (file is still misnamed and misplaced)
ast: 1f9686d | larry++ | integration/advent2009-day18.t:
remove accidental interpolation in test message
00:58
dalek ast: 6ee7d4a | coke++ | S32-list/map.t:
pugs fudge
01:32
gs.hs: 52a3ace | coke++ | Pugs/ext/Test/lib/Test.pm:
add nok() to Test.pm

Fixes #3
01:33
gs.hs: cfa31fc | coke++ | t/spectest.data:
run fudged test
moritz \o 07:00
sorear o/ moritz 07:01
dalek ecza: 956bfc5 | sorear++ | docs/announce.v15:
Add an empty annouce.v15 for pmurias
07:34
sorear phenny: tell pmurias It would be nice if you could add a description of your latest p5 interop stuff to announce.v15 sometime before Tue Feb 28 08:00:00 UTC 2012 07:37
phenny sorear: I'll pass that on when pmurias is around.
sorear date --utc -d "$( date -d 'next tuesday' )" # kind of suprised this works. pity I needed two date calls, though 07:38
geekosaur one works for me, unless there's some corner case I'm missing (like you want the UTC of local "00:00 next tuesday") 07:59
sorear geekosaur: that's exactly what I want 08:00
turns out date --utc -d 'TZ="America/Los_Angeles" next tuesda
y' also works
apparently --utc implies TZ="UTC" unless overrided inside -d
instead of just setting the output timezone, like I expected 08:01
sorear wonders what will happen if San Diego and Los Angeles stop agreeing on what timezone to use 08:02
moritz people on twitter thinks that perl 6 is dead, because the activity on the mailing lists dropped
sorear zoneinfo doesn't even have an America/San_Diego zone :|
tell them that the mailing lists are dead, and development is done on IRC now 08:03
au "mailing list is dead, love live twitter"? j/k
sorear o/ au
au *long, even
/o sorear
geekosaur the one downside of that astrology outfit dropping ts lawsuit over the Olson database is we've lost that impetus to kill timezones completely 08:04
sorear apparently there are still people out there who think DST is a good idea 08:05
geekosaur it's worse than that 08:07
in the US, DST is really standard time. then there's xmas shopping time.
which is gradually being pushed closer and closer to "only during shopping silly season"
fsergot Hi #perl6 o/ 08:19
sorear hello fsergot!
sorear hello sergot! 08:23
sorear sergot: your connection is broken. 08:25
dalek ecza: dc59468 | sorear++ | lib/Cursor.cs:
Quick hack to generate fewer unreachable NFA nodes

Now if <foo> generates something that blocks LTM, <foo> <bar> won't generate nodes for <bar>. Cuts 65% of the NFA nodes from the CORE compilation; also reduces time from 61s to 51s and memory usage from
  ~220m to ~170m.
10:10
colomon sorear++ 10:34
sorear o/ colomon 10:40
colomon \o
you're up late, I'm up early. :)
sorear heh heh heh.
I've only been up for about 12h actually :| 10:41
colomon btw, spectest looks good after that last change. sorear++ 10:52
colomon nom: say [a => 1, b => 17].map({ .key => .value + 1}) 10:59
p6eval nom 0f9695: OUTPUT«Method 'key' not found for invocant of class 'Any'␤ in block <anon> at /tmp/ypVzoimcdn:1␤␤» 10:59
colomon nom: say [a => 1, b => 17].map({ ; .key => .value + 1})
p6eval nom 0f9695: OUTPUT«a 2 b 18␤»
moritz nom: (a => 1, b => 17).map: -> $ (:$key, :$value) { $key => $value + 1 } 11:00
p6eval nom 0f9695: ( no output )
moritz nom: say (a => 1, b => 17).map: -> $ (:$key, :$value) { $key => $value + 1 } 11:01
p6eval nom 0f9695: OUTPUT«a 2 b 18␤»
dalek ast: 079dbfb | (Solomon Foster)++ | S32-list/map.t:
Fix broken test by adding semicolon (so map gets a block and not a hash); unfudge for niecza and rakudo.
11:02
colomon moritz: can you please check that map.t still works on the latest rakudo after that patch? I did a speculative unfudge. :) 11:02
moritz colomon: will do
colomon moritz++
JimmyZ wonders why needs ';' 11:03
sorear hash/block disambiguation is a bit dicey in niecza; it's specced in terms of concrete syntax but niecza implements it (brokenly) at the AST level 11:04
moritz because compilers can't read minds
sorear because the Perl 5 rule was too complicated and nobody feels like kicking either form out of ASCII
JimmyZ nom: say [a => 1, b => 17].map({ .key => .value + 1; })
p6eval nom 0f9695: OUTPUT«Method 'key' not found for invocant of class 'Any'␤ in block <anon> at /tmp/0GW0fa9v8f:1␤␤»
sorear I would +1 a proposal to add unambiguous Unicode "block braces" and "hash braces", although I'm not certain I'd actually use it 11:05
niecza: { .key => .value + 1 }
p6eval niecza v14-70-gdc59468: OUTPUT«Unhandled exception: Unable to resolve method key in class Any␤ at /tmp/jJR5yhNCMg line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3830 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3831 (module-CORE @ 65) ␤ at /home/p6…
sorear niecza: { .key => .value + 1; }
p6eval niecza v14-70-gdc59468: OUTPUT«Unhandled exception: Unable to resolve method key in class Any␤ at /tmp/kWrXvBsv1i line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3830 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3831 (module-CORE @ 65) ␤ at /home/p6…
sorear niecza: {; .key => .value + 1 }
p6eval niecza v14-70-gdc59468: OUTPUT«Unhandled exception: Unable to resolve method key in class Any␤ at /tmp/BA7hxkddOg line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3830 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3831 (module-CORE @ 65) ␤ at /home/p6…
moritz we could allow &{ } for blocks 11:06
sorear: fwiw I don't like the "unable to resolve method" error. It leaves open the question if the method is there, and the compiler was unable to resolve it, or if the method is missing 11:07
niecza: foo
p6eval niecza v14-70-gdc59468: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'foo' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1344 (die @ 3) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 33) ␤ at /home…
sorear moritz: mm. you think "Method not found" is better wording? 11:08
JimmyZ nom: say [a => 1, b => 17].map( *.key => *.value + 1)
p6eval nom 0f9695: OUTPUT«a 18␤»
moritz sorear: yes, though "No such method" would be even clearer 11:09
hm
I'm sure others will have better suggestions on how to phrase it
JimmyZ couldn't understand why it outputs "a 18" 11:10
moritz JimmyZ: because you give it a closure with two arguments 11:11
sorear JimmyZ: the first * becomes a => 1, the second * becomes b => 17
moritz JimmyZ: and it takes the .key of the first argument and the .value of the second one
JimmyZ perl6: say [a => 1, b => 17].map( *.key => *.value + 1) 11:12
p6eval pugs b927740: OUTPUT«*** No such method in class Num: "&key"␤ at /tmp/WPnQmP_q4n line 1, column 28-48␤»
..rakudo 0f9695: OUTPUT«a 18␤»
..niecza v14-70-gdc59468: OUTPUT«"a" => 18␤»
JimmyZ moritz: thanks 11:13
moritz
.oO( I could have answered again with "because compilers can't read minds" :-)
11:16
dalek ecza: 636d915 | sorear++ | lib/Cursor.cs:
Use a more compact representation for edge lists
11:54
ecza: f99bd59 | sorear++ | lib/Cursor.cs:
Avoid the need to constantly create singleton character classes
sorear LTM is no longer leading the memory usage chart 11:55
memory usage is now led by Perl 6 objects
which means the Mono memory profiler isn't helping me anymore :|
I need to find a way to get, at least, a census by .mo.name of live P6opaque objects 11:56
possibly by hacking the mono heap profiler itself - yes I'm that crazy
sorear -> sleep
moritz perl6: say Any.?() 12:17
p6eval pugs b927740: OUTPUT«*** ␤ Unexpected "?()"␤ expecting ".", "\187", ">>", "=", "^", operator name, qualified identifier, variable name, "...", "--", "++", "i", array subscript, hash subscript or code subscript␤ at /tmp/xdTXhaIBE1 line 1, column 9␤»
..rakudo 0f9695: OUTPUT«===SORRY!===␤Cannot use .? on a non-identifier method call at line 1, near ""␤»
..niecza v14-72-gf99bd59: OUTPUT«===SORRY!===␤␤Modified method calls can only be used with actual methods at /tmp/q5riTb6pfy line 1 (EOF):␤------> say Any.?()⏏<EOL>␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line…
moritz std: say Any.?() 12:26
p6eval std a540d4e: OUTPUT«ok 00:01 108m␤»
moritz is tere a good reason to disallow that?
*there
I can imagine that it's useful when optionally invoking a callback
colomon sorear: still up? 13:07
dalek ast: d4cb58c | coke++ | S (12 files):
pugs fudge
14:39
ast: 117ffc1 | coke++ | S32-list/map.t:
Merge branch 'master' of github.com:perl6/roast
gs.hs: f1402c1 | coke++ | t/spectest.data:
run fudged tests
[Coke] b: say 3638-3158
p6eval b 1b7dd1: OUTPUT«480␤»
[Coke] another 480 PASS for pugs. 14:40
b: say 3638 / 20283
p6eval b 1b7dd1: OUTPUT«0.179362027313514␤»
au whee, ~18% 14:41
[Coke]++
[Coke] au: we could get a few more if you wrote: github.com/perl6/Pugs.hs/issues/4 ;) 14:44
(though I can probably do that one, as it's all perl6.) 14:46
pugs feels fast, btw. 14:47
au then by all means please do :)
au is still between $job and $job atm
[Coke] I haven't done any timings, but it does seem to be running that 18% in less than 1/5 of the time.
au praises GHC 7.4 - 1.5x faster than GHC 7.0, which is yet much (~2x) faster than what we had in GHC 6.4 days. 14:49
(judicious uses of -fllvm flags would, presumably, make it even faster)
afk, bbiab
[Coke] b: say 20283*.18-3638 14:50
p6eval b 1b7dd1: OUTPUT«12.94␤»
[Coke] b: say 20283*.2-3638
p6eval b 1b7dd1: OUTPUT«418.6␤»
[Coke] looks like another 1040 tests are passing in tests that at least parse. 14:52
say (3638+1040)/20283 # theoretical LHF max at the moment.
b: say (3638+1040)/20283 # theoretical LHF max at the moment.
p6eval b 1b7dd1: OUTPUT«0.230636493615343␤» 14:53
[Coke] wonders if feather is this slow or if I'm lagged. 15:26
dalek ast: 7f7b55a | coke++ | S (2 files):
pugs fudge
15:29
gs.hs: 10975bd | coke++ | t/spectest.data:
run fudged tests
colomon phenny: tell sorear Looking at GLib.Process.SpawnSync for implementing run. Do you have a suggested way to get GLib into niecza's core? We could handle it the same way we do in the Gtk scripts, but I'm not sure if that's appropriate for the core.... 15:40
phenny colomon: I'll pass that on when sorear is around.
felher I spotted two parts in the spec of which i think that they are now fossils after TimToady++'s "clobber as". Sadly, i lack the expertise to fix it. For the second part i'm not even sure it is a fossil (maybe C<as> still works on something different than subroutines?). The two parts are: 16:15
S02-bits.pod:1744
S14-roles-and-parametric-types.pod:414
Maybe someone would take a look at it? :)
[Coke] # 02/25/2012 - niecza++ ; pugs (18.43%); rakudo (99.17%) 16:34
"niecza", 20298, 8, 751, 1548, 22601, 23607
"pugs" , 3741, 5, 1822, 114, 5682, 23398
"rakudo", 20130, 33, 604, 1864, 22631, 23617
dalek kudo/nom: 4f0ed5c | moritz++ | t/spectest.data:
stop running S06-traits/as.t, we do not implement the new syntax yet
16:56
fsergot perl6: sub infix:<&>(@a, @b) { my @r; for @a { @r.push($_) if $_ ~~ any(@b); }}; say <a b c> & <c d e>; 17:23
p6eval niecza v14-72-gf99bd59: OUTPUT«Nil␤»
..rakudo 0f9695: OUTPUT«c␤»
..pugs b927740: OUTPUT«␤»
fsergot nom: sub infix:<&>(@a, @b) { my @r; for @a { @r.push($_) if $_ ~~ any(@b); }; @r}; say(<a b c> & <c d e>); 17:25
p6eval nom 0f9695: OUTPUT«c␤»
fsergot nom: sub infix:<&>(@a, @b) { my @r; for @a { @r.push($_) if $_ ~~ any(@b); }}; say(<a b c> & <c d e>);
p6eval nom 0f9695: OUTPUT«c␤»
TimToady your if can be replaced by "when any(@b)" 17:26
though smartmatching is not symmetrical, so your & is very commutative 17:28
*not very
fsergot TimToady++ 17:29
fsergot will be back later 17:32
o/
dalek ecs: 907649f | larry++ | S (2 files):
dig up 'as' fossils found by fsergot++

These fossils will now be curated by the Github Museum.
17:45
TimToady
.oO(the making of coprolites is one way of reducing the design smell)
17:48
cognominal less tasty for the coprophages, though 17:56
fglock o/ 17:57
TimToady \o 17:58
fglock is perlcabal.org/syn/ up to date? 17:59
colomon fglock: considering the spec changed 15 minutes ago, probably not 17:59
fglock :P
I'm looking to the perl6 equivalent to perl5 "ref()" 18:00
get the class name as a astring
string
moritz .WHAT.gist 18:01
moritz in rakudo, one can also write $obj.^name 18:01
nom: say 1.^name
p6eval nom 4f0ed5: OUTPUT«Int␤»
moritz nom: say 1.WHAT.perl
p6eval nom 4f0ed5: OUTPUT«Int␤»
fglock $x.WHAT.perl seems to work best, it doesn't append "()" 18:02
thanks
TimToady note that the string cannot be used as a class name without some care 18:09
p6 is much pickier about symbolic references 18:10
if you say "Int".bless you're going to end up with a Str 18:11
moritz perl6: say ::('Int').new.WHAT
p6eval pugs b927740: OUTPUT«Int␤»
..rakudo 4f0ed5, niecza v14-72-gf99bd59: OUTPUT«Int()␤»
TimToady perl6: say ::(Int).new.WHAT; # curious 18:12
p6eval rakudo 4f0ed5: OUTPUT«use of uninitialized value of type Int in string context␤Not enough positional parameters passed; got 1 but expected 2␤ in method new at src/gen/CORE.setting:7543␤ in block <anon> at /tmp/Sn2h_5_TGM:1␤␤»
..pugs b927740: OUTPUT«Int␤»
..niecza v14-72-gf99bd59: OUTPUT«Any()␤»
TimToady some disagreement there :) 18:13
TimToady wonders if ::() should allow a hardref fallback on non-strings
I suppose one could always write ::( $x ~~ Str ?? $x :: $x.WHAT.perl ) though 18:15
doubtless a p5-to-p6 translator would want to macroize a number of p5 sloppinesses like that
TimToady actually, it would probably want to recognize the ref($x) || $x idiom and refactor it to the opposite in p6 18:18
($x ~~ Stringy ?? $x.WHAT !! $x).bless or some such 18:20
and I see I used :: instead of !! the previous example :)
bbl & 18:24
fglock rakudo: class X { 123 }; my $v = {}; X.bless($v); $v.WHAT.perl 18:25
p6eval rakudo 4f0ed5: ( no output )
fglock rakudo: class X { 123 }; my $v = {}; X.bless($v); say $v.WHAT.perl 18:26
p6eval rakudo 4f0ed5: OUTPUT«Hash␤»
TimToady rakudo: class X { 123 }; my $v = {}; X.bless($v).WHAT.say 18:28
p6eval rakudo 4f0ed5: OUTPUT«Hash()␤»
TimToady things like reblessing are usually done by mixins in P6 18:29
rakudo: role X { 123 }; my $v = {}; ($v but X).WHAT.say 18:30
p6eval rakudo 4f0ed5: OUTPUT«Hash+{X}()␤»
TimToady &
fglock TimToady: thanks
probably evil perl5-ish "bless": 18:33
rakudo: role X { 123 }; my $v = {}; $v but= eval "X"; $v.WHAT.say
p6eval rakudo 4f0ed5: OUTPUT«Hash+{X}()␤»
fglock perl6: role X { 123 }; my $v = {}; $v but= eval "X"; $v.WHAT.say 18:34
p6eval rakudo 4f0ed5: OUTPUT«Hash+{X}()␤»
..pugs b927740: OUTPUT«*** Cannot cast from VStr "Land der Berge, Land am Strome," to VCode (VCode)␤ at Prelude.pm line 541, column 5-16␤»
..niecza v14-72-gf99bd59: OUTPUT«===SORRY!===␤␤Cannot make assignment out of but because structural infix operators are diffy at /tmp/AB3a5gpaly line 1:␤------> role X { 123 }; my $v = {}; $v but=⏏ eval "X"; $v.WHAT.say␤␤Unhandled exception: Check fail…
fglock perl6: sub bless ($v is rw, $class) { $v = $v but eval $class }; role X { 123 }; my $v = {}; bless($v, "X"); $v.WHAT.say 18:36
p6eval niecza v14-72-gf99bd59: OUTPUT«Unhandled exception: Role(s) being mixed in do not define precisely one, public attribute␤ at /home/p6eval/niecza/lib/CORE.setting line 1317 (infix:<does> @ 10) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1320 (infix:<but> @ 3) ␤ at /tmp/adPmhkWLWE l… 18:37
..pugs b927740: OUTPUT«*** Must only use named arguments to new() constructor␤ Be sure to use bareword keys.␤ at Prelude.pm line 541, column 5-16␤»
..rakudo 4f0ed5: OUTPUT«Hash+{X}()␤»
fglock rakudo loves me more
maybe I could just create an object that contains the hash/array/scalar as an attribute 18:41
fglock perl6: sub bless ($v is rw, $class) { $v = (eval $class).new(val=>$v) }; class X { has $.val }; my $v = {}; bless($v, "X"); $v.WHAT.say 18:50
p6eval pugs b927740: OUTPUT«X␤»
..rakudo 4f0ed5, niecza v14-72-gf99bd59: OUTPUT«X()␤»
fglock niecza: sub bless ($v is rw, $class) { $v = (eval $class).new(val=>$v) }; class X { has $.val }; my $v = {}; bless($v, "X"); $v.WHAT.say 18:51
p6eval niecza v14-72-gf99bd59: OUTPUT«X()␤»
fglock yay!
sorear good * #perl6 19:28
phenny sorear: 15:40Z <colomon> tell sorear Looking at GLib.Process.SpawnSync for implementing run. Do you have a suggested way to get GLib into niecza's core? We could handle it the same way we do in the Gtk scripts, but I'm not sure if that's appropriate for the core....
sorear fglock: \o/!! long time no see
fglock: how's perlito?
fglock hi sorear!
I'm now working on the perl5-to-perl6 backend 19:29
perlito6 is getting very little attention these days :(
sorear phenny: tell colomon I had in mind using a reflective load, falling back to ShellQuote if glib is not available try { Type.GetType("GLib.Process,glib more-bits") } catch(...) { ... }
phenny sorear: I'll pass that on when colomon is around.
fglock sorear: I'm looking for idioms in perl6 that behave like perl5's bless(), ref(), and so on 19:32
so that I can bootstrap the perl5 compiler in a perl6 backend 19:33
that is, run perl5 "natively" in a perl6 environment 19:34
sorear that'll be a problem - there's nothing in native Perl 6 that behaves quite like bless() 19:35
fglock see my test a few lines above - it seems to work 19:36
it wraps the hash in an object
sorear I've been intending for a while to add a p5 compatibility mode to niecza's core VM, with, among other things, a p5 metaobject and bless
fglock: that's not at all how p5's bless works
p5's bless does not create objects 19:37
it changes the type of existing objects
a p5 hash is a typeless object, so you can't call methods against it
after bless(), all existing references continue to point to the same object, which now has a type
eval: package Foo; sub bar { 5 }; my $obj = { }; package main; bless $obj, 'Foo'; say $foo->bar 19:38
buubot_backup sorear: ERROR: Can't call method "say" on an undefined value at (eval 20) line 1.
sorear eval: package Foo; sub bar { 5 }; my $obj = { }; package main; bless $obj, 'Foo'; print $foo->bar
buubot_backup sorear: ERROR: Can't call method "bar" on an undefined value at (eval 20) line 1.
fglock I'm planning to use several levels of indirection to simulate that
sorear eval: package Foo; sub bar { 5 }; my $obj = { }; package main; bless $obj, 'Foo'; print $obj->bar
buubot_backup sorear: 51
fglock it's the same problem in the javascript backend 19:39
"REF" will probably need to be a class itself
but a native p5 VM in dotnet would be very useful for perlito5 19:40
felher After i had some luck finding fossils by searching for <as>, which were then removed by TimToady++, i searched with some other regexes and found a few typos. I will fix and commit them if someone tells me if the first two really are errors and that if i fixed them correctly. 19:41
typos: paste.pocoo.org/show/556652/
fglock niecza: sub bless ($v is rw, $class) { $v = (eval $class).new(val=>$v) }; class X { has $.val; method bar { 5 } }; my $v; bless($v, "X"); say $v.bar 19:44
p6eval niecza v14-72-gf99bd59: OUTPUT«5␤»
fglock $v is not really a reference in the line above; the actual implementation would be more complicated 19:45
[Coke] wonders how he got a merge commit in roast. whoops. 19:46
sorear git pull?
felher: "git diff" output would have been easier to scan.
fglock eval() and double-pointers will make things slower 19:47
I hope to find a better alternative
sorear fglock: Why aren't you using ::()
?
felher sorear: okay, one moment :)
fglock ah, that works - thanks! 19:48
sorear felher: First is a typo, second is no.
not.
TimToady whoops, felher++, wrong attribution... 19:50
felher TimToady: np :) 19:51
TimToady too many f-words :)
fglock I also probably need REF-objects because ( @a.WHAT ) is the same as ( my $a = []; $a.WHAT )
so bless() will be a double-wrap 19:52
TimToady maybe we just need an SV type in P6 :/ 19:53
[Coke] perl6: eval die 19:53
p6eval niecza v14-72-gf99bd59: OUTPUT«Unhandled exception: Died␤ at /home/p6eval/niecza/lib/CORE.setting line 1360 (die @ 3) ␤ at /tmp/eN5w25xrVD line 1 (mainline @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3830 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3831 (module…
..rakudo 4f0ed5: OUTPUT«␤ in block <anon> at /tmp/oPMRaOPCPh:1␤␤»
..pugs b927740: OUTPUT«*** Died␤ at /tmp/FjfzLLYgYB line 1, column 6 - line 2, column 1␤»
felher sorear: so "To capture to an outer lexical variable" is better than "To capture an outer lexical variable"? (if it isn't and just looked like it was in pastebin, i know that i should have given more context - or should have pasted a diff as you said in the first place :) ) 19:54
not_gerd nom: role Foo { method bar { say self<spam>; } }; sub bless5 ($obj, $role) { $obj does ::($role) }; bless5({ spam => 'eggs' }, 'Foo').bar; 19:55
p6eval nom 4f0ed5: OUTPUT«eggs␤»
not_gerd hello, #perl6 19:56
felher o/
fglock not_gerd++ 19:57
colomon sorear++ # not that I'm fully sure I understand that, but at least it's a place to start! 19:58
phenny colomon: 19:29Z <sorear> tell colomon I had in mind using a reflective load, falling back to ShellQuote if glib is not available try { Type.GetType("GLib.Process,glib more-bits") } catch(...) { ... }
TimToady felher: the 'capture to an outer' in S05 is probably a fossil anyway from before we had :my 20:01
pmurias TimToady: we have a sort of SV type in niecza already which holds a p5 SV for interop purposes
phenny pmurias: 07:37Z <sorear> tell pmurias It would be nice if you could add a description of your latest p5 interop stuff to announce.v15 sometime before Tue Feb 28 08:00:00 UTC 2012
fglock not_gerd: why does it work, if the $obj argument to bless5 is not rw - I think aguments are not rw by default?
pmurias fglock: hi
fglock pmurias: hi!
TimToady pmurias: I presume that in P6 your SV is always an object, unlike in P5, and that the SV's methods will reflect many of the internal APIs of P5's SVs 20:03
au fglock: $obj is not writable, but its content is
niecza: role Foo { method bar { say self<spam>; } }; sub bless5 ($obj, $role) { $obj = "not writable" }; bless5({ spam => 'eggs' }, 'Foo').bar;
p6eval niecza v14-72-gf99bd59: OUTPUT«Potential difficulties:␤ $role is declared but not used at /tmp/oB49Aiud8K line 1:␤------> say self<spam>; } }; sub bless5 ($obj, ⏏$role) { $obj = "not writable" }; bless5␤␤Unhandled exception: assigning to readonly value␤ at /tmp/oB4… 20:04
au (i.e. a readonly hash value is still a mutable hash) 20:04
TimToady alas :) 20:05
felher TimToady: ah, great. Than i leave it as is for people who know what they are doing :)
pmurias TimToady: currently it tries to expose a perl6ish interface, but a raw one could be helpfull too 20:06
sorear felher: "To capture to an outer lexical variable" and "To capture an ..." mean completely different things
TimToady looks around to see if there's anyone here who knows what they're doing...
sorear felher: in the former, "an ..." is an indirect object, in the latter it is a direct object
pmurias TimToady: that's a wrong approach? 20:07
sorear the direct object of "capture" in a S05 context is always some submatch, never a variable, so the latter form is semantically wrong
TimToady pmurias: I'd guess it would be a hybrid of both
and the 6ish bits would be built on 5ish bits that might or might not be accessible 20:08
felher sorear: ah, big thanks for the explanation :)
sorear pmurias: it's a fine approach but it's not relevant here
pmurias: fglock is looking to support Perl 5 directly at the C#/NQP/Perl6 level, *NOT* by linking to libperl 20:09
pmurias sorear: i know ;) 20:10
sorear: targeting C#/libperl would make much sense 20:11
sorear fglock: the 'SimpleVariable' type in Niecza's core is conciously modelled on SV.
pmurias sorear: wouldn't
jnthn home from $trip 20:12
sorear fglock: it doesn't have all the features that are needed for P5, so a 'P5Variable' class is likely needed; both would inherit from the 'Variable' class (which already exists, and is used for TiedVariable)
Perl 6 has the nice feature that a variable can't switch between tied and not-tied after creation
o/ jnthn 20:13
dalek ecs: d5f5207 | larry++ | S05-regex.pod:
remove autodeclaration fossil from regex
TimToady read that as "jnthn home from strip" 20:14
TimToady sorear: and P5 has the nice feature that it can (albeit with dire performance implications) 20:15
jnthn TimToady: Ouch...well, depending on what meaning of strip you parsed it as :P 20:16
TimToady well, the Vegas Strip is pretty painful...
jnthn Indeed. Vegas, I discovered, was one of those places worth visiting once in a lifetime. *Only* once. :) 20:17
sorear ȷnthn
dalek ecs: 0698449 | (Felix Herrmann)++ | S (6 files):
fix a few typos
TimToady but I will admit it was probably some freudian neuron that decided to read it as "strip"
Teratogen Is it true that if you wander into a casino bar in Las Vegas, sit down and have a drink, almost immediately a hawt woman escort will be sitting next to you? 20:18
au probably the same state-of-neurons that coded the original $calar @rray %ash mnemonic...
sorear begins looking into ways to hack the mono heap profiler 20:19
jnthn looks at the schedule for next week and sees two whole days just for doing Perl 6 stuff on it. o/ 20:20
TimToady Teratogen: no, for many values of no
sorear my misogyny sense is tingling 20:21
TimToady that's one of the values of no
Teratogen Well ok then! =( 20:22
au goes headsdown a bit hacking some %@$&#|| code for $job 20:24
TimToady HTAAOF
sorear au: <3 J
TimToady sorear: then why haven't you implemented S09 yet? :P 20:25
sorear because I <3 other things more :P 20:26
TimToady knows the feelin'
au (that "%@$&#||" was 31337 encoding for "haskell", btw, although J would be a fine language for the task too :p)
sorear also, I've gotten hung up on the details of the @a[||@b] syntax - I have a problem with forests and trees 20:27
TimToady is dense, and didn't get au++'s 1337ness
sorear 1337: still looks to me like a large prime number rather than words 20:28
and apparently my visual cortex ain't that great at recognizing primes either... 20:29
au was about to say 7 * 191 :)
TimToady the & is kind of a stretch, but %@S is great
%@$ even
maybe !! for the ll though
to make it look more like swearing, of course
fglock p5-to-p6 passes 76 tests out of 165 - and low hanging fruits are getting higher 20:37
sorear bleh. MONO_GC_DEBUG='heap-dump=...' output doesn't include field values 20:41
time to do some *really* evil stuff and write a custom parser for log-profiler binary output.mlpd files 20:43
[Coke] I'm seeing a lot of class comparisons of {{ random.WHAT.gist }} to {{ Type.gist }} - is that the desired comparison, or can we just compare .WHAT to Type ? 20:48
sorear It's a workaround for the fact that some compilers implement is using .Str, and all type objects .Str to "" 20:53
au whee, perlito-p5-to-p6 passes 83 out of 165 on niecza-14 -- more than halfway there 21:01
fglock++
dalek kudo/bs: 71afcfc | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.pm:
Missed setting of scalar container type, which has to be outside of the bootstrap BEGIN.
21:17
kudo/bs: 773135b | jnthn++ | src/Perl6/Actions.pm:
Disable create_lexical_capture_fixup for now - needs redoing but hopefully can think of something better...
dalek ast: 1b91866 | coke++ | S (2 files):
Convert to explicit plan
21:24
ast: 545136e | coke++ | / (8 files):
pugs fudge
gs.hs: 0475e80 | coke++ | t/spectest.data:
run fudged tests
21:25
fsergot is back 21:26
jnthn o/ fsergot 21:29
fsergot o/ jnthn
dalek kudo/bs: 77f5f86 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.pm:
Ensure that default stash types get set up. Gets us somewhat further (to about line 2000) into building CORE.setting.
21:34
ast: 454fdc3 | coke++ | S0 (2 files):
pugs fudge
21:35
gs.hs: 843ce54 | coke++ | t/spectest.data:
run fudged tests
[Coke] "pugs" , 4023, 5, 1849, 164, 6041, 23430 21:39
so, I'll get it up to 20% by the weekend.
TimToady when will it get to ++? :)
[Coke] that will require haskell programmers. 21:40
so far I've just been fudging tests. and I wrote a one line p6 function.
biggest lack I see right now is .gist 21:41
(and eval_lives_ok)
dalek p/bs: 9484f10 | jnthn++ | src/6model/serialization.c:
Be sure deserialized closures are tagged with the SC they came from.
21:58
dalek p/bs: 2ef1915 | jnthn++ | src/6model/serialization.c:
D'oh...the serializer forgot to tag an outer context after it had seen it, meaning that we re-serialized it for every closure that pointed to it. This not only bulked up the serialization, but also busted stuff.
22:12
kudo/bs: fc64d28 | jnthn++ | src/Perl6/Metamodel/MultiMethodContainer.pm:
Improve a failure mode (though it seems hitting this failure mode is bogus...)
22:16
kudo/bs: aac93a1 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.pm:
Move default parent type registration out of the bootstrap BEGIN. With this and the nqp/bs fixes it seems we make it through the parse/actions/object building of CORE.setting and explode right at the end (though that does *not* mean this is virtually done - still some trickiness to come!)
dalek kudo/bs: ea2f595 | jnthn++ | src/Perl6/World.pm:
Re-organize/update Perl6::World.to_past so it actually calls the serializer and follows the new HLL::World API.
22:39
kudo/bs: 799d6c0 | jnthn++ | src/pmc/perl6lexinfo.pmc:
Update Perl6LexInfo to keep hold of the static code ref, just like NQPLexInfo does.
dalek p/bs: 894a1f7 | jnthn++ | src/6model/serialization.c:
Enable handling of Perl6LexInfo instead of NQPLexInfo (perhaps wants some kinda better mechanism at some point).
22:40