»ö« 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.
xenoterracide hmm... well I can't seem to get things to work on the newer parrot now 00:02
I wonder what's up with that
I give up for the time being 00:03
00:04 Kharec left 00:08 hash_table left 00:12 zjmarlow__ joined 00:16 qu1j0t3 left 00:47 zjmarlow__ left 00:49 wamba left
xenoterracide r: say Date.new; 01:02
p6eval rakudo cecc9f: OUTPUT«2012-12-24␤»
xenoterracide that seems so arbitrary
sorear xenoterracide: it is, in fact, completely arbitrary 01:03
xenoterracide why doesn't it throw an exception 01:04
01:07 dedis6 joined, anuby joined
sorear that's the way it is. not my call. 01:09
01:15 dedis6 left 01:18 Chillance left 01:23 hypolin joined
xenoterracide so asked this early but think it may have gotten lost in another conversation. can I apply a role at runtime but where it's also new time? meaning not after the object is constructed 01:25
01:37 tokuhiro_ left 01:38 tokuhiro_ joined
xenoterracide r: class T { has $.foo }; my $t = T.new; $t.foo('test'); 01:53
p6eval rakudo cecc9f: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in method foo at src/gen/CORE.setting:1794␤ in block at /tmp/KuoZG3JWXh:1␤␤»
xenoterracide I don't understand that error
01:53 sirrobert left 01:56 sirrobert joined
sorear xenoterracide: the correct syntax is $t.foo = 'test'; 02:09
r: class C { } ; role R { method foo() { 42 } }; say (C but R).new.foo # something like this xenoterracide? 02:10
p6eval rakudo cecc9f: OUTPUT«42␤»
xenoterracide I thought `but` allowed things to be removed not added... yeah I suppose something like 02:11
I guess I don't quite understand `but` yet 02:12
sorear but only adds. 02:13
(C but R) is the same as (anon class :: is C does R { })
02:16 fgomez left
xenoterracide using the word `but` for this grates against my sense since I see but as a negation 02:17
still thanks
02:21 bowtie left, fgomez joined, fgomez left 02:22 whiteknight left 02:26 fgomez joined 02:46 FROGGS_ joined 02:49 rurban_ joined, fgomez left, fgomez joined 02:50 flightrecorder left, FROGGS left 02:51 flightrecorder joined
felher 'night #perl6 :) 02:52
doy 'but' isn't a negation, even in the linguistic/logical sense 02:53
"this object is green but small"
means it's both green and small
geekosaur but is a constraint, even in natural language. negation is the simplest constraint but far from the only one 02:55
sorear 'but' indicates an unexpected propert 02:56
y
"this tungsten ball is small but quite heavy" 02:57
"after '$x = 0 but True', $x is numerically zero but true in boolean context"
you expect small things to be light, and zero things to be false (at least in Perl) 02:58
03:00 hash_table joined
xenoterracide privatepaste.com/1130814e00 O.o 03:12
03:15 hash_table left 03:32 ifim joined
lue r: say "foo bar".^methods; my @array = "foo bar".^methods; my @array = "foo bar".words; say @array.perl' 03:32
p6eval rakudo cecc9f: OUTPUT«===SORRY!===␤Redeclaration of symbol @array␤at /tmp/hHARka2VXg:1␤»
lue (IIRC rakudo's REPL isn't the most reliable way of testing P6 code) 03:33
ifim you declared @array twice 03:36
r: say "foo bar".^methods;
p6eval rakudo cecc9f: OUTPUT«BUILD Int Num chomp chop substr pred succ match ords lines samecase samespace trim-leading trim-trailing trim words encode capitalize wordcase trans indent codes tclc path WHICH Bool Str ACCEPTS Numeric gist perl comb subst split␤»
doy r: say "foo bar".words.perl
p6eval rakudo cecc9f: OUTPUT«("foo", "bar").list␤»
ifim r: my @array = "foo bar".words; say @array.perl'; 03:37
p6eval rakudo cecc9f: OUTPUT«===SORRY!===␤Confused␤at /tmp/QAltXN0pPT:1␤»
doy r: my @array = "foo bar".words; say @array.perl
p6eval rakudo cecc9f: OUTPUT«Array.new("foo", "bar")␤»
ifim r: my @array = "foo bar".words; say @array.perl;
p6eval rakudo cecc9f: OUTPUT«Array.new("foo", "bar")␤»
ifim sorry
lue r: my @array = "foo bar".^methods; say @array.perl;
p6eval rakudo cecc9f: OUTPUT«Array.new(submethod BUILD(Str : :value(:$value) = { ... }, Mu *%_) { ... }, method Int(Str:D : Mu *%_) { ... }, method Num(Str:D : Mu *%_) { ... }, method chomp(Str:D : Mu *%_) { ... }, method chop(Str:D : Mu *%_) { ... }, method substr(Str:D : $start, $length? is …
lue Apparently the REPL will ignore a redeclaration without telling you (+ giving the appearance of success). 03:38
03:51 orafu left, orafu joined 03:58 ifim left 04:09 takesako joined 04:28 dedis joined
dalek rl6-bench: b47060b | (Geoffrey Broadwell)++ | bench:
Remove unixism by switching to Shell::Command for rm_rf
04:31
rl6-bench: 5268d41 | (Geoffrey Broadwell)++ | bench:
Change 'extract-releases' command to just 'extract', but leave the longer name as an alias for the short one
rl6-bench: 04e2158 | (Geoffrey Broadwell)++ | / (2 files):
Add 'time' command to time individual checkouts; change timeall program to support this (minimally, at least)
rl6-bench: 273e045 | (Geoffrey Broadwell)++ | bench:
Remove redundant line that had been copy-pasted to three places
04:50
rl6-bench: e48cabb | (Geoffrey Broadwell)++ | bench:
Move 'clean' command multi back to where it was supposed to be
rl6-bench: 45eee9e | (Geoffrey Broadwell)++ | bench:
Factor out some boilerplate from most of the command multis
05:29
05:43 skids left 05:46 birdwindupbird joined
dalek rl6-bench: ccf9079 | (Geoffrey Broadwell)++ | bench:
Improve error handling and sanity checking in 'extract' command
05:52
moritz \o 06:14
gist.github.com/4109216 # qast-sink-1 spectest summary 06:15
06:18 kaleem joined 06:33 circlepuller left, circlepuller joined 06:35 zby_home_ joined 06:58 FROGGS_ left 06:59 flightrecorder left 07:00 zby_home_ left 07:09 cognominal joined 07:14 cognominal left 07:15 drbean left 07:21 drbean joined 07:22 flightrecorder joined 07:27 Bzek joined 07:31 FROGGS joined
FROGGS morning 07:31
phenny: ask jnthn if these fails ( smolder.parrot.org/app/projects/rep...ails/32307 ) need to be fixed before release 07:33
phenny FROGGS: I'll pass that on when jnthn is around.
07:34 rurban_ left 07:44 SamuraiJack joined
moritz FROGGS: yes, they need to be fixed (or in some cases the tests need to be fudged) 07:47
FROGGS: I might look at them tonight
FROGGS moritz: k, thanks
07:50 domidumont joined
moritz S12-class/attributes is a new test 07:51
dalek ast: ac70806 | moritz++ | S12-class/attributes.t:
avoid a name conflict
07:52
moritz same with S32-exception/misc
dalek ast: f631233 | moritz++ | S06-other/main-usage.t:
fudge two new, failing tests
07:55
07:59 odoacre left, odoacre joined 08:04 drbean left, fgomez left
jnthn morning o/ 08:04
phenny jnthn: 07:33Z <FROGGS> ask jnthn if these fails ( smolder.parrot.org/app/projects/rep...ails/32307 ) need to be fixed before release
FROGGS morning 08:05
jnthn yes, and it looks like moritz++ is on with it
FROGGS ya, he is
;o)
08:05 sorenso joined 08:08 wamba joined 08:09 drbean joined 08:13 fgomez joined 08:23 domidumont left 08:24 domidumont joined, Kharec joined
tipdbmp What's the difference between 'has $!attr;' and 'has $.attr;' and how does one redifine the accessor methods generated for 'has $.attr;'? 08:31
tadzik you don't get an accessor method with has $!attr 08:32
tipdbmp How do I use $!attr from outsdie the class? 08:33
tadzik you don't :)
you need an accessor method for that 08:34
either use $.attr or write your own accessor method
r: class A { has $!attr = 5; method attr { "I'ts {$!attr}" }; A.new.attr.say
08:34 drbean left
p6eval rakudo cecc9f: OUTPUT«===SORRY!===␤Unable to parse expression in block; couldn't find final '}' at line 2, near ""␤» 08:34
tadzik p6eval: pfffft!
r: class A { has $!attr = 5; method attr { "I'ts {$!attr}" } }; A.new.attr.say
p6eval rakudo cecc9f: OUTPUT«I'ts 5␤»
tipdbmp That's a get method for $!attr, what about a set one?: method attr($value) { $!attr = $value; } # ? 08:35
tadzik yeah, you can write one :) 08:36
FROGGS tipdbmp: the ! makes is a private attribute, so IMO it makes not much sense to have another accessor that looks like a public attribute 08:40
08:40 drbean joined
tipdbmp Okay. 08:40
FROGGS tipdbmp: but keep in mind that the ! is just needed for declaring a private attr, to use it within your class always use $.attr
so the ! only appears once 08:41
tadzik s/within/outside/?
tipdbmp Yes.
08:42 thou left
FROGGS tadzik: when assessing to $!attr within your class, you dont use the !, right? 08:42
mathw externally accessible set methods for private attributes are useful when you need to do something more complex than just set the attribute. But maybe writing setter methods rather than assignment-ish syntax is considered more idiomatic Perl 6?
FROGGS mathw: dunno, I do like addignment-ish syntax, and I dont care what the class is doing with it 08:44
08:44 sqirrel joined
tadzik FROGGS: I do 08:44
well, depends on what I mean
but it avoids a virtual method call
(virtual in C++-speak) 08:45
tipdbmp So how do I write my own accessors for has $.attr is rw; that are used outside the class as: $obj.attr; # get accessor for $.attr and $ob.attr = 5; # set accessor for $.attr; 08:51
multi method attr { $!attr } and multi method attr($value) { $!attr = $value) work, but $obj.attr(5); # is the set accessor, while the autogenerated set accessor allows $.attr = 5; 09:03
tadzik r: class A { has $!attr; method attr($a) is lvalue { $!attr = $a } }; A.new.attr = 5 09:04
p6eval rakudo cecc9f: OUTPUT«===SORRY!===␤Cannot call 'trait_mod:<is>'; none of these signatures match:␤:(Mu:U $child, Mu:U $parent)␤:(Attribute:D $attr, :rw(:$rw)!)␤:(Attribute:D $attr, :readonly(:$readonly)!)␤:(Attribute:D $attr, :box_target(:$box_target)!)␤:(Routine:D $r, :rw(:$rw)!)␤:(Rout…
tadzik pffft!
09:07 xinming_ joined
moritz is rw 09:08
tadzik r: class A { has $!attr; method attr($a) is rw { $!attr = $a } }; A.new.attr = 5
p6eval rakudo cecc9f: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method attr at /tmp/_IBD_rzp23:1␤ in block at /tmp/_IBD_rzp23:1␤␤» 09:09
tadzik hrm
ah, yeah
it should return a Proxy probably
moritz r: class A { has $!attr; method attr() is rw { $!attr } }; my $x = A.new; $x.attr = 5; say $x.attr 09:10
p6eval rakudo cecc9f: OUTPUT«5␤»
tadzik oh, cool :)
moritz++ 09:11
09:11 xinming left
tipdbmp Okay... I still don't get how I can "validated" what value the set accessor assigns to the $!attr; 09:16
using the $x.attr = <something>; syntax 09:18
09:30 dakkar joined 09:39 kresike joined
kresike hello all you happy perl6 people 09:39
jnthn tipdbmp: Well, using a subset type is a good way 09:42
Otherwise it'll have top be a proxy 09:43
*to
09:47 cognominal joined
jnthn moritz: spectest fail list for sink isn't terribly long 09:49
nwc10 jnthn: I'm not hugely worried about memory ups or downs w.r.t. forcing a poor little ARM board to build Rakudo for the sake of building Rakudo 09:57
also, bad news - I failed to spot the factor of 1000 difference - the purloined charger is for *mini* USB, not *micro* USB.
jnthn nwc10: oh noes! 09:58
09:58 brrt joined
nwc10 yes. back to where we were 24 hours ago. :-/ 09:59
sorear What's this in reference to?
nwc10 what am I burbling on about - stuff I can get at zero cost that powers hardware I already had. 10:01
note, "zero cost" seems to be the fun bit here - saving unloved things from landfill (or quietly sleeping in a box somewhere)
sorear nwc10: I just feel like I'm missing the context here. did I accidentally delete a p6c mailing related to the Pi compilation saga more recent than this summer? 10:02
10:02 hypolin left 10:08 fhelmberger joined
nwc10 sorear: no, a comment I made here on IRC about 2 or 3 days ago, saying it's slower again. About 24 hours. But does complete and pass tests 10:09
10:18 anuby left
sorear I see 10:18
10:23 bbkr_ left 10:31 brrt left 10:34 brrt joined
arnsholt masak: You familiar with a book called "Tecknens rike"? 10:34
10:37 bbkr joined, bbkr left
dalek ecza: da13155 | sorear++ | / (6 files):
Allow different compartments to have different load paths and compiler hooks
10:40
sorear sleep& 10:41
10:51 masak left 10:53 masak joined
masak good antenoon, #perl6 10:54
tadzik hello hello
masak arnsholt: yes, I have that book here on my shelf. 10:59
arnsholt: I almost, but now quite, met the author.
lue: re redeclarations in the REPL not giving an error: that's fairly consistent with redeclarations in Perl 6 in general not giving an error. 11:01
arnsholt Oh, that's a shame. I came across it accidentally recently. It's quite interesting
11:02 mucker joined
masak lue: re "the appearance of working", I think you found a bug. lue++ 11:02
11:02 cognominal left 11:03 gootle left
masak gist.github.com/4110132 -- surely this doesn't look right? 11:03
when the corresponding statements are put in a file, Rakudo currently dies when parsing the third statement. 11:04
11:05 gootle joined, gootle left
masak rn: my $a = 42; $a = 43; my $a = 5; say $a 11:05
p6eval niecza v22-33-gda13155: OUTPUT«Potential difficulties:␤ Useless redeclaration of variable $a (see line 1) at /tmp/eZH4qY53Je line 1:␤------> my $a = 42; $a = 43; my $a ⏏= 5; say $a␤␤5␤»
..rakudo cecc9f: OUTPUT«===SORRY!===␤Redeclaration of symbol $a␤at /tmp/2LWYeAWef0:1␤»
masak Niecza has it right, IMO.
11:05 Su-Shee_ joined 11:09 Su-Shee left 11:11 cognominal joined
jnthn masak: We don't have any worry/panic distinction yet 11:11
masak: repl thing is fine 11:12
every line is a new scope 11:13
the utility of a repl is greatly reduced if you can't redeclare things. We allow it just through lexical scoping.
so, working as designed 11:14
11:16 brrt left 11:21 cognominal left
jnthn masak: oh, I see the issue...it somehwo gets the wrong value at the end 11:22
wtf
11:30 cognominal joined 11:34 brrt joined 11:36 cognominal left 11:39 cognominal joined 11:41 Kharec left, brrt left
masak jnthn: right. 12:03
masak submits rakudobug
12:04 wamba left, Su-Shee_ is now known as Su-Shee
masak jnthn: I know about the REPL and scopes. also, as I argued above in my response to lue, even if the REPL *didn't* create a new scope with every line, it still should allow redeclarations just fine, because Perl 6 in general does. 12:07
12:07 Kharec joined
masak in blogs.perl.org/users/shlomi_fish/20...ities.html -- I'm curious what resources rindolf's countdown prototype ended up consuming, and how the script looked. 12:10
12:14 mtk joined 12:23 tokuhiro_ left, tokuhiro_ joined 12:28 mtk left, mtk joined, mtk left 12:29 mtk joined 12:36 Psyche^ joined
jnthn masak: yes, but the repl shouldn't warn 12:37
and normall things should
12:37 cognominal left 12:39 Patterner left, Psyche^ is now known as Patterner 12:41 cognominal joined 12:46 cognominal_ joined 12:48 cognominal left
masak jnthn: I agree. 12:56
jnthn Getting @*WORRIES etc in place should not be too hard 12:57
masak I'm reading research.microsoft.com/pubs/170528/...012-79.pdf with interest. about a quarter way through.
from the text: "The heart of reference immutability is that a reference's permission applies transitively. Any new references acquired through a reference with a given permission cannot allow mofidications that the root reference disallows." 12:58
that seems to me to be a component that Perl 6 has been missing, sometimes to its detriment.
jnthn Looks like another attempt to solve the has @.x; style issues 13:00
masak for example, the spec says that arrays made immutable (by being passed as a readonly parameter, or by being returned from a readonly accessor) should have immutable elements.
jnthn: right.
there's a great p6l thread about that somewhere.
jnthn yeah, that's not been a problem anybody has really desired to attack.
masak sorear is saying that he hasn't seen a cure that wasn't worse than the problem, IIRC.
so far in this paper, this cure looks quite sane and pleasant.
jnthn That's probably a big part of why :)
masak I say this as a total threads/concurrency layman, though. 13:01
jnthn Scanning through, at least looks worth reading.
13:07 wamba joined 13:08 cognominal_ left 13:12 cognominal_ joined 13:36 pmurias joined
pmurias hi 13:36
jnthn: can the gotos in rules jump to a label in a different rule?
masak re-reads the bits about "lexotic" and realizes he now understands this concept fully 13:45
jnthn pmurias: never
masak pmurias: S04 says you cannot goto into a lexical scope if that scope has parameters that need special initialization. 13:46
so you cannot goto past a parameter-binding boundary.
well, not into it. out of it is fine.
pmurias masak: the goto is in pir 13:47
masak oh, then it's even simpler, I think.
goto in PIR simply doesn't work across routine boundaries.
13:48 Kharec left
masak if you wanted to do some of the exotic goto moves Perl 6 permits in PIR, you'd have to emulate it somehow with some other construct. 13:48
13:49 SamuraiJack left
pmurias jnthn: what does $!restart in Cursor contain? 13:53
13:59 cognominal_ left
pmurias should commits on rakudo-js be reported by dalek? 14:00
tadzik I'd enjoy that :)
14:04 atrodo joined
masak too 14:05
wow, precompilation really does make a huge difference in startup speed. 14:10
tadzik it does 14:11
14:11 flightrecorder left 14:13 flightrecorder joined
masak hm, I seem to have neglected to remove lib/Event.pm from crypt when adding it to Adventure::Engine. fixing. 14:13
14:13 FROGGS left, PacoAir joined
dalek rlito: 131944d | (Flavio S. Glock)++ | TODO-perlito5:
Perlito5 - TODO update; add more references to documentation and tests
14:13
masak jnthn, moritz: good news, everyone: crypt and Adventure::Engine now work under precompilation. jnthn++! 14:16
14:17 am0c joined
tadzik did they not? 14:18
14:18 tokuhiro_ left 14:19 tokuhiro_ joined 14:20 Kharec joined 14:21 jlaire joined 14:22 kaleem left, hash_table joined, cognominal joined
masak tadzik: up until a few days ago, no. 14:23
tadzik oh, recent fixes by jnthn++ 14:24
14:25 drbean left, rurban_ joined 14:26 FROGGS joined
pmurias masak: how do I make dalek report commits for a repo? 14:27
14:27 hash_table left 14:28 drbean joined
masak good question. 14:32
tadzik it's documented in perl6/mu somewhere, I thin
colomon how do you capture a Pair in a signature? 14:33
masak r: sub foo(Pair $p) { say "captured!" }; foo( (bar => 42) ) 14:36
p6eval rakudo cecc9f: OUTPUT«captured!␤»
masak colomon: was your question really "how do you pass a pair when calling a routine?" 14:37
14:37 rurban_ left
colomon no, I'm looking for 14:37
for @array-of-pairs -> $key => $value { blah } 14:38
except I know that's not right.
(At least, I don't think it is)
ooo, crashed google chrome!
I've worked around my question for the moment, but I'm still curious.
masak these is a way, using nested signatures. it's quite neat. 14:39
14:39 kaleem joined
masak rn: for foo => 1, bar => 2 -> $p (:$key, :$value) { say $key } 14:40
p6eval niecza v22-33-gda13155: OUTPUT«Potential difficulties:␤ $p is declared but not used at /tmp/McEYGRsG2V line 1:␤------> for foo => 1, bar => 2 -> ⏏$p (:$key, :$value) { say $key }␤ $value is declared but not used at /tmp/McEYGRsG2V line 1:␤------> for foo => 1, …
..rakudo cecc9f: OUTPUT«foo␤bar␤»
masak rn: for foo => 1, bar => 2 -> $ (:$key) { say $key }
p6eval niecza v22-33-gda13155: OUTPUT«Any()␤Any()␤»
..rakudo cecc9f: OUTPUT«Unexpected named parameter 'value' passed in sub-signature␤ in block at /tmp/G4lUSkUKX5:1␤␤»
masak r: for foo => 1, bar => 2 -> (:$key, :$value) { say $key }
p6eval rakudo cecc9f: OUTPUT«foo␤bar␤»
colomon masak++ 14:41
do the names have to be key and value? (I'm guessing yes.) 14:42
14:42 cognominal left
colomon looks again and is sure. 14:42
masak since they bind to attributes in the Pair, yes. 14:44
r: for foo => 1, bar => 2 -> (:key($k), :value($v)) { say $key }
p6eval rakudo cecc9f: OUTPUT«===SORRY!===␤Variable $key is not declared␤at /tmp/3UbT5wIzW8:1␤»
masak r: for foo => 1, bar => 2 -> (:key($k), :value($v)) { say $k } 14:45
p6eval rakudo cecc9f: OUTPUT«foo␤bar␤»
masak however; as above.
r: for foo => 1, bar => 2 -> (:key($k), :value($)) { say $k }
p6eval rakudo cecc9f: OUTPUT«foo␤bar␤»
masak n: for foo => 1, bar => 2 -> (:key($k), :value($)) { say $k }
p6eval niecza v22-33-gda13155: OUTPUT«Any()␤Any()␤»
masak sorear: awww :)
masak submits nieczaissue
colomon masak++ again 14:46
14:51 am0c left 14:57 stopbit joined
colomon rn: say "this is a test".trans(" " => "\\ ") 14:57
p6eval rakudo cecc9f, niecza v22-33-gda13155: OUTPUT«this\is\a\test␤»
colomon ooo... it's character based rather than string based. 14:58
14:58 GlitchMr joined
moritz rn: say "this is a test".trans([' '] => ['\\ ']) 14:58
p6eval rakudo cecc9f, niecza v22-33-gda13155: OUTPUT«this\ is\ a\ test␤»
moritz colomon: not in this form 14:59
colomon moritz:
moritz++
but .subst is easier for the "one change" case anyway.
I was just all excited because I'd come up with a practical use for .trans minutes before. ;)
err, needs global in the subst case. 15:00
colomon appears to be having a lots of small stupid mistakes sort of morning.
masak .trans violates the Principle of Least Surprise. 15:02
moritz .trans tries to do too many things at once 15:04
GlitchMr This .trans function actually reminds me strtr() in PHP.
php.net/strtr
Not sure if copying bad PHP design is good idea. 15:05
masak as far as I know, Perl 6 hasn't copied anything from PHP's design. 15:07
GlitchMr Yet, .trans looks similar to strtr() from PHP. 15:08
masak they seem to have roughly the same function. 15:09
they are quite different in their signatures.
which still doesn't make Perl 6's .trans intuitive. 15:10
15:10 birdwindupbird left
masak I kinda liked pmichaud's suggestion to put the multi-char translation on .subst instead. 15:10
GlitchMr In PHP, it looks like strtr("this is a test", [' ' => '\\ '])
Close enough
masak the only counterargument to that is that it may be too late to do so.
GlitchMr: I couldn't see from that page what the PHP function does in the case of several keys matching at the same time. (i.e. I see no LTM going on) 15:11
GlitchMr: also, there's no mention of regexes as keys. 15:12
pmurias masak: it doesn LTM
* does
masak: according to the example
GlitchMr masak: "The longest keys will be tried first." 15:13
From PHP documentantion.
documentation*
I guess this counts as LTM.
masak pmurias: oh, indeed.
15:13 skids joined
masak it does. 15:13
jnthn pmurias: $!restart contains the thing to call back into the restart the match and produce the next cursor
masak .trans is the only routine I know that expects an argument on the form [...] => [...] 15:14
that alone is a bit confusing, I guess.
I've seen TimToady get this one wrong ;)
jnthn masak: If you had a ticket for the AE precomp bug, feel free to clsoe it...I thought you did but when I looked I didn't see it 15:15
masak I didn't have a separate one. 15:17
the one referred to when I discovered my problem is the one you marked testneeded the other day. 15:18
jnthn ah, cool, we pre-empted duping :) 15:20
15:23 sorenso left
masak moritz++ did. :) 15:24
15:25 jlaire left
jnthn yeah. Now the operator one is fixed too, I think we may have fixed all the module precomp issues... 15:26
...which is pre-req for the automatically maintained pre-comp cache 15:28
[Coke] r: say "bar" ~~ /:i frb | BAR/; 15:30
p6eval rakudo cecc9f: OUTPUT«「bar」␤␤»
[Coke] is the :i there supposed to impact BAR or just frb?
jnthn I'm not immediately sure
[Coke] ok. there's a ticket on that one. you fixed:
jnthn Would have to go read STD more closely
[Coke] r: say "bar" ~~ /:i [frb | BAR]/; 15:31
p6eval rakudo cecc9f: OUTPUT«「bar」␤␤»
[Coke] where is more obviously the right thing.
jnthn right, but that wasn't a precedence issue, but an NFA one.
15:31 prammer left
masak [Coke]: I read the :i in /:i frb | BAR/ as affecting both alternatives, and here's why: it affects the rest of the "scope", where a scope is either the whole rule, or the innermost enclosing [] or () group. 15:32
colomon is watching jnthn on his other computer....
masak [Coke]: I don't know if that reasoning holds water, but that's my intuition about it.
jnthn colomon: oh my...what am I doing? :P 15:34
colomon presentation on the perl 6 debugger
jnthn ah, the lightning talk :)
colomon ah, yes it is. I thought it was a full lecture 15:35
well, I guess it won't distract me from work for long!
jnthn++ 15:36
jnthn but playing with the debugger might :P
[Coke] masak: if you can get someone to agree with you, that's a closable ticket.
colomon jnthn: indeed it might. but I must press on with $work!
masak well, hearing what pmichaud or TimToady has to say on the topic would be interesting.
colomon wait, you just debugged a macro!?! 15:37
masak :D
not sure what happens if the macro actually puts a big chunk of code there, though. 15:38
[Coke] r: say 659-86
p6eval rakudo cecc9f: OUTPUT«573␤»
jnthn masak: hopefully, the right thing 15:39
dalek kudo-js: 84d6d4e | (Paweł Murias)++ | run_tests:
fix run_tests
kudo-js: 7ef98d5 | (Paweł Murias)++ | / (3 files):
[nqp] pass 33
kudo-js: 1087377 | (Paweł Murias)++ | / (2 files):
[nqp] pass 39
jnthn a mildly-distracted reading of STD seems to support Rakudo's :i scoping 15:40
15:40 hash_table joined 15:41 aindilis left
masak jnthn: "the right thing" being... what, exactly? the debugger stepping through scores of statements while highlighting the original macro call on each step? 15:44
the event types of Adventure::Engine: gist.github.com/4111373 15:47
jnthn masak: I suspect it'll step into the quasi 15:48
Or let you single tep through it
masak: try it ;) 15:50
dalek kudo-js: b0154c7 | (Paweł Murias)++ | / (3 files):
[nqp] implement slurpy positionals, pass test 40
15:51
masak jnthn: ok :)
15:54 kaleem left 16:01 brrt joined 16:03 bowtie joined, cognominal joined
jnthn decommuten & 16:04
dalek kudo-js: 15def0e | (Paweł Murias)++ | / (3 files):
[nqp] pass 37,implement slurpy named arguments
16:05
kresike bye folks 16:07
16:07 kresike left
dalek kudo-js: 86c9904 | (Paweł Murias)++ | run_tests:
[nqp] add passing test 42 to run_tests
16:07
16:13 REPLeffect joined, sisar joined 16:14 spider-mario joined
masak ===SORRY!=== 16:21
Missing or wrong version of dependency 'lib/Adventure/Engine.pm'
so... if I *don't* precompile, but have an old .pir file sitting around, Rakudo dies?
hm, no, that does not seem to be it. 16:22
[Coke] wonders if we need a command line argument for rakudo to wipe any precompiled files.
masak oh!
so this is what happens. 16:23
B depends on A.
precompile both.
then change A and precompile it.
now if you *don't* re-precompile B, you'll get the above error.
16:24 domidumont left
masak or, put differently, precompiling a module will break all the modules dependencies unless you precompile them also. 16:25
module's*
[Coke] without keeping track of everything that was precompiled's dependencies, that seems thorny. 16:26
masak well, a softer fallback would be to use the .pm version of the module. 16:27
16:35 xillver left 16:41 grondilu joined
pmurias shouldn't precompilation happend automatically? 16:41
moritz eventuelly, yes
masak if it did, this problem would be nonexistent, yes. 16:46
so far I've been staying away from precompilation because it seemed to have many problems. 16:47
I'd rather have slow startup and consistency than fast inconstencies.
the "Missing or wrong version" error message isn't the end of the world. the cause is easily identifiable, and easily fixable. 16:48
but it seems a bit harsh to throw such a message at a downstream module user who just happened to upgrade an upstream module on her system.
especially since the .pir files are always secondary artifacts, and the .pm files are always available. 16:49
16:52 mucker left 16:53 cognominal left 16:54 cognominal joined
[Coke] so which is preferably? fall back to .pm on conflict, or re-precompile on conflict? 16:57
*preferable
I don't mind seeing the occasional warning from niecza about compiling the setting, as a data point. 16:58
pmurias is the precompilation always done in the same way or do people pass compilation flags
?
masak I've never passed compilation flags to precompilation, or heard of anyone who did. 16:59
16:59 Kharec left 17:00 brrt left
pmurias passes vmlibs in a cargo culted rakudo-js Makefile 17:00
17:00 FROGGS left
masak [Coke]: falling back to .pm is "safe", in that it'll always work. but slow. 17:00
17:01 flightrecorder left
masak [Coke]: re-precompile is going above and beyond the call of duty... but what I'd expect from Perl 6, if there are no risks associated with it. 17:01
pmurias but that's too nqp
s/too/in
jnthn back 17:02
pmurias if we re-precompile automatically wouldn't it make sense to move to a fully automatic soultion and get rid of the makefiles?
17:02 cognominal left
masak gladly. 17:03
jnthn Yes, but it's really hard to get it right
People and OSes have all sorts of opinions on where the pre-compiled stuff should be stored. 17:04
Probably it takes O(weeks) to make it work at all (probably enabled by an environment variable), then O(months) to make it so most people like it...
pmurias so you are waiting for volunteers? ;) 17:06
jnthn pmurias: I'm very happy if somebody steps up to do it. 17:07
17:07 wamba left, MayDaniel joined
jnthn Well, maybe best is what I take care of making it work at all and get the Windows side taken care of, and leave @other to sort out the Linux, OSX, BSD etc details of it. 17:08
Because there's lots of folks who use/know about those, and where stuff should be put. But I ain't one of them. :)
pmurias & 17:09
17:10 cognominal joined
cognominal rn: say :($a) ~~ \(1) 17:12
17:12 pmurias left
p6eval niecza v22-33-gda13155: OUTPUT«===SORRY!===␤␤Action method fakesignature not yet implemented at /tmp/RIlBvoteAa line 1:␤------> say :($a⏏) ~~ \(1)␤␤Action method sigterm not yet implemented at /tmp/RIlBvoteAa line 1:␤------> say :($a)⏏… 17:12
..rakudo cecc9f: OUTPUT«False␤»
jnthn cognominal: ur doin it backwards
r: say \(1) ~~ :($a) 17:13
p6eval rakudo cecc9f: OUTPUT«True␤»
cognominal thx
that makes sense 17:14
17:22 thou joined 17:26 Kharec joined 17:28 raiph left
TimToady ponders whether it would be more useful to make that bind only to a pre-existing $a variable, since you can always write :($) to mean the other 17:33
cognominal TimToady, is there way to unpack structures like signatures do outside function calls? 17:40
TimToady what do you mean by "unpack"? 17:42
if you mean "introspect", there are ways to do that, but if you mean "get data out of them", then signatures never contain data 17:43
they only say where to put data
which has to be elsewhere in a lexpad or object 17:44
jnthn r: my ($a, *@rest) := \(1, 2, 3); say $a; say @rest;
p6eval rakudo cecc9f: OUTPUT«1␤2 3␤»
jnthn cognominal: you mean ^
?
17:44 Kharec_ joined
TimToady in that case the "my" is declaring the actual locations, yes 17:45
so the sig knows where to bind the data to
17:45 Kharec left
jnthn Aye. 17:45
17:45 cognominal left
TimToady how hard would it be to make :($a, *@rest) := \(1,2,3) bind to existing variables in the current scope? 17:47
that is, when there's no declarator on the :() 17:48
this is currently seeming like a saner set of semantics than just ignoring the names 17:49
and potentially useful
certainly fakesignature has its own rule in STD, so we can know when we're in that situation 17:50
jnthn TimToady: Just taken a look...I don't think it'd be hard ot make work.
*to
TimToady we might need to relax the sig parsing rules a bit to allow variables that are not lexicals 17:52
17:52 cognominal joined
TimToady so in addition to $!foo we might be able to bind existing globals and such 17:52
cognominal Nov 19 18:45:30 <cognominal>Also S06 uses the expression pattern matching both for this unpacking and for regex, Are they different operations, with regex there is not structure to be recognized but some pattern (sic) in a string while there are already a structure from which one extract information when unpacking using signatures. Or regex could be eventually applied to other things than strings? In that case, signature would be a specialization of 17:53
these extented regexen
Nov 19 18:49:55 <cognominal>my :( $a ) := 1 # that would be a use of signature outside functions. Not interesting unless when doing unpacking
Nov 19 18:50:21 <cognominal>:( my $a, $b ) := 1, 2 # that would be a use of signature outside functions. Not interesting unless when doing unpacking
Nov 19 18:51:05 <cognominal>one could imagine using an existing variable, and declare a new one at once
sorry about my bad connexion and the lame xchat
I have to read the web irc log to figure out if what I say goes thru 17:54
TimToady okay, need to backlog, I guess...
cognominal TimToady: apparently my line of thougt was parallel to yours :) 17:57
17:58 Kharec_ left
TimToady we could perhaps also allow :() within a normal signature to bind the current argument to a fake signautre referencing existing variables 18:00
though that's a bit more problematical from a closure point of view
18:00 wamba joined
jnthn TimToady: Hm, I don't think we need to complicate signatures any more 18:02
18:02 Kharec joined
jnthn TimToady: Normal signatures can already bind to attributes and rw accessors. 18:03
Binding to existing ours...well, that's just a lexical alias.
Don't need to provide a way to bind into more complex package names.
TimToady nodnod 18:04
we can fiddle the fakesigs first, and then see if any sane use cases present themselves, then evaluate 18:05
18:05 brrt joined
TimToady for now, one can always bind a fakesig as the first thing inside a function and get the same effect as if it were embedded in the function's signature, I expect 18:06
18:06 domidumont joined
cognominal what are fakesigs? I don't see that in S06. Is it the use of sigs outside fonctions? 18:07
TimToady and it can be argued that, since () in a sig already is declarative, it would be confusing to introduce a non-declarative :() inside an existing sig
:() without a declarator
(counting function sigs as a kind of implicit 'my' declarator)
jnthn fwiw, Rakudo already has a very clean separation of the declaration/binding. 18:08
Typically, we look at a signature and declare all the things it mentions.
That's a compile-time thing
And the binding of those things is a separate step.
TimToady if we did do the :() inside sig, it would just be a lookup instead of a declaration, but I do think it might be confusing, and unnecessary 18:09
jnthn back in a bit
18:10 dakkar left 18:12 SamuraiJack joined, brrt left 18:13 grondilu left
cognominal TimToady: about the word unpacking intead of introespecting : "unpack" is the word you use in S06. 18:15
is the context any different? :) 18:16
18:17 sisar left
Su-Shee wow, there isn't much mussing anymore in rakudo.. :) 18:23
18:25 jaldhar left 18:26 FROGGS joined 18:28 flightrecorder joined
jnthn No, but there's still some things we mussed do... :) 18:29
Su-Shee jnthn: still looks nice all the green in the feature matrix. :) 18:30
18:30 cognominal_ joined
jnthn Su-Shee: Yes, I'm happy with the progress there :) 18:30
18:32 jaldhar joined, cognominal left
Su-Shee jnthn: it also looks like things are actually getting to some definition of finish line so many people insist on.. 18:33
18:37 Chillance joined
jnthn Aye, though people insist on faster too :) 18:41
Su-Shee and they're going to want books and then modules and then applications.. :) 18:42
and then t-shirts.. and mugs.. and ..
jnthn Don't give them mugs! They'll throw them and then who knows what we get... :P
dalek rl6-roast-data: c55d7f9 | coke++ | / (4 files):
today (automated commit)
18:44
rl6-roast-data: 707a004 | coke++ | / (3 files):
today (automated commit)
rl6-roast-data: fe0db5a | coke++ | / (4 files):
today (automated commit)
18:45 telex left 18:46 telex joined
[Coke] arglebargles, as his primary (work) laptop has to be shipped to corporate for reimaging. 18:49
18:50 rurban_ joined
jnthn TimToady: Got a potential patch here, but SIG_STOMACH... :) 18:56
bbiab
19:03 rurban_ left
sorear good * #perl6 19:07
19:08 zjmarlow joined
moritz \o 19:15
19:20 atrodo left
moritz r: say nqp::p6box_i(nqp::can(1|2, 'randommethod')) 19:20
p6eval rakudo cecc9f: OUTPUT«1␤»
19:20 MayDaniel_ joined, atrodo joined
moritz jnthn: that's what cause the spectest failures of the qast-sink-1 branch 19:20
19:21 atrodo left
moritz r: say (1|2).?randommethod 19:21
p6eval rakudo cecc9f: OUTPUT«No such method 'randommethod' for invocant of type 'Int'␤ in sub AUTOTHREAD_METHOD at src/gen/CORE.setting:2119␤ in at src/gen/Metamodel.pm:2394␤ in block at /tmp/b210TB5OVy:1␤␤»
19:21 atrodo joined
moritz it emits the equivalent for my \temp = 1|2; temp.sink if nqp::can(temp, 'sink') 19:22
19:23 MayDaniel left, alester joined
moritz I guess I can work around that with a custom sink method in Junction 19:26
19:28 sisar joined 19:29 kaare_ joined
moritz no, I can't 19:30
it still autothreads :(
ah no, I'm just silly
TimToady: what should .sink on a Junction do? sink all eigenstates? or nothing at all? 19:31
(I'm leaning towards the former)
masak what's the observable difference? 19:33
19:34 sisar left 19:35 sisar joined
sisar i'm really fed up with these errors on cygwin: "[main] perl6 8740 child_info_fork::abort: address space needed by 'io_ops.dll' (0x360000) is already occupied" 19:36
rebasing doen't work :(
(www.cygwin.com/faq/faq-nochunks.htm...-failures)
i'm unable to install panda because of this error
moritz masak: I guess the differences are pretty obscure
sisar any pointers to resolve this ? 19:37
moritz masak: like, if you have a junction of file handles, and one of them is a Failure from a failed open()
skids <joke>Obviously perl6 should fork a process for each state and then die one of them</joke> 19:39
19:39 cognominal_ left 19:44 cognominal_ joined
[Coke] sisar: I don't think any of the core perl6 folks use cygwin - rurban on #parrot on irc.perl.org is probably the best parrot/rakudo/cygwin resource. 19:44
TimToady moritz: "sink" means "force any lazy side effects to happen", so if it's possible to have lazy side effects in a junction, it should probably fire them off; it might or might not make sense to emit a "Useless use of junction" warning though 19:46
sisar [Coke]: ok, thanks. 19:47
19:47 SamuraiJack left
TimToady or you can view it as a "pretend you're eager but don't go to any extra effort to actually return the results" 19:47
19:48 sisar left, cognominal joined 19:49 cognominal_ left
TimToady arguably junctions in sink context could be used to express parallelism, but the analog with shell's & and | is imperfect 19:49
skids Wouldn't a sink on a junction constitute testing any Failures therein for Bool, and thus marking them handled?
TimToady why would sink supply a Bool context? 19:50
generally sinking a Failure should throw an exception
s/a/an unhandled/
skids OK, well, the exact opposite of what I said, then :-) 19:51
skids sometimes has logical dyslexia
19:52 cognominal_ joined
TimToady is that sonotlexia or notsolexia? 19:52
skids I'm more often precisely wrong than "off to the side" 19:53
TimToady well, physicists think that's better
skids This tends to lead to a lot of naval gazing.
TimToady "not even wrong" is a slam, coming from a physicist
19:54 cognominal left
skids It actually is a benefit, because I'm usually sure that the answer is one of two things. 19:54
TimToady well, not if the actual answer is on the continuum somewhere in the middle :) 19:55
maybe you should go into politics :) 19:56
19:56 Kharec left
skids If it is, then I will precisely identify the point opposite where it is, and seize on it as the answer :-) 19:56
TimToady that works if it's really a circle instead of a continuum
like both fascism and communism wrap around to totalitarianism on the opposite side from freedom 19:57
skids No, on a continuum, it still works, you just take the answer equidistant from the midpoint, on the other side :-) 19:58
TimToady perhaps you should find the midpoint, where you can be both right and wrong simultaneously
skids I have friends like that. 19:59
20:02 Kharec joined, brrt joined
skids Anyway, since actually using a junction involves testing it for Bool, then the only way to actually throw a Failure that's in a Junction would be through a special construct, so if we want to be able to do that, sink should probably, or we'll need another construct. 20:03
20:04 fhelmberger left
brrt well, p6, i'm not sure if it counts, but ruby might have outdone you in the madness departement 20:05
blog.headius.com/2012/11/refining-ruby.html - dynamically scoped methods!
20:06 cognominal joined, cognominal_ left 20:11 cognominal_ joined 20:12 cognominal left, sorenso joined 20:13 kurahaupo joined 20:16 domidumont left
FROGGS masak: this can be closed, right? rt.perl.org/rt3/Ticket/Display.html?id=114246 20:17
dalek kudo/qast-sink-1: 6cc0d6c | moritz++ | src/core/Junction.pm:
work around nqp::can(Junction, $anything) always returning True
kudo/qast-sink-1: 318e56c | moritz++ | src/ (3 files):
Revert "only sink when --sink command line option is provided"

This reverts commit 3f12074d13a51b2602039ece5f95454055e8abd0.
skids r: "OHAI".say if 1&2&fail(3)&4 + 4 20:19
p6eval rakudo cecc9f: ( no output )
skids r: say 1&2&fail(3)&4 + 4 20:20
p6eval rakudo cecc9f: ( no output )
moritz skids: note that fail() returns from the current routine
skids That last eval throws in Oct star. 20:21
TimToady brrt: yes, they'be been working on refinements for several years now; it makes me glad we decided to keep a strict separation between lexical dispatch and OO dispatch 20:22
masak FROGGS: needstest, I guess. 20:23
20:23 cognominal__ joined
FROGGS ya 20:23
I'll have a look if there is something already
[Coke] FROGGS - if you find one, please add a comment pointing back to the ticket, and mention the test file when you close it out. Danke. 20:24
masak skids: "naval gazing" is the one where you stare at ships, no?
20:24 cognominal_ left
FROGGS [Coke]: thats the plan ;o) 20:25
[Coke] FROGGS++
skids masak: right you are! 20:26
sergot hi o/
skids r: "HIYA".say if 1&2&Failure.new(X::AdHoc.new())&4 + 4
p6eval rakudo cecc9f: ( no output )
tadzik hello hello
skids r: say 1&2&Failure.new(X::AdHoc.new())&4 + 4
p6eval rakudo cecc9f: OUTPUT«use of uninitialized value of type Str in string context in block at /tmp/Wnus6mvrfh:1␤␤use of uninitialized variable of type Any in string context in block at /tmp/Wnus6mvrfh:1␤␤use of uninitialized value of type Str in string context␤use of uninitialized var… 20:27
masak tadzik! \o/
tadzik masak! \o/
tipdbmp my $x, $y, $z = 1, 2, 3; # Is incorrect? 20:29
How come?
moritz tipdbmp: precedence 20:30
FROGGS = is tighter than ,
20:30 cognominal__ left
FROGGS there was a reason, but I forgot :/ 20:30
moritz well, there are two ='s 20:31
the item assignment one if the LHS has $ sigil
it has tighter precedence than =
and the list assignment one if the sigil on the left is @ or %
which has looser precedence than =
so both my @a = 1, 2, 3 and $a = 1, $b = 2, $c = 3 work 20:32
but you can't make that *AND* $x, $y, $z = 1, 2, 3 work
tipdbmp What about: my $x, $y, $z;
moritz r: my $x, $y, $z
p6eval rakudo cecc9f: OUTPUT«===SORRY!===␤Variable $y is not declared␤at /tmp/F1ezlTV6mz:1␤»
[Coke] r: my ($x, $y, $z); 20:34
p6eval rakudo cecc9f: ( no output )
brrt r: my ($x, $y, $z) = 1, 2, 3; say $x + $y +$z; 20:37
p6eval rakudo cecc9f: OUTPUT«6␤»
zjmarlow hi. is there a way to get the current line number of an open file or does it have to be kept track of separately? 20:38
tipdbmp One more place to get rid of the parens? =)
brrt r: say IO.^methods 20:39
p6eval rakudo cecc9f: OUTPUT«␤»
brrt that is odd
it works for me
r: say IO.^methods.perl
p6eval rakudo cecc9f: OUTPUT«()␤»
brrt oh, wait, sandbox?
geekosaur likely 20:40
dalek ast: 266acab | (Tobias Leich)++ | S11-modules/import.t:
Note about corresponding RT ticket
20:43
TimToady tipdbmp: no, we're trying to discourage use of my ($x, $y, $z) because it tends to encourage people to group unrelated declarations; I'd much rather see a separate 'my' for each declaration, with its own initializer. 20:44
jnthn back
FROGGS TimToady: ... and maybe its own comment describing what the var does
skids zjmarlow: basically not all file reads happen as lines, so the offered interface is in characters, not lines ($*IN.tell). But if you are using a single loop, $*IN.kv -> $linenum, $content works. 20:45
erm, $*IN.lines.kv that is
lue It seems the SCGI module isn't getting the entire netstring. Could this be an issue with IO::Socket::INET? 20:46
dalek kudo/nom: bf472b0 | jonathan++ | src/Perl6/Actions.pm:
Make :($a, $b) := \(1, 2) update $a and $b.

Previously, the spec had such a construct doing nothing. We'll try it like this for a bit to see how it works out. Note, shortest patch that could possibly work; probably needs some tuning.
jnthn TimToady: Doesn't bust any spectests, so let's give it a go. :) 20:47
moritz jnthn: in the qast-sink-1 branch, t/spec/S02-types/bool.t now segfaults violently 20:50
.. on one of my machines
on the other, it's fine
apart from that, the spectests look good 20:52
jnthn moritz: That test file has been known to do that occasionally with little pattern.
moritz: It sometimes does in the daily roast runs
moritz jnthn: oh, ok
jnthn And not other days
So I'd not hold merging off for it.
20:52 dedis left
moritz I'm pretty sure I want to wait until after the release 20:52
jnthn My last attempt to track that segfault down didn't go far. :( 20:53
OK, that works too :)
Probably safer given that this can have quite some side-effects...
Probably good to smoke the cheese too
20:53 ifim joined
moritz my next experiment is to turn off the 'eager' that is now emitted for for-loops 20:55
jnthn ah, yes
One of us probably should look at getting MapIter to sink in a good way too
moritz so far I just forward it to .eager
20:55 Bzek left
jnthn Yeah 20:55
That's enough for now 20:56
moritz oh, and another problem
jnthn But really it needs to throw away the results
moritz the last statement in the mainline isn't evaluated in sink context
jnthn Yeah, that's a bit tricky
Because in an eval, or at the REPL, it shouldn't be. 20:57
mj41 rhr: gist.github.com/4113825
jnthn Provided we can find a way to distinguish, though, it's easy to fix: just push an lookup of Nil onto the statement list :)
20:58 Bzek joined
mj41 hi, File::Spec::Unix is broken (rakudo HEAD) ... gist.github.com/4113825 github.com/FROGGS/p6-File-Spec/blo...nix.pm#L23 20:59
FROGGS mj41: whats wrong with it? 21:00
moritz r: eval 'sub MAIN() { say 42 }'
p6eval rakudo cecc9f: OUTPUT«42␤»
moritz :(
FROGGS r: gist.github.com/4113825
p6eval rakudo cecc9f: OUTPUT«===SORRY!===␤Couldn't find terminator $stop at line 4, near "]+[\\/|$]] "␤»
moritz jnthn: and we have to worry about stuff like putting traits into sink context (or not, dunno) 21:01
ie where we cross the nqp <-> rakudo boundary
skids
.oO(multi sub a ( --> Int) {...}; multi sub a ( --> Str) {...}; :(Int $a) := a(); # the return of wantarray?)
21:03
moritz there's a reason we abolished want() :-) 21:05
moritz -> sleep
arnsholt skids: Polymorphism on return values aren't possible 21:06
masak perks up
arnsholt: why not?
arnsholt: I mean, not even if you *specify* the return type in the signatures, as here? 21:07
arnsholt The problem is selecting the right candidate when the multi is called
skids Well, I notice they aren't in .signature as of now.
arnsholt (Modulo my memory)
masak arnsholt: indeed.
21:08 kaare_ left
masak but right now I can't construct an example that feels really problematic :) 21:08
arnsholt Getting it right in the general case requires a sufficiently intelligent optimizer I think (heck, I wouldn't be surprised if it were undecidable)
Well, "my $foo = return-value-polymorphic()" can be a problem, 'cause now you have to trace through the program to find clues as to the possible types of $foo 21:09
21:09 GlitchMr left
arnsholt Suddenly it's very, very non-local to the invocation 21:09
jnthn If you want such things, make a return value that contextualizes appropriately. 21:10
skids But then we're essentially back to wantarray on the inside of subs, just using lots of buts.
FROGGS cool, only one fail in current spectest!
jnthn skids: It's not wantarray 'cus you're not deciding anything in the sub. 21:11
mj41 FROGGS: Does it make sense to fix it or should we wait for rakudo fix?
FROGGS mj41: I still dont know whats broken 21:12
colomon thinks building rakudo just shut down his linux box...
skids Well, you're doing a lot of extra work then, unless the contextualization happens lazily.
mj41 FROGGS: see updated gist.github.com/4113825
FROGGS ohh
let me test
jnthn skids: Still less work than solving an undecidable problem :P 21:13
skids
.oO(if it were only allowed explicitly...)
21:14
jnthn Module. :)
skids :-)
colomon is now pretty sure that must be it, because it just happened again.
jnthn colomon: Um.
colomon jnthn: no worries, it's something wrong with my linux box.
jnthn How can compiling something shut down a machine?
skids overheat?
jnthn Oh, maybe that :)
Well, with all those hot new features... 21:15
FROGGS ;o)
21:15 brrt left
colomon I don't think it's overheat... at least, the box doesn't seem hot and the one time I monitored the temp it was stable. 21:15
somehow the box is borked and when processes use too much memory it just turns off. as far as I can tell, anyway. 21:16
lue for the record, rakudo compilation could easily shutdown my old laptop :)
colomon I mean, turns off for sure.
mj41 FROGGS: patch here gist.github.com/4113825 ... or I can fork and send pull request or I can ask for commit bit :-)
colomon the memory thing is conjecture but seems to match what I'm seeing. I guess it might be too much processing in general, hard to separate the two.
the machine is five or six years old now, I think I'm just going to have to break down and replace it. 21:17
lue colomon: I've experienced seemingly-random shutdowns before, I would agree that it's your computer.
FROGGS mj41: I just pushed a patch, all tests are fine on my box
mj41 FROGGS: thx
lue s/computer/computer's memory/
colomon I'm sure it's not a rakudo issue, other than rakudo being a bit of a pig. ;)
FROGGS mj41: whats your github id?
mj41 FROGGS: github.com/mj41/ 21:18
FROGGS mj41: you have commit bit
mj41 FROGGS: thanks 21:19
skids colomon: don't feel bad. My BIOS menus overheat my laptop to the point that linux will turn itself off on boot. BIOS coders are savages.
lue colomon: Even though this new comp has 1GiB RAM (which compiles rakudo well enough), I still wish we didn't have The CORE.setting Step™ 21:21
skids guesses that ™ has a tight precedence 21:22
FROGGS I'm pretty happy with my box, stage parse takes 78s
colomon lue: the box in question has 8 GB ram. 21:23
lue For me it's now about 1500s (IIRC). Which is a big improvement over my old laptop, which had a time on the last rakudos I tried of ∞s :)
colomon: that's.. interesting. I always blamed my RAM/computer age, in any case. (My last best guess is some issue with the kernel, but that's as specific an idea as I can get.) 21:25
21:36 hash_table left 21:37 xilo joined
lue would I be correct in assuming nqp/src/QAST is where the nqp->pir step occurs? 21:44
jnthn lue: Yes, specifically in Compiler.pm and Operations.pm 21:47
masak two of my favorite files of all time. 21:50
jnthn masak: Weirdo :P
They do the ugly stuff :)
masak much nicer than previous iterations. :) 21:51
it's HOP! it's OO!
jnthn
.oO( just wait until you see the JVM versions :P )
lue Ah, that's why you like them.
21:51 sirrobert left
jnthn masak: Well, yeah, I wrote it so of course it's a paradigm mashup :P 21:51
lue is again considering porting NQP to LLVM 21:52
jnthn lue: The trouble is how LL it is... 21:53
masak .oO( jnthn, paradigm DJ ) 21:54
lue well, if the effort fails miserably, there's always NQP to C/++ (and therefore to Clang) :)
masak lue: whatever happened to your plans to use Adventure::Engine for something?
I was looking forward to that... :)
lue I got distracted by a new computer in the first days of August, and I have yet to be reinterested in IF games (I haven't even installed gargoyle yet!) 21:55
masak ;) 21:56
well, I'm diving back into all those modules, so now would be a good time to ask me stuff. 21:57
21:58 MayDaniel_ left
lue The past week or so I've gotten into Perl 6 For The Web (hence the SCGI question earlier), and am currently pondering that NQP->LLVM thing again :) 21:58
diakopter lue: you'd need to write a GC (or use a packaged one) 21:59
lue bright side of life: I get to learn what a GC does, in thrilling high definition^W^W detail! :) 22:01
masak advises taking smaller bites of life :) 22:02
diakopter the original acronym of LLVM meant VM in the "instruction set that sits above the hardware" sense, not the "language runtime/environment" sense 22:04
lue (What is likely helping my optimism is how oddly fun I've found assembler the one or two times I've used it (for simple,small things, but still))
22:07 cognominal joined 22:10 skids left
arnsholt lue: An alternative approach to Perl 6 for the Web would be wrapping ZMQ with NativeCall and doing HTTP with Mongrel2 22:12
There're some holes in Zavolaj that need workarounds ATM, but I think it's feasible 22:13
lue arnsholt: ye olde CGI works fine, it just the P6 FastCGI and SCGI modules that I haven't yet gotten to work (right now I think I prefer SCGI of the two)
22:14 sorenso left 22:19 erkan left 22:21 snearch joined
tadzik good knight 22:27
22:28 Exodist joined
lue jnthn: did you mean .nqp instead of .pm ? 22:30
22:30 spider-mario left 22:31 hash_table joined
jnthn lue: yes 22:33
22:35 pmurias joined
pmurias lue: the problem with targeting LLVM is that you would have to write loads of runtime stuff (basically a whole VM on top of it) 22:37
lue: targeting C and LLVM is basically the same level of abstraction 22:38
diakopter (except llvm can compile and run bitcode at runtime in the same process)
pmurias you could compile and dynamically load C 22:39
lue Well, my main goal with the port is to have Perl 6 compiled to native machine code. It's not as much of an issue now, but I still think it'll be (a) fun (learning experience).
(At least I didn't pick GCC. That never looked like a lot of fun) 22:40
diakopter lue: perhaps easier would be to think about a JIT for an interpreter
pmurias the javascript backend compiles Perl 6 to native code (through V8)
22:40 erkan joined, erkan left, erkan joined
lue is not aware of other nqp backends 22:42
pmurias lue: and there's a lot of things I could use help with that (a lot of them moderately easy like write extra tests for nqp)
github.com/pmurias/rakudo-js
22:44 zjmarlow left, zjmarlow joined
lue (I also have a small, dismal no-supporting-evidence hope that LLVM instead of PIR makes the CORE.setting step faster) 22:44
pmurias that depends how good the LLVM backend is 22:48
lue of course. Like I said: small, dismal, no-supporting-evidence :) 22:49
Hm. I'm thinking that instead of trying to learn two things at once, I should start by implementing a joke language in LLVM, and then moving to nqp. 22:51
masak (small steps)++ 22:52
lue feels a package manager metaphor floating around somewhere... 22:54
jnthn 'night
TimToady o/
22:55 xilo left, Kharec left 22:56 PacoAir left 22:57 snearch left
masak 'night, #perl6 23:03
lue good knight, masak o/
TimToady now where did I put my round table... 23:04
std: 1 !~~~ 2
p6eval std d38bbd0: OUTPUT«Potential difficulties:␤ ~~~ is not an infix operator (to suppress warning put space between infix ~~ and prefix ~) at /tmp/_gNDMDsqp_ line 1:␤------> 1 !~~⏏~ 2␤ok 00:00 42m␤»
23:06 zjmarlow left 23:08 zjmarlow joined 23:10 tokuhiro_ left, wamba left, tokuhiro_ joined 23:13 xilo joined 23:17 zjmarlow left 23:23 whiteknight joined 23:24 bapa left 23:40 stopbit left, skids joined