»ö« 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.
[Coke] rakudo: class Foo { method bar { Quux.parse('OH HAI'); } }; grammar Quux { rule TOP { .* } }; Foo.bar; 02:55
p6eval rakudo 29f5cf: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&Quux' called (line 1)␤»
[Coke] std: class Foo { method bar { Quux.parse('OH HAI'); } }; grammar Quux { rule TOP { .* } }; Foo.bar; 02:56
p6eval std 52f3895: OUTPUT«===SORRY!===␤Illegally post-declared type:␤ 'Quux' used at line 1␤Check failed␤FAILED 00:01 111m␤»
[Coke] rakudo: sub foo(Str) {}; foo 42 02:58
p6eval rakudo 29f5cf: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'foo' will never work with argument types (int) (line 1)␤ Expected: :(Str )␤»
[Coke] rakudo: "abc" ~~ /()/ 03:00
p6eval rakudo 29f5cf: OUTPUT«===SORRY!===␤Unrecognized regex metacharacter (must be quoted to match literally) at line 1, near "/"␤»
[Coke] rakudo: "abc" ~~ /[]/
p6eval rakudo 29f5cf: OUTPUT«===SORRY!===␤Unrecognized regex metacharacter (must be quoted to match literally) at line 1, near "/"␤»
[Coke] rakudo: "foo" ~~ /(foo)/; say "$0a" 03:01
p6eval rakudo 29f5cf: OUTPUT«===SORRY!===␤Method 'ast' not found for invocant of class 'Undef'␤»
[Coke] rakudo: multi foo() { say "OH HAI" }; multi foo(Int $a?) {}; multi foo(Str $a?) {}; foo 03:02
p6eval rakudo 29f5cf: OUTPUT«Ambiguous dispatch to multi 'foo'. Ambiguous candidates had signatures:␤:()␤:(Int $a?)␤:(Str $a?)␤␤ in block <anon> at /tmp/nOVeVHPRdW:1␤␤»
[Coke] rakudo: sub infix:<+-*/>($a, $b) { ( { $a + $b }, { $a - $b }, { $a * $b }, { $a / $b } )>>.() }; say 5+-*/2 03:05
p6eval rakudo 29f5cf: OUTPUT«WhateverCode.new()␤»
[Coke] rakudo: say ( { 1 + 1 }, { 2 + 2 } )>>.()
p6eval rakudo 29f5cf: OUTPUT«2 4␤»
[Coke] akudo: say ( { 1 + 1 }, { 2 + 2 } )>>()
rakudo: say ( { 1 + 1 }, { 2 + 2 } )>>()
p6eval rakudo 29f5cf: OUTPUT«===SORRY!===␤Method 'isa' not found for invocant of class 'Undef'␤»
[Coke] rakudo: say ( { 1 + 1 }, { 2 + 2 } )>>.() 03:06
p6eval rakudo 29f5cf: OUTPUT«2 4␤»
[Coke] akudo: / / 03:08
rakudo: / /
p6eval rakudo 29f5cf: OUTPUT«===SORRY!===␤Null regex not allowed at line 1, near ""␤»
[Coke] rakudo: / & /
p6eval rakudo 29f5cf: ( no output )
[Coke] rakudo: / | /
p6eval rakudo 29f5cf: ( no output )
[Coke] rakudo: class A is A {}; say A.new 03:09
p6eval rakudo 29f5cf: OUTPUT«===SORRY!===␤No applicable candidates found to dispatch to for 'trait_mod:<is>'. Available candidates are:␤:(Attribute:D $attr, Any :rw(:$rw)!)␤:(Attribute:D $attr, Any :readonly(:$readonly)!)␤:(Attribute:D $attr, Any :box_target(:$box_target)!)␤:(Routine:D $r, Any…
dalek ast: 763cd54 | (Solomon Foster)++ | S03-operators/set.t:
Set subtraction, symmetric difference, is subset of, and is not a subset of tests.
03:25
colomon there are a shockingly huge number of set operator cases to test.... 03:28
sorear colomon: you're trying to actually write exhaustive tests for roast? <3 03:34
iiuc, Perl 5 has well over 30,000 tests
...for "pack" alone
cognominal_ nom: sub a() { return :a }; say a; sub b() { :b }; say b 03:53
p6eval nom 29f5cf: OUTPUT«"a" => Mu␤"b" => Bool::True␤»
cognominal_ niecza: sub a() { return :a }; say a; sub b() { :b }; say b 03:54
p6eval niecza v14-42-g1d02da9: OUTPUT«Unhandled exception: Excess arguments to return, unused named a␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (return @ 1) ␤ at /tmp/Nf9eAqJCaN line 1 (a @ 3) ␤ at /tmp/Nf9eAqJCaN line 1 (mainline @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3…
cognominal_ nom: sub a() { return (:a) }; say a; sub b() { (:b) }; say b 03:55
p6eval nom 29f5cf: OUTPUT«"a" => Bool::True␤"b" => Bool::True␤»
dukeleto travis-ci.org/#!/leto/rakudo 05:25
rakudo unit tests running on Travis CI 05:26
I have the perl 6 spec test suite running too, but it times out. I am working with the Travis CI to get configurable timeouts.
emss just saw "Camelia" for the first time in my life. first thought that came to me ... drugs :) 05:50
cognominal_ nope: just altered reality :) 05:51
sorear we don't need no chemical hallucinogens in here. TimToady's reality distortion field is good enough for anyone. 06:00
cognominal_ TimToady is a psychoactive toad : en.wikipedia.org/wiki/Psychoactive_toad 06:21
moritz \o 06:45
moritz that travis CI link only shows me the page structure, but no contents 06:47
dalek kudo/rat-vs-fatrat: 85196e7 | moritz++ | src/core/Rat.pm:
conversions between Rat and FatRat
07:16
ast: 6bb35cb | moritz++ | S32-num/power.t:
fudge a rakudo test that we will regress on for a while
07:17
kudo/nom: 85196e7 | moritz++ | src/core/Rat.pm:
conversions between Rat and FatRat
07:19
kudo/nom: dc7bcfb | moritz++ | / (2 files):
Merge remote branch 'origin/rat-vs-fatrat' into nom
moritz phenny: tell jnthn the fat-vs-fatrat merge introduced a regression in t/spec/S14-roles/mixin.rakudo which I find quite curious: "Can not get non-existent attribute '$!numerator' on class '$?CLASS'" seems like that should be an actual class name, not $?CLASS 07:42
phenny moritz: I'll pass that on when jnthn is around.
moritz I think there might be a codegen bug hidden somewhere, which is why I haven't fudged the regression 07:44
dalek kudo/nom: 6b1cbaa | moritz++ | docs/ChangeLog:
update ChangeLog
moritz commute & 07:54
moritz phenny: ask colomon if we have any test for Rat arithmetics that trigger the fallback to Num 08:37
phenny moritz: I'll pass that on when colomon is around.
sorear I know that niecza had failing tests in pow.t that were related to suboptimal fallbacking 08:40
the old 1.1**100 test (don't remember exact numbers)
moritz well, that's not the case I had in mind 08:43
that one is related to ReallyBigInt.Num / ReallyBigInt.Num being Inf/Inf == NaN
what I had in mind was more like (1/2**33) ** 2 ~~ Num 08:44
moritz niecza: say 0.5.perl 08:52
p6eval niecza v14-42-g1d02da9: OUTPUT«<1/2>␤»
jnthn mornin' 08:58
phenny jnthn: 07:42Z <moritz> tell jnthn the fat-vs-fatrat merge introduced a regression in t/spec/S14-roles/mixin.rakudo which I find quite curious: "Can not get non-existent attribute '$!numerator' on class '$?CLASS'" seems like that should be an actual class name, not $?CLASS
jnthn That sounds very odd. 08:59
moritz: What test, ooc?
jnthn doesn't have a dev environment for Rakudo at $dayjob 09:00
moritz nom: (2/3) but True
p6eval nom 6b1cba: OUTPUT«Can not get non-existent attribute '$!numerator' on class '$?CLASS'␤ in block <anon> at /tmp/7qizKFLfFP:1␤␤»
moritz what the merge changed was that the attributes are now declared in a role 09:01
nom: role A { has Int $.a }; class B does A { }; A.new but True
p6eval nom 6b1cba: OUTPUT«Can not get non-existent attribute '$!a' on class '$?CLASS'␤ in block <anon> at /tmp/gZ1iL8NUoa:1␤␤»
moritz that seems to indicate to me that it tries to locate the attribute in '$?CLASS' instead of in $?CLASS 09:02
and that the codegen path is sufficiently rare that we don't typically notice that
nom: role A { has $.a }; class B does A { }; A.new but True 09:04
p6eval nom 6b1cba: OUTPUT«Can not get non-existent attribute '$!a' on class '$?CLASS'␤ in block <anon> at /tmp/VBkXjvyfW5:1␤␤»
moritz nom: role A { has $!a }; class B does A { }; A.new but True
p6eval nom 6b1cba: OUTPUT«Can not get non-existent attribute '$!a' on class '$?CLASS'␤ in block <anon> at /tmp/Ys1ZFebZHs:1␤␤»
moritz nom: role A { has $.foo }; class B does A { method x() { say $!foo } }; say A.new(foo => 3).x
p6eval nom 6b1cba: OUTPUT«===SORRY!===␤Attribute $!foo not declared in class B␤at /tmp/MR2ZVh8ykN:1␤» 09:05
jnthn nom: role A { has $!a }; class B does A { }; A.new but role { } 09:06
p6eval nom 6b1cba: OUTPUT«Can not get non-existent attribute '$!a' on class '$?CLASS'␤ in block <anon> at /tmp/fXUnd6RSmN:1␤␤»
jnthn nom: role A { has $!a }; class B does A { }; A.new 09:07
p6eval nom 6b1cba: ( no output )
jnthn nom: role A { has $!a }; class B does A { }; A.new does role { }
p6eval nom 6b1cba: ( no output )
jnthn Oh. Only happens with but.
nom: role A { has $!a }; class B does A { }; A.new.clone() 09:09
p6eval nom 6b1cba: OUTPUT«Can not get non-existent attribute '$!a' on class '$?CLASS'␤ in block <anon> at /tmp/pJMnk5Pq1B:1␤␤»
jnthn Bingo.
moritz colomon++ # FatRat tests have found several bugs in my code
nom: Mu.new.clone 09:10
p6eval nom 6b1cba: ( no output )
moritz and Mu.clone uses my $package := $attr.package 09:11
jnthn Yeah...which is clearly not getting its generic instantiation.
moritz nom: role A { has $!a }; class B does A { }; for B.^attributes -> { say .package } 09:12
p6eval nom 6b1cba: OUTPUT«Too many positional parameters passed; got 1 but expected 0␤ in block <anon> at /tmp/0R3RR555xV:1␤␤»
moritz nom: role A { has $!a }; class B does A { }; for B.^attributes { say .package } 09:12
p6eval nom 6b1cba: ( no output )
moritz nom: role A { has $!a }; class B does A { }; for B.new.^attributes { say .package }
p6eval nom 6b1cba: ( no output )
moritz nom: role A { has $.a }; class B does A { }; for B.^attributes { say .package } 09:14
p6eval nom 6b1cba: ( no output )
moritz nom: role A { has $.a }; class B does A { }; for B.^attributes(:all) { say .package }
p6eval nom 6b1cba: ( no output )
moritz nom: role A { has $.a }; class B does A { }; for B.^attributes(:private) { say .package }
p6eval nom 6b1cba: ( no output )
moritz nom: role A { has $.a }; class B does A { }; for B.^attributes { say $_ }
p6eval nom 6b1cba: OUTPUT«$!a␤»
moritz nom: role A { has $.a }; class B does A { }; for B.^attributes { say $_; say $_.package.Str }
p6eval nom 6b1cba: OUTPUT«$!a␤» 09:15
moritz nom: role A { has $.a }; class B does A { }; for B.^attributes { say $_; pir::say pir::typeof__SP($_.package) }
p6eval nom 6b1cba: OUTPUT«$!a␤$?CLASS␤»
moritz somehow the exception got eaten :(
jnthn It's a type variable.
And should complain loudly about being used
moritz star: role A { has $.a }; class B does A { }; for B.^attributes { say $_; say $_.package } 09:16
p6eval star 2012.01: OUTPUT«$!a␤Cannot call a method on type variable $?CLASS␤ in find_method at src/gen/Metamodel.pm:267␤ in sub say at src/gen/CORE.setting:5931␤ in block <anon> at /tmp/w0WdtQb4KN:1␤ in method reify at src/gen/CORE.setting:4471␤ in method reify at src/gen/CORE.setting:4…
jnthn Like that.
moritz oh my
I hope my backtrace stuff didn't kill that error message :/
jnthn Try locally with --ll-exception? 09:17
moritz yep, it eated it :/
I'll try to debug and fix that after the FatRat stuff 09:18
jnthn OK
Anyway, I see what the issue is now.
masak good Monday, #perl6 09:19
moritz it shouldn't be a type variable when the class is already compose, no?
\o masak
*composed
jnthn moritz: Type variables should always be subtituted by something concrete by the time the class is composed. 09:20
o/ masak
moritz jnthn: should I submit a bug report for that? 09:23
jnthn Yeah, can do; it'll track the fixing of that test
moritz we also have a failing test right now
jnthn yes, that's the "that test" I meant :) 09:24
masak nom: say ( { 1 + 1 }, { 2 + 2 } )>>()
p6eval nom 6b1cba: OUTPUT«===SORRY!===␤Method 'isa' not found for invocant of class 'Undef'␤»
masak nom: say ( { 1 + 1 }, { 2 + 2 } )>>.()
p6eval nom 6b1cba: OUTPUT«2 4␤»
masak shouldn't these two be equivalent?
jnthn std: say ( { 1 + 1 }, { 2 + 2 } )>>() 09:25
p6eval std 52f3895: OUTPUT«ok 00:01 111m␤»
jnthn :/
Dunno.
moritz I think they should be the same, yes
that error message sounds like an internal error while building the PAST tree 09:26
jnthn nom: say ( [ 1,2,3], [3,4,5] )>>[1]
p6eval nom 6b1cba: OUTPUT«.[1] out of range for type 1␤ in block <anon> at /tmp/VHBPQvbPeg:1␤␤»
moritz jnthn: that hypers all the way down these days
jnthn yeah
but it compiles the same as the other case 09:27
Well, I had to special case the >>.() handling
I'm guessing somehow the >>() handling doesn't fall out the same way for some reason.
moritz totally loves history rewriting in git 09:30
you wouldn't believe how messy my commits would look without it
I mean, even messier than right now :-) 09:31
jnthn wishes more developers actually cared for their commits looking good and made effort towards it. 09:33
bbkr hi. I'm trying to write nice wrapper for GeoIP libraries, however when I use NativeCall I always get "dyld: lazy symbol binding failed: Symbol not found: _dlLoadLibrary" message. I did typical "Configure.pl, make, make install" installation for Rakudo Star 2012.01, without superuser. 09:34
masak sorear: I think it's more like 17k tests for pack/unpack. still, a scary amount.
bbkr do I have to point linker to some parrot/nqp library responsible for native libraries loading? I'm on MacOS 10.7
jnthn bbkr: dlLoadLibrary is a function from the dyncall libary, which is linked into nqp_dyncall_ops 09:37
bbkr: This happens during the build of NQP.
bbkr jnthn: yes, it's says also that it expects that lib in nqp_dyncall_ops.bundle flat namespace, whatever that means. 09:41
moritz hm, is nqp_dyncall_ops properly installed?
bbkr how can I check that ? 09:42
dalek ast: 4457dc4 | moritz++ | S32-trig/ (13 files):
unfudge FatRat + trig tests
09:43
masak hey net, don't split like that. 10:00
dalek kudo/nom: 5d20cb5 | moritz++ | src/core/ (4 files):
coercion methods to FatRat
10:07
kudo/nom: ddd1f02 | moritz++ | src/core/Rat.pm:
fix thinko in DIVIDE_NUMBERS
kudo/nom: 5b9e9af | moritz++ | src/core/Rat.pm:
separate FatRat.perl, fix Rational.Str
dalek kudo/nom: 306626c | moritz++ | src/core/ (2 files):
make error reporting more robust
10:14
moritz niecza: say .88888888888.WHAT 10:20
p6eval niecza v14-42-g1d02da9: OUTPUT«Rat()␤»
dalek ast: 95584f8 | moritz++ | S32-num/fatrat.t:
fudge fatrat.t for rakudo
10:22
colomon moritz: I don't think I got around to writing tests for the fallback from Rat to Num.
phenny colomon: 08:37Z <moritz> ask colomon if we have any test for Rat arithmetics that trigger the fallback to Num
moritz colomon: ok, I'll see what I can do
masak std: my @a = 1..5; say ~»@a 10:25
p6eval std 52f3895: OUTPUT«===SORRY!===␤Prefix requires an argument at /tmp/tRaLY8bCuw line 1:␤------> my @a = 1..5; say ~⏏»@a␤Parse failed␤FAILED 00:01 111m␤»
masak std: my @a = 1..5; say »~@a
p6eval std 52f3895: OUTPUT«===SORRY!===␤Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/PEo1z1sqQE line 1:␤------> my @a = 1..5; say⏏ »~@a␤Missing « or » at /tmp/PEo1z1sqQE line 1:␤--…
moritz try ~<<@a
masak std: my @a = 1..5; say ~<<@a
p6eval std 52f3895: OUTPUT«ok 00:01 111m␤»
masak std: my @a = 1..5; say ~«@a 10:26
p6eval std 52f3895: OUTPUT«ok 00:01 111m␤»
masak I clearly shouldn't operate heavy machinery today.
moritz: thanks.
dalek kudo/nom: 125e7f9 | moritz++ | / (2 files):
more FatRat type fixes; run the tests!
moritz ok, that's around 250 new passing tests for rakudo
so I guesstimate that FatRat brought us a total of 270 additional passing tests 10:27
masak std: say »<foo> 10:30
p6eval std 52f3895: OUTPUT«===SORRY!===␤Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/muRhwR5vsO line 1:␤------> say⏏ »<foo>␤Missing « or » at /tmp/muRhwR5vsO line 1:␤------> s…
colomon sounds about right. :)
masak std: say ».<foo>
p6eval std 52f3895: OUTPUT«===SORRY!===␤Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/zfwL3_OlGb line 1:␤------> say⏏ ».<foo>␤Method call found where infix expected (change whitespa…
masak std: say .»<foo>
p6eval std 52f3895: OUTPUT«===SORRY!===␤Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/fLEWUouxUJ line 1:␤------> say⏏ .»<foo>␤Confused at /tmp/fLEWUouxUJ line 1:␤------> say […
masak std: say «.<foo>
p6eval std 52f3895: OUTPUT«===SORRY!===␤Unable to parse shell-quote words at /tmp/JOA1Mqtmu6 line 1:␤------> say ⏏«.<foo>␤Couldn't find final '»'; gave up at /tmp/JOA1Mqtmu6 line 1 (EOF):␤------> say «.<foo>⏏<EOL>␤Parse failed␤FAILED 00:0…
masak std: say .«<foo>
p6eval std 52f3895: OUTPUT«===SORRY!===␤Unable to parse quote-words subscript; couldn't find right double-angle quote at /tmp/YQDm3Lv8J0 line 1 (EOF):␤------> say .«<foo>⏏<EOL>␤Parse failed␤FAILED 00:01 108m␤»
masak moritz: halp! 10:31
is there no way to combine implicit $_ and hyper method call?
moritz $_>><foo> ?
masak implicit $_
moritz std: $_>><foo>
p6eval std 52f3895: OUTPUT«ok 00:01 108m␤»
sorear .>><foo>
moritz std: .>><foo>
p6eval std 52f3895: OUTPUT«===SORRY!===␤Bogus statement at /tmp/3Rw3bSQCov line 1:␤------> <BOL>⏏.>><foo>␤Parse failed␤FAILED 00:01 109m␤» 10:32
sorear .++, etc work too
masak yeah, but your .>><foo> didn't.
I think/hope STD is simply wrong here.
either that, or that there's a darn good reason for it being stubborn.
sorear std: .»<foo> 10:34
p6eval std 52f3895: OUTPUT«===SORRY!===␤Bogus statement at /tmp/AnL4WrHHWe line 1:␤------> <BOL>⏏.»<foo>␤Parse failed␤FAILED 00:01 109m␤» 10:35
sorear std: .».<foo>
p6eval std 52f3895: OUTPUT«===SORRY!===␤Bogus statement at /tmp/P1H8NGL2qi line 1:␤------> <BOL>⏏.».<foo>␤Parse failed␤FAILED 00:01 109m␤»
sorear niecza: .»<foo>
p6eval niecza v14-42-g1d02da9: OUTPUT«===SORRY!===␤␤Bogus statement at /tmp/0x2E7cTRK_ line 1:␤------> <BOL>⏏.»<foo>␤␤Parse failed␤␤»
sorear niecza: $_.»<foo>
colomon std: $_».<foo>
p6eval niecza v14-42-g1d02da9: ( no output )
std 52f3895: OUTPUT«ok 00:01 108m␤»
sorear very strange
colomon hyper method call is ». no? 10:36
moritz erm, both work I think 10:37
and even
std: $_.>>.<foo>
p6eval std 52f3895: OUTPUT«ok 00:01 108m␤»
masak TimToady: why does $_».<foo> work but not ».<foo> ? 10:52
(in STD, and Niecza)
nom: $_ = (1, -2, 3); say ».abs; 10:53
p6eval nom 306626: OUTPUT«===SORRY!===␤Confused␤at /tmp/tDY169UBCj:1␤»
masak and nom.
nom: $_ = (1, -2, 3); say $_».abs;
p6eval nom 306626: OUTPUT«1 2 3␤»
jnthn Note that it means parsing '>>' <dottypo> as a term, in addition to dottyop 10:54
Or however we do it today
masak sounds about right. my point is more, why aren't we already? 10:56
dalek ast: b043336 | moritz++ | S32-num/rat.t:
basic Rat -> Num overflow tests

both rakudo and niecza pass them. \o/
masak I think it's silly that (in Niecza) "Use of uninitialized value in string context"-warnings get a full stacktrace everytime. it's fantastically noisy. 11:04
much more pertinent would be to print file, line, and the variable or expression containing the uninitialized value. 11:05
("expression", 'cus it could be something like %myhash<foo>)
moritz masak: speaking of silly backtraces, have you tested my new bt printer? 11:06
masak ooh! no, I haven't!
masak git pulls rakudo 11:07
moritz nom: role A { has $.a }; class B does A { }; for B.^attributes { say $_; say $_.package } 11:16
p6eval nom 125e7f: OUTPUT«$!a␤Cannot call a method on type variable $?CLASS␤ in find_method at src/gen/Metamodel.pm:267␤ in block <anon> at /tmp/7ahhlcMHRR:1␤␤»
moritz # error reporting fixed
the problem was that find_method (?) has no .outer 11:17
and the backtrace printer was very unhappy about that
masak nom: role A { has $.a }; class B does A { }; for B.^attributes { .say } 11:18
p6eval nom 125e7f: OUTPUT«$!a␤»
masak nom: role A { has $.a }; class B does A { }; for B.^attributes { say .package }
p6eval nom 125e7f: OUTPUT«Cannot call a method on type variable $?CLASS␤ in find_method at src/gen/Metamodel.pm:267␤ in block <anon> at /tmp/_bA_kTexZF:1␤␤»
moritz that's RT #110556
masak was gonna say.
that's an error too, right? :)
masak compiling CORE.setting took 1.7 GB here. 11:21
moritz roughly the same here
masak it's too much. :) 11:22
moritz yes, but not as much as flussence++ was reporting earlier
masak no.
CORE.setting is about 10k lines of code. I want to write Perl 6 programs of that size in the future, and I don't want them to gobble up all my resources for three minutes, and make the computer unresponsive. 11:24
moritz agreed
masak I think when we've done cool stuffs with optimizer and various low-hanging fruit concerning that, there'll still be things to do in terms of resource consumption.
moritz also note that usually you factor your stuff into multiple modules, which can be compiled separately 11:25
masak that is true. 11:26
and a mitigating factor.
moritz future project for speeding up numbers: a pure-C Rat implementation, accessible through nqp:: opcodes and is repr('Rat') 11:31
moritz is not sure how much he is serious or joking
masak today's two-dimensional shape: en.wikipedia.org/wiki/Superellipse 11:33
moritz: sounds like a fine idea to me. 11:34
moritz oh, cute
masak: might be a good fit for a GSoC project, maybe 11:35
moritz should totally write that down when gets back from lunch 11:36
jnthn Another GSoC one I was pondering about: a 6model REPR for NFG strings. Along with various ops to manipulate it. 11:54
The REPR for Rat sounds sane, btw. 11:55
Note that you'd not want to "is repr('Rat')" it, but instead set it up like we have Int: it's inlined into a P6opaque, so you can still mix in to it etc but get to hang the relevant pointers straight off the main object, not with a nested one. 11:56
On memory usage of CORE.setting, there's three steps: 1) the serialization work I'm doing now. 2) QAST. 3) memory profiling and hunting for further reductions 11:58
masak \o/ 12:05
jnthn: I'm glad there's a plan. 12:06
flussence
.oO( I wonder if `ulimit -m` is using the same broken measurments as `time`... )
12:13
jnthn masak: Well, there has been for months. :) 12:19
Just taking a while to execute ;) 12:20
masak of course. 12:21
jnthn Last night the new serializer managed to chew its way through serializing the NQP meta-objects. Produced 7KB or so of output. :) 12:25
Teratogen jesus christ on a BUN!
jnthn ...a curious mental image :p 12:27
masak it's usually a cross or something. 12:28
moritz jnthn: wow, that's cool 12:30
moritz (re serialized MOP) 12:30
jnthn Yeah. My next challenge is working out how to get the binary blob safely transported in the PIR. :) 12:31
jnthn Right now it takes the binary string then emits it as unicode:"...bunch of escape sequences" - which of course comes back completely busted. 12:32
moritz well, maybe it shouldn't be 'unicode:' :-)
jnthn Right :)
moritz niecza: say 'ab' ~~ /<*abc>/ 12:48
p6eval niecza v14-42-g1d02da9: OUTPUT«===SORRY!===␤␤Action method assertion:sym<*> not yet implemented at /tmp/ayWnEfGp3G line 1:␤------> say 'ab' ~~ /<*abc⏏>/␤␤Unhandled exception: Unable to resolve method oplift in class Any␤ at /home/p6eval/niecza/src/R…
masak wants 12:50
jnthn cheers on moritz++ 12:53
Su-Shee what path did I forgot again if I see Could not load oplib `perl6_ops' 12:56
while trying to call my perl6 binary? 12:57
moritz Su-Shee: did you run 'make install'?
masak Su-Shee: maybe forgot to 'make install'?
Su-Shee ah. 12:57
moritz awards masak++ with the proximity award
masak I saw you write it, and thought "oh heck, I'll just go for the proximity award" :P 12:58
moritz masak: then the proximity award is a poor substitute for the fast typing award you could have gotten instead :-) 12:59
masak no, I was just about to hit Return :)
moritz nom: /:foo/ 13:06
p6eval nom 125e7f: OUTPUT«===SORRY!===␤Unrecognized regex metacharacter (must be quoted to match literally) at line 1, near "foo/"␤» 13:06
moritz nom: /:i/
p6eval nom 125e7f: ( no output )
moritz nom: /:ignorecase/ 13:07
p6eval nom 125e7f: ( no output )
moritz nom: say 'i' ~~ /:ignorecase I/
p6eval nom 125e7f: OUTPUT«=> <i>␤␤»
moritz nom: say 'i' ~~ /:i I/ 13:08
p6eval nom 125e7f: OUTPUT«=> <i>␤␤»
moritz nom: say 'i' ~~ m:i/I/
p6eval nom 125e7f: OUTPUT«=> <i>␤␤»
moritz nom: say 'i' ~~ m:ignorecase/I/
p6eval nom 125e7f: OUTPUT«#<failed match>␤»
moritz oh, that problem is probably easier to tackle than I feared 13:08
dalek kudo/nom: f3fe530 | moritz++ | src/Perl6/Actions.pm:
canonicalize regex adverb names

This makes ~~ m:ignorecase/.../ work again; the long forms already worked on the inside of regexes.
13:27
dalek ast: 80ceab7 | moritz++ | S05-modifier/ignorecase.t:
fix an :ignorecase test
13:39
moritz wow, turns out we have only one m:ignorecase test, and that one was wrong
masak heh :)
moritz std: /<* foo|<alpha> >/ 13:45
p6eval std 52f3895: OUTPUT«ok 00:01 110m␤»
moritz std: /<* foo|<alpha>||bar >/
p6eval std 52f3895: OUTPUT«ok 00:01 110m␤»
Juerd At what level would you estimate the current test coverage?
moritz has absolutely no idea 13:46
I guess the actual statement coverage isn't all too bad, most bugs come from interactions between various different areas or not-quite-done-yet codegen 13:48
colomon I dunno, I think there may be some pretty good gaps remaining in the basics, too. 13:52
A lot of the tests focus mainly on what Pugs and Rakudo (circa 2008ish) could do. 13:53
masak gets a visual image of a "heat map" for the test suite, showing how old various parts of it are 13:54
colomon git blame could work it out...
colomon for instance, the number of tests that use :p5 for regexes is just astounding 13:55
moritz that's the only thing that pugs had available back in the days :-) 13:56
we should remove them all, except those explicitly testing :P5
ah, git blame as a -t option so that it prints timestamps 13:58
useful for that kind of visualization
masak aye. 14:01
masak and then maybe concatenate all .t files in t/spec and map them out using a Hilbert curve... 14:01
std: sub foo -> $x, $y { say "OH HAI" } 14:04
p6eval std 52f3895: OUTPUT«===SORRY!===␤Malformed block at /tmp/tyYjS2K8Fj line 1:␤------> sub foo ⏏-> $x, $y { say "OH HAI" }␤ expecting any of:␤ routine_def␤ trait␤Parse failed␤FAILED 00:01 107m␤»
masak thought so
[Coke] has a lead on some RPI students looking to contribute to open source. 14:10
dalek ast: 8878fb2 | moritz++ | S05-modifier/sigspace.t:
rakudo unfudges for :sigspace
moritz [Coke]: RPI?
[Coke] moritz: my alma mater: rpi.edu/ 14:12
moritz ah, nice 14:13
masak [Coke]: bring them in here, and we'll indoctr^W welcome them in a good way! 14:56
moritz std: / <( / 15:15
p6eval std 52f3895: OUTPUT«ok 00:01 108m␤»
moritz should probably complain that the null regex is not allowed
dalek kudo/nom: 3728201 | moritz++ | docs/ROADMAP:
remove complete ROADMAP item
15:16
ast: 854db7b | moritz++ | S32-trig/ (2 files):
more rakudo unfudges
15:17
[Coke] gah. perlmonks so slow. 15:41
I was going to try to find the [+] post and comment with jnthn's updates, but so painful.
cognominal_ $/ is not preverved from a line to another in the rakudo shell. Is that intentional?
moritz [Coke]: I don't even remember a post about [+], just one about the for 1..1000 { $s += 1 / $_ ** 2 } being slow 15:42
[Coke]: which is the FatRat stuff; I've posted an update to it 15:43
cognominal_: probably not
[Coke] moritz: it's quite possible. I'd believe it if I could search all of perlmonks at once. ;) 15:46
I could be misplacing stackoverflow.com/questions/3135673...99#3137799 in my perlmonks slot, though.
jnthn moritz: Does it perform decently now with the FatRat stuff done? 15:47
masak [Coke]: perlmonks.org/index.pl?node_id=952765 15:48
just searched the backlog :)
moritz jnthn: more to the point, it performs decently with the Rat -> Num overflow :-)
masak [Coke]: oh, but that's not the [+] one... sorry! :)
moritz jnthn: it completes in 2.8s here, with float arith in 1.8s 15:50
jnthn ok 15:58
masak this is a very open-minded position from a p5er: perlmonks.org/?node_id=949782 16:25
I like that.
masak while I doubt we'd ever be able to compete with p5 on speed, maybe we can get within 5x of it or so for many use cases. 16:26
and with the better features of Perl 6, it might still be worth it.
moritz: I disagree that / <( / constitutes a null regex. 16:30
masak S05 doesn't seem to have an opinion on whether `<(` and `)>` need always balance, but there doesn't seem to be any immediate need for them to be. 16:32
pmurias sorear: hi 16:34
phenny pmurias: 12 Feb 20:42Z <sorear> tell pmurias I disagree with your assertion that Match.perl in Niecza is broken. LTA formatting, yes
TimToady masak: er, S05:1886 16:40
masak ah. missed that. 16:43
I sit corrected.
then the parenthetical comment on S05:1917 is a bit redundant :)
TimToady slightly, though one could argue that » doesn't really contain an angle, which makes the original comment wrongish :) 16:47
*angle char
masak "include angles" is what S05:1886 says. I clearly see at least one angle in ». :) 16:49
TimToady depends on whether the original author was using "angles" as a technical term for < and > :)
but if you want a more postmodern interpretation, that's okay too :) 16:50
masak persists in his creative hermeneutics, stubbornly ignoring the presence of the original author :)
masak decommutes 16:57
jnthn back from $dayjob 17:09
Seems I'll have 6tuits this evening too :)
[Coke] btw, I'll be in leeds next month if anyone is about. 17:12
jnthn heh, that's like 90 minutes from where I grew up as a kid :)
...if you mean the one in England.
skids nom: class Bar { has $.a; method cmp($b) { $.a cmp $b.a }; method Numeric {$.a}; method Str { ~$.a }; method succ { $.a + 1 }}; my $a = Bar.new(:a(1)); my $b = Bar.new(:a(4)); ($a ~ ".." ~ $b ~ ":").say; ($a .. $b).say; for ($a .. $b) { .say }; 17:13
p6eval nom 372820: OUTPUT«1..4:␤Bar.new(a => 1)..Bar.new(a => 4)␤Bar.new(a => 1)␤2␤3␤4␤»
TimToady
.oO(All roads roam to Leeds...)
17:15
skids groans 17:15
TimToady admittedly, not original 17:16
[Coke] jnthn: aye. 17:19
TimToady masak: allowing ».meth is problematic for two reasons; it breaks/weakens the "visual rule" of . with whitespace in front of it, and it might produce very confusing errors for anyone who accidentally reverses it to «.meth 17:19
benabik "Don't do ».meth"? 17:20
TimToady presumably the .».meth form fixes both those problems, but then you've only saved one character over $_».meth
jnthn [Coke]: 'fraid I live in Sweden these days though, which is rather further than a 90 minute train ride away. 17:21
colomon and that at the cost of making it a bit more obscure, too
TimToady another possibility is to allow the .»meth form 17:22
that works against seeing .meth as a postfix though
colomon yeah
colomon is not at all sure that this is worth special syntax... 17:23
TimToady also, we may end up with a more readable, if more verbose, .each.say 17:24
TimToady contemplates, slightly off topic, whether '<a b c> ».» method' might be made to work like .= does 17:33
well, maybe '<a b c> X. method' makes a little more sense from a precedence point of view, though it's hard to see how it could distribute the method forcing on the right side if there were more than one expression there 17:35
sjn o/ 17:36
TimToady now contemplates infix:<»> as a topicalizing list infix 17:44
<a b c> » .method
(working up to six impossible things before breakfast) 17:45
moritz colomon: gist.github.com/1818785 my experiments with smarter FatRat -> Num conversion 18:17
moritz 12 digits accuracy for (203/200)**200 calculated as rats 18:20
colomon hmmm 18:20
sorry, attention low here. 18:26
colomon en.wikipedia.org/wiki/Double_precis...int_format -- any reasonable way to get at the bits? 18:31
dalek kudo/nom: f2f193b | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.pm:
Fix bug in attribute generic instantiation discovered by moritz++.
18:37
moritz colomon: packing the bits of a double is something I wouldn't want to do, it's tricky to get right on all platform (re endianess of the integers etc.) 18:45
colomon surely we're already figuring endianess somewhere? 18:47
[Coke] colomon: parrot will probably tell you. 18:50
yup: 18:52
dalek kudo/nom: bd5adba | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.pm:
Replace a bunch of pir:: with nqp::.
[Coke] github.com/partcl/partcl/blob/mast...b.pir#L160 18:53
(that's pull data out of parrot's config hash)
*pulling
# 02/13/2012 - niecza at 100.01% 19:02
"niecza", 20055, 8, 751, 1573, 22387, 23233
"rakudo", 20052, 29, 611, 1863, 22555, 23243
soooo close.
moritz 3 tests. 19:03
dalek p: 7f521e3 | moritz++ | / (3 files):
add nqp::div_In opcode

It smart-ish-ly divides two big integers and returns a double.
19:26
masak TimToady: I agree with both reasons for being wary of ».meth -- but neither reason feels very strong to me. 19:49
as for me, I'm mostly surprised it doesn't work already.
I know that the .meth form is slightly special, but the dot there *feels* like a prefix op. 19:50
which makes ».meth completely natural.
TimToady well, it feels like a prefix if you intend it that way when you write it... 19:52
TimToady some people don't always know what they're intending 19:52
I'm mostly worried about the cargo culters on this one 19:53
hmm, I suppose »~~» is already a hyper topicalizer 19:55
perl6: say <a b c> »~~» / <[aeiou]> /
p6eval rakudo bd5adb: OUTPUT«True False False␤»
..niecza v14-42-g1d02da9: OUTPUT«#<match from(0) to(1) text(a) pos([].list) named({}.hash)> Match() Match()␤»
..pugs b927740: OUTPUT«decodeUTF8': bad data: '\187'␤decodeUTF8': bad data: '\187'␤*** ␤ Unexpected "\187~~\187"␤ expecting operator, ":" or ","␤ at /tmp/4_7tifiB2g line 1, column 13␤»
TimToady speaking of which, I've been thinking a lot about a grand unification of Match, Bool, Nil, and Failure so that they are all in some sense derived from the same role 19:58
moritz
.oO( Matschig )
phenny: "matschig"?
phenny moritz: "muddy" (de to en, translate.google.com)
TimToady heh
my immediate goal is to define which types are appropriate to return from .ACCEPTS that will be treated as Bool is currently 19:59
moritz TimToady: I think that Failure in its current form (ie unthrown exceptions) shouldn't have *anything* in common with Match
it needs to have as few methods as possible to work effectively
TimToady well, maybe I can change your mind on that, if you'll let me
moritz maybe :-) 20:00
[Coke] TimToady: where in the specs is >>~~>> ?
TimToady it's just a hyper on ~~
[Coke] danke.
TimToady I probably need to work up a doc on success/failure types rather than just blather here 20:02
masak [Coke]: >>~~<< means the lists are the same length. >>~~>> means extend with rhs. <<~~<< means extend with lhs. <<~~>> is the string '~~' :P 20:05
TimToady not in infix position 20:06
masak oh, right. 20:08
then it means extend whichever hs needs extending, I guess.
moritz nom: say 5.6.fmt("%f") 20:14
p6eval nom bd5adb: OUTPUT«5.600000␤»
dalek ast: ff0bbd3 | moritz++ | S02-types/declare.t:
fix a num test
20:17
dalek kudo/nom: 91c3326 | moritz++ | / (2 files):
smarter FatRat numification
20:21
dalek ast: b47fb49 | moritz++ | S32-num/power.t:
rakudo unfudge
20:24
moritz there, two more passing tests for rakudo :-)
PerlJam wonders how hard it would be to wire up the C bits of PDL to Rakudo 20:34
dalek p/bs: dfdba67 | jnthn++ | src/HLL/World.pm:
Fix how we include the serialized data into the PIR. Makes the deserializer consider it non-corrupt and start deserializing it, at least.
21:57
p/bs: bf0a0d8 | jnthn++ | src/6model/ (2 files):
Q. Does || have the same semantics in C as in Perl? A. No, idiot. BTW, here's a corrupt heap. Enjoy your day!
geekosaur *snrk* 21:58
benabik O.o 21:59
jnthn At least the Visual Studio debug malloc library detects heap corruption relatively soon after the event... 22:00
[Coke] eval: use Inline::C; 22:17
buubot_backup [Coke]: ERROR: Can't locate Inline/C.pm in @INC (@INC contains:) at (eval 20) line 1. BEGIN failed--compilation aborted at (eval 20) line 1.
[Coke] awww.
eval: use CPAN;
buubot_backup [Coke]: ERROR: Can't locate CPAN.pm in @INC (@INC contains:) at (eval 20) line 1. BEGIN failed--compilation aborted at (eval 20) line 1.
[Coke] awww! 22:18
dalek p/bs: 6291382 | jnthn++ | src/ (2 files):
Add a way to grab a code ref from an SC; will be needed for the new fixup handling code.
23:09
p/bs: 15cb1fe | jnthn++ | src/ (2 files):
Start to suppress generation of various deserialization events that are covered by the new serializer when $NEW_SER is set.
p/bs: ad91b27 | jnthn++ | src/ (2 files):
Refactoring and simplification to fixup event handling.
p/bs: 5eab84b | jnthn++ | src/ (3 files):
Separate out things that need to happen (like dependency loading) before we deserialize the SC, and fixups that should happen afterwards.
dalek p/bs: 5595db2 | jnthn++ | src/HLL/World.pm:
Fix an off-by-1.
23:30
p/bs: 2142ec6 | jnthn++ | src/6model/serialization.c:
Serialize STable->WHO. With this, we now appear successfully serialize and deserialize the module loader and NQP meta-objects, and get some way into compiling NQPCORE.setting.
sorear good * #perl6
jnthn o/ sorear 23:31
Though I'm about to leave for the day and get some sleep. :) 23:32
colomon \o 23:33
masak 'night, #perl6 23:39
sorear bye masak 23:40