»ö« 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.
sorear there will likely be disruptive changes to compile-time class and sub handling, so please don't work on those 00:00
japhb: tentatively two weeks, but very low certainty
japhb sorear, OK, gotcha. 00:01
japhb wonders if it's better to put off jumping into niecza until your big merge happens, and Ubuntu 11.10 is out (presumably with a newer mono) 00:02
sorear japhb: mono post-2.6.7 isn't even in sid yet 00:10
there was epic coordination fail with the Debian Mono packaging and 2.8.x never got into Debian at all; 2.10.x is in experimental now 00:11
japhb sorear, and Ubuntu isn't leading on this one, I take it?
SIGH
sorear personally I just recommend building from source
japhb distro FAIL
jnthn blogged: 6guts.wordpress.com/2011/09/17/this...ot-enough/ 00:12
japhb sorear, am I correct in assuming I should purge all the stuff I just installed? 00:13
sorear japhb: probably would be a good idea
japhb: however I never did it and this hasn't caused a problem yet 00:14
japhb sorear, ah, so you had installed from packages, then installed from source, and it Just Worked?
diakopter according to mono's site, latest mono will be in Ubuntu 11.10 00:23
japhb diakopter, excellent news.
diakopter mono-project.com/DistroPackages/Ubuntu
flussence oh crap. I just tried to rebuild niecza and "error CS0006: Metadata file `Kernel' could not be found" 00:26
(using git pull; git clean -dfx; make)
japhb flussence, yep, that's the problem with mono 2.6.7 we've been discussing
flussence I'm on 2.10 00:27
diakopter oh hm
sorear: ^^
flussence .4 to be exact
sorear japhb: yes 00:29
I guess I broke the build somehow 00:30
TimToady mine still builds, but I didn't do a clean
jnthn sleep time & 00:32
japhb o/
diakopter sorear: mine still builds (cygwin), but I didn't do a clean 00:33
TimToady decommuting & 00:37
diakopter decommuting :} & 00:38
sorear niecza: my $*unit = 5; { my $*unit = 10; say CALLER::<$*unit>; } 02:35
p6eval niecza v9-31-g37fcc8d: OUTPUT«5␤»
PerlJam Is there a way to dump an AST ala Data::Dumper? 03:16
sorear $obj.perl is the conventional way 03:17
PerlJam doh ... didn't even think to try that 03:19
snarkyboojum FWIW - Niecza no longer builds on my env either. 03:34
sorear yeah, I got that. 03:35
woosley perl6: class A{ method a {"a"}}; my $x = &A::a; $x.WHAT.say; my $obj = A.new; say $obj.$x() 03:36
p6eval pugs: OUTPUT«Method␤pugs: Internal error:␤ Invalid sigil "&<"␤Please file a bug report.␤»
..niecza v9-31-g37fcc8d: OUTPUT«Unhandled exception: Unable to resolve method say in class Any␤ at /tmp/7Gqr4e0oil line 1 (MAIN mainline @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2060 (CORE C968_ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2061 (CORE module-CORE @…
..rakudo 58809b: OUTPUT«Any()␤Method 'postcircumfix:<( )>' not found for invocant of class 'Any'␤ in <anon> at src/gen/Metamodel.pm:3029␤ in method dispatch:<var> at src/gen/CORE.setting:630␤ in method dispatch:<var> at src/gen/CORE.setting:640␤ in <anon> at /tmp/8QHFszVFMZ:1␤ in <an…
dalek ecza/serialize: 5b91468 | sorear++ | / (8 files):
Update bootstrap, change stash representation to outsource data, several steps towards runtime-side stash processing.
03:37
sorear woosley: methods are not stored in the package scope &A::
woosley sorear: then how it is stored?
sorear woosley: you can get a reference to A by going though the class scope, as A.can('a')
er, A.^can('a') 03:38
woosley rakudo: class A{ method a {"a"}}; my $x = &A::a; $x.WHAT.say; my $obj = A.new; say $obj.$x() 03:40
p6eval rakudo 58809b: OUTPUT«Any()␤Method 'postcircumfix:<( )>' not found for invocant of class 'Any'␤ in <anon> at src/gen/Metamodel.pm:3029␤ in method dispatch:<var> at src/gen/CORE.setting:630␤ in method dispatch:<var> at src/gen/CORE.setting:640␤ in <anon> at /tmp/C1A9Lhn6zC:1␤ in <an…
woosley rakudo: class A{ method a {"a"}}; my $x = A.^can("a"); $x.WHAT.say 03:40
p6eval rakudo 58809b: OUTPUT«Parcel()␤»
woosley sorear: what is Parcel()? 03:41
sorear the type of very raw lists 03:42
rakudo: say (1,2,3).WHAT
p6eval rakudo 58809b: OUTPUT«Parcel()␤»
PerlJam woosley: see S02:2101 03:43
woosley reading S02 Parcel part 03:46
woosley rakudo: class A{ method a {"a"}}; my $x = A.^can("a"); $x.perl.say 03:49
p6eval rakudo 58809b: OUTPUT«(a,)␤»
woosley I thought this ^can() would return a boolean at first ... 03:54
sorear A reasonable guess, but wrong.
woosley rakudo: class A{ method a {"a"}}; my $x = A.^can("a"); $x[0].WHAT.say 03:56
p6eval rakudo 58809b: OUTPUT«Method()␤»
sorear rakudo: class A { method a { 1 } }; class B is A { method a { 2 } }; say B.^can("a").perl
p6eval rakudo 58809b: OUTPUT«(a, a)␤»
sorear rakudo: class A { method a { 1 } }; class B is A { method a { 2 } }; say B.^can("a")».(B) 03:57
p6eval rakudo 58809b: OUTPUT«Too many positional parameters passed; got 3 but expected 2␤ in sub METAOP_HYPER_POSTFIX at src/gen/CORE.setting:7230␤ in <anon> at /tmp/RsmdlYby64:1␤ in <anon> at /tmp/RsmdlYby64:1␤␤»
sorear rakudo: class A { method a { 1 } }; class B is A { method a { 2 } }; say B.^can("a").map(*(B))
p6eval rakudo 58809b: OUTPUT«Method 'postcircumfix:<( )>' not found for invocant of class 'Whatever'␤ in <anon> at src/gen/Metamodel.pm:3029␤ in <anon> at /tmp/DX2mej5VSs:1␤ in <anon> at /tmp/DX2mej5VSs:1␤ in <anon> at /tmp/DX2mej5VSs:1␤␤»
sorear rakudo: class A { method a { 1 } }; class B is A { method a { 2 } }; say B.^can("a").map(-> $m { $m(B) })
p6eval rakudo 58809b: OUTPUT«2 1␤»
sorear so [0] will always pick the most derived method 03:58
I think it gets them in nextsame order
woosley rakudo: class A{ method f {"b"}}; my $x = A.^can("f"); my $obj = A.new; say $obj.$x[0]() 04:04
p6eval rakudo 58809b: OUTPUT«Method 'postcircumfix:<( )>' not found for invocant of class 'Parcel'␤ in <anon> at src/gen/Metamodel.pm:3029␤ in method dispatch:<var> at src/gen/CORE.setting:630␤ in method dispatch:<var> at src/gen/CORE.setting:640␤ in <anon> at /tmp/WMA4s2ZyRW:1␤ in <anon>…
woosley rakudo: class A{ method f {"b"}}; my $x = A.^can("f"); my $obj = A.new; my $k = $x[0]; say $obj.$k() 04:05
p6eval rakudo 58809b: OUTPUT«b␤»
sorear method names must be a variable, not an expression
I think you can also do $obj.$($x[0])()
although $x[0]($obj) would be basically the same 04:06
ideally you should use $obj.$x()
PerlJam $obj."$x[0]"() would also work 04:07
woosley yes, but look like the return value of ^can("") makes it harder ^^
sorear woosley: no 04:08
woosley: method calls are designed to use the return value of can
rakudo: class A { method a { say 1 } }; class B is A { method a { say 2; nextsame } }; B.a
p6eval rakudo 58809b: OUTPUT«2␤1␤»
sorear rakudo: class A { method a { say 1 } }; class B is A { method a { say 2; nextsame } }; my $x = B.^can("a"); B.$x(); 04:09
p6eval rakudo 58809b: OUTPUT«Method 'postcircumfix:<( )>' not found for invocant of class 'Parcel'␤ in <anon> at src/gen/Metamodel.pm:3029␤ in method dispatch:<var> at src/gen/CORE.setting:630␤ in method dispatch:<var> at src/gen/CORE.setting:640␤ in <anon> at /tmp/fEkRyCfI5L:1␤ in <anon>…
sorear oh, NYI
those two lines are supposed to have exactly the same effect
JimmyZ rakudo: class A{ method f {"b"}}; my $obj = A.new; say f($obj); 04:10
p6eval rakudo 58809b: OUTPUT«Could not find sub &f␤ in <anon> at /tmp/4RByo7WuLu:1␤ in <anon> at /tmp/4RByo7WuLu:1␤␤»
woosley that's what I mean... you can not use the return value from ^can
sorear woosley: that's a bug
woosley \o 04:11
JimmyZ rakudo: class A{ method f {"b"}}; say |A.can('f') 04:19
p6eval rakudo 58809b: OUTPUT«f␤»
JimmyZ rakudo: class A{ method f {"b"}}; say (|A.can('f')) #bug? 04:20
p6eval rakudo 58809b: OUTPUT«Could not find sub &prefix:<|>␤ in <anon> at /tmp/sGeO0AjdSQ:1␤ in <anon> at /tmp/sGeO0AjdSQ:1␤␤»
JimmyZ niecza: rakudo: class A{ method f {"b"}}; say |A.can('f') 04:24
p6eval niecza v9-31-g37fcc8d: OUTPUT«Unhandled exception: Unable to resolve method Capture in class Bool␤ at /tmp/r1LsB4A4_8 line 1 (MAIN mainline @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2060 (CORE C968_ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2061 (CORE module-C…
moritz jnthn++ # 6guts.wordpress.com/2011/09/17/this...ot-enough/ 05:36
good morning btw
sorear hi moritz
moritz \o sorear 05:39
dalek ecza/serialize: b2b1322 | sorear++ | / (6 files):
Actually implement runtime-side stash handling; improve -L NULL.
05:53
sorear jnthn: in 2007, dons from #haskell got a 16-core box courtesy of uni (he was on the Data Parallel Haskell team) 05:54
snarkyboojum dons went to my uni :) 05:59
sorear snarkyboojum: do you still contact him? 06:00
snarkyboojum as did raster of #e fame :|
sorear :| ? 06:01
snarkyboojum that was supposed to be a :)
sorear ok.
sorear sleep
cognominal_ jnthn++ 06:12
snarkyboojum is it safe to assume that nom "passes" S03-operators/minmax.t now? 07:10
it's still in LHF.markdown FWIW - not sure if that file is relevant now 07:11
tadzik good morning 07:28
snarkyboojum rakudo: my @a = 1,2,3; say @a.defined; @a = Nil; say @a.defined 07:49
p6eval rakudo 58809b: OUTPUT«Bool::True␤Bool::True␤»
snarkyboojum should the last @a.defined by Bool::False?
mberends jnthn++ # "faster" blog post 07:51
tadzik perl6: say Nil.defined 07:56
p6eval pugs: OUTPUT«*** No such subroutine: "&Nil"␤ at /tmp/d_XjotAEky line 1, column 5 - line 2, column 1␤»
..rakudo 58809b, niecza v9-31-g37fcc8d: OUTPUT«Bool::False␤»
snarkyboojum rakudo: my $a = 5; say $a.defined; $a = Nil; say $a.defined 08:04
p6eval rakudo 58809b: OUTPUT«Bool::True␤Bool::False␤»
tadzik make spectest 1163.76s user 93.29s system 98% cpu 21:11.38 total 08:10
1265 last time I tried
jnthn++ 08:11
snarkyboojum tadzik: this guy has stolen your handle on twitter! :P twitter.com/#!/tadzik 08:14
tadzik oh noes! 08:27
he stole my name! /o\
huf maybe he *is* you now 08:28
tadzik now, I have hair
s/now/no/
I'm pretty sure of that :)
maybe it's me from the future
huf ah i see, he stole your name and you stole his hair 08:29
tadzik yeah, it's a kind of a deal 08:30
I feel a niche for a webservice which will blindly register you an all the common websites so no one can steal your name 08:31
snarkyboojum whatever happened to openid I wonder 08:34
tadzik it tried to solve the problem of having too many accounts by having you to sign up for another account 08:37
and it didn't get much better than that, unfortunately
snarkyboojum how does one go about debugging stuff in src/binder/*.c 08:41
tadzik I suppose gdb could be some help 08:41
donri some russian stole my handle on last.fm 08:42
i wonder if it means anything in russian ...
masak \o/ weekend! 08:46
tadzik \/ 08:48
oh, I've had some thoughts about language interoperability today morning 08:49
masak 9 out of 10 masaks recommend trying out Niecza. try it today -- it's free!
tadzik but they make a lot less sense now that I'm sober :/ 08:50
mberends :-)
donri what is the tenth masak's thoughts on niecza then
masak tadzik: "language interpo: doesn't make that much sense when you're sober"
tadzik anyway, I thought that wrapping every Parrot Object in a Perl 6 Object might be expensive when you're doing lots of it all the time 08:51
donri
.oO(Masak the 10th)
masak donri: the tenth masak kinda grinds his teeth over everything to do with stacktraces and Mono-based errors. but don't listen to him.
JimmyZ masak: irclog.perlgeek.de/perl6/2011-09-17#i_4440987 is it a bug?
masak looks
JimmyZ thanks
tadzik so I thought about some lazy SixModelObject, which will just keep the Parrot object in its insides, and fill in the Perl 6 Object stuff (attrs, methods etc) only as soon as they're needed for something
not sure if that could even work, but that made sense few hours ago 08:52
donri i wonder if a test suite could be generated from the irc logs of p6eval to test for regressions
masak JimmyZ: hm.
JimmyZ: no, I don't think so. signatures are a little DSL with different operators.
JimmyZ masak: Do you see the next line? 08:53
masak the niecza one?
JimmyZ masak: I added a ( )
masak: rakudo one
masak oh right. 08:54
rakudo: |4
p6eval rakudo 58809b: OUTPUT«Could not find sub &prefix:<|>␤ in <anon> at /tmp/1pzhJgILkp:1␤ in <anon> at /tmp/1pzhJgILkp:1␤␤»
JimmyZ |A.can('f') vs (|A.can('f'))
masak seems NYI, simply.
JimmyZ why |A.can('f') works? 08:55
:)
masak I was thinking maybe it calls infix:<|> or something.
but I don't quite see it either.
JimmyZ I don't know why add a new ( ) makes a difference :( 08:56
masak parentheses are just for grouping :P
rakudo: say |42
p6eval rakudo 58809b: OUTPUT«Method 'ARGLIST_FLATTENABLE' not found for invocant of class 'Int'␤ in <anon> at /tmp/gKUOBbaqMM:1␤ in <anon> at /tmp/gKUOBbaqMM:1␤␤»
masak huh! 08:57
JimmyZ rakudo: say (|4)
p6eval rakudo 58809b: OUTPUT«Could not find sub &prefix:<|>␤ in <anon> at /tmp/BCzNnAvgTI:1␤ in <anon> at /tmp/BCzNnAvgTI:1␤␤»
JimmyZ rakudo: say |4
p6eval rakudo 58809b: OUTPUT«Method 'ARGLIST_FLATTENABLE' not found for invocant of class 'Int'␤ in <anon> at /tmp/uHzzzaAEKH:1␤ in <anon> at /tmp/uHzzzaAEKH:1␤␤»
JimmyZ rakudo: say (|4,)
p6eval rakudo 58809b: OUTPUT«Could not find sub &prefix:<|>␤ in <anon> at /tmp/jJJVJxPtnI:1␤ in <anon> at /tmp/jJJVJxPtnI:1␤␤»
masak rakudo: my @a = 1, 2, 3; sub foo($, $, $) { say "OH HAI" }; foo |@a
p6eval rakudo 58809b: OUTPUT«OH HAI␤»
masak aha.
I know why.
it's signatures that have prefix:<|> already.
and maybe they're the only ones that actually should. maybe mainline Perl 6 doesn't have prefix:<|>. 08:58
JimmyZ I don't think (|4) and |4 are different 08:59
tadzik error CS0006: Metadata file `Kernel' could not be found
masak JimmyZ: they are.
tadzik I seem to recall someone had that problem too 09:00
masak JimmyZ: if you do 'say(blabla)', the blabla is a signature. if you do 'say (blabla)', it isn't.
tadzik: is that Niecza?
tadzik yes 09:01
JimmyZ masak: I think (expr) and expr are the same
snarkyboojum tadzik: Niecza build is currently b0rken.. sorear is aware of it
tadzik I hope :) Kernel smells like Ruby
masak :P
maybe grab latest release?
JimmyZ masak: like 4+4 and (4+4) 09:01
masak because, ya know, you gain nothing from a "source is better" perspective.
tadzik it's latest
oh, release
masak tadzik: is it the v9 relea.... right. 09:02
rakudo: multi foo($) { say "one param" }; multi foo($, $) { say "two params" }; foo (1, 2); foo(1, 2) 09:03
p6eval rakudo 58809b: OUTPUT«one param␤two params␤»
masak JimmyZ: ^^
JimmyZ rakudo: multi foo($) { say "one param" }; multi foo($, $) { say "two params" }; foo (1, 2); foo 1, 2; 09:04
p6eval rakudo 58809b: OUTPUT«one param␤two params␤»
JimmyZ rakudo: multi foo($) { say "one param" }; multi foo($, $) { say "two params" }; foo (1); foo 1; 09:05
p6eval rakudo 58809b: OUTPUT«one param␤one param␤»
JimmyZ rakudo: multi foo($) { say "one param" }; multi foo($, $) { say "two params" }; foo (|1); foo 1;
p6eval rakudo 58809b: OUTPUT«Could not find sub &prefix:<|>␤ in <anon> at /tmp/zgTH7N9ZRs:1␤ in <anon> at /tmp/zgTH7N9ZRs:1␤␤»
masak yes, because the () makes the | appear not-in-a-signature, but one level down.
at which point we're back in an expression.
JimmyZ rakudo: multi foo($) { say "one param" }; multi foo($, $) { say "two params" }; foo |1; foo (|1); 09:06
p6eval rakudo 58809b: OUTPUT«Method 'ARGLIST_FLATTENABLE' not found for invocant of class 'Int'␤ in <anon> at /tmp/QD9S27uKoQ:1␤ in <anon> at /tmp/QD9S27uKoQ:1␤␤»
tadzik oh, masak, masak
masak oh, tadzik, yes? :)
tadzik sorry for interrupting, but before I forget: did you read The Last Ring Bearer?
masak tadzik: I did not.
sounds interesting.
tadzik unfortunately, it's not about bears
but I think it may come to your liking
woosley rakudo: multi foo($) { say "one param" }; multi foo($, $) { say "two params" }; foo |(1,2); foo (1)
p6eval rakudo 58809b: OUTPUT«two params␤one param␤»
tadzik it's a LOTR fanfiction 09:07
masak tadzik: I will check it out..
woosley so '|' is used to flatten an array to a list?
masak in a signature.
or a hash to a bunch of named arguments. 09:08
JimmyZ | and * in perl 6 likes & and * in C
tadzik holy cow...
I just learned that having not a spoon of sugar at home is not a reason to try drinking mint drops without sugar 09:09
masak mint drops?
tadzik the minty things you take when your stomach feels sick
do you have those?
like, known in Sweden? 09:10
masak not to me. 09:11
get well soon, tadzik! :/ 09:12
JimmyZ rakudo: sub a(*@_) { @_.say }; a 1,2,3; sub b($a, $b, $c) { say $a, $b, $c ; }; b |[1,2,3]
p6eval rakudo 58809b: OUTPUT«1 2 3␤123␤»
tadzik you usually get a spoonful of sugar and put like 15-20 drops on it, then eat it, and drink some water **fast**
they're pretty strong
tadzik now I know why you eat them with sugar :S 09:13
but, I'm offtopicing too much today
masak not at all. it's interesting to learn about different cultures. 09:18
im2ee Hello! :) 09:36
masak im2ee: cześć 09:38
im2ee masak, how are you? :) 09:39
masak im2ee: I'm 30 now ;) 09:49
but otherwise I'm fine :P
im2ee: how are you? 09:50
JimmyZ: 'likes' = 喜欢, 'is/are like' = '像' 09:54
JimmyZ: and I see what you mean by | and * in Perl 6 being a bit like & and * in C. but they're really pretty dissimilar. 09:55
JimmyZ masak: define similar, I was saying the are like brother :) 09:58
masak in C, the operations are reference/dereference. in Perl 6, the operations are slurp/flatten. 10:01
as operations go, those are pretty unrelated.
JimmyZ masak: or are like a team 10:02
box/unbox 10:03
masak JimmyZ: oh, I think I see what you mean now. 10:10
JimmyZ masak: hehe
masak prefix:<|> and prefix:<*> are "opposite" actions in Perl 6, just like * and & are in C.
JimmyZ masak: yeah
masak 明白 10:11
im2ee masak, fine too. :)
JimmyZ so does box/unbox or containerize/decontainerize 10:12
masak JimmyZ: sometimes * is its own opposite in C. this follows from the rule that "declaration should look like use". 10:13
jnthn mor...afternoon, #perl6 :)
masak so 'short *c;' is talking about a pointer. but '*c = 42' is doing a dereference.
jnthn: good morafternoon! 10:14
jnthn++ # 6guts.wordpress.com/2011/09/17/this...ot-enough/
jnthn masak: A good time for morbier? ;)
masak jnthn: not now, I'm cleaning! :P
jnthn: I tweeted your post, and it's already getting retweeted. twitter.com/carlmasak/status/114991388621418496 10:15
if there's one thing I've learned, it's that Twitter *wants* good news about Perl 6. as opposed to Hacker News and Reddit. 10:16
jnthn < snarkyboojum> how does one go about debugging stuff in src/binder/*.c 10:17
==> hey, that's easier than debugging anything else because relaly good C debuggers exist. The Visual Studio one is excellent, I guess many people do their thing in gdb. 10:18
Glad people enjoyed the blog post :)
Tene yes, rather.
tadzik it's nice indeed :)
jnthn My word, how much backlog did you folks managed to type while I slept... :) 10:19
Tene jnthn: I've enjoyed every blog post of yours that I've read.
snarkyboojum jnthn: cool - ended up tinkering around with gdb a bit.. find it a little fiddly tho :) 10:20
bbiab 10:24
whoops - wrong window :)
masak .oO( how is bbiab formed? )
jnthn
.oO( by do away with instain self? )
10:26
masak .oO( who cometh back!? ) 10:30
jnthn snarkyboojum: What are you trying to track down, ooc? 10:33
snarkyboojum: I know the code in there fairly well... :)
masak wow, I've done two out of six of the ideas in gist.github.com/1172972 10:41
blogging is slow going ;)
so, should I do macros next? or Little Animal Farm? or one of the two small blog posts? 10:45
Tene macros 10:48
masak it'll be an overview post, like "what I can understand of macros so far".
I'll be writing about them quite a bit in the coming months ;)
arnsholt Sure, noone expects you to know everything about them 10:49
Not yet at any rate ;)
masak ;)
snarkyboojum jnthn: was interested to see how the type checking worked, esp when you try and assign Nil to something like my Int $a 10:56
masak snarkyboojum: sorear knows a bit about that, I think. 10:58
he has been complaining about the performance implications of having to specifically check for Nil.
snarkyboojum also, when you assign Nil to a defined array, should the definedness of the array disappear? 10:59
jnthn snarkyboojum: Not sure on the array one. 11:00
snarkyboojum: You're probably going to want to read container.c
snarkyboojum: The storage thingy is in there.
snarkyboojum: It does a STABLE(something)->type_check call or so 11:01
snarkyboojum: That's a call down to the 6model type check primitive.
snarkyboojum jnthn: yeah.. cool - got down into there.. but wanted to step through the code in there - maybe that's a bit ambitious :)
masak snarkyboojum: that's a really good question. I'm learning towards "yes", because otherwise you could just go @array = (); 11:02
snarkyboojum: so maybe '= Nil' is the way to reset the initializedness flag on variables/containers.
snarkyboojum was reading S02 and it seemed that my @a = 1,2,3; @a = Nil; say @a.defined should be False, at least from my reading
that's how it works for scalars, but containers don't seem to behave that way currently 11:03
jnthn snarkyboojum: Hm, yeah
masak snarkyboojum: feel free to submit a rakudobug and/or a nieczabug.
jnthn snarkyboojum: I *think* this may be tied into us needing to twiddle with the way we handle array auto-viv though.
(There's an entry in nommap about that)
snarkyboojum there is for my Int $a = Nil, but not regard containerish stuff afaik 11:04
oohh.. sorry - I'm getting confused with LHF :)
jnthn nom: my Int $a = Nil; 11:05
p6eval nom 58809b: OUTPUT«Type check failed in assignment to '$a'; expected 'Int' but got 'Nil'␤ in <anon> at /tmp/ojwLGszxrs:1␤ in <anon> at /tmp/ojwLGszxrs:1␤␤»
snarkyboojum also there's an entry in LHF about getting minmax.t to pass, which could possibly be removed.. as it appears to pass on nom
jnthn snarkyboojum: Oh, I think that's old.
Do you have a commit bit? If not, I can do away with it.
snarkyboojum jnthn: cool, but the Nil assignment issue seems extant
jnthn snarkyboojum: Yeah, that needs looking at. 11:06
snarkyboojum jnthn: yeah… no access here, so feel free :)
jnthn snarkyboojum: See types.[ch]. If you do something like that you can "register" Nil. 11:07
jnthn snarkyboojum: Then you'll able to get hold of it in container storage. 11:07
jnthn snarkyboojum: At which point it should be a simple pointer check for "is the thing we're assigning Nil", and taking a different code path if so. 11:08
(e.g. just twiddle the value to set to be the type object of the container's declared type)
snarkyboojum jnthn: cool - was poking around there too.. thanks, will have a look at it 11:09
jnthn snarkyboojum: It's relatively easy, just a little scattered. :) 11:09
snarkyboojum easy is good :)
felher Can someone place change line 157 of src/core/Cool.pm from "157 multi method comb(Regex $matcher, $limit = $Inf) { self.Str.comb($matcher, $limit) } 11:26
to the same line, just with '= /./' as default for $matcher?
masak does so 11:27
felher Or wouldn't that be the right way to do it?
masak yes.
b: say "foo".comb.perl
p6eval b 1b7dd1: OUTPUT«("f", "o", "o")␤»
masak nom: say "foo".comb.perl
p6eval nom 58809b: OUTPUT«("f", "o", "o").list␤»
masak hm.
felher nom: say 400.comb.perl
p6eval nom 58809b: OUTPUT«No applicable candidates found to dispatch to for 'comb'. Available candidates are:␤:(Cool, Regex $matcher, Any $limit, Mu %_)␤␤ in method comb at src/gen/CORE.setting:1507␤ in <anon> at /tmp/QzH_cmG0pV:1␤ in <anon> at /tmp/QzH_cmG0pV:1␤␤»
jnthn er, please don't do that. :) 11:28
felher String got that one right.
masak ah, there we go.
jnthn Getting every char of the string using /./ is about the slowest way you can imagine doing that.
You need an extra multi candidate that takes no args and .Str.comb's it in Cool.
masak :)
jnthn++ # thinking about consequences 11:29
jnthn These sorts of things are part of why people come back and say "omg Rakudo is slow!!!"
masak felher: if you make a patch for what jnthn just said, I'll apply it.
jnthn I made Mandelbrot 30% faster by fixing implementation bugs in join.
felher masak: i'll do :)
masak++, jnthn++ :)
masak jnthn: tell me about it. I had several blog posts last November on why .trans was slow for large strings. turns out it was O(.chars). I made it O(replacements) 11:30
jnthn masak: :) 11:31
masak: It's nice to find those. 11:32
masak strangelyconsistent.org/blog/novemb...d-bad-news 11:35
felher masak: while i spectest the one-liner, on which way would you like to get the patch? :) 11:37
moritz speaking of .trans, somebody needs to port it to nom 11:38
jnthn I heard masak understands trans well ;) 11:41
masak pmichaud had some complaints about the current implementation. I think a port would have to involve him in some way. 11:58
but I'd be happy to provide advice ;)
TimToady keeps reminding me that the LTM in .trans should probably be the same LTM in grammars, in the long term.
that is, a .trans probably builds a Grammar and executes it. 11:59
moritz it might be enough to show all the alternatives into an array, and interpolate that into a regex 12:02
jnthn ooh, that could maybe work :) 12:04
masak together with keeping track of the position, it seems it could work. 12:05
felher LTM = longest token matching?
moritz somehow we have to track which alternative was matched 12:06
felher: yes
felher moritz: k, thnx :)
masak moritz: how do you mean? why? 12:08
moritz masak: if you call .trans('a' => 'b', /\w+/ => 'c'), matching /'a'|\w+/ isn't enough 12:09
.trans needs to know which branch matched, so that it knows which substitution to use 12:10
masak oh, indeed.
moritz though you can do something like
my $tracker;
my @res = @patters.kv.map: -> $idx, $re { / $re { $tracker = $idx } / } 12:11
self.subst(:g, /@res/, { use $tracker here ... }) 12:12
though I realy wish there was a simpler way built into p6 12:14
masak spec one ;)
moritz <%h> could match %h.keys, and stores the value of the matching key in $<h> 12:16
and the syntax / <pat> => $foo / could mean "put $foo in $<pat>" or in $<pat>.ast or so 12:18
jnthn afk for a bit; walk 12:20
felher masak: herrmann-koenigsberg.de/make_cool_comb_work.patch 12:24
masak: this is a 'git format-patch HEAD~..HEAD > filename' patch against newest nom 12:25
masak felher: thanks, will spectest and commit. 12:28
felher masak: i did already spectest. But of course, testing twice won't hurt. :) 12:31
masak oh, ok. 12:34
yeah, spectest already underway; might's'well finish it ;)
felher masak: ^^ :) 12:35
masak felher: do you know if there's any spectest for Cool.comb() ?
felher masak: nope. But i'll look into it. Some short ack-action. :) 12:36
moritz ack '\d\.comb' => no result
felher yeah, the there are only comb()s on strings. 12:39
masak well then; another LHF task ;) 12:40
felher masak: LHF? 12:41
moritz Low-Hangig Fruit 12:43
(ie easy to tackle)
felher moritz: ah, thnx. :) 12:44
masak hm. does it matter that the proto signature of Cool.comb is (|$) ? 12:46
now that we've added a .comb() multi, I mean.
moritz masak: it's ok
masak: |$ matches any possible signature 12:47
the leading | means 'take the rest of the argument list as a Capture' 12:48
and the $ means '... and pack into this scalar'
masak oh ,right. 12:55
s/ ,/, / 12:56
felher masak: i wasn't sure, too. But awk told me that that happens quite often already. :)
masak well, moritz++ has the answer: it's perfectly in otder. 13:01
jnthn Also, the binder sees |$ and says "well, we don't have to bind it anywhere anyway, so let's do nothing" :)
moritz rakudo: say Capture ~~ Positional 13:05
p6eval rakudo 58809b: OUTPUT«Bool::False␤»
felher jnthn++ for 6guts.wordpress.com/2011/09/17/this...ot-enough/ 13:09
dalek kudo/nom: 5be6d65 | (Felix Herrmann)++ | src/core/Cool.pm:
Make 'Cool.comb()' work.
13:17
masak felher++
PacoLinux_ James Gosling in the aerial accident at Reno : nighthacks.com/roller/jag/entry/i_m_alive 13:27
jnthn sees if he can work out what bit of DateTime causes setting compilation to get upset 13:28
OK, found it 13:31
has $.second = 0.0;
That 0.0 (a Rat)
masak what's upsetting about that? 13:33
the fact that Rat is an object?
jnthn Well, it wants to create the literal at compile time. 13:34
And something goes awry in doing so.
yeah, we don't try and do that anywhere in the setting. 13:35
moritz iirc I tried to make that a plain 0 once 13:47
and it didn't help
(but it might now)
jnthn moritz: I've got it narrowed down to an infinite recursion explosion that happens when we call Rat.new.
flussence the now bug? 13:48
jnthn flussence: No, the setting compilation hanging
When you have a rat literal somewhere in it.
flussence I mean, is it the same cause?
moritz no
term:<now> hangs on 32 because of Num -> Rat conversion overflow thingy 13:49
jnthn Indeed. It's gone away for me now I'm on 64-bit... 13:50
ugh, it's an infinite recursion involving dynamic compilation, somehow. 13:51
(e.g. it's only a rung or two down the ladder in terms of evil from a GC bug) 13:52
moritz dynamic compilation?
jnthn nom: sub foo() { say "I'm dynamically compiled" }; BEGIN { foo() } 13:54
p6eval nom 58809b: OUTPUT«I'm dynamically compiled␤»
jnthn Where we have to go and compile a piece of the code during compilation because we need it before we're "finished"
In this case, the chain starts at needing to do that with Rat.new (which works out, it seems)
masak compilation during compilation. yo dawg. 13:55
jnthn masak: right. 13:55
jnthn It tends to work out fine 13:55
But in the setting we're already trying to deal with a load of other circularities.
jnthn Hmm, it isn't that it's trying to re-compile the same thing over many times though. The caching there works out. 13:57
bbkr1 mberends: sorry about server downtime. some weird problem with one kext. resolved now. 14:00
mberends bbkr1: no probs, I was logged out during the past week's work in Dublin 14:02
pmurias japhb: re mono you should compile one from source
japhb pmurias, yeah, so I gathered. 14:03
pmurias japhb: "re pile of stuff the package manager installed" it's just that package managers love to split everything in tiny bits 14:04
jnthn Curious. It explodes when doing self.HOW.name(self) ~ '<' ~ self.WHERE ~ '>' 14:06
pmurias japhb: if you want to install gtk# for the gui example i found out that www.mono-project.com/Parallel_Mono_Environments was helpfull
jnthn I'm also curious why it's doing that. 14:07
japhb pmurias, nodnod. And of course, everyone is then exhorted to install 'mono-complete' plus a few "optional" extras, which is just silly. And then, my favorite part: since all those binary packages in fact come from only a few source packages, every time there's a patch you have to download and install all of them anyway. Micro-packages don't even save you that. :-/
pmurias, ah, thank you!
pmurias japhb: i suspect there is a package manager leaderboard somewhere which is causing the fragmentation ;) 14:08
flussence rakudo: "a".WHAT 14:09
p6eval rakudo 5be6d6: ( no output )
flussence rakudo: say "a".WHAT
p6eval rakudo 5be6d6: OUTPUT«Str()␤»
flussence hm, my local perl6 doesn't like that... 14:10
«> "a".WHAT␤Use of uninitialized value in string context»
jnthn flussence: Yeah, known
flussence: If there's no output, it tries to stringify the result.
Stringifying a type object produces a warning. 14:11
moritz the REPL should .gist and and not .Str, I think
mls_ Hi perl6! 14:12
jnthn hi mls_ :)
benabik moritz: +1
moritz: Or .perl 14:13
mls_ jnthn: I noticed that rakudos clones subs when doing a map(). Why's that?
jnthn mls_: Where specifically? 14:14
japhb pmurias, *chuckle*, I wouldn't even be surprised. My boss (a FreeBSD user) and I had a friendly argument about whose OS had more packages/ports available. Turns out that there are in fact reports being run every night for Debian listing package counts and sizes broken down by arch and release. Looked pretty much like a bragging rights report. ;-)
jnthn mls_: But most likely it's part of the usual closure stuff.
mls_ probably. Which parts of a sub need the cloning? 14:15
jnthn mls_: BTW, you've produced quite a few good patches for Rakudo now, so if you feel like sending in a CLA and getting a commit bit, we're happy to give you one. :)
masak \o/
mls_++
mls_ Oh no, there's another CLA. I thought the parrot CLA covers rakudo... 14:16
jnthn mls_: Forget the details, but it's about maintaining the lexical chain.
mls_: We could certainly clone a bit less than we currently do.
mls_: Both at Parrot level and Perl 6 level.
jnthn Though since it's shallow cloning, I'm not sure how much we'd save. 14:17
mls_ All the cloned subs currently end up as different in the profiler, that's why I'm asking
jnthn mls_: oh, I see
mls_ I can easily fix that in the profiler (same segment and offset -> same sub), but I wanted to ask first if rakudo does this on purpose
jnthn mls_: Well, you can look at...the code base offset pointer or whatever it's called in the Parrot Sub.
mls_ ;) 14:18
jnthn mls_: Yes, very much so.
thundergnat Hi #perl6.
jnthn Different CLAs - because Parrot one goes to Parrot foundation, which is a different legal entity to The Perl Foundation.
mls_ ok, I'll change the profiler. Thanks.
Btw, regarding your patch to is_clearly_returnless: I still think rakudo should make use of the continuation already stored in the call context instead of creating a new one for each sub... 14:19
jnthn mls_: Will that actually work? 14:21
mls_: Note that we need to do some work on the value being returned before actually handing it back.
thundergnat Been away from perl 6 for a bit. Just cloned nom from git and built and am getting a failure during make test: t/02-embed/01-load.t.
mls_ I had that proof-of-concept patch that pmichaud++ didn't like ;)
thundergnat Interestingly, make spectest passes though... 14:22
moritz thundergnat: that's known :(
thundergnat Ah.
jnthn seriously considers deleting t/02-embed/01-load.t, since its main role is to make people thing they're going to have problems, when they won't.
*think
thundergnat nom: say (65..75).chrs; 14:23
p6eval nom 5be6d6: OUTPUT«Method 'chrs' not found for invocant of class 'Range'␤ in <anon> at /tmp/Bo7sNvnaDM:1␤ in <anon> at /tmp/Bo7sNvnaDM:1␤␤»
thundergnat use MONKEY_TYPING; augment class Cool { method chrs () { self>>.chr.join }; }; say (65..75).chrs; # LHF?
mls_ jnthn: it added a perl6_return op that did the return type checking 14:24
thundergnat nom: use MONKEY_TYPING; augment class Cool { method chrs () { self>>.chr.join }; }; say (65..75).chrs; ?
p6eval nom 5be6d6: OUTPUT«===SORRY!===␤Confused at line 1, near "?"␤»
jnthn mls_: OK. Put did this not involve also patching nextsame etc? 14:24
thundergnat nom: use MONKEY_TYPING; augment class Cool { method chrs () { self>>.chr.join }; }; say (65..75).chrs;
p6eval nom 5be6d6: OUTPUT«ABCDEFGHIJK␤»
jnthn thundergnat: Is that spec'd?
mls_ No, it didn't touch nextsame.
thundergnat It was in ng. 14:25
jnthn is a tiny bit surprised but may be mis-remembering how nextsame handles returning.
mls_ (not changing nextsame was obviously a bug in the patch) 14:26
jnthn ah, ok
I guess I'm a little concerned about spreading that logic around.
But maybe it's worth it if there's a performance win.
Did you get any stats on that? iirc, pmichaud wanted to know whether it was worth it. 14:27
Intuitively it would be though.
mls_ Yes I did. I'll try to find the number in the irclog archive... 14:28
jnthn OK, thanks.
It may be worth re-testing too (more)
A bunch of things have got cheaper in recent days, so as a percentage win it may now be higher.
JimmyZ rakudo: class A { has $!b = 10; }; sub foo($self) { $self!b }; say foo(A.new) 14:30
p6eval rakudo 5be6d6: OUTPUT«Method 'find_private_method' not found for invocant of class 'Perl6::Metamodel::PackageHOW'␤ in method dispatch:<!> at src/gen/CORE.setting:653␤ in sub foo at /tmp/kOgqeqdh_O:1␤ in <anon> at /tmp/kOgqeqdh_O:1␤ in <anon> at /tmp/kOgqeqdh_O:1␤␤»
jnthn LTA error 14:31
Thogh it's correct that it doesn't work.
mls_ jnthn: it was a 10% speedup for a simple return loop
thundergnat jnthn: .chrs is specced in S29 around line #314 14:32
jnthn thundergnat: OK, in which case patches welcome.
mls_: IIUC, it's a PMC allocation less per block invocation?
(well, for ones that didn't have the thing optimized out...)
mls_ you mean sub, not block? 14:33
yes.
jnthn yes, sub.
OK
mls_ But note that we need to implement leave() someday, so the sub/block difference is kinda going away 14:34
jnthn *nod*
JimmyZ rakudo: class A { has $.b = 10; }; sub foo($self) { $.b }; say A.new.&foo
p6eval rakudo 5be6d6: OUTPUT«Null PMC access in find_method('b')␤ in sub foo at /tmp/BM2KedbLm_:1␤ in method dispatch:<var> at src/gen/CORE.setting:640␤ in <anon> at /tmp/BM2KedbLm_:1␤ in <anon> at /tmp/BM2KedbLm_:1␤␤»
jnthn Well, only kinda.
JimmyZ rakudo: class A { has $.b = 10; }; sub foo($self) { $self.b }; say A.new.&foo #this one works 14:35
p6eval rakudo 5be6d6: OUTPUT«10␤»
mls_ anyway, I'll update the patch next week (and maybe also work a bit on exceptions) 14:36
jnthn mls_: OK, great. :)
Thanks. :)
mls_ afk... have a nice weekend
jnthn you too :)
mberends re-remembers :-) www.art.net/~hopkins/Don/unix-hater...aster.html 14:42
arnsholt Ah, the Unix haters handbook. One of my all time favourites 14:44
mberends aye, www.art.net/~hopkins/Don/unix-hater...dbook.html # use the blinking cursor to log in :) 14:45
mberends is trying to get the hands of the Niecza xclock to move 14:46
masak ooh, Niecza xclock! 14:47
mberends masak: on Ubuntu locally, it Just Works :P
masak cool! 14:51
mberends masak: Gtk# I mean. I was trying to find out why yours doesn't. 14:53
masak right. hm. 14:54
pmurias masak: what's your Gtk# error? 15:10
masak checks
pmurias: gist.github.com/1208171
pmurias you have Gtk# installed? 15:11
which version?
the example requires 2.12.0.0 15:12
mberends masak: try 'gacutil -l | less' to see what is installed 15:14
masak ok, lots of output. 15:15
what am I looking for?
mberends gtk-sharp 15:16
masak no such thing on the list.
mberends a package is probably missing, I'll try to find which one it should be 15:17
[Coke] too much to review. 15:19
mberends masak: Ubuntu (and Debian) package libgtk2.0-cil contains /usr/lib/cli/gtk-sharp-2.0/gtk-sharp.dll. You reported earlier that this was installed. It may help to force a re-install. 15:24
masak tries that 15:25
mberends it may be having it in the filesystem is not enough, and that installing should add it to the GAC.
dalek kudo/nom: ebe121d | jnthn++ | LHF.markdown:
minmax is implemented; remove from LHF.
15:26
kudo/nom: 30e9bc4 | jnthn++ | src/Perl6/ (2 files):
Fix issues with using Rats in the setting.
kudo/nom: bb7c108 | jnthn++ | src/core/Temporal.pm:
Uncoment most of class DateTime.
jnthn General note to Rakudo devs: proto auto-generation doesn't work in the setting. Always declare your protos explicitly. 15:30
(Don't particularly plan to fix this.) 15:31
masak mberends: I removed libgtk2.0-cil and installed it again, using apt-get. still the same error after that. :/
mberends masak: 'gacutil -i /usr/lib/cli/gtk-sharp-2.0/gtk-sharp.dll' might add the library into your gac. otoh, your gacutil may be broken. 15:34
pmurias masak: do you have exactly 2.12.0.0
masak: other version will not work at all
dalek kudo/nom: 118be55 | jnthn++ | src/core/Temporal.pm:
Uncomment rest of temporal stuff. Removed 'multi' in a couple of places it didn't seem needed; if you want to add it back, remember to declare a proto as well.
jnthn OK, now I've got it to all compile, plesae can some Rakudo folks who understand the temporal stuff take a look and see how well it works/if it passes tests and tinker as needed? Thanks! :) 15:35
mberends jnthn: ok, but slowly, no i7 monster here :) 15:36
jnthn pat pats the i7 monster 15:37
pmurias masak: which distro do you use?
felher nom: my @whatever = 1..3.map: {$_} # why does that timeout?
p6eval nom 5be6d6: OUTPUT«(timeout)» 15:38
masak pmurias: Mono? I have 2.10, didn't know there were any higher.
pmurias: I'm on Ubunto something-or-other.
jnthn felher: First, it's not doing what you think
masak Ubuntu 2.6.38-11-generic according to uname -a
felher I know that this is not the same as (1..3).map: {$_} and probably doesn't make much sense, but why does it timeout
pmurias masak: the gtk example depends on an exact version of the gtk lib 15:39
felher jnthn: ;)
masak pmurias: oh!
jnthn nom: (1..[3])
p6eval nom 5be6d6: ( no output )
jnthn nom: say eager (1..[3])
felher jnthn: it does't timeout if you don't assing it to whatever.
nom: 1..3.map: {$_} # why does that timeout?
p6eval nom 5be6d6: OUTPUT«(timeout)»
nom 5be6d6: ( no output )
jnthn felher: Yeah, but then it never iterates the range. 15:40
felher jnthn: ah, that makes sense. :)
pmurias masak: i'm not sure now but there is a version number in the source of the example
jnthn nom: say [3].Numeric 15:41
p6eval nom 5be6d6: OUTPUT«1␤»
jnthn nom: say [3].Int
pmurias masak: i installed caesar.acc.umu.se/pub/gnome/sources....10.tar.gz from the source and it works for me
p6eval nom 5be6d6: OUTPUT«1␤»
jnthn nom: say 1 < [3]
p6eval nom 5be6d6: OUTPUT«Bool::False␤»
jnthn nom: say 1 2 [3]
p6eval nom 5be6d6: OUTPUT«===SORRY!===␤Confused at line 1, near "say 1 2 [3"␤»
jnthn nom: say 2 < [3]
p6eval nom 5be6d6: OUTPUT«Bool::False␤»
jnthn nom: say 3 < [3]
p6eval nom 5be6d6: OUTPUT«Bool::False␤»
jnthn Yeah, I can see where this is going :)
oh, maybe, hm. 15:42
moritz also note that 1..3.map is most likely not what one wants
but rather (1..3).map
jnthn moritz: Right
moritz: I'm just not sure that it should hang when you do it rong.
pmurias masak: i think it might be best to just avoid the insanity of the package managers and compile that manually
moritz jnthn: it shouldn't, I think
jnthn moritz: Don't see why it is right off. 15:43
moritz nom: say (1..3)
p6eval nom 5be6d6: OUTPUT«1..3␤»
moritz nom: say (1..(3))
p6eval nom 5be6d6: OUTPUT«1..3␤»
moritz nom: say (1..(3).list)
p6eval nom 5be6d6: OUTPUT«1..(3,).list.item␤»
moritz nom: say (1..(3).list).list
p6eval nom 5be6d6: OUTPUT«(timeout)»
masak pmurias: ok. 15:50
I don't often hear people describe package managers as an insanity to avoid ;) 15:51
moritz for the user, they are a bit like sliced bread :-) 15:54
moritz ./perl6 --setting=NULL --target=pir --output=src/gen/CORE.setting.pir src/gen/CORE.setting 16:13
Could not find sub &DYNAMIC
current instr.: 'trait_mod:<is>' pc 40 ((file unknown):133) (src/gen/CORE.setting:56)
aka build is broken :(
jnthn wtf
works here. 16:14
No local patches.
jnthn reconfigures and tries again. 16:14
mberends moritz: same breakage here (Ubuntu 11.04) although ((file unknown):129) 16:15
jnthn shit, here too after a re-configure
TimToady_ niecza: say [max] 1,2,3 16:18
p6eval niecza v9-31-g37fcc8d: OUTPUT«Unhandled exception: Excess arguments to CORE infix:<max>, used 2 of 3 positionals␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (CORE infix:<max> @ 0) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1384 (CORE reduceop @ 10) ␤ at /tmp/9nYOurB7ug line 1… 16:18
jnthn oh, what on earth are all those "is export"s doing in those ops...
TimToady_ sorear: ^^
dalek kudo/nom: bbe78ec | jnthn++ | src/core/Temporal.pm:
Remove a bunch of 'is export's that shouldn't have been there. Not sure how the build didn't break here... :/
16:20
jnthn That seems to fix it. 16:21
jnthn Still not sure how I managed to get a build/spectest run that worked before :/ 16:21
mberends rebuilding 16:22
thundergnat I've written a patch to add chrs() and .chrs back into nom. Spec tests ok locally. I don't have a commit bit. Where's the best place to submit this? RT? 16:31
There's a gist here: gist.github.com/1224100
jnthn gotta head out, bbl &
thundergnat Also I've written a bunch of tests for for chrs and ords I can add to roast. Should I put them in S29-conversions/ord_and_chr.t or make a new ords_and_chrs.t file? 16:33
thundergnat Hmm. The silence is deafening. Oh well forgiveness > permission and all that.... 16:39
dalek ast: 19b6614 | thundergnat++ | S29-conversions/ord_and_chr.t:
Added tests for ords(), .ords, chrs() and .chrs
16:40
mberends thundergnat: I'll test your commit after the previous commit's tests finish 16:41
mberends \o/ Niecza clock with (slowly) moving hands, and a resource leak :) gist.github.com/1224163 17:33
Trashlord masak: do you know the swedish band Regurgitate? 17:34
moritz 4 xwsm n b ¬   hb j, 17:35
mberends ronja: hi 17:36
moritz mberends: ronja growls in greeting :-9
mberends shrinks visibly 17:37
moritz mberends: it's not a threat, just a sign of enthusiasm 17:38
mberends :)
sorear good * #perl6 18:03
colomon o/ 18:12
sorear mberends: interesting, I hadn't considered hidden interface methods at all. 18:13
When I'm back on the mainline I think I'll do $obj.CLR::System::IDisposable::Dispose 18:14
I guess this is related to "hides Base" from S12 18:15
sorear jnthn: out of curiousity, why doesn't proto autogeneration work in the setting? 18:29
who is awake right now with Niecza compile issues?
PerlJam sorear: heh, I just got on to ask you about that. 18:34
sorear: gist.github.com/1224212 18:36
flussence same here 18:37
sorear PerlJam: ok. in the Makefile, in the boot/obj/CompilerBlob.dll rule, could you try changing /lib:obj to /lib:boot/obj ? 18:38
PerlJam trying 18:39
looks like success. 18:40
(at least I'm looking at a niecza> prompt right now :)
sorear yay
TimToady_ niecza: say [*] 1,2,3; say [max] 1,2,3; 18:42
p6eval niecza v9-31-g37fcc8d: OUTPUT«6␤Unhandled exception: Excess arguments to CORE infix:<max>, used 2 of 3 positionals␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (CORE infix:<max> @ 0) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1384 (CORE reduceop @ 10) ␤ at /tmp/pMtypw_fBc line…
TimToady_ sorear: what's the difference? ^^ 18:43
sorear TimToady_: probably max is marked as list-associative in niecza's copy of STD
PerlJam sorear: how do you sync niecza's copy of STD with perl6's copy of STD? 18:51
sorear: do you hand add features or copy it wholesale and then fixup what's broken?
TimToady_ niecza: say [~] 1,2,3 18:54
p6eval niecza v9-31-g37fcc8d: OUTPUT«123␤»
TimToady_ sorear: ~ is purportedly list associative too, but works
sorear TimToady_: ~ is written to take an unlimited number of arguments. max isn't 18:55
TimToady anywho, [max] oughta work... 18:56
thundergnat I've been going through some of code I wrote for beijing rakudo and testing it under nom. The X meta operator seems to be much slower now. Don't have any useful suggestions, just making an observation. 19:26
b: my $t = now; my @r = (0..50); say ~(@r X, @r)[2500]; say now - $t, ' seconds';
p6eval b 1b7dd1: OUTPUT«49 1␤1.713 seconds␤»
thundergnat nom: my $t = now; my @r = (0..50); say ~(@r X, @r)[2500]; say now - $t, ' seconds';
p6eval nom bbe78e: OUTPUT«49 1␤5.67179321019412 seconds␤»
moritz thundergnat: thanks for the report 19:37
moritz hilights pmichaud
nom: my $t = now; my @r = (0..50); my $x = ~(@r X @r)[2500]; say now - $t 19:38
p6eval nom bbe78e: OUTPUT«3.30956307681409␤»
moritz nom: my @r = (0..50); my $t = now; my $x = ~(@r X @r)[2500]; say now - $t 19:52
p6eval nom bbe78e: OUTPUT«3.32703610270021␤»
moritz nom: my @r = (0..50); my $t = now; my $x = (@r X+ @r)[2500]; say now - $t
p6eval nom bbe78e: OUTPUT«5.29437567034281␤»
moritz b: my @r = (0..50); my $t = now; my $x = (@r X+ @r)[2500]; say now - $t 19:53
p6eval b 1b7dd1: OUTPUT«1.77227327207351␤»
tadzik oh, :nocache turns out to be useful :) 20:12
being not only a Pod whim :) 20:13
dalek ecza: 380d891 | sorear++ | Makefile:
Fix build
20:19
tadzik no 'is rw' in nom? 20:24
nom: sub a($b is rw) { $b = 5 }; my $a = 5; a($a); say $a 20:25
p6eval nom bbe78e: OUTPUT«5␤»
tadzik hrm
maybe not in the setting
moritz tadzik: are you looking at temporal failures? 20:26
tadzik moritz: yes
moritz nom: sub a($b is rw) { $b = 5 }; a(8)
p6eval nom bbe78e: OUTPUT«Cannot assign to a non-container␤ in sub a at /tmp/PKOG02Wn50:1␤ in <anon> at /tmp/PKOG02Wn50:1␤ in <anon> at /tmp/PKOG02Wn50:1␤␤»
tadzik heh, how did it even work before
thundergnat nom: sub a($b is rw) { $b = 2 }; my $a = 5; a($a); say $a 20:27
p6eval nom bbe78e: OUTPUT«2␤»
moritz somehow this whole setup seems stupid
thundergnat You can't assign to a constant
moritz first assigning to attributes, and *then* checking and truncating
tadzik BUILD should do that imho 20:28
then we could possibly be going with default .new 20:29
tadzik moritz: are you hacking on that right now? 20:29
moritz tadzik: I'm about to commit 2 tiny fixes, and then go to bed 20:31
tadzik okay
jnthn home
tadzik ohitsjnthn
dalek kudo/nom: 6fde31d | moritz++ | src/core/Temporal.pm:
two tiny Date fixes
20:32
moritz -> sleep
jnthn Oh, dates!
tadzik gnight moritz 20:32
jnthn hi and bye, moritz :) 20:33
tadzik bwahaha 20:41
nom: Date.new(DateTime.new);
p6eval nom bbe78e: ( no output )
tadzik nom: Date.new(DateTime.new); say 'alive'
p6eval nom bbe78e: ( no output )
tadzik it segfaults :)
cotto might be a bug
tadzik Program received signal SIGSEGV, Segmentation fault.
0x00007ffff3dde4a7 in Rakudo_cont_store () from dynext/perl6_ops.so
class A { has $.b; multi method new(Int $b) { say "I'm working" } }; A(7) 20:45
nom: class A { has $.b; multi method new(Int $b) { say "I'm working" } }; A(7)
p6eval nom bbe78e: OUTPUT«Could not find sub &A␤ in <anon> at /tmp/vzadNiCAT5:1␤ in <anon> at /tmp/vzadNiCAT5:1␤␤»
tadzik nom: class A { has $.b; multi method new(Int $b) { say "I'm working" } }; A.new(7)
p6eval nom bbe78e: OUTPUT«I'm working␤»
tadzik huh
sorear b: my $a := $a; say $a
p6eval b 1b7dd1: OUTPUT«Segmentation fault␤» 20:46
sorear tadzik: are you sure it's segfaulting?
er
tadzik (:
sorear tadzik: I mean, why isn't the segault being reported on p6eval?
tadzik sorear: well, it segfaults here locally
I don't know why it's not reported
masak senses a disturbance in the force... 20:50
Trashlord: no, I am unfamiliar with that band.
sorear o/ masak 20:51
masak \o
jnthn tadzik: segv? 20:54
tadzik jnthn: yeah
on HEAD
jnthn OH NOES
tadzik on my head too :)
masak on your head be it.
jnthn tadzik: How to reproduce? 20:55
tadzik: As in, the segfault?
tadzik jnthn: Date.new(DateTime.new);
jnthn boom
Yeah, segfault here too
tadzik is struggling with multi custom new()s 20:56
jnthn devenv perl6.exe :)
er, the thing passed to store has a vtable pointer with value 1. 20:57
That's...not a valid address.
tadzik oh, you have a fast machine. Could you try that on HEAD~1? 20:58
like, before moritz's fix
sorear probably not relevant, but I think that 1s get used on the common C++ ABI for pointers to virtual methods
jnthn tadzik: I haven't pulled yet, so it segfaults on bbe78ec901c1f1 20:59
tadzik oh, cool
jnthn Well, I'd not call a segfault cool :P
tadzik hmm
nom: sub segfault { Date.new(DateTime.new) }; say so segfault ~~ Cool 21:00
p6eval nom 6fde31: OUTPUT«Use of uninitialized value in string context␤Too many positional parameters passed; got 1 but expected 0␤ in sub segfault at /tmp/ZVba4yoBgC:1␤ in <anon> at /tmp/ZVba4yoBgC:1␤ in <anon> at /tmp/ZVba4yoBgC:1␤␤»
tadzik nom: sub segfault { Date.new(DateTime.new) }; say so segfault() ~~ Cool
p6eval nom 6fde31: ( no output )
tadzik eh, we'll never know :)
sorear jnthn: Do you have a clue why nom: doesn't report segfaults?
jnthn sorear: 'fraid not. 21:01
sorear b: pir::branch__vi(-1000)
p6eval b 1b7dd1: OUTPUT«Segmentation fault␤»
sorear nom: pir::branch__vi(-1000)
p6eval nom 6fde31: ( no output )
sorear rakudo: pir::branch__vi(-1000)
p6eval rakudo 6fde31: ( no output )
jnthn We ain't doing anything in nom to suppress them.
sorear I'll look into it
jnthn (knowingly)
sorear p6eval@host04:~/evalbot$ ../nom-inst/bin/perl6 --setting=SAFE -e 'pir::branch__vi(-1000)' 21:03
jnthn tadzik: meh, the root cause of the segfault is less clear.
sorear Segmentation fault
sorear pines for pir::hcf
jnthn oh, hmm...something is deicdedly wrong with this debug output 21:05
jnthn tadzik: ah, that example wasn't golfed 21:08
tadzik well, probly 21:09
jnthn tadzik: Just DateTime.new does it.
tadzik oh, cool
jnthn I guess we hit the default constructor in that case too 21:15
tadzik yeah, the specified one is acting funny 21:16
for example, DateTime.new(now) doesn't dispatch to neither of the specified ones them
but it works with some generic multi method new($i) 21:17
jnthn has &.formatter; # = &default-formatter;
Not segfault if I comment that out
o.O
*no
tadzik $i ends up being 1316294146, Num
but it doesnt ~~ with Int
sorear odd, I can't push to github from feather
jnthn missing sshkey?
tadzik keys?
dalek albot: f4d019b | sorear++ | evalbot.pl:
Enable command-line testing of p6eval changes
sorear jnthn: very very slow 21:18
jnthn oh, push to evalbot...duh :)
sorear and I mean host04
jnthn tadzik: Investigating further.
tadzik okay
flussence I got niecza/t/run_spectests to work properly! (still no idea why it didn't work for me before...) 21:20
jnthn tadzik: eww :( 21:21
tadzik: Golfed it to something that doesn't involve Temporal. 21:22
tadzik: sub foo() { 1 }; class Bar { has &.x = &foo }; Bar.new
tadzik ew
jnthn That explodes.
masak something to do with the magical attrinit closures? 21:22
jnthn mebbe
masak maybe they get OUTER'd improperly? 21:23
jnthn Possibly.
masak or sump'n.
sorear wtf
jnthn oh wtf.
sorear p6eval forks TWICE before running your code.
jnthn > sub foo() { 1 }; class Bar { has $.x = &foo }; Bar.new
Bar<230000816>
tadzik hy 21:24
jnthn sorear: That's forked up
sorear and the exit code is being lost between the first and second fork
tadzik jnthn: yeah, you can never have too many dollars
jnthn I'm *so* glad it's not an outers bug... 21:25
tadzik :D
. o O ( LALALALA! GC BUG? I CAN'T HEAR YOU! LALALAA! )
wth is "duplicate named argument in call"? 21:27
nom: sub a(:$foo) {}; a(foo => 7, foo => 8) 21:28
p6eval nom 6fde31: OUTPUT«duplicate named argument in call␤ in <anon> at /tmp/5We0C8dRWg:1␤ in <anon> at /tmp/5We0C8dRWg:1␤␤»
tadzik okay
sorear Anyone know offhand how to get from 11 to "Segmentation fault" in perl5? 21:29
masak tadzik: that's not spec, but I'm on nom's side there.
tadzik masak: I don't see it anywhere in the source, that sentence
it's Parrot's error
masak aye. 21:30
jnthn Yes, it is
tadzik I wonder where it is
masak the problem, I guess, is if you flatten several hashes or something like that.
then you probably want the last named to override.
the spec is insane and talks about values collecting into arrays... :/ 21:31
sorear perldoc POSIX doesn't list psignal or strsignal
ah, found something 21:32
evalbot control restart 21:38
dalek albot: f52ae10 | sorear++ | lib/EvalbotExecuter.pm:
Only fork once, use signal names
sorear nom: pir::branch__vi(-1000) 21:38
p6eval nom 6fde31: OUTPUT«(signal SEGV)» 21:39
tadzik I think self.bless(*, :$year, :$month, :$day, :$hour, :$minute, :$second, :&formatter) is causing the problem
sorear not perfect, but an improvement
nom: Date.new(DateTime.new);
p6eval nom 6fde31: OUTPUT«(signal SEGV)»
tadzik sorear++ 21:40
jnthn Trying a possible patch.
jnthn > sub foo() { 1 }; class Bar { has &.x = &foo }; Bar.new.x().().say 21:43
1
> say DateTime.new.WHAT
DateTime()
Better.
pst
oops
testing
dalek kudo/nom: d41bb84 | jnthn++ | src/Perl6/Actions.pm:
Fix 'has &.x'.
21:47
jnthn tadzik: pre t'a ^^ 21:48
tadzik jnthn++
sorear jnthn: That was segfaulting?!
sorear wonders...how...
jnthn sorear: Yeah...though the patch fixes the surface issue.
sorear: I need to do some digging to work out how on earth it could have led to a segfault. 21:49
Well, 6model doesn't go checking every possible thing for you.
It does expect a compiler to enforce its own type system. :) 21:50
But in this case...I'm surprised.
sorear Are custom metaobjects allowed to create segfaults?
jnthn It's probably pretty hard. 21:51
There's one easy way
Which is to set up a native integer attribute
And then emit code that expects to access it as an objct
Oh
sorear Negative integer attribute...? 21:52
jnthn But that's not really possible
sorear oh
jnthn It's really hard with P6opaque to set up a segfault that way in a custom meta-object though.
It only ever asks the meta-attribute about its type once
And the compiler asks the representation when it wants to do code-gen, not the meta-attribute. 21:53
So you don't actually get a chance to give inconsistent answers.
So in fact, that segfault vector is covered too.
I suspect this segfault was a result of some mis-configuration of Scalar's attributes. 21:54
Oh, it could also be something expecting a 6model object and getting back a null PMC.
But that should always be detected.
yeah, it's looking like it's that...somehow. Hm. 21:55
aha. 21:56
tadzik nom: DateTime.now
p6eval nom 6fde31: OUTPUT«Default constructor only takes named arguments␤ in method new at src/gen/CORE.setting:506␤ in method new at src/gen/CORE.setting:6561␤ in method now at src/gen/CORE.setting:6613␤ in <anon> at /tmp/5LWeE7x9tB:1␤ in <anon> at /tmp/5LWeE7x9tB:1␤␤»
tadzik okay, at least I have that one fixed 21:57
dalek kudo/nom: 375fa0a | tadzik++ | src/core/Temporal.pm:
Small Temporal tune, fixes Date.new(Instant)
21:58
tadzik ooh, I think I see it now
self.clone(second => foo) 21:59
and clone has :$!second, **and** |%_
jnthn Not sure clone taking args is implemented yet
tadzik there's a custom clone(*%_)'
testing a fix 22:00
jnthn oh, ok :) 22:01
tadzik well, a stupid one 22:02
%_<second> || :$!second
but should work in this particular case :)
lichtkind cheers good people of perl 6 22:02
tadzik hello lichtkind
lichtkind hej
tadzik oh, I mean, guten abend lichtkind 22:03
lichtkind tadzik: see you in ffm?
tadzik ffm?
lichtkind you as a polished ähm polish guy know we have at least 2 frankfurts the one where german perl workshop happens is FrankFurt am Main or short ffm 22:04
masak greetings, o lichtkind, lightbearer and witty guy.
lichtkind masak: i take this at tongue in cheek :) 22:05
tadzik lichtkind: what does the second f stand for?
and, re ffm, if you're inviting... ;) 22:06
jnthn Furt :P
lichtkind yes i upercased it
masak lichtkind: I'm never quite sure where my tongue is... :)
lichtkind hahaha, that was good 22:07
tadzik 13th German Perl-Workshop, right?
masak lichtkind: for you too? :P
lichtkind yes
tadzik oh, it's a few-dayer
lichtkind 3
but 1 track onlx 22:08
even in italy we had 2
so much less stress than in riga
tadzik not sure I'll be able to attend
so see you in ffm, but that'll probably be the next YAPC :) 22:10
jnthn the next YAPC! \o/
lichtkind allright
jnthn oh, wait, it's 11 months away... :) 22:10
lichtkind jnthn: there is still tcpw 22:11
tadzik doesn't matter! The next YAPC! \o/
jnthn lichtkind: Yes, I'm going to that :)
lichtkind haha
jnthn: i hope they but my talk before yours, i mean so i can lay groundwork
ffm.pm is very busy looks like they take it very seriously 22:13
they are so active they did most years there own litttle perl workshop :) 22:14
which was especially good last year
tadzik b: sub a(:$foo) {}; a(foo => 7, foo => 8) 22:39
p6eval b 1b7dd1: OUTPUT«duplicate named argument in call␤ in main program body at line 22:/tmp/XJhle1lEUB␤»
tadzik that makes me wonder how DateTime even worked in b
jnthn tadzik++ # fixing stuff 22:41
tadzik Dynamic variable $*TZ not found 22:56
now we're somewhere :)
jnthn :)
tadzik funnily, I don't know where it is supposed to be initialized/set 22:57
I don't see it in ng either 22:58
src/cheats/process.pm
yeah
could I just put it in Temporal.pm in nom that way?
our $TZ = ::DateTime-local-timezone.new;
that doesn't look too dynamic 22:59
jnthn Shouldn't it go in PROCESS?
Note that $*foo looks through call frames, then GLOBAL, then PROCESS.
It's almost certain you want to put it in PROCESS 23:00
As the spec says that the setting should put nothing in GLOBAL.
tadzik mhm
jnthn $PROCESS::TZ = DateTime-local-timezone.new;
tadzik yeah
jnthn Just put that at the end of Temporal.pm
Should work.
tadzik time will tell 23:01
oh, wait...
tadzik hmm, I wonder how possible is a CPU upgrade in a laptop 23:06
masak 'night, channel. 23:37
sorear rakudo: sub foo { say "hi" }; BEGIN { foo } 23:48
p6eval rakudo 375fa0: OUTPUT«hi␤»
sorear jnthn++
jnthn rakudo: sub foo { say "hi" }; BEGIN foo # just checking... 23:53
p6eval rakudo 375fa0: OUTPUT«hi␤»
jnthn phew :)
tadzik :) 23:54
rakudo: BEGIN { /d/ }
p6eval rakudo 375fa0: ( no output )
tadzik rakudo: BEGIN { /\d/ }
p6eval rakudo 375fa0: ( no output )
tadzik rakudo: BEGIN /\d/
p6eval rakudo 375fa0: ( no output )
tadzik oh, fixed? :)
jnthn I patched that yesterdayish 23:56
OK, I can't remember which day.
They all blur together.
:)
tadzik :0 23:58
:)
gah, I need some auto-correct for this :0