»ö« 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.
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
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]<>␤»
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␤»
masak morning, #perl6 05:10
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.
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␤»
dalek c: eca2f2d | moritz++ | lib/Language/variables.pod:
variables: Document "is default" trait
05:55
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)`
moritz +1 06:18
El_Che w 06:19
masak submits rakudobug 06:20
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
moritz quick DB design straw poll: do you prefer natural keys or surrogate keys as primary key? 06:41
masak surrogate keys. 06:54
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
masak moritz: blog.plover.com/IT/GUID.html also supports my case. 07:00
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
moritz ah, the c2 page does mention it further down the page 07:29
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
?
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 )
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?
masak jaffa4: sure thing! maybe provide it as a gist or something? 07:57
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
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...
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
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
FROGGS DrForr: what delimiter do you use? 08:38
m: say $*DISTRO.cur-sep 08:39
camelia rakudo-moar c2a57e: OUTPUT«,␤»
DrForr Well, I was using the (reasonably traditional) ':'. 08:42
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
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
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++
jnthn morning, #perl6 09:03
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
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
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)
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!
masak jnthn: nope :) 09:21
(though it's a decent guess)
jnthn El_Che: Thanks :) 09:22
masak FROGGS: is "with 16" (intead of "at 16") a Germanism? I'm intrigued. 09:22
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.
nwc10 if anything, it seems to be warmer there: www.bbc.co.uk/weather/2666199 www.bbc.co.uk/weather/2692969 09:40
_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
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.
jab Yeah it's hard to find enum info 09:59
masak files issue
_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.
jab Is there anything perl6 implementations that use JVM? 10:06
DrForr Yep, it's even mentioned on the rakudo homepage. 10:09
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
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
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" :-)
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 &
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
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
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
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␤»
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
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)
Rotwang hi 11:26
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␤»
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 :-(
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 ?
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
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
grondilu m: say [+] rand xx 3 # is fine locally 12:35
camelia rakudo-moar c2a57e: OUTPUT«1.43158160533389␤»
grondilu m: say [+] rand xx 1_000 # is not 12:35
camelia rakudo-moar c2a57e: OUTPUT«507.256616612841␤»
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 :-)
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
|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
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
grondilu nah it probably does not matter much 12:47
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
FROGGS :o) 12:59
FROGGS goes back to $work
lizmat FROGGS++
masak what's the idiomatic way to introspect a given attribute, again? I forget. 13:04
masak I see the method .^attributes -- do I have to loop over it to find my attribute? 13:04
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
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 % ?
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
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*
masak sometimes I think it's a pity that .can returns an array, and not just the first applicable method. 13:37
masak (because the first applicable method is what I'm interested in 90% of the time, so I do `[0]` a lot) 13:37
jnthn masak: Why aren't you using .^lookup or .^find_method ? 13:38
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
lizmat afk for a bit& 13:45
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
|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
masak detrain & 14:02
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
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
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
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
dalek ecs: 16eb4ec | (Stéphane Payrard)++ | S17-concurrency.pod:
S17: sub start is deprecated
14:23
dalek ecs: a1a7745 | jnthn++ | S29-functions.pod:
s/evalfile/EVALFILE/, for consistency with EVAL.
14:28
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
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
FROGGS jnthn: I guess there is one for 'goto' too :P 14:35
jnthn heh 14:36
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
cognominal I should double check before crying wolf :( 14:45
jnthn Well, there's no use crying over spilt wolves... 14:48
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?
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 )
jnthn DrForr: Well, it's not about codepoint range we want to be looking, it's the utf-8 encoding 15:08
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?
colomon @@EFF80UnassignedEFFFF 15:10
@Noncharacters
@+These codes are intended for process-internal uses.
EFFFE<not a character>
EFFFF<not a character>
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
jnthn is looking at v7 of the standard at the moment 15:19
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.
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
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
jnthn DrForr: www.unicode.org/faq/private_use.html#nonchar8 gives an answer 15:36
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
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
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
dalek kudo/nom: 6c1a478 | jnthn++ | tools/build/NQP_REVISION:
Get a MoarVM that can UTF-8 encode non-chars.
15:49
dalek ast: 8779aa0 | jnthn++ | S32-str/encode.t:
Tests for UTF-8 encoding of non-chars.
15:50
jnthn DrForr: All fixed up now; thanks :) 15:50
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)
|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
jnthn dinner & 16:09
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 ?
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
HuStmpHrrr Hi guys, and tutorial or doc for pattern matching in perl6? 16:59
very few docs mentioned about this
jnthn doc.perl6.org/language/regexes 17:01
HuStmpHrrr not regex matching
HuStmpHrrr functional pattern matching 17:01
multi sub 17:02
HuStmpHrrr ml type of matching 17:02
just like this post: perlgeek.de/blog-en/perl-6/2013-pat...ching.html
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
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
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.
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
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.
HuStmpHrrr if that's the only case, it would be too bad 17:29
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
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
HuStmpHrrr yep, that's one type of pattern matching 17:34
japhb HuStmpHrrr: Yes, there is very generic given/when.
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
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
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.
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?
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.
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
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
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
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
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
grondilu do you guys use SSH on Windows? Because: www.extremetech.com/computing/20736...y-a-decade 18:20
RabidGravy there fixed Cache::Memcached 18:24
ZoffixWork \o/ 18:25
RabidGravy it's probably a load of cobblers as I have only used memcached once about four years ago but hey 18:26
skids gist.github.com/skids/7ba5cc3b031e69abcf83 # ll-exception trace for somehow reaching a bad opcode. In case it is useful. 18:30
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.
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.
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
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?
PerlJam we could kick camelia and run another version (with a higher truck number) on hack 19:04
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
TimToady by calling start() perhaps 19:25
PerlJam doesn't look like it 19:28
moritz &start 19:28
moritz await map &start, &print, &say 19:29
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
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
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
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.
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
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
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
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
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
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.
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?
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
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 :)
meisl jnthn: I did get lost before asking here... 20:16
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?
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
meisl bks 20:35
hoelzro: I do my checks in Czech and my polishing... and I'm drinking Munich beer. 20:36
jnthn hoelzro: and of course the thing before it has to mean "best" :P 20:37
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
jnthn FROGGS: "on the planet" I think :) 20:39
meisl FROGGS, jnthn: something like that, but the prominent thing is piva, imho 20:40
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
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 :/
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
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
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
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 =)
timotimo gnite jnthn :) 20:59
hoelzro night jnthn 21:00
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
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
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
hoelzro night freeze 21:13
dammit
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
timotimo i'm not sure it should be Panda::X ... shouldn't it be X::Panda:: ? 21:22
[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
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
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
RabidGravy which is somewhat the point of the above 21:28
RabidGravy doing the above just aborts before the test report 21:29
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
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
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"
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!"
hoelzro wow, that's spectacular 21:45
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!
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
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
RabidGravy right, nighty night 22:09
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
ugexe timotimo: ah i see what you mean. yeah it shouldnt be #{version} 3 times... it should be 3 different variables 22:14
[ptc] ugexe++ # Travis Perl 6 volunteer :-) 22:25
smls_ What's the difference between -> ($a, $b) {...} and -> [$a, $b] {...} ? 22:26
smls_ both seem to unpack Positional arguments. 22:27
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
timotimo so for ^100 { $a += 5 } will generate += from + 100 times 22:31
hoelzro wait, what? 22:35
so the "+=" magic is redundantly generated 100 times there?
jdv79 what's goin on so early in SLC? i'm flying out sunday myself. 22:41
jdv79 the pre-pre-pre-pre-arrival dinner? 22:42
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
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
timotimo to turn that immediately into $a = ($a // &infix:<+>()) + $b 23:31
but only if the assigned-to variable is a $-sigiled var
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
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