»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by masak on 12 May 2015.
00:06 spider-mario left 00:11 koo6 joined 00:20 hobbs left 00:27 hoelzro left 00:31 Peter_R left 00:33 aborazmeh joined, aborazmeh left, aborazmeh joined 00:51 hobbs joined 00:54 dayangkun joined 01:00 adu left 01:05 yqt left 01:18 aindilis` joined 01:20 dayangkun_ joined 01:22 kurahaupo joined, dayangkun left, DarthGandalf left, aindilis left, ShimmerFairy left 01:23 ShimmerFairy joined, DarthGandalf joined 01:33 adu joined 01:41 aborazmeh left 01:53 Sqirrel left 01:59 llfourn joined 02:04 llfourn left 02:14 llfourn joined 02:24 AlexDaniel left 02:27 davido_ left 02:28 davido_ joined 02:35 rmgk is now known as Guest9057, rmgk_ joined, Guest9057 left, rmgk_ is now known as rmgk, adu left 02:37 noganex joined 02:40 noganex_ left 02:43 ShimmerFairy left 02:48 hoelzro joined 02:49 SevenWolf left, SevenWolf joined 02:50 SevenWolf left 02:55 ShimmerFairy joined 03:05 sjn_phone left, sjn_phone joined
zostay m: my @h = Pair.new('a', 1); 03:07
camelia rakudo-moar c2a57e: OUTPUT«Too many positionals passed; expected 1 argument but got 3␤ in block <unit> at /tmp/mEMguar280:1␤␤»
zostay m: my @h = Pair.new(:key<a>, :value(1)); 03:08
camelia ( no output )
tadzik I wouldn't mind Pair.new to have a positional variant, frankly 03:09
03:11 [Sno] left
zostay m: enum Test <Zero One Two>; my @h = Zero => 0, One => 1, Two => 2; @h.perl.say; 03:11
camelia rakudo-moar c2a57e: OUTPUT«[:Zero(0), :One(1), :Two(2)]<>␤»
zostay m: enum Test <Zero One Two>; my @h = ::(Zero) => 0, ::(One) => 1, ::(Two) => 2; @h.perl.say; 03:12
camelia rakudo-moar c2a57e: OUTPUT«[Test::Zero => 0, Test::One => 1, Test::Two => 2]<>␤»
03:13 bin_005 joined 03:20 Sqirrel joined 03:21 cschwenz joined
atweiden m: enum Test <Zero One Two>; grammar T1 { token TOP { Zero } }; class TA { method TOP($/) { make ::(EVAL $/.Str); } }; my Str $content = "Zero"; my $actions = TA.new; if my $parsed = T1.parse($content, :$actions) { say $parsed.made.perl }; 03:25
camelia rakudo-moar c2a57e: OUTPUT«Test::Zero␤»
atweiden won't be needing this method i see: github.com/atweiden/nightscape/blo...pes.pm#L35 03:27
m: enum Test <Zero One Two>; grammar T1 { token TOP { Zero } }; class TA { method TOP($/) { make ::($/.Str); } }; my Str $content = "Zero"; my $actions = TA.new; if my $parsed = T1.parse($content, :$actions) { say $parsed.made.perl }; 03:28
camelia rakudo-moar c2a57e: OUTPUT«Test::Zero␤»
03:32 SevenWolf joined 03:33 koo6 left 03:48 bin_005 left 03:51 SevenWolf left 03:53 diegok left 03:56 diegok joined 04:01 diegok left 04:02 diegok joined, flussence left, flussence joined 04:07 davido_ left 04:18 kaare_ joined 04:33 lmc_1136 joined 04:34 lmc_1136 left 04:40 cschwenz left 04:41 amurf left 04:54 amurf joined 04:58 amurf left
masak morning, #perl6 05:10
05:13 meis joined, skids left
masak m: say sign(NaN) 05:18
camelia rakudo-moar c2a57e: OUTPUT«1␤»
masak ok, old Rakudo.
lizmat: I don't think the fix in d5d93adcc30 goes to the root of the problem.
the above would be NaN on a new Rakudo, but... 05:19
m: say NaN.sign
camelia rakudo-moar c2a57e: OUTPUT«1␤»
masak still a problem.
I think the fix should be applied in src/core/Real.pm, the method that sign() delegates to
also, 05:20
multi method sign(Real:U:) { Mu }
I don't see why this has a claim to being Mu. Int sounds more reasonable to me. (the type object for the type being returned) 05:21
or possibly Num, since NaN is also in the codomain.
moritz or maybe Real 05:34
which can be either Int or Num
masak aye.
Mu is problematic -- can't store it in a lexical, for example. 05:35
m: say (my $x).WHAT
camelia rakudo-moar c2a57e: OUTPUT«(Any)␤»
moritz m: my $x = Mu 05:36
camelia ( no output )
moritz it's passing to a function that's problematic
m: sub f($x) { }; f Real.sign
camelia rakudo-moar c2a57e: OUTPUT«Type check failed in binding $x; expected 'Any' but got 'Mu'␤ in sub f at /tmp/WZoCkleQYr:1␤ in block <unit> at /tmp/WZoCkleQYr:1␤␤»
masak oh, ok. 05:39
m: my Any $x = Mu 05:40
camelia rakudo-moar c2a57e: OUTPUT«Type check failed in assignment to '$x'; expected 'Any' but got 'Mu'␤ in block <unit> at /tmp/IWBnJ0JjXN:1␤␤»
masak oh, so Any isn't the implicit type constraint of a declared lexical, it's just the default value. got it.
05:41 jack_rabbit joined
moritz m: my $a = 0; my $b is default(++$a); say $b; $b = Nil; say $b 05:52
camelia rakudo-moar c2a57e: OUTPUT«1␤1␤»
05:52 diana_olhovik_ joined
dalek c: eca2f2d | moritz++ | lib/Language/variables.pod:
variables: Document "is default" trait
05:55
05:56 _mg_ joined 05:57 [Sno] joined, _mg_ left
masak m: my ($a, $b, $c) is default(42); say $b 05:58
camelia rakudo-moar c2a57e: OUTPUT«(Any)␤»
masak this feels like it's a rakudobug for either of two reasons.
(a) the default didn't apply, but it should 05:59
(b) you're not allowed to do that, but there's no error message
I kinda prefer (a), because it feels like it could be a useful thing to do sometimes -- to initialize several variables with the same default
but I confess to not knowing how tricky it'd be implementation-wise
one could argue that any trait in a declaration like that should just automatically distribute to all the declared variables 06:00
as if they'd been declared individually with `is default(42)`
06:03 jack_rabbit left 06:04 Akagi201 joined 06:13 RabidGravy joined, domidumont joined 06:17 oetiker left 06:18 domidumont left, oetiker joined
moritz +1 06:18
06:18 domidumont joined
El_Che w 06:19
masak submits rakudobug 06:20
06:20 FROGGS joined
masak m: my $b is default(42); say $b 06:21
camelia rakudo-moar c2a57e: OUTPUT«42␤»
FROGGS good morning 06:23
masak morning, FROGGS
06:40 atweiden left
moritz quick DB design straw poll: do you prefer natural keys or surrogate keys as primary key? 06:41
06:43 amurf joined
masak surrogate keys. 06:54
06:54 zakharyas joined
masak (because data changes, so the only thing that stays the same in all possible situations is something made-up.) 06:55
("but masak, things like countries or datetimes are stable enough to be used as natural keys!" -- "Czechoslovakia. leap seconds. all instances of adopting or getting rid of DST, ever." -- "oh.") 06:57
moritz: see also c2.com/cgi/wiki?AutoKeysVersusDomainKeys for lots of back-and-forth about this. 06:58
06:59 oetiker left
masak moritz: blog.plover.com/IT/GUID.html also supports my case. 07:00
07:00 oetiker joined 07:07 Ven joined 07:09 rba_ left 07:16 Ven_ joined, Ven left
Ven_ \o, #perl6 07:17
masak o/ 07:20
moritz masak: takk 07:24
masak: I also use surrogate keys 07:25
masak: one argument I don't see very often that referencing a table with a composite, natural key leads to a lot of data duplication 07:26
*is that
and makes the referencing tables brittle when the business rules for the referenced tables change 07:27
07:28 [Sno] left
moritz ah, the c2 page does mention it further down the page 07:29
07:31 [Sno] joined 07:33 amurf left
masak right. a surrogate key is comparable to an impartial "handle" with which you can refer to a particular table row. 07:33
moritz not to mention tooling support (I'm looking at you, Django) 07:34
masak Django automatically gives everything an id, no_ 07:40
?
07:41 espadrine left
dalek kudo/nom: 0a30724 | lizmat++ | src/core/ (2 files):
Fix sign NaN at the root, masak++
07:45
masak lizmat++
lizmat $ 6 'say NaN.sign; say sign NaN'
NaN
masak yay
lizmat .tell [Tux] $=finish now works 07:50
yoleaux lizmat: I'll pass your message to [Tux].
[Tux] lizmat++
yoleaux 07:50Z <lizmat> [Tux]: $=finish now works
lizmat m: my ($a, $b, $c) is argh(42) # masak, agree we need some kind of error here, right ? 07:52
camelia ( no output )
07:53 jaffa4 joined
jaffa4 hi all 07:53
I am testing the speed of n body implemented in perl 6 07:54
It is very slow. Could someone look at the code if there is a mistake in it?
07:54 domidumont left
masak jaffa4: sure thing! maybe provide it as a gist or something? 07:57
07:58 domidumont joined
jaffa4 gist? 07:58
masak lizmat: "need some kind of error" because there's no `argh` trait?
jaffa4: gist.github.com/
lizmat yes
masak lizmat: agreed.
m: my $a is argh(42) 07:59
camelia rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/fPt9WzHilk␤Can't use unknown trait 'is argh' in a variable declaration.␤at /tmp/fPt9WzHilk:1␤------> 3my $a is argh(42)7⏏5<EOL>␤ expecting any of:␤ TypeObject␤ default␤ …»
masak lizmat: like that, basic'ly.
lizmat yup
but apparently it's a parsing issue, as the it never winds up in a trait mod, not if in an Any:D trait mod
masak in general, I'd expect `my ($a, $b, $c) is x($y);` to work exactly like `my $a is x($y); my $b is x($y); my $c is x($y);` -- no matter what x and $y are. 08:00
lizmat yeah... but like I said, looks like a parsing / action issue atm
jaffa4 gist.github.com/jaffa4/27bc61e573f086feafed
FROGGS lizmat: action issue
lizmat FROGGS o/ 08:01
jaffa4 perl6-m.bat nbodies.p6 50000000
lizmat FROGGS: any idea where ?
FROGGS lizmat: I'm looking for the right spot currently
masak jaffa4: you have data duplication between $NBODIES and @bodies. that's not a reason for your slowdown, but it's kinda weird in Perl 6. 08:02
jaffa4: maybe because you converted from an ancient language, like FORTRAN or C?
(where one needs to pass on the length of an array along with the array)
FROGGS lizmat: are you sad if I attempt a fix? 08:03
lizmat no, please do :-)
jaffa4 masak: yes, no reason
masak did you mean "no good reason"? :P
lizmat I'm just trying to do small things until I have a few days of consecutive quality time
jaffa4 no reson for slowdown
yes, it is translation from c 08:04
masak well, you can simplify that bit if you want.
the rest looks fairly straightforward. no big mistakes that might be the cause of the slowdown.
jaffa4 it is very slow
dalek Heuristic branch merge: pushed 20 commits to rakudo/newio by lizmat 08:05
jaffa4 that is the state of Moar jit then
masak could be that this is the kind of thing that's amenable to vector calculation, or parallel calculations...
FROGGS $ perl6-m -e 'my ($a, $b, $c) is argh(42)'
===SORRY!=== Error while compiling -e
Can't use unknown trait 'is argh' in a variable declaration.
$ perl6-m -e 'my ($a, $b, $c) is default(42); say "$a $b $c"'
42 42 42
masak \o/ 08:06
FROGGS masak: wait for the fix :D
dalek Heuristic branch merge: pushed 31 commits to roast/newio by lizmat 08:07
08:07 Ven_ left
dalek kudo/nom: 45068ba | FROGGS++ | src/Perl6/Actions.nqp:
handly traits when declaring vars in a list
08:07
lizmat wow!
FROGGS++
masak FROGGS++ 08:08
FROGGS I love single line patches :o)
lizmat although not a single line patch, I loved the low number of patches needed to get $=finish to work 08:09
FROGGS aye 08:10
that proves a good design IMO
lizmat yup
FROGGS and that is one thing that makes hacking on perl6 fun
lizmat agree 08:11
FROGGS and I am very proud that I was able to apply an almost equally good design to an application at work
I would not have been able to do that without what I have learned here 08:12
moritz same here
FROGGS I mean, I never studied CS or anything else...
08:13 darutoko joined 08:19 rba_ joined 08:23 _mg_ joined
dalek kudo/nom: ad21e90 | lizmat++ | src/Perl6/World.nqp:
Stub "use internals" for internal helper subs
08:27
lizmat afk for a few hours& 08:29
08:31 domidumont left, domidumont joined, espadrine joined
DrForr ===SORRY!=== 08:35
Could not find ANTLR4::Actions::Perl6 in any of: file#lib:../json/lib
Doesn't seem that PERL6LIB allows setting multiple paths? 08:36
08:36 llfourn left 08:37 bin_005 joined
FROGGS DrForr: what delimiter do you use? 08:38
m: say $*DISTRO.cur-sep 08:39
camelia rakudo-moar c2a57e: OUTPUT«,␤»
08:40 _mg_ left 08:42 Ulti left
DrForr Well, I was using the (reasonably traditional) ':'. 08:42
08:42 Ulti joined 08:45 jaffa4 left
DrForr PERL6LIB=lib:../json/lib bin/antlr2perl6 foo.g4 # Here's the CLI. 08:46
I can invoke it as perl6 -Ilib -I../json/lib bin/antlr2perl6 # of course, but it'd be nice to be able to just run the app. 08:48
08:52 andreoss joined
RabidGravy m: IO::Socket::INET.new(host => "127.0.0.1:80") 08:55
camelia rakudo-moar c2a57e: OUTPUT«IO::Socket::INET is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting:1␤ in method new at src/RESTRICTED.setting:32␤ in block <unit> at /tmp/50mde9ZMy8:1␤␤»
RabidGravy boo
08:55 larion joined
RabidGravy anyway, just going to send a PR to fix "Type check failed in assignment to '$!port'; expected 'Int' but got 'Str' 08:56
in block <unit> at -e:1" when you do that
FROGGS RabidGravy++
08:57 cschwenz joined, cschwenz left 09:00 chenryn joined 09:02 telex left
jnthn morning, #perl6 09:03
09:04 telex joined
arnsholt FROGGS: If it's any consolation, good development methodology and architecture is not always a very large part of CS curricula 09:05
Also, it feels to me like they're very much practical skills. It's hard to see the wisdom of some things before you've felt the pain of doing it wrong 09:06
FROGGS arnsholt: yes, and I do not regret getting my hands dirty with about age 16 09:07
I had enough of schools and wanted to do something "sensible" 09:08
but sometimes I lack knowledge, and it feels sometimes hard to learn (or even just understand) concept that were teached in CS classes 09:09
taught*
arnsholt Yeah, it's a hard balance to strike
FROGGS morning jnthn
arnsholt I sometimes have the inverse feeling. I have lots and lots of theory, but it's often hard to see where it's relevant (or how to apply it) 09:10
RabidGravy github.com/rakudo/rakudo/pull/435 if anyone feels that specifying host:port is sufficiently useful to need to work ;-)
dalek kudo/nom: b9ab2c2 | RabidGravy++ | src/core/IO/Socket/INET.pm:
Make port an Int if extracted from host:port in host
kudo/nom: fbd86b4 | FROGGS++ | src/core/IO/Socket/INET.pm:
Merge pull request #435 from jonathanstowe/nom

Make port an Int if extracted from host:port in host
RabidGravy :)
FROGGS jnthn: so you are living in Praha now, right? 09:11
09:11 bin_005 left, bin_005 joined 09:12 gagalicious left
FROGGS jnthn: because it is quite possible that I'll be there around august for a week, with wife and kids 09:13
masak waves... from A TRAIN o
FROGGS masak: *g* 09:14
o/
fffrrroomm aa ttrn 09:15
09:15 sjn_phone left
FROGGS ohh, that wasnt even right I think 09:15
masak FROGGS: I'm in the same boat as you are wrt uni education. I took a lot of bioinformatics, but ended up wishing I could've studied a lot more of the "informatics" part.
jnthn FROGGS: Yes, right. :) 09:16
FROGGS: I'll be around in August when I'm not at YAPC::Asia and Swiss Perl workshop :)
FROGGS jnthn: awesome :o)
09:17 amurf joined
masak oh, and... I have a Perl 6 day today! 09:17
my goal is to blog, but I won't say what about ;)
jnthn Macros!
FROGGS masak: I became an electronics engineer after school (with 16), and quite enjoyed it 09:18
I always wanted to fix things I guess
jnthn: now you spoiled it!
El_Che jnthn: happy marrying etc!
09:20 zeleiadi joined
masak jnthn: nope :) 09:21
(though it's a decent guess)
09:22 amurf left
jnthn El_Che: Thanks :) 09:22
09:22 Ven joined
masak FROGGS: is "with 16" (intead of "at 16") a Germanism? I'm intrigued. 09:22
09:22 larion left
FROGGS masak: ohh, indeed 09:23
masak "mit sechzehn [Jahre]"? 09:26
FROGGS mit sechzehn Jahren
masak ah, yes. 09:27
but still, in German you *are* your age ("ich bin") instead of *having* your age ("ich habe"), right?
FROGGS correct
nwc10 masak: is this train moving in an appropriate direction? 09:28
masak nwc10: well, it is moving away from you... :P 09:34
(north)
masak .oO( "masak, this kind of senseless meanness is not becoming of #perl6!" ) 09:35
nwc10 you're running away from the heat? 09:38
masak I'm going up to my old university town (Uppsala) to be a part of the doctoral defense of a good friend. 09:39
basically, I started at Edument; he stuck around and did a PhD.
09:40 Sqirrel left, domidumont left
nwc10 if anything, it seems to be warmer there: www.bbc.co.uk/weather/2666199 www.bbc.co.uk/weather/2692969 09:40
09:41 domidumont joined 09:47 brrt joined
_itz can anyone recommend a good LISP intro and system for a beginner to play with? 09:47
brrt .tell lizmat that i now know why we haven't implemented isatty yet :-P
yoleaux brrt: I'll pass your message to lizmat.
brrt _itz: why not SICP
has a book, video lectures on the internets 09:48
helped me a lot
masak +1 for SICP
brrt ocw.mit.edu/courses/electrical-engi...-lectures/ <- this taught me a lot
_itz thanks I'll take a look
masak this version is very nicely formatted: sicpebook.wordpress.com/ebook/ 09:49
09:52 mr-foobar left 09:53 larion joined 09:54 jab joined
jab Where can I find the syntax for the enum statement? 09:55
DrForr s/// seems to throw an excption when run on class 'Any' rather than silently do nothing. I assume this is by design? 09:56
jab it is 09:57
masak exception is what I would expect, yes.
jab: described in S12, at least.
S12:Enumerations 09:58
synbot6 Link: design.perl6.org/S12.html#Enumerations
jab thanks
masak dunno if docs.perl6.org has something. if not, it probably should. 09:59
cursory search yields nothing.
09:59 dayangkun_ left
jab Yeah it's hard to find enum info 09:59
masak files issue
09:59 bin_005 left 10:00 bin_005_i joined
_itz rosettacode.org/wiki/Enumerations#Perl_6 10:00
masak github.com/perl6/doc/issues/87 10:01
DrForr While I can guess why that's now disallowed it means 'if $content' needs to be added... 10:02
Ven never read SICP 10:03
I should someday.
10:03 bin_005_i_q joined 10:04 bin_005_i left
jab Is there anything perl6 implementations that use JVM? 10:06
10:08 zeleiadi left
DrForr Yep, it's even mentioned on the rakudo homepage. 10:09
10:09 rindolf joined
brrt the rakudo compiler has a JVM backend 10:10
jab Can you combine perl and java code?
brrt i'm not terribly sure how that works, but i believe there has been some work on java/rakudo interop 10:12
10:13 mr-foobar joined 10:14 llfourn joined 10:24 llfourn_ joined, Akagi201 left 10:26 llfourn left
timotimo o/ 10:26
oh, jaffa4 isn't around any more
lizmat brrt: do tell :-) 10:27
yoleaux 09:47Z <brrt> lizmat: that i now know why we haven't implemented isatty yet :-P
timotimo .tell jaffa4 i found it a bit strange that you were using hashes for the bodies in your nbodies translation 10:28
yoleaux timotimo: I'll pass your message to jaffa4.
brrt long story short: we use libuv. libuv exposes two conflicting notions of the idea 'file stream'. One is the simple synchronous uv_file (always an int, always a file descriptor) and one is the uv_handle (a multiplexed magic wrapper for sockets, pipes, file streams, ttys, etc)
to determine if something is a tty, one uses the standard posix isatty() call on a posix file handle
uv_file behaves in all respects like a posix file handle 10:29
timotimo well, uv has this magical "guess handle type" function
we even use that in one spot to get the right type to build the stdin stream with
brrt uv_handle can resolve, if desired, to a posix file handle (now called a uv_os_fd_t), *if* you are on a unix system
10:30 Ven left
brrt on windows uv_handle resolves to a HANDLE, which is defined as an opaque void pointer, which may - depending on context - actually be an integer or may actually be a pointer, whatever the OS likes best 10:31
lizmat brrt: fwiw, isatty should only return true on the handle that has the default STDOUT / STDERR stream
brrt yes timotimo, and that function accepts an uv_file (i.e. an int)
why?
lizmat in all other cases it should return false
timotimo hm, oh.
lizmat in my "world" :-)
10:31 chenryn left
brrt if i do "/dev/tty1/".IO.open.t that should be 'yes' 10:31
lizmat what you want to know, is whether there is potentially a person that with which you can interact 10:32
timotimo and if i do echo "hello" | perl6 -e ... it should be 'no' for stdin and if i do perl6 -e '...' > foobar, it should be 'no' for stdout
brrt exactly :-)
timotimo in my world that's exactly what "isatty" is for ... also i think you can't use tty-like stuff on such handles
using ansi escapes for colors for example, or placing the cursor "on the screen" 10:33
brrt that restricts isatty to syncfile structures
which, i suppose, is fair enough 10:35
and that means we'll only support getting a file descriptor on syncfiles
which i also suppose is reasonable
timotimo the profiler gets very upset with the nbodies program 10:39
exit, THE_END and <unit> all share 33.33% of the time (18446744073709.51ms each) and everything else has almost 0ms 10:40
brrt lunch &
10:40 brrt left
lizmat timotimo: is the program exiting all the time ? 10:42
lizmat is confused
m: THE_END # :-)
camelia ( no output )
masak hm, we might want to hide that symbol from public use... 10:45
10:45 yqt joined 10:46 dakkar joined, bin_005_i_q left
timotimo lizmat: no, it only exits once, but it spends almost all of its time in that 10:47
lizmat masak: working on that
timotimo: are there many phasers ? 10:48
END phasers I mean
timotimo no
but it ends in "exit(0)"
so maybe that confuses it?
lizmat sub exit($status = 0) 10:49
so, hardly any confusion possible
timotimo no, i mean ... just exiting at all 10:50
10:52 yakudza joined
masak m: sub foo($x = exit) { say $x }; foo "OH HAI"; foo; foo "Elvis has left the building" 10:53
camelia rakudo-moar c2a57e: OUTPUT«OH HAI␤»
timotimo i managed to reduce the number of BOOTCode allocations from 8060610 to 3860605, but at the same time, i got the number of Num allocations up from 7100430 to 6300430
oh, wait
m: say 6300430 / 7100430
camelia rakudo-moar c2a57e: OUTPUT«0.8873308␤»
timotimo that's not more
10:54 jab left
timotimo and the number of GCs from 275 to 217 10:56
m: say "METAOP_ASSIGN takes { 583.85 / 1500000 }ms per call" 10:58
camelia rakudo-moar c2a57e: OUTPUT«METAOP_ASSIGN takes 0.000389233ms per call␤»
10:58 xinming left
dalek kudo/nom: 47f91b0 | lizmat++ | src/core/control.pm:
Use a more elegant once block for the end
10:58
timotimo well, that lets it end up in 4th place
10:59 xinming joined
timotimo oh! 10:59
second place is the anonymous sub that implements METAOP_ASSIGN and that's in second place with 12%
so actually METAOP_ASSIGN ends up taking about 16.5% of the program's time 11:00
FROGGS timotimo: what's the program ooc? 11:02
timotimo i was taking jaffa4's nbody.p6 and turning the hashes into classes
lizmat looking at the METAOP subs, I wonder if it would be worthwhile to factor out the $triangle business in a separate candidate 11:03
timotimo postcircumfix:<{ }> used to be in second place at 10.3% and AT_KEY in 4th place (just above METAOP_ASSIGN) with 7.9%
timotimo has the brilliant idea to use native num instead of Real 11:05
5.37user 0.02system 0:05.40elapsed 99%CPU (0avgtext+0avgdata 77424maxresident)k 11:07
oh!7.80user 0.02system 0:07.83elapsed 99%CPU (0avgtext+0avgdata 96824maxresident)k
(without "oh!")
that's the improvement i got so far
oh holy wow. with the "better" version with native nums, the amount of spesh'd vs jitted frames is *much* worse, and there's a whole lot more allocations and GCs, but it's still faster 11:10
what the ... find_method gets invoked? 11:12
FROGGS hmmm, sounds like you get quite some insights currently :o) 11:13
timotimo well, the not jitting is possibly because of NumAttrRef and related ops, maybe those aren't implemented yet; the jit log will tell me in a second.
BAIL: op <getattrsref_n> 11:15
should be easy enough.
FROGGS that's what I was hoping for :o)
11:17 chenryn joined 11:20 noganex left, adu joined 11:26 Rotwang joined
Rotwang hi 11:26
11:27 noganex joined 11:36 Ven joined 11:41 _mg_ joined
Ven can anyone confirm a bug I'm seeing in the REPL (os x)? 11:45
if I just `$ perl6` then up arrow + enter, it segfaults
lizmat $ perl6 11:46
> ^[[A
===SORRY!=== Error while compiling <unknown file>
Bogus statement
at <unknown file>:1
Ven weird, I recompiled everything an hour ago :|
Ven re-pulls
lizmat fwiw, I don't have readline or linenoise or anything like that installed 11:47
Ven ah, that might be it
seems like I was just missing a panda rebootstrap 11:51
dalek kudo/nom: d4dcca7 | lizmat++ | src/core/metaops.pm:
MMDize METAOP_REDUCE_xxx subs

The short-term win is about 4% in each call without :triangle. The longer term win is that we can now easily add optimized candidates for e.g. [+].
Ven lizmat: :triangle is [\+]? 11:54
lizmat I think so 11:55
Ven which makes me realize there's no syntax for named "matching". what I mean is that this works:
m: multi foo(True){1}; multi foo($){0}; say foo(True);
camelia rakudo-moar c2a57e: OUTPUT«1␤»
Ven but this doesn't:
m: multi foo(:val(True)){1}; multi foo(:val($)){0}; say foo(:val); 11:56
camelia rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/YUBqhZKO4e␤Malformed parameter␤at /tmp/YUBqhZKO4e:1␤------> 3multi foo(:val(7⏏5True)){1}; multi foo(:val($)){0}; say fo␤ expecting any of:␤ formal parameter␤»
lizmat Ven: yes, named params are only for breaking ties between candidates 11:57
FROGGS std: multi foo(:val(True)){1}; multi foo(:val($)){0}; say foo(:val);
camelia std 28329a7: OUTPUT«5===SORRY!5===␤Malformed parameter at /tmp/upMZicrion line 1:␤------> 3multi foo(:val(7⏏5True)){1}; multi foo(:val($)){0}; say fo␤ expecting any of:␤ named_param_term␤ new name to be defined␤ parameter␤ routine_def␤ signature␤Parse …»
FROGGS Ven: I like that syntax fwiw
Ven lizmat: I know it is
I'm just making a parallel between named and positional params :)
FROGGS: nice :)
FROGGS Ven: and it fits the concept of what we do with pairs usually 11:58
though one could argue that the value of that pair is not a matcher but the default value
Ven we have a syntax for default values already, though 12:00
grondilu m: say [+] rand xx 3 12:05
camelia rakudo-moar c2a57e: OUTPUT«1.54526622351538␤»
12:05 Ven left
grondilu locally I get a 'can not call infix:<+>' 12:05
grondilu pulls rakudo and recompiles 12:06
lizmat $ 6 'say [+] rand xx 3' 12:07
1.58108774004982
Looks like my MMDing of METAOPs is doing bad things on the JVM :-(
12:10 stanrifkin joined
lizmat dilemma: do I just revert, or do I re-instate the old code for the JVM and the new code for Moar ? 12:14
jnthn: ^^^ opinions ?
12:19 uncleyear joined, _mg_ left
FROGGS lizmat: bad things in what way? 12:20
lizmat massive spectest failure 12:21
timotimo anyway, with attrref_* and attrsref_* implemented, the number of jitted frames goes up to 76%
FROGGS timotimo: \o/ 12:22
timotimo is quite sidetracked at the moment, though
FROGGS cats again? :o)
timotimo nope 12:23
FROGGS has a cat on his back near his neck, though it is just printed on his shirt
timotimo :3
lizmat tries to get a better idea about the actual failures on the JVM 12:24
FROGGS lizmat: yeah, that sounds like a good thing to do 12:25
12:27 adu left
FROGGS and I am also think that we should turn the named $triangle into a positional 12:27
lizmat hmmm.... that's a good idea... :-)
FROGGS which happens at rakudo/src/Perl6/Actions.nqp:5836 12:28
lizmat $ perl6-j -e 'my @a; [+] @a' 12:29
java.lang.NullPointerException
in block <unit> at -e:1
FROGGS j: my @a; @a.shift 12:30
camelia rakudo-jvm c2a57e: OUTPUT«Unhandled exception: Cannot .shift from an empty Array␤ in throw (gen/jvm/CORE.setting:14593)␤ in sink (gen/jvm/CORE.setting:16528)␤ in MAIN (gen/jvm/main.nqp:41)␤ in <mainline> (gen/jvm/main.nqp:35)␤ in (gen/jvm/main.nqp)␤␤»
lizmat same here 12:31
FROGGS ahh, I have no idea what it is... and I cannot compile perl6-j right now
but hopefully --ll-exception points to something
lizmat FROGGS: no, it doesn't :-( 12:32
grondilu m: say [+] rand xx 1_000 12:34
camelia rakudo-moar c2a57e: OUTPUT«512.224868591308␤»
grondilu m: say [+] rand xx 19_000
camelia rakudo-moar c2a57e: OUTPUT«9514.29931266904␤»
grondilu well that's weird
lizmat grondilu: what is ? 12:35
grondilu I get 'can not call infix' if I try to sum one thousand numbers
12:35 uncleyear left, mr-foobar left, andreoss left
grondilu m: say [+] rand xx 3 # is fine locally 12:35
camelia rakudo-moar c2a57e: OUTPUT«1.43158160533389␤»
12:35 mr-fooba_ joined
grondilu m: say [+] rand xx 1_000 # is not 12:35
camelia rakudo-moar c2a57e: OUTPUT«507.256616612841␤»
12:35 uncleyear joined
grondilu This is perl6 version 2015.05-105-gd4dcca7 built on MoarVM version 2015.05-35-gc4c7ebd 12:36
lizmat hmmm... the triangle version is fine on the JVM
grondilu [+] rand xx $n works unless $n > 135 (wtf?) 12:37
grondilu tries this on his raspberry pi FYI 12:38
FROGGS ahh
moritz Perl 6: add up to 136 numbers in one statement!
FROGGS that probably explains it 12:39
lizmat grondilu: could you try with MVM_SPESH_DISABLE=1 ?
grondilu lizmat++ that make it work indeed
oh wait 12:40
lol
lizmat yeah, this looks similar to the SPESH issue that [Tux] found with repeated CATCHes in a loop
grondilu weirdly enough MVM_SPESH_DISABLE=0 makes it work as well!?
grondilu guesses as long as it's not empty, it's true 12:41
lizmat that would be another bug :-)
12:41 kurahaupo left
jnthn lizmat: Is the failure mode the control exception + continuation one? 12:42
lizmat yeah, I think so
jnthn Hmmm...
We should probably figure that one out
lizmat also 135 times or so
[Tux] probably can whip up the RT number just like that 12:43
12:43 smls joined
|Tux| RT#124191 12:43
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=124191
FROGGS lizmat: I'll have a perl6-j soon
jnthn lizmat: If you go with the two code-paths approach, please leave a note saying why, with the error in, so we can triage them.
lizmat will do
12:44 Akagi201 joined
grondilu line 352 of moar.c: 12:45
if (!spesh_disable || strlen(spesh_disable) == 0) {
though I get that parsing a "yes/no" string properly in C is a hassle 12:46
timotimo is that terrible? 12:47
12:47 LonelyGM joined
grondilu nah it probably does not matter much 12:47
12:51 LonelyGM left 12:54 amurf joined
FROGGS lizmat: I found the issue 12:56
lizmat FROGGS: do tell :-)
dalek kudo/nom: 8d2899e | FROGGS++ | src/core/metaops.pm:
bind returned closure to scalar to aid jvm

Otherwise it will blow up with an NPE...
12:57
lizmat aw yuk 12:58
would you mind if I made that conditional for the JVM ?
FROGGS no, go ahead
are you changing the :$triangle to positional or shall I? 12:59
lizmat I'll do the triangle as well
FROGGS lizmat++
lizmat thanks for pointing me in the direction
12:59 amurf left
FROGGS :o) 12:59
FROGGS goes back to $work
lizmat FROGGS++
13:03 uncleyear left
masak what's the idiomatic way to introspect a given attribute, again? I forget. 13:04
13:04 uncleyear joined
masak I see the method .^attributes -- do I have to loop over it to find my attribute? 13:04
13:04 LonelyGM joined
masak or is .^get_attribute_for_usage what I'm supposed to use? 13:05
lizmat .^attributes.first ?
jnthn masak: Yes, you have to grep it out, and then .get_value
masak I could've sworn we had a .^get_attribute...
oki
jnthn There's no especially idiomatic way 'cus it's usually a bad idea :P 13:06
And in the cases where it is a good idea you normally care about all of them. :)
('cus you're writing generic code)
masak :)
that's what I thought you were going to say :P
though I'll note for posterity that I only partially buy "we're making it difficult because we know what's best for you" as an argument... 13:07
jnthn
.oO( a little later... <masak> gah, it was a bad idea to introspect that attr... )
masak in many cases it's turned out that we *can't* predict all the legitimate needs of users.
I'm writing a blog post! :P
lizmat masak: it's not that we're making it difficult, it's that we're not making it easy :-)
masak nodnod
jnthn OK, I'll read the blog post and then see if I can see a better way :) 13:08
masak you do that
my use case was exactly "ok, we can't do hash lookup on objects like in Perl 5, but we can do this:"
dalek kudo/nom: fbe67fe | lizmat++ | src/core/metaops.pm:
Add binding METAOPs only for the JVM

To prevent an unbound closure causing an NPE on the JVM, FROGGS++
13:09
masak m: class C {}; say C.HOW.^methods
camelia rakudo-moar c2a57e: OUTPUT«Method 'gist' not found for invocant of class 'NQPRoutine'␤ in block <unit> at /tmp/I2Zy3pPfrh:1␤␤»
masak by the way, do we expect the above ever to work? 13:10
jnthn I can imagine making them work, yeah
masak in this case, it made me have to go and read source instead of staying inside the REPL
13:11 adu joined 13:15 LonelyGM left
masak m: class C { method foo is export { say "OH HAI, {self}" } }; import C; foo C.new 13:17
camelia rakudo-moar c2a57e: OUTPUT«OH HAI, C<140563536010464>␤»
masak oh wow, that still works :)
smls m: say "apples and oranges" ~~ /:s ^ (apples|oranges)+ % "and"/ 13:18
camelia rakudo-moar c2a57e: OUTPUT«「apples 」␤ 0 => 「apples」␤»
smls ^^ why does thos not match the full string?
masak is there a good reason we don't use `is export` more on methods in the core setting?
smls shouldn't sigspace allow space between the elements and separator of % ?
13:18 LonelyGM joined
FROGGS m: say "apples and oranges" ~~ /:s ^ (apples|oranges) +% "and"/ 13:19
camelia rakudo-moar c2a57e: OUTPUT«「apples 」␤ 0 => 「apples」␤»
lizmat masak: because is export doesn't work in the settings
like many attributes, if not all
masak huh. did not know that. thank you.
so it's a case of "if we could, we would"?
arnsholt IIRC the solution to <ws> around the separator is /:s<stuff>+ % [ ',' ]/
masak m: say "apples and oranges" ~~ /:s ^ (apples|oranges)+ % [ "and" ]/ 13:20
camelia rakudo-moar c2a57e: OUTPUT«「apples 」␤ 0 => 「apples」␤»
lizmat masak: I think so, yes
masak m: say "apples and oranges" ~~ /:s ^ (apples|oranges) + % [ "and" ]/
camelia rakudo-moar c2a57e: OUTPUT«「apples and oranges」␤ 0 => 「apples」␤ 0 => 「oranges」␤»
smls why is that?
masak arnsholt, FROGGS: seems you need both in this case.
FROGGS aye
masak my bet is that ' ' before '+' is needed for the ' ' before the 'and'.
and the ' ' before ']' for the space after.
lizmat: the answer I expected someone to offer was something related to inlineability. but maybe our JIT is already smart enough for that not to matter. 13:21
lizmat if it isn't yet, it will be :-) 13:22
arnsholt Oh, wait. Looks like I'm wrong
It's the spacing *after* each matching element that's the key. From S05: "When significant space is used under :sigspace, each matching element enables the immediately following whitespace to be considered significant. Space after the % does nothing. If you write:" 13:23
ms/ <element> + % ',' / 13:24
#1 #2 #3 #4 #5
it ignores whitespace #1 and #4, and rewrites the rest to:
/ [ <element> <.ws> ]+ % [ ',' <.ws> ] <.ws> /
#2 #5 #3
13:26 chenryn left, uncleyear left 13:27 skids joined 13:28 uncleyear joined
dalek kudo/nom: 7978f4a | lizmat++ | src/ (2 files):
Make METAOPs triangle a positional for better MMD

Suggested by FROGGS++
13:31
FROGGS ncie 13:33
nice*
13:36 yqt left
masak sometimes I think it's a pity that .can returns an array, and not just the first applicable method. 13:37
13:37 Akagi201 left
masak (because the first applicable method is what I'm interested in 90% of the time, so I do `[0]` a lot) 13:37
13:37 rba_ left 13:38 Ven joined
jnthn masak: Why aren't you using .^lookup or .^find_method ? 13:38
13:38 Akagi201 joined
masak good question. 13:38
I haven't heard of .^lookup before, what's the difference between that and .^find_method ? 13:39
jnthn .^lookup is "give me the thing that was actually declared"
.^find_method is "give me something to invoke that will handle the message"
masak oh, so .^find_method if I'm fine with under-the-hood magic happening?
jnthn In simple cases they overlap, but if you were using, say, Grammar::Tracer or OO::Monitor or so on, .^find_method gives you back something that, if invoked, will do the logging/locking as needed 13:40
masak nodnod
jnthn While .^lookup will give you the Method object, which is useful if you want to look at its Pod.
masak right. they diverge in cases where we are living under an interesting metaclass.
jnthn
.oO( We all live in a yellow metaclass... )
13:41
13:41 Akagi201 left, Ven left
lizmat afk for a bit& 13:45
13:54 Ven joined 13:56 uncleyear left, uncleyear joined
dalek ecs/newio: f0dc104 | (Stéphane Payrard)++ | S99-glossary.pod:
added NPE and rakudobrew spotted on #perl6. fixed a link
13:56
masak cognominal: ...wrong branch? 13:57
13:58 rindolf left, yqt joined
|Tux| gist.github.com/Tux/3e10b75ae0752654bb28 - Inline::Perl5 compilation warning 14:01
dalek ecs: c9f4f63 | (Stéphane Payrard)++ | S99-glossary.pod:
added NPE and rakudobrew spotted on #perl6. fixed a link
14:01 colomon left
masak detrain & 14:02
14:02 cognominal joined
cognominal Thx masak. I need to learn how to revert on a public repo. 14:04
Or is this necessary because it will eventually get merged? 14:05
jnthn finally has time and energy for some Perl 6 work again :) 14:07
...and a cup of tea to go with it
14:07 rindolf joined
hoelzro morning #perl6 14:11
jnthn o/ hoelzro 14:12
|Tux| TIMEZONE's-- 14:13
sjn \o
jnthn: have you moved to Prague yet? :) 14:14
jnthn sjn: Move in progress. :) 14:15
sjn ah, cool
14:15 sue_ left
jnthn sjn: I'm in Prague, some of my stuff is in Prague, the rest of it will be by the time the month's out :) 14:15
sjn will be in Vienna for 6 weeks, starting the end of this month
jnthn Cool :) 14:16
sjn need to familiarize myself with the beer options in the area :D
14:16 LonelyGM left
sjn (where "the area" really might include anything within a 4-hour train trip :D) 14:17
jnthn Prague is just over 4 hours
BUT if you get the right train, then it has draught beer on board! :P
|Tux| lizmat, between Tue and now, csv.pl started failing with "Cannot invoke null object in method parse at csv.pl:69" 14:18
which makes no sense at all
FWIW csv.pl is Jihn's state machine that never changed
John
sjn jnthn: oh, cool! 14:19
14:19 Ven left 14:20 mohij joined
dalek ecs: 16eb4ec | (Stéphane Payrard)++ | S17-concurrency.pod:
S17: sub start is deprecated
14:23
14:27 llfourn_ left
dalek ecs: a1a7745 | jnthn++ | S29-functions.pod:
s/evalfile/EVALFILE/, for consistency with EVAL.
14:28
14:29 Ven joined
FROGGS jnthn: do we need EVALFILE at all? 14:30
dalek ast: 367f23b | jnthn++ | S29-context/evalfile.t:
s/evalfile/EVALFILE/, add lexical visibility test.
14:31
14:31 colomon joined
jnthn FROGGS: It's a small convenience I gues. 14:32
*guess
dalek kudo/nom: 9be4715 | jnthn++ | src/ (2 files):
Implement EVALFILE.
jnthn And was an easy RT for me :)
FROGGS :P 14:33
jnthn It's long been in the design docs, and it's not a lot of work to do :)
Anyway, one RT down :) 14:34
14:34 llfourn joined 14:35 brrt joined
FROGGS jnthn: I guess there is one for 'goto' too :P 14:35
14:35 mohij left
jnthn heh 14:36
14:36 rindolf left
jnthn picks a "slightly tricker" one, having done an "easy" one :) 14:37
cognominal it seems that Promise implementation is not conform to the spec. It seems possible to keep a promise even if someone ele has taken a vow.
jnthn cognominal: Example?
FROGGS sorry... I just listen to sherlock holmes stories too much, and he's always talking about excercizing his brain
jnthn is pretty sure that was working...
jnthn picks RT #125260 as his next victim 14:38
cognominal jnthn, it seems I am wrong 14:40
m: my $p = Promise.in(10); $p.keep 14:41
camelia rakudo-moar c2a57e: OUTPUT«Access denied to keep/break this Promise; already vowed␤ in block <unit> at /tmp/92o58Lq_Mp:1␤␤»
cognominal so I misread the code :( 14:42
14:44 yqt left, amurf joined 14:45 g4 left
cognominal I should double check before crying wolf :( 14:45
jnthn Well, there's no use crying over spilt wolves... 14:48
14:49 amurf left 14:52 uncleyear left, uncleyear joined
DrForr m: say "\x[effff]" 14:56
camelia rakudo-moar c2a57e: OUTPUT«Error encoding UTF-8 string: could not encode codepoint 983039␤ in block <unit> at /tmp/y3sYzfRQtM:1␤␤»
DrForr \x[effff] is a valid codepoint, at least it's inside the 0..0x10ffff range. 14:57
jnthn m: say uniname 0xeffff 14:58
camelia rakudo-moar c2a57e: OUTPUT«<unassigned>␤»
DrForr Unassigned ne unencodable, no?
15:00 sue_ joined
dalek kudo/nom: 22f6232 | jnthn++ | src/Perl6/Actions.nqp:
Enforce sigil types on placeholder params.

Fixes RT #125260.
15:00
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=125260
jnthn DrForr: Need to check the Unicode spec; was just trying to figure out what might be going on.
DrForr www.unicode.org/versions/Unicode7.0.0/ch01.pdf claims 0..0x10ffff is the codepoint range.
It is v7, but I think the upper end has been 10ffff since at least v5. 15:01
dalek ast: 09a6122 | jnthn++ | S06-signature/mixed-placeholders.t:
Tests for RT #125260.
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=125260
DrForr 6.0 as well, checking 5.0. 15:02
colomon m: say 0xeffff 15:03
camelia rakudo-moar c2a57e: OUTPUT«983039␤»
DrForr All the way back to v4.0, I need to read v3.0 closer to determine.
v3.0 introduces surrogate pairs covering codepoints outside the BMP. 15:05
jnthn lizmat: I disagree with d841d4e14f0, and RT #125257 is not a bug. You can provide any number of things to await, if we make zero an error it's just going to make the await do for @things { start { ... } } pattern have a really awkward degenerate case. 15:06
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=125257
DrForr 4.0 looks like the earliest spec stating that codepoints range from 0 to 0x10ffff, on page 6. Though that's just the introduction. 15:07
lizmat m: await my @a # not a problem
camelia ( no output )
lizmat m: await # a problem, because developer misconception 15:08
camelia ( no output )
15:08 meis left
jnthn DrForr: Well, it's not about codepoint range we want to be looking, it's the utf-8 encoding 15:08
15:08 diana_olhovik_ left
lizmat jnthn: or do you think a bare "await" can make sense at any time ??? 15:08
DrForr A point.
lizmat $ 6 'await'
Must specify a Promise or Channel to await on
jnthn lizmat: Ah, I see... 15:09
lizmat $ 6 'await my @a'
no problem
jnthn lizmat: OK, I think I'm happy enough with it done that way
lizmat it's a bit like the bare say
m: say
camelia rakudo-moar c2a57e: OUTPUT«5===SORRY!5===␤Argument to "say" seems to be malformed␤at /tmp/SyC14Z5Zdx:1␤------> 3say7⏏5<EOL>␤Other potential difficulties:␤ Unsupported use of bare "say"; in Perl 6 please use .say if you meant $_, or use an explicit invocant or …»
lizmat hmmm... that looks like a double error 15:10
FROGGS double?
15:10 bbkr left
colomon @@EFF80UnassignedEFFFF 15:10
@Noncharacters
@+These codes are intended for process-internal uses.
EFFFE<not a character>
EFFFF<not a character>
15:11 bbkr joined
colomon m: say "\x[efffa]” 15:11
camelia rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/u8fdOdbphe␤Unable to parse expression in double quotes; couldn't find final '"' ␤at /tmp/u8fdOdbphe:1␤------> 3say "\x[efffa]”7⏏5<EOL>␤ expecting any of:␤ argument list␤ dou…»
colomon m: say “\x[efffa]”
camelia rakudo-moar c2a57e: OUTPUT«󯿺␤»
lizmat FROGGS: malformed and unsupported use
colomon efffe and effff appear to be special 15:12
FROGGS lizmat: the unsupported use is correct
colomon www.unicode.org/Public/UCD/latest/u...esList.txt
lizmat yeah, wonder where the other comes from
FROGGS m: say ;
camelia rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/hx5Z_PofdC␤Unsupported use of bare "say"; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument␤at /tmp/hx5Z_PofdC:1␤------> 3say7⏏5 ;␤»
FROGGS parsing issue
with eof 15:13
lizmat ah, ok
DrForr On closer reading I think the current interpretation *might* be consistent with www.unicode.org/versions/Unicode4.0.0/ch03.pdf but I'll have to read it closer later. 15:18
15:18 uncleyear left
jnthn is looking at v7 of the standard at the moment 15:19
15:19 uncleyear joined, uncleyear left, uncleyear joined
DrForr I wasn't sure which version perl6 purports to support. 15:19
moritz The Best of course :-) 15:20
lizmat jnthn: I just realized that the await change prompted me to want to have a (+@a) signature
similar to a normal slurpy (*@a), but would need at least 1 value 15:21
moritz but that's not the right semantics for await
lizmat that could make the bare await (and similar cases) a compile time error, rather than runtime (as it is now)
moritz because 0 elements at runtime are fine
lizmat moritz: ??
jnthn @a where +@a # how to spell it now :)
brrt few things worse than 'we support unicode! lol but not *your* unicode because we support only UCS-2'
moritz jnthn: or even @a where @a 15:22
jnthn Or that, yes :)
lizmat jnthn: yeah, but that would make MMD a lot slower, no?
jnthn And as moritz++ points out, it would not help here
DrForr brrt: Careful, I pushed for UTF-9 support at one time :)
lizmat this would be about values specified, no?
jnthn lizmat: Inventing syntax sugar doesn't make it faster :P
brrt that has to be a joke somehow
lizmat I mean, an empty array would still be 1 parameter
jnthn lizmat: The fast paths are all about *type* distinctions
DrForr ch3 pg 19-20 seems to be terribly relevant. 15:23
brrt: it was an AFJ RFC, but it is implementable IIRC.
If you have PDP with 9-bit-wide registers, that is :)
brrt you can emulate any number of bits in a stream
lizmat jnthn moritz : what I suggest is *not* the same as (*@a where @a) 15:24
but rather to be applied to the number of elements *before* flattening 15:25
need to be afk, will check again later&
arnsholt lizmat: There's also ($required, *@rest)
DrForr Getting ready 4YAPC, cya there.
15:26 FROGGS left
moritz lizmat: ok, that's not how I understood the proposal 15:26
arnsholt Although that would require a bit of gymnastics inside the function if you want all the args in a single list
moritz man, 'hg grep' really is slow 15:28
15:29 mr-fooba_ left 15:30 mr-foobar joined
raydiak sub foo (+@all) {} instead of sub foo ($first, *@rest) { my @all = $first, @rest; } would be nice and something I've wanted in the past as well 15:31
15:34 bbkr__ joined
jnthn DrForr: www.unicode.org/faq/private_use.html#nonchar8 gives an answer 15:36
15:36 bbkr left
jnthn Also www.unicode.org/versions/corrigendum9.html 15:37
So, I'll fix things :) 15:38
raydiak m: sub foo (*@all ($, *@)) { @all.perl.say }; foo <a b c>; foo 42; foo; # although you can get the same effect as +@ with a subsig 15:39
camelia rakudo-moar c2a57e: OUTPUT«["a", "b", "c"]<>␤[42]<>␤Too few positionals passed; expected 1 to 0 arguments but got 0 in sub-signature of parameter @all␤ in sub foo at /tmp/fn2vvAK50J:1␤ in block <unit> at /tmp/fn2vvAK50J:1␤␤»
raydiak that's an interesting error message
m: sub foo (*@all ($, |)) { @all.perl.say }; foo 15:40
camelia rakudo-moar c2a57e: OUTPUT«Too few positionals passed; expected 2 arguments but got 0 in sub-signature of parameter @all␤ in sub foo at /tmp/Mkzwf2GkMZ:1␤ in block <unit> at /tmp/Mkzwf2GkMZ:1␤␤»
raydiak and...differently wrong :)
arnsholt raydiak: Oh, good idea to use destructuring on the *@ list!
raydiak thanks :) 15:41
15:42 zakharyas left 15:43 uncleyear left 15:44 uncleyear joined
moritz time ack 'class ImportError' in the cpython repo takes 32s on my Very Slow desktop machine, under load 15:45
hg grep for the same string: still not finished after 8min
wtf?
[ptc] moritz: hg is written in python? ;-) 15:46
[ptc] shames himself for dissing another language
moritz ah, reading the man page, it seems to search older revisions too 15:47
15:47 colomon left
arnsholt Heh. That'll do it, yeah =) 15:47
dalek p: 97c86af | jnthn++ | tools/build/MOAR_REVISION:
Bump MOAR_REVISION for UTF-8 non-char fix.
15:49
15:49 larion left
dalek kudo/nom: 6c1a478 | jnthn++ | tools/build/NQP_REVISION:
Get a MoarVM that can UTF-8 encode non-chars.
15:49
15:50 mr-foobar left
dalek ast: 8779aa0 | jnthn++ | S32-str/encode.t:
Tests for UTF-8 encoding of non-chars.
15:50
15:50 rindolf joined
jnthn DrForr: All fixed up now; thanks :) 15:50
15:51 brrt left 15:52 mr-foobar joined
dalek ast: 76e600f | jnthn++ | S32-str/encode.t:
Add an RT ticket number to test.
15:54
_itz [ptc]: I'm hoping the Text::VimColour should pass more reliably now and was wondering about trying it on perl6-examples? 15:56
oh you report a segfault 15:57
|Tux| moritz, I think the DBIsh is not a panda bug, but is rakudo/moar 16:00
moritz |Tux|: possible; I know too little about the state of panda and rakudo these days :( 16:01
dalek rl6-roast-data: a2dfa5b | coke++ | / (9 files):
today (automated commit)
16:01 vendethiel left
|Tux| that null object is also seen inside a script that worked yesterday but not today 16:01
but if it shows in panda, all the better: that'll trigger many more eyes than a single scripter 16:02
|Tux| => $HOME
[Coke] opens what might be a dupe Inline::Perl5 ticket - doesn't work on a fresh build on OS X. 16:07
16:07 Ven left
jnthn dinner & 16:09
16:14 domidumont left, uncleyea1 joined 16:17 uncleyear left 16:18 pierrot left 16:23 domidumont joined 16:24 Ven joined 16:27 colomon joined 16:34 kaare__ joined, Ven left 16:36 pierrot joined, telex left, colomon left 16:38 kaare_ left, telex joined 16:39 uncleyea1 left 16:40 uncleyear joined, kaare__ left 16:42 brrt joined
TimToady I see that camelia is still not updating due to DNS failure; do we need to increase the quasi-bus-number for that server somehow? 16:44
yoleaux 3 Jun 2015 22:04Z <lizmat> TimToady: could you check github.com/rakudo/rakudo/commit/2f1960c7e9 for sanity ?
16:51 spider-mario joined
japhb moritz said that it was outside his control ... whose control is it *inside*? 16:52
TimToady he hilit nine at the time, but I don't know if there's anyone else with access
16:53 molaf joined 16:58 brrt left, HuStmpHrrr joined
HuStmpHrrr Hi guys, and tutorial or doc for pattern matching in perl6? 16:59
very few docs mentioned about this
17:00 uncleyear left, uncleyear joined 17:01 espadrine left
jnthn doc.perl6.org/language/regexes 17:01
HuStmpHrrr not regex matching
17:01 Ven joined
HuStmpHrrr functional pattern matching 17:01
multi sub 17:02
17:02 koo6 joined
HuStmpHrrr ml type of matching 17:02
just like this post: perlgeek.de/blog-en/perl-6/2013-pat...ching.html
17:03 liztormato joined
jnthn Ah... 17:03
Only a short bit in doc.perl6.org/type/Signature#Destru...Parameters
Maybe somebody else knows some more references
liztormato arnsholt: the point was to make 'await' a compile time error
HuStmpHrrr oh
i found doc.perl6.org has lots of dead links and wrong links 17:04
liztormato arnsholt: or more precisely: the optimizer not seeing a no-parameter candidate
arnsholt: that lists the alternatives 17:05
arnsholt: and having ($first, *@rest) listed, would be confusing 17:06
skids HuStmpHrrr: doc.perl6.org is actively maintained so we'd be interested to know here there are dead links.
HuStmpHrrr skids: alot when i went through the language tab and some in operator. let me find some 17:07
skids: doc.perl6.org/routine.html postcircumfix .() link is wrong 17:08
skids: the same as .{} .[], and a lot others 17:09
skids Yeah looks like something has gone wrong there.
HuStmpHrrr skids: btw, i think tutorials in language tab are in a bad order too. 17:10
17:11 andreoss joined, larion joined
HuStmpHrrr skids: another example: doc.perl6.org/language/classtut all links here are pointing to doc.perl6.org/routine/ which should not be 17:12
_sri_ perl 6 ruins perl 5 stats on github :( github.com/github/linguist/issues/2149 17:13
skids HuStmpHrrr: I cannot replicate that last one. 17:14
17:14 koo6 left
HuStmpHrrr skids: not exactly all, but in Constructors section, "bless" and "Mu" are pointing to doc.perl6.org/routine/ 17:15
and in Inheritance section, the github link is pointing to the same place too 17:16
skids HuStmpHrrr: thanks
HuStmpHrrr skids: another one doc.perl6.org/language/concurrency Promises section, the link to X::Promise::CauseOnlyValidOnBroken is broken 17:18
TimToady HuStmpHrrr: re pattern matching, see also rosettacode.org/wiki/Pattern_matching#Perl_6
HuStmpHrrr TimToday: thanks. but i am looking for pattern matching in a more ML sense, or paramter destruction. 17:20
TimToady HuStmpHrrr: did you look at it? that's not about regex 17:23
HuStmpHrrr TimToady: oh, sorry, yeah, i looked. that's still not too complete and descriptive. for example, how to pattern match a custom class 17:24
japhb HuStmpHrrr: did you look at the one jnthn linked? 17:25
pyrimidine guessing that smoke.perl6.org isn't updating? Last report is from May 29.
17:26 domidumont left
HuStmpHrrr japhb: the one about regex? yes, it's about regex. 17:26
japhb HuStmpHrrr: No, this one: doc.perl6.org/type/Signature#Destru...Parameters
17:26 beastd joined
HuStmpHrrr oh, yes, that one too. but still not too descriptive on how to customize. 17:27
japhb True. There's always the source. :-)
HuStmpHrrr i am hoping something like ML exists in perl6 too. that make things much powerful
TimToady you can destructure anything that does the Position or Associative role, I think 17:28
japhb HuStmpHrrr: TimToady++ meant Positional there, not Position.
17:28 uncleyear left
HuStmpHrrr if that's the only case, it would be too bad 17:29
17:29 khisanth_ is now known as Khisanth, uncleyear joined
skids Wasn't there also obj->method destructuring. 17:29
?
HuStmpHrrr is there? 17:30
japhb HuStmpHrrr: Anything that does the Positional or Associative *role*, not just those things, and destructuring any generic object based on its (public, IIRC) attributes. What else are you looking for
?
HuStmpHrrr yeah, just generally look for what features perl6 has 17:31
pattern matching is an important part for me 17:32
17:32 rindolf left
HuStmpHrrr and is there some feature like with statement in python in perl6? 17:32
japhb HuStmpHrrr: I say without any attempt at obfuscation: Perl 6 has so many features (some borrowed/adapted from other languages, some home grown), that you really need to tell us what your use cases are, so we can explain which features work for that. 17:33
m: given "foo" { .say }
camelia rakudo-moar c2a57e: OUTPUT«foo␤»
japhb HuStmpHrrr: Like that ^^ ?
HuStmpHrrr i am just trying to learn it in a general sense, with comparison to other languages
17:34 koo6 joined
HuStmpHrrr yep, that's one type of pattern matching 17:34
japhb HuStmpHrrr: Yes, there is very generic given/when.
17:35 rindolf joined
japhb m: given 12 { when Str { say "String!" }; when Num { say "Floating point!" }; when * > 40 { say "Too big!" }; when 12 { say "Bingo!" } } 17:35
camelia rakudo-moar c2a57e: OUTPUT«Bingo!␤»
HuStmpHrrr let's say class Abc { has $.xyz } can i apply some form of destruction to get that xyz out? 17:36
moritz HuStmpHrrr: yes 17:37
HuStmpHrrr or apply constraint when matching Abc.new ?
japhb m: class Abc { has $.xyz }; sub foo($obj (:$xyz)) { say "$obj has xyz = $xyz" }; my Abc $a .= new(:xyz(42)); foo($a);
camelia rakudo-moar c2a57e: OUTPUT«Abc<140578331421688> has xyz = 42␤»
japhb HuStmpHrrr: ^^ 17:38
HuStmpHrrr: You mean you want multi-method constructors? (Yes, we have that.)
HuStmpHrrr oh? an example please?
moritz m: class A { has $.x }; multi a ($ (:$x where { $x > 0 }) ) { say 'positive' }; multi a ($ (:$x where { $x < 0 }) ) { say 'negative' }; a A.new(x => -3) 17:39
camelia rakudo-moar c2a57e: OUTPUT«negative␤»
moritz m: class A { has $.x }; multi a ($ (:$x where { $x > 0 }) ) { say 'positive' }; multi a ($ (:$x where { $x < 0 }) ) { say 'negative' }; a A.new(x => 42)
japhb Thanks moritz!
camelia rakudo-moar c2a57e: OUTPUT«positive␤»
moritz m: class A { has $.x }; multi a ($ (:$x where { $x > 0 }) ) { say 'positive' }; multi a ($ (:$x where { $x < 0 }) ) { say 'negative' }; a A.new(x => 0)
camelia rakudo-moar c2a57e: OUTPUT«Cannot call a(A.new(x => 0)); none of these signatures match:␤ (Any $ (Any :x($x) where { ... }))␤ (Any $ (Any :x($x) where { ... }))␤ in block <unit> at /tmp/H79si5MxYC:1␤␤»
japhb Oh, those weren't constructors. Still, same principle applies. Constructors aren't special -- method new is a *convention*, not a requirement. 17:40
s/requirement/special case/
HuStmpHrrr oh. nice 17:41
dalek c: 8cd58a3 | skids++ | lib/Type/X/Promise/CauseOnlyValidOnBroken.pod:
Fix broken link by documenting X::Promise::CauseOnlyValidOnBroken
17:42
HuStmpHrrr another question, do i have to swallow the whole file in memory at once, without doing it in old way?(ie open->read->explicit close) 17:43
japhb HuStmpHrrr: Laziness is all over the place now. That includes things like IO.lines.
HuStmpHrrr oh, that's sweet 17:44
17:44 liztormato left, liztormato joined
HuStmpHrrr a special case, if i once read to the file end, but the file gets appended, what would happen if i continue reading? 17:45
japhb (Of course, if you request eagerness, you'll get it, but then you deal with the consequences. We trust you meant to do that.)
liztormato HuStmpHrrr: you can repeatedly call .lines on an IO::Handle afaik 17:46
japhb HuStmpHrrr: We understand both blocking and async I/O paradigms, including both traditional and channel/supply style.
Some variants are NYI, but if you find something that's implemented and doesn't do what you'd expect, let us know.
HuStmpHrrr ok 17:47
oh, i have another question which confuses me a lot 17:49
what happened to parrot?
why switch to moar? it seems parrot is not in the backend candidate any more
liztormato Moar is what parrot should have been 17:50
skids MoarVM was written specifically for Perl6 to speed up development.
HuStmpHrrr are they compatible? so what's wrong with parrot?
moritz HuStmpHrrr: basically MoarVM has the advantage of being faster, using less memory, offering concurrency in a way parrot can't, and being maintainable/extensible 17:51
so rakudo has abandoned the parrot backend for now
geekosaur the main driver for dropping parrot was that its windows support is not sufficient for rakudo any more
moritz with the idea of maybe eventually reinstating it, if/when we have the resources, and good reason to
geekosaur iirc
17:52 Rotwang left
liztormato Parrot is one of the shoulders rakudo is standing on 17:52
moritz geekosaur: the main driver was that parrot offered virtually nothing that moar didn't, but slowed down rakudo development (due to stuff having to be ported to several platforms, conditional compilation etc.)
liztormato Without it, we wouldn't be where we are now
moritz liztormato: fully agreed
the parrot developers still release it every month 17:53
though the changelogs look pretty short this year
japhb If someone wanted to do the (hard) work of reinstating the parrot backend, we'd certainly support them, but it's *not* a simple thing at this point.
17:53 uncleyear left 17:54 llfourn left
moritz ... and we'd only do it after the Christmas release 17:54
japhb moritz: Is nine the only person who can fix the DNS problems plaguing Camelia rebuild?
17:54 uncleyear joined, liztormato left
japhb moritz: agreed; we don't have the spare tuits before that. 17:55
HuStmpHrrr ok. understood
moritz github.com/parrot/parrot/graphs/contributors
japhb: yes, I think so
Ulti HuStmpHrrr out of curiosity does it make a difference to you for using Rakudo? 17:57
japhb Sigh, always I am cursed on leaderboards by my tendency to do my changes in fewer commits.
17:57 FROGGS joined 17:59 Ven left
smls masak: You rakudobug'd the "intermediate backtracking results end up in the Match object" issue a while ago, right 18:00
?
nwc10 dear github, you don't mention me
git log --author [email@hidden.address] --pretty=oneline | wc
thinks I have 140 commits in parrot
jnthn smls: I saw a recent-ish ticket along those lines in RT earlier toniht... 18:01
*tonight
smls ah, I think I found the ticket.
nwc10 clearly, if you aren't on github, you're an unperson 18:02
18:04 ZoffixWork joined
ZoffixWork Hi. Would you agree that *lack* of a 'use v6;' is a sane heuristic when trying to determine whether source code is not Perl 6? GitHub's Linguist currently has trouble differentiating between Perl5 and Perl6 and the point has been brought up as a possible solution. Is 'use v6;' something that's recommended and wide-spread enough? 18:06
This is the discussion in question BTW: github.com/github/linguist/issues/...-108992653
Ulti just look for 'use strict;' to identify Perl 5 (oh zing) 18:07
18:07 andreoss left
ZoffixWork That's not sufficient. There are many different modules that enable strictures under the hood, so 'use strict' isn't present in those cases. 18:07
Ulti which is why it was meant as a joke, sorry >:3
ZoffixWork heh
FROGGS ZoffixWork: that won't work... all languages but Perl 6 lack a 'use v6' I guess 18:08
Ulti it would have the added bonus of making ugly Perl 5 look ugly without colours
ZoffixWork FROGGS, in this case the ambiguity is only between Perl5 and Perl6.
FROGGS ZoffixWork: but that is not how their heuristic work, no?
nwc10 ZoffixWork: alternative question - is it viable to help train the basien filter - ie would github be happy with a button for "you're wrong, it's this other language?"
FROGGS "disambiguate "Perl", "Perl6", "Prolog" do |data|"
nwc10 that feels like a more long term scalable solution, and one they might think is cool
Ulti ZoffixWork does it have to be a single criteria rather than a cascade of them? 18:09
I think if you dont use .pm6 .pl6 a shebang line with 'perl6' in or 'use v6;' then marking up as perl5 is more than acceptable
ZoffixWork Ulti, what about .t files?
Ulti well you could write some tests in a mix of perl5 and 6 anyway 18:10
ZoffixWork nwc10, what you said is way over my head, but I'll be sure to pass it into the ticket :P
Ulti you might want to use Perl5 with the Inline::Perl6 stuff just to get a lot of extra modules
18:10 SevenWolf joined
FROGGS Ulti: the mechanism at that time does not know the file extension 18:10
Ulti oh
well shebang line with a 6 in or use v6 still feels ok 18:12
nwc10 ZoffixWork: thanks.
Ulti since at some point you'd hope running 'perl' on a perl6 program would run perl6 for you
18:13 cognominal left
smls ZoffixWork: I posted a commentyon the github thread. 18:14
ZoffixWork Thanks
skids "const_iX NYI" Wow. How did that ever happen? 18:16
18:19 HuStmpHrrr left 18:20 bin_005 joined
grondilu do you guys use SSH on Windows? Because: www.extremetech.com/computing/20736...y-a-decade 18:20
18:21 diana_olhovik_ joined 18:22 amurf joined 18:24 uncleyear left
RabidGravy there fixed Cache::Memcached 18:24
ZoffixWork \o/ 18:25
18:25 uncleyear joined
RabidGravy it's probably a load of cobblers as I have only used memcached once about four years ago but hey 18:26
18:26 amurf left 18:29 _mg_ joined
skids gist.github.com/skids/7ba5cc3b031e69abcf83 # ll-exception trace for somehow reaching a bad opcode. In case it is useful. 18:30
18:36 cdc joined, ZoffixWork left
FROGGS grondilu: yes, I use Putty 18:37
cdc Hello #perl6 18:43
github.com/perl6/specs/commit/16eb4ecdb5 seems suspicious to me 18:44
as of my understanding, "start" -- as a statement -- is still supported
m: start { 42.say } 18:45
camelia ( no output )
cdc m: await start { 42.say } 18:46
camelia rakudo-moar c2a57e: OUTPUT«42␤»
cdc better :)
smls m: say (<1 2> X (<a b> Z <x y>)).perl 18:47
camelia rakudo-moar c2a57e: OUTPUT«(("1", "a"), ("1", "x"), ("1", "b"), ("1", "y"), ("2", "a"), ("2", "x"), ("2", "b"), ("2", "y"))␤»
smls ^^ can I prevent the RHS from being flattened before being passed to X ?
would have expected the result: ("1", <a x>), ("1", <b y>), ("2", <a x>), ("2", <b y>)
cdc .tell cognominal irclog.perlgeek.de/perl6/2015-06-04#i_10702538 18:48
yoleaux cdc: I'll pass your message to cognominal.
18:50 uncleyear left
smls m: say (<1 2> X (<a b> Z <x y>).tree.list).perl 18:50
camelia rakudo-moar c2a57e: OUTPUT«(("1", ("a"; "x").item), ("1", ("b"; "y").item), ("2", ("a"; "x").item), ("2", ("b"; "y").item))␤»
smls Hm I suppose this works, but it's not that nice to write.
18:51 uncleyear joined, bin_005 left
japhb cdc: camelia is running an old Rakudo, because it can't rebuild on that host, because DNS problems. 18:52
.ask nine moritz says around irclog.perlgeek.de/perl6/2015-06-04#i_10702197 that you are the only one who can fix the DNS problems plaguing Camelia's rebuilds. Can that power be spread around a bit more? Or is there a blocker to that? 18:54
yoleaux japhb: I'll pass your message to nine.
PerlJam .seen nine 18:56
yoleaux I saw nine 26 May 2015 18:56Z in #perl6: <nine> I guess "unit" refers to the CompUnit?
cdc japhb: ok for camelia, but as of my understanding lizmat made "start" (a statement instead of a sub): github.com/rakudo/rakudo/commit/21...1bca47d3a3
japhb: so "start { ... }" is legal, isn't it? 18:57
japhb Yes, sorry, my point was merely that believing camelia WRT whether something still works isn't valid at the moment. :-( 18:59
19:00 Sqirrel joined
cdc japhb: no problem :) I wasn't aware about current camelia's problem. 19:01
japhb Anyone happen to know an alternate contact method for nine if he doesn't pop in soon?
19:04 uncleyear left
PerlJam we could kick camelia and run another version (with a higher truck number) on hack 19:04
19:05 uncleyear joined 19:08 stanrifkin left 19:11 yqt joined
RabidGravy cdc, yeah that is odd as whilst there is a deprecation on the sub start in asyncops.pm I don't think that is where the actual start comes from 19:11
(certainly running "await start { "foo" }" on a rakudo with that deprecation in doesn't raise the deprecation) 19:14
PerlJam If start takes a blorst now, I'm not sure how you'd ever hit the deprecation 19:18
19:20 bin_005 joined 19:23 [Sno] left 19:24 _mg_ left
TimToady by calling start() perhaps 19:25
19:25 espadrine joined
PerlJam doesn't look like it 19:28
19:28 uncleyear left
moritz &start 19:28
19:28 uncleyear joined
moritz await map &start, &print, &say 19:29
19:29 meisl joined
RabidGravy odd 19:30
meisl hello #perl6 19:32
japhb Hello, meisl!
meisl oh hi :) 19:33
I've got some "QASTions", ie am playing with the nqp toolchain 19:34
anyone?
PerlJam meisl: you've got to ask the questions before anyone has a hope of answering them ;) 19:35
meisl PerlJam: right - the 1st question was if anyone is willing to find out if she has a hope of answering :) 19:37
so: I found that nqp produces QASTs where not all nodes are of type QAST::Node, plain str appear under circumstances (*not* wrapped in an SVal) 19:38
19:38 llfourn joined
meisl I, personally find that rather annoying, and incoherent. But maybe there's a good reason for this? 19:39
japhb meisl: Can you give an example of source that produces such a mixed-node AST? 19:40
meisl yep, just a moment plz
jnthn QAST::Want and a QAST::Op of type handle are two examples where that can happen.
In neither case are the strings actually serving as literals in the same way a QAST::SVal does though 19:41
meisl and there's an op "locallifetime" which has as last child a literal string (I don't understand what that op is for, actually)
jnthn For constraining the lifetime of a local 19:42
e.g. it's a codegen hint
lizmat PerlJam: start({42}) will do it after 2015.06 comes out
19:43 llfourn left
meisl jnthn: why not just use annotations for that? 19:43
jnthn meisl: Annotations are not aimed at the code-gen, they're intended as a stash for the compiler writer
RabidGravy lizmat, so the deprecation isn't aimed at start { ... } ? In which case github.com/perl6/specs/commit/16eb4ecdb5 is wrong 19:45
meisl jnthn: hmm, ok. I see that it might make sense to keep those apart.
lizmat RabidGravy: agree, that commit is wrong
19:46 cognominal joined
jnthn meisl: It's worked well for us so far. :) 19:46
smls Is <.&foo> the only way to call a my token foo {} outside a grammar without creating a named capture?
jnthn smls: <&foo> doesn't create one 19:47
meisl jnthn: sure enough. Just trying to understand: isn't there Stmt (vs Stmt*s*) already for what I suppose is the purpose of Op locallifetime?
smls jnthn: oh, you're right, thanks.
19:47 rindolf left
dalek ecs: 415fa4c | lizmat++ | S17-concurrency.pod:
Revert "S17: sub start is deprecated"

start as a sub is deprecated, start as a statement is still very much there!
   start 42; # now works
   start { 42 }; # already works, was handled by sub, now in grammar
   start( { 42 } ); # still works, but deprecated
19:48
PerlJam oh, I see. I was misreading the deprecation. 19:49
jnthn meisl: Good question. I think we ended up with locallifetime sometime during the JVM porting work.
meisl: I don't remember exactly what blocked QAST::Stmt from being used, but I suspect it's a matter of granularity 19:50
meisl jnthn: Stmt being too coarse?
jnthn Yeah
19:51 mj41 joined, uncleyear left
meisl in the src, I kinda remember to have seen to TODOs and XXXs re locallifetime... 19:51
*to have seen some...*
jnthn That's entirely possible; on MoarVM we don't face some of the same constraints as on the JVM and so may get away without it so far. Suspect handling it may still get us better code-gen, however 19:52
19:52 uncleyear joined
meisl yes, it was in moar code where it said like "don't need it here, so noop it" 19:53
jnthn: could give a hint what kind of constraints of the JVM you have in mind? 19:54
jnthn It may have been number of locals per method
19:55 kaare__ joined
masak smls: yes, I believe I did. do you need to find it? 19:56
smls already did
jnthn (iirc, it's 256, except doubles and longs take 2 slots)
smls jnthn: Ouch, replacing <filename> with <&filename> in one place in my regex causes a "Cannot call method '!cursor_next' on a null object" 19:57
Rakudo bug or possibly my mistake?
lizmat jnthn: did you realize that EVALFILE can also eval code from an open filehandle / socket ? 19:58
jnthn lizmat: Uh...can it?
lizmat: I'm pretty sure it can't given I implemented it using slurp :P
lizmat multi sub slurp(IO::Handle:D
cognominal m: say $/.WHAT for 'aaa' ~~ m:g/./ 19:59
yoleaux 18:48Z <cdc> cognominal: irclog.perlgeek.de/perl6/2015-06-04#i_10702538
camelia rakudo-moar c2a57e: OUTPUT«(List)␤(List)␤(List)␤»
jnthn smls: If it's that error, then a Rakudo bug, though of course possibly both ;)
smls :P
Will try to golf.
jnthn lizmat: Feel free to add another candidate, and tests ;)
lizmat jnthn: slurp(IO::Handle:D:) is deprecated, though
meisl jnthn: oh... so that limit is actually hit?! Anyways, now I recall the main example for plain strs: Op handle with eg "CATCH" as last child - that really seems odd
TimToady lizmat: re sanity of said patch, note that perl -E 'say 123 __END__ stuff' works; there should be no ^^ or $$ constraint 20:00
jnthn meisl: Yes, we hit it :)
TimToady: wtf!! Perl 5 is crazy :P
lizmat TimToady: ok, so apart from that, you're ok with it ?
TimToady es
*y
lizmat k
o
jnthn meisl: I...think think CATCH shold be the last cild 20:01
*child
There should be something after it saying how CATCH is handled
dalek kudo/nom: 5d0f9bd | lizmat++ | docs/ChangeLog:
Mention EVALFILE, some more specifics
20:01 raiph joined
TimToady lizmat: it should probably test for » though 20:01
jnthn Uh, and "don't think" :)
lizmat TimToady: ?? 20:02
jnthn lizmat: Word boundary
lizmat ah, ok
jnthn >> in texas :)
lizmat okidoki
TimToady though it probably wouldn't ever fail due to LTM, but better to be safe 20:03
meisl jnthn: it seems to always be. But shouldn't that be rather an attribute of the handle op - or else be promoted to a kind of Node of its own?
lizmat TimToady: building and running tests
jnthn meisl: Why should it? :)
meisl well, because it's a structural thing, on the syntactic level 20:04
20:04 vendethiel joined
meisl or not? 20:04
jnthn meisl: I mean, we could do it that way, but...I've not really found myself wishing it was that way
We've generally preferred a small number of node types, to keep processing of trees relatively straightforward. 20:05
cognominal cdc++, you are right, I did not realize that start just changed status moving from sub to statement_prefix github.com/rakudo/rakudo/blame/nom....nqp#L1546
jnthn When I first looked at QAST my first reaction was "oh my, we'll need LOADS more nodes!"
Having worked with it for some years, I'm mostly glad we've kept the number down. 20:06
meisl jnthn: ...and for the price of incoherence/inconsistency
jnthn All design is trade-offs.
meisl jnthn: just kidding, I just stumbled over it. And docs/qast.markdown gives you a whole different idea... 20:07
cognominal ho, lizmat++ already reverted my blunder
lizmat cognominal++ # for trying to keep up with changes!
meisl it is also omitting quite a bunch
jnthn Yeah, it's hardly complete, I'm afraid.
20:07 kst left
meisl I could try to improve it, if I feel a bit more comfortable with all that stuff 20:08
jnthn That'd be helpful. There's a set of tests to see what's yet to be documented, iirc.
cdc cognominal, lizmat: I didn't see the revert, my mistake.
cognominal cdc, lizmat reverted after your remark :) 20:09
cdc :)
lizmat TimToady: 'say 123 __DATA__' is now a TTIAR, but I guess we can live with that?
20:09 uncleyear left
meisl yes, there's t/docs/opcodes.t 20:09
github.com/perl6/nqp/blob/master/t.../opcodes.t 20:10
cognominal lizmat++ and jnthn++ are so productive/creative that it becomes difficult keep pace with them
TimToady lizmat: surely obs throws immediately? 20:11
lizmat apparently not
token term:sym<p5end> {
- ^^ __END__ $$
+ << __END__ >>
<.obs('__END__ as end of code',
'the =finish pod marker and $=finish to read')>
TimToady oh, it's not looking for a term there
jnthn TimToady: I think we're already upset by the time we fail to find an infix.. 20:12
TimToady __END__ isn't a term in P5
20:12 darutoko left, stanrifkin joined
cognominal I don't understand yet why say $/.WHAT for 'aaa' ~~ m:g/./ gives lists 20:12
nwc10 IIRC __END__ is a token which behaves as EOF
stanrifkin are there any books out there yet?
meisl jnthn: to be honest, I don't get it, though. Any advice where else in the src I should look in order to understand what a particular Op I come across is doing/is for? 20:13
jnthn m: say .WHAT for 'aaa' ~~ m:g/./
camelia rakudo-moar c2a57e: OUTPUT«(Match)␤(Match)␤(Match)␤»
nwc10 and as the file is parsed a line at a time, a side effect is that the rest of the line contianing the __END__ is discardged
cognominal oops
jnthn cognominal: It's $_ that is bound each time
cognominal I guess I need to call it a day
TimToady and we recently added List to the category of success indicators 20:14
jnthn meisl: Looking for examples in NQP/Rakudo is one way, seeing if the NQP course material defines it is another, seeing how it's implemented in JVM/Moar is a third....but the laziest is to ask here :)
20:16 uncleyear joined
meisl jnthn: I did get lost before asking here... 20:16
20:17 dakkar left
meisl jnthn: by NQP course material you mean edumentab.github.io/rakudo-and-nqp-...als-course ? 20:17
lizmat meisl: yes 20:18
jnthn Yes
meisl thx (just hoped there was more)
TimToady well, it's called "internals" for a reason... 20:20
meisl btw: no offense, it's just that I am still in that stage where everything seems strange and overwhelming. I do know this, and also that later a lot of problems will look ridiculous.
jnthn meisl: None taken; NQP and QAST suffer a bit from being the thing we've built primarily in order to build a Perl 6 implementation. 20:21
meisl: So they only get so much attention themselves.
lizmat TimToady: I'm unclear on what to use instead of "term" for __END__ 20:22
meisl jnthn: sure, once they suffice to "make the leap"...
TimToady meisl: I've been working with them for a year or so, and they still seem strange and overwhelming :)
meisl TimToday: ooh, thx. To hear you say it - makes my day :) 20:23
lizmat afk for a bit& 20:24
TimToady lizmat: term is probably adequate for this purpose
dalek kudo/nom: 51cccca | lizmat++ | src/Perl6/Grammar.nqp:
Just work on word bounds, instead of line bounds

As suggested by TimToady++
20:25
meisl jnthn: I understand the primary purpose of NQP, but imho it is already great in itself as a toolchain for building other langs (as advertised, btw) 20:26
jnthn meisl: Yes, it's just received a lot less polish. :)
meisl jnthn: maybe a bit of Czech would help? 20:27
(@sorear++)
jnthn Možná... :) 20:28
stanrifkin are there any recent perl6 books out there?
20:29 Peter_R joined
timotimo i don't know of any, sadly :( 20:29
dalek p/openpipe3: 102e74d | FROGGS++ | / (2 files):
map op syncpipe and adjusts tests for latest openpipe
mj41 jnthn: Vítej op v Česku. Doufám, že si užiješ nejlepši piva na planetě :-). A taky jsi určitě vítaný v Brně, třeba na Brno Perl Mongers ( www.facebook.com/brnopm ). 20:31
s/op/opět/
FROGGS ETOOMANYACCENTS 20:32
meisl jnthn: bezpiecznie; I consider my efforts a little bit of "Czech" (say it)
hoelzro I understood "piva na planetě" =) 20:33
20:34 maettu1 left, maettu1 joined
meisl bks 20:35
hoelzro: I do my checks in Czech and my polishing... and I'm drinking Munich beer. 20:36
20:36 uncleyear left, uncleyear joined, kaare__ left
jnthn hoelzro: and of course the thing before it has to mean "best" :P 20:37
20:37 uncleyear left, uncleyear joined, Ven joined
FROGGS and Brně is just another declination of Brno? 20:38
mj41 Seženu nějaké tipy na hospody a pivovary. Třeba www.pivovarskyklub.com/pivo/index/lang/en by mělo být ok.
FROGGS so, "nejlepši piva na planetě" means "best beer on this planet"?
s/this planet/earth/ # as if there is just one
20:39 uncleyear left, uncleyear joined
jnthn FROGGS: "on the planet" I think :) 20:39
20:40 bin_005_s joined
meisl FROGGS, jnthn: something like that, but the prominent thing is piva, imho 20:40
20:40 bin_005 left, rurban joined
FROGGS is piva beer or wine? 20:40
jnthn Beer!
FROGGS I was under the impression that pivo is wine somewere 20:41
but... no, must be a braino
jnthn That's vino :)
FROGGS onhh!
mj41 yes, Brno = Brně ... en.wikipedia.org/wiki/Czech_declension#Neuter
meisl it could be a verb in 1st person elsewhere
FROGGS 7! 20:42
/o\
meisl "beering" / "wining"
(I do, that is)
jnthn mj41: Děkuji! :-) And yes, once I'm settled here, I'll gladly make some visits to Brno.pm :-) 20:44
It's not all that far away...
mj41 piva means beers ... or types of beers
dalek kudo-star-daily: 7da4b86 | coke++ | log/ (2 files):
today (automated commit)
20:45
FROGGS lizmat: do I get your +1 to deprecate open(:p) ?
jnthn hah, that do
meisl mj41: so kind of a plural, or generalization?
mj41 plurar
plural
jnthn Darn, 5 years of not using any of the Slovak I've learned + Czech being a different language = I've got some quite some re-learning to do. 20:46
20:46 adu left
PerlJam stanrifkin: What kind of perl6 book would you want? What would it cover? 20:46
jnthn is back at "phew, I understand this restaurant menu enough to choose something tasty" and "yay I understand how much the cashier wants me to pay for these groceries"... 20:47
FROGGS and I guess the food really was tasty
jnthn FROGGS: Yes. :)
FROGGS I wish I could be in .cz right now :/
20:48 mohij joined
mj41 btw: GoodData ( www.gooddata.com/ ) has Perl developers in Brno and Prague. I will be in Prague tomorrow. I should wake up 5am, takže dobrou noc a uživej si Prahu a pivo. 20:48
meisl so: pivo / piva is Czech for "beer(s)", polish is "piwo", where "piwa" is for kinda genitive-ish use (eg "butelka piwa" = bottle o' beer = Flaschbier) 20:49
jnthn Dobrou noc, mj41 o/ 20:50
20:50 llfourn joined, Ven left
jnthn
.oO( Flasch! Bier...saviour of the universe... )
20:51
timotimo :D
m: unit class Foo; has $.a, $.b, $.c; # LTA error, IMO. 20:52
camelia rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/iZekMrKESm␤Variable $.b used where no 'self' is available␤at /tmp/iZekMrKESm:1␤------> 3unit class Foo; has $.a, $.b7⏏5, $.c; # LTA error, IMO.␤ expecting any of:␤ term␤»
meisl mj41: g'night (that much I understood)
jnthn Hm, I think STD gets that one better maybe...
std: unit class Foo; has $.a, $.b, $.c;
camelia std 28329a7: OUTPUT«5===SORRY!5===␤Variable $.b used where no 'self' is available at /tmp/8xrFIjN_1i line 1:␤------> 3unit class Foo; has $.a, 7⏏5$.b, $.c;␤Variable $.c used where no 'self' is available at /tmp/8xrFIjN_1i line 1:␤------> 3unit class Foo; has $.a, …»
jnthn std: unit class Foo; has $.a, $.b; 20:53
camelia std 28329a7: OUTPUT«5===SORRY!5===␤Variable $.b used where no 'self' is available at /tmp/YoxtjQ1mXU line 1:␤------> 3unit class Foo; has $.a, 7⏏5$.b;␤Undeclared routine:␤ 'unit' used at line 1␤Check failed␤FAILED 00:00 139m␤»
jnthn No, sadly not
meisl jnthn: yea, Werner. but actually I prefer the southern stuff, you know
20:53 mohij left
jnthn m: my $a, $b; 20:53
camelia rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Ll7u2b82w0␤Variable '$b' is not declared␤at /tmp/Ll7u2b82w0:1␤------> 3my $a, 7⏏5$b;␤»
jnthn std: my $a, $b;
camelia std 28329a7: OUTPUT«5===SORRY!5===␤Variable $b is not predeclared (declarators are tighter than comma, so maybe your 'my' signature needs parens?) at /tmp/pD7dgRvWZ8 line 1:␤------> 3my $a, 7⏏5$b;␤Check failed␤FAILED 00:00 137m␤»
jnthn Ah, it has one there that Rakudo could do with stealing
Wonder if we can't generalized it to has also.
timotimo very good 20:54
20:55 cognominal left, llfourn left
jnthn Maybe something for me to do in the morning :) 20:55
For now, time for some rest :)
FROGGS gnight jnthn :o) 20:56
meisl gnight & thx
hoelzro jnthn: I figured as much =)
20:59 mj41 left, uncleyear left, skids left
timotimo gnite jnthn :) 20:59
hoelzro night jnthn 21:00
21:00 uncleyear joined, Ven joined
dalek kudo/openpipe3: 7e1bee5 | FROGGS++ | src/core/ (2 files):
follow recent nqp::openpipe changes
21:00
lizmat FROGGS: in newio branch, open(:p) is already deprecated :-) 21:01
FROGGS lizmat: cool!
lizmat so yes, go ahead :-)
FROGGS then I'll backport it (tomorrowish)
lizmat I can do that now, if you want :-0) 21:02
FROGGS sure, that'd be great
PerlJam lizmat: when will newio merge?
lizmat PerlJam: as soon as it is a sufficient amount of-Ofun for me 21:03
PerlJam okie
FROGGS seems I need IO::Pipe from newio too 21:05
21:06 bin_005_s left, bin_005_s_t joined
lizmat FROGGS: well, that you will have to do yourself tomorrowish 21:06
FROGGS aye
lizmat I'm about to shutdown for an early night and a long commute to SLC tomorrow
FROGGS I also need to think more about it
SLC?
lizmat Salt Lake City, UT 21:07
FROGGS ohh
lizmat YAPC::NA
FROGGS have fun there for me :S
lizmat will try :-)
FROGGS *g*
meisl good night, lizmat; I'll quit too now. Bye #perl6. 21:08
FROGGS gnight meisl
meisl c-ya'll 21:09
21:09 meisl left
hoelzro lizmat: have a safe flight, and enjoy! 21:10
lizmat hoelzro: I'll tell the pilot to fly safely :-) 21:11
hoelzro =)
lizmat git diff
grrr
FROGGS :D
dalek kudo/nom: 5afe889 | lizmat++ | src/core/IO/Handle.pm:
Deprecate open(:p), FROGGS++
21:12
FROGGS lizmat: thank you
gnight #perl6
21:12 FROGGS left
hoelzro night freeze 21:13
dammit
21:14 Ven left
RabidGravy I'm thinking of adding a couple of exceptions to Panda - Panda::X::PlatformNotSupported and Panda::X::DepemdencyMissing for the the beneft of automated testing 21:17
such that a developer can make a Buld.pm and if they decide upfront the module won't work they can bail the build but supply richer information 21:18
any thoughts? 21:20
21:20 smls_ joined, smls left
timotimo i'm not sure it should be Panda::X ... shouldn't it be X::Panda:: ? 21:22
21:22 atweiden joined
[Coke] also, is panda deciding that something doesn't work on a platform? Or is that coming from the module you're installing? 21:23
timotimo it'd be for the module developer
21:24 Sqirrel left
RabidGravy the module, currently I'm doing "class Builder is Panda::Builder { method build(..) { if $*DISTRO.is-win32 { die "not supported on Windows"; }}" for example 21:25
21:26 smls_ left
ugexe shouldnt those happen during the hooks 21:26
RabidGravy that stops fail test reports on platforms it won't work on, but completely aborts the build
ugexe well, i think it should show failures on a platform it fails on. even if its not meant to 21:27
RabidGravy it should show n/a or something
21:27 Foxcool_ left
RabidGravy which is somewhat the point of the above 21:28
21:29 uncleyear left
RabidGravy doing the above just aborts before the test report 21:29
21:29 uncleyear joined
ugexe i imagine module authors will just make a small script to throw in /hooks (if /hooks is still supposed to be a thing eventually) 21:30
timotimo gist.github.com/timo/7babb36055768fe04eeb - i'm putting step-by-step improvements to jaffa4's port of the nbody benchmark into the history of this gist 21:32
21:32 johan joined
RabidGravy right, but right now a tiny adjustment to panda, such that the developer can create a Build.pm which may throw an exception to signal that it wishes not to be tested 21:32
timotimo if someone could automate timing each commit in there, that'd be sweet. i only have my laptop which is on battery and power saving and such
21:33 ggoebel left
timotimo i wonder if something branch-related would be good for that for exploring different things 21:35
and combinations
like "real vs Real in the attributes"
21:36 raiph left 21:37 ggoebel2 joined 21:41 diana_olhovik_ left
ugexe looks like perl6 is about to hit travis-ci github.com/travis-ci/travis-build/...-109061325 21:44
"Also, if you have fun bits of information about you (and other volunteers) to share in the announcement blog post, I'd appreciate it!"
21:44 rurban left 21:45 ggoebel2 left
hoelzro wow, that's spectacular 21:45
21:46 ggoebel joined
timotimo now is really a good time to try to make rakudobrew build stuff faster 21:48
does travis-ci like multi-threaded build?
for MAKEOPTS=-j4 or something for moarvm 21:49
hoelzro timotimo: I think you can, but I think each build instance gets one core
timotimo OK, in that case there's no speed win
hoelzro would it just be for monthly releases? 21:50
or nightlies too?
either way, new VM images with rakudo built could be used for individual travis builds
timotimo it uses "rakudobrew triple" 21:51
+ if version == "latest"
+ sh.cmd "rakudobrew triple #{version} #{version} #{version}", assert: false
is this correct? #{version} three times? does that allow you to give different versions for rakudo, nqp and moar?
ugexe it would probably be best to use rakudobrew build anyway, to make it easier to add JVM 21:52
lizmat good night, #perl6!
21:52 lizmat left
timotimo hm, right 21:52
[ptc]: can you comment on this? 21:53
rakudobrew triple with #{version} #{version} #{version} would only allow you to get release versions, because only then will version names coincide 21:54
hm ... i guess that's fine 21:55
21:55 espadrine left
timotimo ugexe: you get "latest" by default and then it'll "rakudobrew build" 21:55
ugexe rakudobrew triple cannot build jvm backened 21:56
or are you talking about something else
21:56 uncleyear left 21:57 uncleyear joined 21:59 amurf joined 22:01 stanrifkin left, adu joined 22:04 amurf left, ggoebel2 joined, ggoebel left 22:07 rurban joined 22:08 adu left
RabidGravy right, nighty night 22:09
22:10 rurban left
timotimo ugexe: if you don't specify a version in your travis file, you'll get "latest" 22:10
then it does "rakudobrew build moar" 22:11
[ptc] hoelzro++ # Travis Perl 6 support! 22:13
_itz: I'll give the new VimColour stuff a go as soon as I get time. $dayjob is pretty busy atm
22:14 RabidGravy left
ugexe timotimo: ah i see what you mean. yeah it shouldnt be #{version} 3 times... it should be 3 different variables 22:14
22:14 johan left 22:22 smls joined 22:24 colomon joined, smls_ joined 22:25 ggoebel2 left
[ptc] ugexe++ # Travis Perl 6 volunteer :-) 22:25
22:26 bin_005_s_t left, huf left
smls_ What's the difference between -> ($a, $b) {...} and -> [$a, $b] {...} ? 22:26
22:26 ggoebel joined 22:27 huf joined
smls_ both seem to unpack Positional arguments. 22:27
22:27 smls left, Peter_R left
timotimo that's right. i'm not sure if there's a nother difference 22:28
can i just say
we're not compile-time-evaluating METAOP_ASSIGN
and i don't know why 22:29
22:29 koo6 left, ggoebel2 joined 22:30 sirdancealot joined 22:31 ggoebel left
timotimo so for ^100 { $a += 5 } will generate += from + 100 times 22:31
22:31 vendethiel left, _sri_ left 22:32 smls_ left, _sri joined 22:33 ggoebel joined, ggoebel2 left 22:35 pRiVi joined
hoelzro wait, what? 22:35
so the "+=" magic is redundantly generated 100 times there?
22:35 pRiVi_ left 22:38 broquaint left, zostay joined 22:39 vike1 joined, broquaint joined, llfourn joined 22:40 ggoebel left, jercos left, jercos joined, ggoebel2 joined
jdv79 what's goin on so early in SLC? i'm flying out sunday myself. 22:41
22:41 SevenWolf left
jdv79 the pre-pre-pre-pre-arrival dinner? 22:42
22:43 danstone1 joined, ruoso joined 22:44 llfourn left 22:47 skids joined 22:48 SevenWolf joined 22:52 beastd left 22:56 ggoebel2 left 22:57 Akagi201 joined 22:58 ggoebel joined 22:59 Akagi201 left, Akagi201 joined
Mouq .ask lizmat So is #125312 (start 41 + 2) closable? 23:01
yoleaux Mouq: I'll pass your message to lizmat.
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=125312
23:02 telex left 23:04 telex joined 23:05 amurf joined 23:09 Akagi201 left 23:15 ggoebel2 joined, ggoebel left 23:19 ggoebel2 left 23:22 ggoebel joined 23:27 spider-mario left 23:28 spider-mario joined
timotimo hoelzro: yes, indeed 23:29
well, we only take a closure of the thing
hoelzro yikes
sounds like a quick performance win, though =) 23:30
timotimo i suppose
the optimizer already has a case for $a += $b 23:31
23:31 ggoebel left
timotimo to turn that immediately into $a = ($a // &infix:<+>()) + $b 23:31
but only if the assigned-to variable is a $-sigiled var
23:31 ggoebel joined
timotimo in the case we have in this benchmark here, the lhs is a method call on an object 23:31
(to get an is-rw container)
hoelzro ah ha 23:34
timotimo the thing is: we should actually be compile-time-calling METAOP_ASSIGN and generating the closure to be re-used 23:37
at least that should have been optimized by the existing optimizer
timotimo is hacking on the optimizer this very moment
23:38 ggoebel left
hoelzro timotimo++ 23:39
maybe I can pick your brain sometime about some things I'd like to speed up!
timotimo that's what i used to do all the time :P 23:40
23:42 uncleyear left, uncleyear joined 23:44 ggoebel joined 23:52 Akagi201 joined 23:54 Akagi201 left 23:55 Akagi201 joined 23:56 Akagi201_ joined, Akagi201 left