»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
AlexDaniel m: say ** 00:21
camelia rakudo-moar 585619: OUTPUT«**␤»
AlexDaniel O_o
AlexDaniel m: say * 00:21
camelia rakudo-moar 585619: OUTPUT«*␤»
timotimo uruwi: mergesubstates and mergesubrule are about Longest Token Matching
AlexDaniel oh, ok
m: say **,*,**,**,*,** 00:22
camelia rakudo-moar 585619: OUTPUT«**********␤»
timotimo uruwi: we generate an NFA for everything that's involved in LTM, and if you have a call to a subrule in the declarative prefix of a rule, that goes into the computation, too
uruwi: you can find that code inside the nqp repository under src/QRegex/NFA.nqp (i think) - if you can find something that makes that stuff faster, that'd be cool. the optimize method there is also a good candidate for optimization, as it contains a piece of deduplication code in the middle that's ... quadratic, i think? 00:24
there hasn't yet been a good idea for how to make a hashmap apply to that algorithm so that it would become a bit faster 00:25
the optimize function is very busy when you have a module that has lots and lots of operator definitions
only when that module gets compiled first, of course 00:26
ah, i see now 00:28
you have a left-recursing grammar, don't you
i think that might just be a worst-case for our grammars? or something? i seem to recall reading something along those lines 00:29
what do i know :)
dalek kudo-star-daily: c7df306 | coke++ | log/ (8 files):
today (automated commit)
00:39
AlexDaniel b2gills: here? 01:11
b2gills AlexDaniel: Yes 01:13
AlexDaniel m: {substr $^a x$^b+1: 0,$a.chars*$b}(‘test case’, 3.33).say 01:15
camelia rakudo-moar 585619: OUTPUT«test casetest casetest casete␤»
AlexDaniel b2gills: that's 32 bytes I think 01:16
m: {~($^a x$^b+1~~/.**{$a.chars*$b}/)}(‘test case’, 3.33).say
camelia rakudo-moar 585619: OUTPUT«test casetest casetest casete␤»
AlexDaniel I've also tried this but it is a bit longer I think
b2gills m: say "{substr $^a x$^b+1: 0,$a.chars*$b}".chars 01:17
camelia rakudo-moar 585619: OUTPUT«5===SORRY!5=== Error while compiling /tmp/FibgajcYtq␤Placeholder variable $^a may not be used here because the surrounding block takes no signature␤at /tmp/FibgajcYtq:1␤------> 3say "{substr $^a x$^b+1: 0,$a.chars*$b}7⏏5".chars␤ expect…»
b2gills m: say '{substr $^a x$^b+1: 0,$a.chars*$b}'.chars
camelia rakudo-moar 585619: OUTPUT«34␤»
AlexDaniel oh ya including {} that's 34
still shorter :)
b2gills It has to be a function, not a snippet. 01:18
AlexDaniel “Since the rules disallow string repetition,”
ooh!
I completely missed that 01:19
nah then…
damn rules :)
[Coke] botsnack 01:22
ryan_ if I declare an attribute with has $!var, shouldn't I be able to access it in a method with $!var? 03:07
hoelzro ryan_: yes, you should 03:09
ryan_: could you provide an example?
ryan_ class DaySchedule { 03:11
has $!opening;
has $!closing;
method add-appointment($time, $client) {
say $!opening;
say $!closing;
}
}
sub MAIN {
my $sched = DaySchedule.new(opening => 9, closing => 17);
ryan_ $sched.add-appointment(10, ’Fred’); 03:11
}
llfourn ryan_: you can't set $! attributes in .new 03:13
you will be able to set them in them add-appointment
you probably want to make them $. attributes 03:14
ryan_ ok, thank you 03:18
llfourn ryan_: note, you are not alone in expecting to be able to set them in .new. I wrote a module that lets you do it: github.com/LLFourn/p6-AttrX-InitArg
and you're welcome :) 03:19
m: my @data = 1,{},@data,"YEWHAT??"; say @data.perl # amusing new bug 03:20
camelia rakudo-moar 585619: OUTPUT«(my \Array_71124752 = [1, {}, Array_71124752, "YEWHAT??"])␤»
llfourn m: my $data = 1,{},$data,"YEWHAT??"; say $data.perl 03:22
camelia rakudo-moar 585619: OUTPUT«WARNINGS for /tmp/_DkGUH2bs6:␤Useless use of constant string "YEWHAT??" in sink context (lines 1, 1)␤1␤»
llfourn heh
Ben_Goldberg m: my $data = (1,{},$data,"YEWHAT??"); say $data.perl 04:13
camelia rakudo-moar 585619: OUTPUT«(my \List_64275264 = $(1, {}, List_64275264, "YEWHAT??"))␤»
AlexDaniel Ben_Goldberg: rt.perl.org/Public/Bug/Display.html?id=126858 04:15
Ben_Goldberg: as far as I remember it is not supposed to be this way 04:17
AlexDaniel yet I have no idea how one would prevent this :) 04:22
remmie hey! perl6.bat appears to crash my cygwin terminal for some reason 04:28
oh! it seems to be because moar.exe lingers after i ^C 04:29
hmmm, it works fine in cmd.exe 04:36
but after i ^C out it momentarily hangs the cygwin shell 04:37
i tried the unix version in cygwin and it didn't work
skids AlexDaniel: I don't think there's supposed to be an inherent prohibition on self-referential arrays, just eager flattening/iteration in combination with them. 04:57
[Tux] test 23.504 07:03
test-t 12.151
csv-parser 52.929
llfourn wow quietly is cool! 07:45
m: quietly try Cool/2 07:46
camelia ( no output )
llfourn as opposed to
m: try Cool/2
camelia rakudo-moar 585619: OUTPUT«Use of uninitialized value of type Cool in numeric context in code at /tmp/LovdKylcpB line 1␤»
begunner hi, i am a absolute beginner and have following question: I looked for a string in an array with "my @funde = @array.grep/"matcher"/;" If nothing was found, the code with @funde {...} is nontheless executed. Why is this happening? 07:57
llfourn begunner: with @funde { } would be testing for definedness (if I understand you correctly) 07:59
why not use if?
nine m: my @array = <foo bar baz>; my @funde = @array.grep: /"matcher"/; if @funde { say @funde; } 08:00
camelia ( no output )
begunner I used now "if @funde != [ ]" and it worked, but I wanted to understand, why the with block does not behave as expected.
Is a empty list defined?
nine begunner: yes, it is
llfourn yep. just use if @funde { }
if it's empty it will be false 08:01
begunner ok thank you very much
llfourn m: say ?[];
camelia rakudo-moar 585619: OUTPUT«False␤»
begunner no i have understood
llfourn no worries :)
RabidGravy marning! 09:08
llfourn o/ 09:14
pmurias jnthn: should columns returned by HLL::Compiler.line_and_column_of start from 0 or 1? 09:16
dalek p: dc7d3d5 | (Pawel Murias)++ | src/HLL/Compiler.nqp:
Convert tabs to spaces.
09:26
p: 5ac9283 | (Pawel Murias)++ | src/HLL/Compiler.nqp:
Implement line_and_column_of.
p: 18ca9a7 | (Pawel Murias)++ | src/vm/js/ (3 files):
[js] Generate source-maps with column info.
jnthn pmurias: I'd say "same as we do for line numbers", which I guess are 1-based 09:59
pmurias: It's for human output I guess, and even programmers seem to agree files start at line 1 :) 10:00
moritz it's a conspiracy of all those editors 10:00
jnthn A conspiracy led by Fortran programmers! /o\ 10:01
moritz speaking of conspiracy theories: journals.plos.org/plosone/article?i...ne.0147905 is quite interesting 10:18
it's a mathematical model for the likelyhood that a big conspiracy is uncovered from within 10:19
moritz and basically the big ones (climate, moon landing, cancer treatment) are far too big to survive more than a few years -- and that's even without considering external investigation 10:19
jnthn But what if this paper is a conspiracy to make us less likely to believe conspiracies?! *gasp* :) 10:26
moritz my question would be more like: what if the baseline likelyhood for exposing conspiracies is much lower? Because, we only know of exposed ones. There could be thousands of unexposed conspiracies that we can't even dream of right now, each involving millions of people! 10:28
lizmat good *, #perl6! 10:53
frankjh q 11:13
dalek kudo/nom: b1a9e62 | lizmat++ | src/core/DateTime.pm:
Give DateTime.new a positional candidate again

Also adapt .perl to use the faster positional interface.
Please note this was not done by renaming the new-from-positional private method to "new", because we probably want to be able to programmatically recognize added methods / candidates in the (near) future, e.g. by adding a trait.
11:27
jnthn news.perlfoundation.org/2016/02/gra...forma.html is looking for feedback from the community 11:30
moritz jnthn++ 11:32
rindolf Hi all. Que pasa? 11:34
dalek c: 9454fb3 | RabidGravy++ | doc/Type/Semaphore.pod:
Add Semaphore doc as per #393

From @MARTINMM
11:38
lizmat jnthn: I'm not sure I understand what "make await non-blocking" means... I mean, it's supposed to wait, isn't it ? 11:41
moritz lizmat: but it doesn't need to block a thread 11:43
lizmat that's not clear to most people from the description :-)
jnthn What moritz said, and I think it's the most reasonable interpretation :) 11:47
jnthn Anyways, if there's a question posted in the comments I'll happily post an explanation :) 11:50
lizmat so, technically, would you be able to force a deadock if you would have sufficient awaits at the moment? 11:51
jnthn Not just technically :)
moritz we actually had that 11:52
jnthn Any kind of recursive divide/conquer today will, if not carefully done, be likley to exhaust the thread pool.
moritz somebody wrote a blog post about it
lizmat ah, ok, I see, must have missed the blog post 11:53
dalek osystem: 3f61e9d | RabidGravy++ | META.list:
Switch JSON::Infer to use META6.json
lizmat or it didn't register with me that that was the underlying reason
moritz (it's been a while, like, certainly last year) 11:54
RabidGravy Yeah Tinky gets in an awful state if there are more than a certain number of validators being awaited on 11:56
RabidGravy So am I going to finish the CouchDB thing this week? "Only" authentication and attachments left to do 12:02
or am I going to get distracted and right something else off the TODO list 12:03
dalek kudo/nom: 1654832 | lizmat++ | src/core/DateTime.pm:
Make DateTime fully subclassable

For additional public attributes, settable by name
12:05
Skarsnik good luck RabidGravy 12:11
RabidGravy lizmat++ # I've actually got a cheeky "augment class DateTime { }" in Chronic :-\ 12:13
lizmat yeah, I figured Date / DateTime would be common targets for subclassing 12:14
Skarsnik what was blocking to subclass Date? private new? 12:19
lizmat yup 12:23
dalek kudo/nom: 5648fea | lizmat++ | src/core/ (12 files):
Change fake BUILD methods to SET-SELF

If a method is called BUILD, it has a special meaning for the default way of building objects. These methods only shared the name, but were never intended to be called by BUILDALL.
Having a SET-SELF in a class, usually means the class is not subclassable as is. By making the method private, it should hopefully optimize even better in the future
12:55
lizmat hoelz.ro/blog/state-of-multi-line-input # nice blog post, hoelzro++ 13:22
dalek kudo/nom: cddf5da | lizmat++ | src/core/ (29 files):
Mark all BUILD methods as returning nothing

The remaining BUILD methods in core are intended to be called by the default building sequence, which does not expect a return value. Hopefully we'll see some benefit of this speed-wise now, or in the
  (near) future.
13:25
Skarsnik any feedback on gist.github.com/Skarsnik/c4bc15b75b883f69fde1 ? 13:26
lizmat Skarsnik: no anything sensible from me, I'm afraid 13:27
*not
Skarsnik hm, don't know why github put the output before x) 13:28
perlpilot Skarsnik: it orders the files alphabetically. 13:38
Skarsnik I don't remember doing this?
whatever I change the ouput name x)
perlpilot Skarsnik: I don't quite understand what ENV is for 13:39
perlpilot "will be used instead of the rest" used for what exactly? 13:39
Skarsnik to determine the library path x) 13:40
look at the second command in the output
perlpilot So, PERL6_LIBGUMDO would be a full path to the .so ? Or could it just be relative to LD_LIBRARY_PATH? Both? Something else? 13:41
s/DO/BO/
The example you mention doesn't have a version ... did it intuit the version number somehow? 13:42
Skarsnik both probably work x)
basicly the library-name is something given to dlopen 13:43
a full path or a partial path will work (if the file is in LD_LIBRARY_PATH 13:44
perlpilot Skarsnik: anyway ... my general reaction is +1 :)
hoelzro o/ #perl6 13:47
bioexpress Hi! To I have to give Travis authorization to access my accout to get Travis test results on modules.perl6.org? 13:48
hoelzro lizmat: thanks! 13:49
dalek osystem: 774150f | sylvarant++ | META.list:
Switch Avro and Compress::Brotli to Json
13:52
lizmat afk for a few hours& 14:04
El_Che does panda have a magic incantation to reinstall a module (e.g. once installed by 'panda install .') 14:07
flussence --force? 14:09
hoelzro did Panda change how modules are supposed to extend the build process? I'm getting this error when trying to build Linenoise now: Redeclaration of symbol Build 14:14
hoelzro stmuk: do I talk to you about getting my Perl 6 blog entries on pl6anet? 14:19
RabidGravy boom 14:55
ugexe hoelzro: there were changes to `require` in the latest rakudo and how it handles importing stuff 15:11
that sounds like it might be consistent with that
zef appears to still handle the Build ok, but it spawns it in a new process whereas panda `require`s it into the main program 15:13
awwaiid Greetings. I made some larger button-looking links for downloading Rakudo Star from rakudo.org. The idea is to put this at the top of the main "How to get Rakudo Perl 6" page, but for review it is separate. Check it out, rakudo.org/how-to-get-rakudo/download/ 15:16
timotimo ^- my name is timotimo and i approve this message 15:17
awwaiid hehe 15:18
awwaiid timotimo: anyone in particular we should get feedback from on that? 15:19
timotimo not sure 15:20
moritz +1 from me 15:21
jnthn +1 15:22
hoelzro ah ha 15:29
Skarsnik awwaiid, this look good 15:37
perlpilot awwaiid: nice! 15:40
ugexe maybe the big download button could download helpful ask toolbar and we can put the rakudo link in small print under it 15:41
awwaiid good idea ugexe. gotta fix my affiliate link...
flussence while we're fixing rakudo.org, how about putting pl6anet in that “Other Sites” sidebar? 15:42
awwaiid crazy talk 15:44
flussence crazy talk would be asking to remove the links that haven't been active in 3 years :) 15:45
Skarsnik hm constant PIKO = somefunction is not evalued at runtime? 15:47
flussence m: constant foo = say 'bar'; compile-time-error 15:48
camelia rakudo-moar cddf5d: OUTPUT«bar␤5===SORRY!5=== Error while compiling /tmp/OZDuhilvtx␤Undeclared routine:␤ compile-time-error used at line 1␤␤»
moritz Skarsnik: RHS of a constant declarator is evaluated at compile time, yes
flussence m: INIT constant foo = say 'bar'; compile-time-error 15:48
camelia rakudo-moar cddf5d: OUTPUT«bar␤5===SORRY!5=== Error while compiling /tmp/w5FmK8QhFb␤Undeclared routine:␤ compile-time-error used at line 1␤␤»
Skarsnik damn that annoying 15:49
flussence m: my \foo = say 'bar'; compile-time-error
camelia rakudo-moar cddf5d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Cbajticz4j␤Undeclared routine:␤ compile-time-error used at line 1␤␤»
moritz if you want to avoid the error message: 15:49
moritz m: constant foo = say 'bar; BEGIN exit 0 15:50
camelia rakudo-moar cddf5d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/XcGyu02jyW␤Unable to parse expression in single quotes; couldn't find final "'" ␤at /tmp/XcGyu02jyW:1␤------> 3constant foo = say 'bar; BEGIN exit 07⏏5<EOL>␤ expecting any of:␤ argumen…»
moritz m: constant foo = say 'bar'; BEGIN exit 0
camelia rakudo-moar cddf5d: OUTPUT«bar␤»
moritz m: my \foo = say 'bar'; BEGIN exit 0
camelia ( no output )
Skarsnik I though it will delay the evuluation of the constant since the right part is not know 15:50
constant should be named compilevar x) 15:51
flussence m: my \foo := 'bar'; say foo; foo = 'baz' # runtime constant-ish var
camelia rakudo-moar cddf5d: OUTPUT«bar␤Cannot modify an immutable Str␤ in block <unit> at /tmp/j7WXJIVhkr line 1␤␤»
Skarsnik Yes, but it's not the same meaning that the word constant for me x) 15:52
moritz it's very much inspired by perl 5's "use constant ...."
flussence we have to give the compiler *some* way to cheat, after all 15:53
Skarsnik It's really bad, for me it's confusing
just looking at the keyword 15:54
jnthn "I want constants...THAT MIGHT CHANGE!!!" :P
Skarsnik I want constant that are constant. not constant at compile time
jnthn If your data were actually constant, that distinction wouldn't matter one bit. :) 15:55
abraxxa Skarsnik: read-only variable?
p6newbee hi 15:57
perlpilot Skarsnik: maybe you want a once block?
Skarsnik I mean an use case for me will be: my constant stuff = $config<stuff-value>; or even my constant piko = %*ENV<somevenvalue>;
moritz just use my \stuff = ...'
s/'/;/
Skarsnik I am not talking how achieving what I want. I just found that the constant keyword is not good
it's totatly not obvious it's a compile time value 15:58
it should be named compileconstant or something like that x) 15:59
jnthn *sigh*
It's not going to change. Stop moaning about it.
moritz Skarsnik: your complaint has been heard. 16:00
jnthn
.oO( It's not going to change because...it's constant! :D )
Skarsnik I guess it's not going to change. It's just very confusing. and the sigilless notation look like a hack for me x) 16:01
b2gills 「use constant」 runs compile time in Perl 5 too, it's just that happens every time you run it. 16:02
geekosaur actually that's your warning that it's not a runtime thing
Skarsnik but with precomp is an issue inside lib if you use to store a ENV value
for example
timotimo i wonder if we should put a little blurb above the announcements on the "home" site of rakudo.org, too
Skarsnik Since script are not precompiled you are probably fine with constant piko = %*ENV<PIKO> but it will not work on a lib 16:03
awwaiid rakudo.org/how-to-get-rakudo/ now updated with download link-button-things
b2gills Don't use a compile time feature if you want it to run at runtime 16:04
perlpilot Skarsnik: You seem to be more concerned about when initialization happens than the "constantness". Ergo, you should look at phasers or phaser-like things IMHO.
timotimo awwaiid: at the moment, clicking those links opens a new tab for a split-second, which immediately closes again; can we change the links so that it won't do that?
timotimo target=_blank may be the culprit? 16:05
Skarsnik I am just complaining that the keyword constant is confusing for something that happen at compile time
moritz yes, we heard that.
RabidGravy GAH! I've just realised why http useragent gets the "compiled in failure"
thanks Skarsnik!
timotimo because of "constant"? 16:06
awwaiid yes
RabidGravy yeah
"constant $HRC_DEBUG = %*ENV<HRC_DEBUG>.Bool;"
Skarsnik see. I am pretty sure it will be a weird issue. since in a script it 'work' but not for lib that are precompiled :)
timotimo ah
awwaiid timotimo: target _blank removed
timotimo m: $foo = %*ENV<lalala>:exists.Bool; say $foo.perl 16:07
camelia rakudo-moar cddf5d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/9bNUzxhP1i␤Variable '$foo' is not declared␤at /tmp/9bNUzxhP1i:1␤------> 3<BOL>7⏏5$foo = %*ENV<lalala>:exists.Bool; say $f␤»
timotimo m: my $foo = %*ENV<lalala>:exists.Bool; say $foo.perl
camelia rakudo-moar cddf5d: OUTPUT«Bool::False␤»
timotimo m: my $foo = %*ENV<lalala>:exists:v.Bool; say $foo.perl
camelia rakudo-moar cddf5d: OUTPUT«Bool::False␤»
RabidGravy it doesn't want to be constant at all
timotimo oh
of course it doesn't :)
Skarsnik it should be called static x)
timotimo static means something completely muddy, though 16:08
static is more like state in perl6
perlpilot I'm sure he's joking :)
RabidGravy well in that case it just wants to be a lexical variable
Skarsnik in my head static is associated with compile, I think it's because of the static keyword before function in C that force the sub to not be seen outside his file (comp/translation unit?) 16:10
timotimo we can hardly expect people think "static" for variables in p6 works like "static" for functions in C 16:11
when in C, static for variables means something very different
Skarsnik Yes, I know 16:12
that really weird
interesting BEGIN is run after the first compile time? 16:13
flussence constant result = $*IN.slurp; exit result; # look, an AOT compiler!
perlpilot "first compile time"?
flussence BEGIN is run during compile time... 16:14
m: BEGIN say '0'; constant a = say '1'; BEGIN say '2';
camelia rakudo-moar cddf5d: OUTPUT«0␤1␤2␤»
flussence m: BEGIN say '0'; constant a = say '1'; say 'foo'; BEGIN say '2'; 16:15
camelia rakudo-moar cddf5d: OUTPUT«0␤1␤2␤foo␤»
Skarsnik Ah it's run in order
root@testperl6:~/piko/cpp/gptrixie# perl6 -e 'constant FOO = %*ENV<FOO>; BEGIN { %*ENV<FOO> = "Hello"}; say FOO' 16:16
(Any)
root@testperl6:~/piko/cpp/gptrixie# perl6 -e 'BEGIN { %*ENV<FOO> = "Hello"}; constant FOO = %*ENV<FOO>; say FOO'
Hello
flussence m: BEGIN say '0'; constant a = say '1'; BEGIN BEGIN say '2'; # I hope this doesn't change it...
camelia rakudo-moar cddf5d: OUTPUT«0␤1␤2␤»
flussence m: BEGIN say '0'; constant a = say '1'; BEGIN INIT FIRST say '2'; # this might? 16:17
camelia rakudo-moar cddf5d: OUTPUT«0␤1␤»
flussence well that's weird.
perlpilot not really ... you don't have a loop 16:18
flussence oh, duh
m: BEGIN say '0'; constant a = say '1'; BEGIN INIT say '2';
camelia rakudo-moar cddf5d: OUTPUT«0␤1␤2␤»
flussence and there's no other way to jump the queue like that, I guess
Skarsnik hm INIT is fist run time? Should it ouput 2 twice? 16:19
or it's a modifier on BEING?
timotimo the code after BEGIN gets run at compile time. the code inside that has a phaser that runs say '2' at the INIT time of that compile-time-run code 16:20
perlpilot Skarsnik: read S04:1369 16:21
timotimo damn it, i still haven't set up synopsebot >_> 16:22
[Coke] S99:NELSON 16:34
Skarsnik how do I catch note in tests?
m: use Test; dies-ok { CONTROL { when CX::Warn { .die } }; note "hello"}, "Foo";
camelia rakudo-moar cddf5d: OUTPUT«hello␤not ok 1 - Foo␤␤# Failed test 'Foo'␤# at /tmp/5uPO5Pdmvx line 1␤»
geekosaur note doesn't die 16:35
it's just a write to stderr with a newline
or if you prefer, say to $*STDERR instead of $*STDOUT
Skarsnik hm, ok seem more difficult to test 16:36
Skarsnik or should I raise the note in NC that say 'NativeCall: Consider adding the api version of the library you want to use, sub foo is native(foo, v1)' to a warning? I wanted that just being in information than an 'error' 16:37
geekosaur I'd make it a warning (well, I'd make it an error actually >.> ) 16:38
geekosaur considers not specifying the ABI expected to be a bug waiting to happen
Skarsnik well some lib does not play the ABI version game 16:40
like mysqlclient, their versionning is just... versionning... like so.16 is the same abi than so.22 16:41
and I don't if I can raise this to a warn, since it was not in x-mas release x) 16:42
know
geekosaur that's another bug waiting to happen (although I suspect in their case it's actually political vs. technical; technical assumes if the client and server are not tightly version-tied, they should be completely separated) 16:43
rudi_s_ Hi. I'm looking for a perl5-like do in Perl6. I have a "config file" (which is actually a perl6 program) and I'd like to load it from the main program. How can I do this so I can access (specific) variables in the config file and provide functions to it. 17:03
jnthn Well, EVALFILE gets you an EVAL of the code and it'll be evluated with the lexicals (e.g. subs) of the calling scope available. Getting access to things that it declares is trickier, though. You could instead my %vars = EVAL slurp('file') ~ '; MY::'; 17:06
Which'll make the code evaluate to the Stash of lexical variables declared in the config file 17:07
ugexe you could probably also do something like `require "/home/perl6/my-project/bin/config-script";` if you set up your exports/imports 17:08
rudi_s_ jnthn: I don't need access to the stuff it declares, but access to functions and the values they use. Sample: my $x = 4; sub foo { $x = 10 }; EVAL_MAGIC_HERE('path/to/file'); 17:10
And $x is either 4 or 10 if EVAL_MAGIC_HERE called foo or not.
jnthn Oh, then a plain EVALFILE should do it 17:11
rudi_s_ And EVAL_MAGIC_HERE should be able to access e.g. $y (which is declared like $x) as well.
jnthn It's just like EVAL but takes a file name 17:12
rudi_s_ Where can I find documentation for that?
doc.perl6.org doesn't find it.
jnthn Indeed it doesn't... :( But docs for doc.perl6.org/routine/EVAL apply except EVALFILE takes a filename. 17:14
And reads the code from that file.
nine rudi_s_: one of Perl 6' key features is its excellent parsing abilities. Considering we have those, why not use a more human friendly config format? 17:18
rudi_s_ nine: Because I want a programming language to configure my system. It removes many unnecessary and complicate features like embedding a template engine for better configurability. 17:20
nine rudi_s_: are you the only user of this system? 17:21
rudi_s_ nine: No. 17:23
nine rudi_s_: many programmers come to the same faulty conclusion that the flexibility offered by using a full programming language for configuration outweighs the downsides. Sysadmins tend to disagree. It's no fun having to figure out Erlang's syntax just to be able to set up an XMPP server. 17:25
mst executable configs are satan, especially for systems configuration 17:26
hankache hello * 17:27
nine rudi_s_: the fun really starts when tools try to automatically change the configuration of some service, for example for fully automated upgrades. The halting problem makes this theoretically impossible with touring complete configuration
rudi_s_ nine: True. But I'm a programmer and a sysadmin and I want a flexible system which is easy to read/write (which I think works with perl6) but still extensible (which is a given with Perl6).
I know that it has some issues, but I think that's a fine trade-off. 17:28
nine: Yeah. But that's not a use case in my case.
nine not now at least
rudi_s_ True. But I think that's a good assumption in my setup. 17:29
pmurias aren't excutable config file roughly eqivalent to just exposing the program as a module? 17:29
rudi_s_ mst: "systems configuration?"? 17:30
jnthn: Thank you! Works fine.
mst rudi_s_: anything that runs on a server and needs actual uptime. 17:31
ok, so, here's my suggestion: make really really sure that your config subsystem is pluggable
that way you can carry on down the route you're currently going, since it's clear that you're going to have to learn this one the hard way
and if you ever do find yourself suddenly missing both feet, you can replace the subsystem then :) 17:32
rudi_s_ mst: Ah.
I think that's fine for me ;-)
stmuk hoelzro: yeah either submit a PR github.com/stmuk/pl6anet.org or just tell me the atom/rss link 17:37
donaldh o O (Given perl 6's built-in grammars, I'd be writing a grammar for config) 17:38
mst rudi_s_: also, you can gradually evolve your programmable config to be steadily more DSL-like, because that'll make it nicer anyway 17:38
rudi_s_: at which point turning it into a grammar later should be relatively easy if you do decide to
mst donaldh: yeah, same. but if he wants to go down the rabbit hole, I can't stop him, so I'll settle for making sure he has a plan B 17:39
rudi_s_ said he was a sysadmin, and therefore I have faith that he'll actually care about having a plan B ;)
hoelzro stmuk: thanks, will do! 17:40
donaldh turing complete config files are a huge attack surface 17:41
rudi_s_ mst: Yeah, the idea is to be as DSL-like as possible, but still be extensible when it's useful. 17:41
rudi_s_ Not applicable in my case. 17:41
mst I'm not thinking about attack surface, only debugging surface
dalek p: 2a21a59 | (Pawel Murias)++ | src/vm/js/RegexCompiler.nqp:
[js] Remove (broken) debugging leftover
17:46
RabidGravy is it Radiator or some other evil RADIUS server that has all its configs in Perl? That was the satan 17:48
hoelzro stmuk: here's the URL: hoelz.ro/perl6.rss
dalek kudo/nom: b5c6a49 | lizmat++ | src/core/Failure.pm:
Creating a Failure is now more efficient
17:49
RabidGravy gives up for the second time to debug Websocket
somehow the equivalent of 17:51
m: my $s = supply -> \s { }; say $s.Channel.receive
camelia rakudo-moar cddf5d: OUTPUT«Method 'phasers' not found for invocant of class 'Code'␤ in block <unit> at /tmp/rMPaX1EQyj line 1␤␤»
RabidGravy is happening
DrForr o/ 17:53
stmuk hoelzro: done 17:55
DrForr Question about junctions - I understand they can't be introspected, but is there a way to get access to what is being matched against? I know it's only one term in this case, if it helps. 17:56
DrForr Aha, just worked around it. 18:02
hoelzro stmuk: thanks! 18:03
dalek kudo/nom: 659f2e9 | lizmat++ | src/core/Distribution.pm:
Prevent double lookup of RAKUDO_PRECOMP_DIST
18:09
Skarsnik RabidGravy, the websocket client or server. 18:23
RabidGravy server 18:24
Skarsnik damn
Skarsnik still nobody to write a websocket client async module? x) 18:24
FROGGS o/ 18:35
lizmat FROGGS o/ 18:36
FROGGS :o)
hoelzro o/ FROGGS
vendethiel \o 18:37
hankache o 18:37
sortiz \o #perl6 18:39
dalek kudo/nom: 90b31ae | lizmat++ | src/core/Str.pm:
Mark some more methods as not returning anything
FROGGS huh, a 'use Foo;' in Foo.pm makes it infiniloop >.< 18:44
dalek kudo/nom: 3c6e44e | lizmat++ | src/core/Str.pm:
Remove superflous call
18:48
stmuk "How to be a 10x engineer: help ten other engineers be twice as good." 18:49
hankache heh
RabidGravy WAHAY! 18:52
fix0rificated the Websocket!!
hankache is there another way to write multiline comments other than =begin comment ............. =end comment? 18:53
something a la /** .............. **/
DrForr #`( .. ) 18:54
(shades of Lisp)
geekosaur or with [] or {} or other matching brackets 18:55
hankache thanks
Skarsnik =begin and =end ? 18:57
timotimo that also works, but it'll end up in the $= variables, which you may or may not want 18:58
dalek kudo/nom: 3f469f1 | lizmat++ | src/core/Str.pm:
Make triage_substitution a private method

Instead of a multi with a where clause: should make substitution a bit faster, especially when doing many of them
19:00
RabidGravy what larks 19:14
lizmat spring surprise 19:14
dalek kudo/nom: b28da05 | lizmat++ | src/core/Str.pm:
Make increment_index a private method

Instead of a multi + some more micro-opts
19:24
RabidGravy micro-opts++
dalek c: 8ab319f | jnthn++ | doc/Type/Cool.pod:
Extend coverage of EVAL.
19:32
c: 24cb91d | jnthn++ | doc/Type/Cool.pod:
Document EVALFILE.
nine Note to self: always write the user of an API first. Keeps you from pushing embarassing API mistakes... 19:36
FROGGS yeah 19:37
lizmat nine: personally, I prefer a bit of a whirlpool approach, but your note is well taken
nine Why the hell did I think an API for finding an installed module would be a good match for finding out if a dist is already installed? Why not provide a method that actually looks for a dist?
lizmat nine: wasn't that what .candidates was ? 19:38
nine lizmat: yes, .candidates let you look for a module same as .resolve now does. But a tool like panda is actually more interested in dists, not modules. 19:38
lizmat nine: ah, good point :-) 19:39
dalek kudo/nom: e588d93 | lizmat++ | src/core/Str.pm:
Remove superfluous return
Skarsnik Ok, my last iteration before doing a PR gist.github.com/Skarsnik/c4bc15b75b883f69fde1 19:41
Skarsnik gah of course that does not work since the GUMBO_LIB has no type now that is executed at runtime >< 19:51
Skarsnik it should work like auto in c++ xD 19:51
dalek kudo/nom: 4cd2875 | lizmat++ | src/core/Str.pm:
Change curly into postfix if

And reorder conditional because this seems to only be applicable when squashing, so check that first!
19:52
lizmat afk for some deadpool, then work on P6W & 20:00
orbus apparently 2016.01 came out and I totally missed it 20:05
orbus compiles 20:06
Skarsnik hm, I am confused. I don't get this error gist.github.com/Skarsnik/28555eade4bd5a40d036 20:10
geekosaur suggest you check with "dd GUMBO_LIB" to make sure it's what you think it is 20:23
Skarsnik dd will be executed at runtime, trait are compile time x) 20:24
geekosaur so comment out the third one
Skarsnik but it should fallback on the non typed version of the trait?
Skarsnik I mean, it's etheir it don't find a specialised candidate and use the generic version or use the right one. but why it complain it find nothing? 20:26
commenting the 3 trait still does not work. hum 20:29
oh it's the \GUMBO_LIB that confuse it. using $GUMBO_LIB instead work 20:31
well I get Any as type. damn 20:32
perlpilot yep, because your initilization happens at runtime while your traits are compile time. 20:33
Skarsnik m: use NativeCall; my \foo = "Hello"; sub piko is native(foo) { * };
camelia rakudo-moar 4cd287: OUTPUT«5===SORRY!5=== Error while compiling /tmp/QtJ3n1Lowq␤Can't use unknown trait 'is native' in a sub declaration.␤at /tmp/QtJ3n1Lowq:1␤ expecting any of:␤ rw raw hidden-from-backtrace hidden-from-USAGE␤ pure default DEPRECATED i…»
Skarsnik Look like a parse bug? 20:34
probably fail with every trait 20:35
jnthn No, \foo isn't bound until runtime 20:35
But traits are applied at compile time
So it's trying to apply the trait with Mu
perlpilot taps the mic 20:36
*tap* *tap* *tap* Is this thing on?
Skarsnik perlpilot, it's a bit a annoying that it does not guess the type from the sub at the right signature (it expliclty return a type)
jnthn perlpilot: heh, was distracted by valgrind output :) 20:37
perlpilot Skarsnik: type-inference isn't a thing (yet)
Skarsnik jnthn, hm so Mu can't be a value for the trait argument?
jnthn Skarsnik: Well it *can* but only if a trait declare it accepts that. 20:38
And I don't see why `is native` would
Skarsnik well nc declaration is just the 'generic' one. 20:40
jnthn I've said more than once before now that the right way to provide a richer interface to native resolution would be to pass a type there that implement some interface, perhaps formalized by a role.
Skarsnik That why I did jnthn 20:40
jnthn OK, good.
Skarsnik but I wanted to hide the type from the user so he does not have to type the value
jnthn Why? 20:41
perlpilot Skarsnik: have you heard about waterbeds and language complexity? :)
Skarsnik Well it will be: my NC-Library-Handle $LIB = register-native-lib(....); 20:42
sortiz Anyone need to create an empty (zeroed) Buf of a given size? See github.com/rakudo/rakudo/pull/712 and comment
Skarsnik annoying we have to put the sigil x)
sortiz, could be useful with NC probably 20:43
sortiz Skarsnik, yes, that's the idea.
jnthn Skarsnik: But...you're passing it off to a trait, so it should be declared at compile time, not runtime
jnthn "my" is too late 20:44
Skarsnik but compile time sucks with precompile
jnthn No, you suck at designing things to work WITH Perl 6 rather than against it.
Skarsnik in this case
jnthn class MyLibrary { method resolve() { ...called on first invocation of trait... } }; sub foo() is native(MyLibrary) { * } 20:45
ugexe m: say Buf.new( 0 xx 5 )
camelia rakudo-moar 4cd287: OUTPUT«Buf:0x<00 00 00 00 00>␤»
Skarsnik NC solve the libname the first time a sub is called
jnthn Skarsnik: Right, which is at runtime. 20:46
sortiz Skarsnik, 'is native' accepts a Callable, that way you can move the evaluation till runtime.
Skarsnik the Callable solution is aweful for me
jnthn Why?
perlpilot is totally confused.
perlpilot Skarsnik: I have no understanding of your motivations here. It seems your constructing a situation such that any solution is deliberately wrong or broken in some way. 20:47
s/your/you're/
oops, s:2nd/your/you're/ actually 20:48
Skarsnik I base this on a 1-2 common usage: Knowning the lib throug some base info the developper know (basename and the version), allowing the user to use a ENV variable to locate the lib. Or find the lib at runtime like with pkg-config 20:51
jnthn sortiz: I left a comment on the PR 20:53
Skarsnik actually if I want to do that I need to give a Callable to NC. It's not really friendly (and I need to use NC interntal to not rewrite the guess_lib_name). Here I want just to build a 'blackbox' type
And the issue with the Callable solution, you don't really control when it will be called 20:55
jnthn Why do you want to control when it will be called? 20:56
Skarsnik well using the %*ENV example, maybe the env will be changed before your C lib call, like if you work with multiple lib 20:58
jnthn So, solve that inside the sub with INIT?
sub resolver() { INIT my $foo = %*ENV<blah>; ... } 20:59
That'll capture what it was at startup (yes, even if pre-comp'd)
perlpilot Would using an "our" var do the same? (If he wanted to continue with the same general approach) 21:01
Aren't our vars initialized at INIT time?
jnthn perlpilot: Yeah, though have the side-effect of being our-scoped :) 21:02
Skarsnik Oh I need to patch DBIish :(
It use a constant MYSQ_LIB = %ENV<mysql> || (regular stuff);
and well, that does not really work 21:03
worked before precomp x)
sortiz jnthn, The use case of :elems is only for pre-allocate some slots, not for fix its size. Right now Blob size if fixed and Buf can grow, but in both cases, if I need some initial size, the alternatives are expensive. 21:19
s/if fixed/is fixed/
jnthn sortiz: OK, then I think it needs to be more like initial-elems or so 21:20
jnthn TimToady may also have some views, given it's a naming question :) 21:20
perlpilot it would be nice if you could do something like :init(5) too :)
(to initialize the elements to the number 5) 21:21
sortiz jnthn, Yes. Thank you. I'll wait for a decision. 21:24
sortiz perlpilot, For that case I prefer something like Blob.fill(...) 21:26
TreyHarris On Rakudo 2016.01.1 built on MoarVM version 2016.01, running on darwin 15.2 (El Capitan), the following one-liner causes the moar process to runaway, quickly using up all available CPU: 21:30
perl6 -e 'say so "foo" ~~ /<.ws>+/;'
Should I report this as a bug?
Skarsnik m: say so "foo" ~~ /<.ws>+/; 21:31
camelia rakudo-moar 4cd287: OUTPUT«(timeout)» 21:32
Skarsnik I am not sure how so work, but it look like a bug x) 21:33
TreyHarris m: say so "foo" ~~ /<.ws/;
camelia rakudo-moar 4cd287: OUTPUT«5===SORRY!5=== Error while compiling /tmp/FUWthKeDjt␤Unable to parse expression in metachar:sym<assert>; couldn't find final '>' ␤at /tmp/FUWthKeDjt:1␤------> 3say so "foo" ~~ /<.ws7⏏5/;␤ expecting any of:␤ term␤»
TreyHarris oops
m: say so "foo" ~~ /<.ws>/;
camelia rakudo-moar 4cd287: OUTPUT«True␤»
TreyHarris the plus makes it go runaway
Skarsnik: it's not the so. 21:34
m: say "foo" ~~ /<.ws>+/;
jnthn TreyHarris: <.ws> can match nothing
TreyHarris: And can match nothing infinitely
camelia rakudo-moar 4cd287: OUTPUT«(timeout)»
jnthn You don't need to (and shouldn't) quantify <.ws>
Skarsnik ws is whitespace?
jnthn Yes, but with the !ww behavior (unless you override it) 21:35
Skarsnik maybe it should warn?
TreyHarris jnthn: in Perl 5 you can't cause an infinite loop that way, so I didn't know if it was a bug or not. That's why I'm asking.
Skarsnik I added a compile time solution gist.github.com/Skarsnik/c4bc15b75b883f69fde1 21:36
skids RT#75586 probably covers it 21:37
jnthn TreyHarris: There's at lesat one RT ticket tracking the issue of whether quantifying empty things should do that or not.
skids rt.perl.org/Public/Bug/Display.html?id=75586 # alas poor synopsbot, I knew ye well
TreyHarris jnthn: ah, my search-fu wasn't good enough to find it. That's why I asked here :)
jnthn We're aware of it, just undecided on how to fix it (or whether to, though I think we generally consider it desirable to if possible) 21:38
jnthn thought "oh, that's easy" at least once, then it wasn't :)
Forget exactly why
Skarsnik just warning about it it's not easy thou? 21:41
jnthn I think if we can detect it well enough not to build up an infinite number of backtrack points, we could not do that rather than do the warning :) 21:42
mst that looks like at least the reasonably normally runnable into cases could be made to throw an exception telling you what to do instead 21:54
flussence maybe we need a trait_mod on regex-y things that turns quantifying them into a compile-time error 21:54
MadcapJake is there a concise way to test if some code causes a certain exception to throw? «dies-ok» doesn't let you specify the error type. 21:58
flussence
.oO(or a Sufficiently Smart Compiler that can detect when you try to quantify a declarative regex that can match 0..*)
m: use Test; say &throws-like 21:59
camelia rakudo-moar 4cd287: OUTPUT«sub throws-like ($code, $ex_type, $reason?, *%matcher) { #`(Sub|95507800) ... }␤»
MadcapJake oh! thanks flussence! don't know how i missed that 22:00
jnthn throws-like is nice :) 22:01
flussence does that work for CX::Warn too?
jnthn Not sure 22:02
flussence that's a CONTROL-ish, not a CATCH-ish, so I'd guess not
jnthn Right
It'd have to explicitly do so
m: use Test; throws-like { warn 'foo' }, CX::Warn;
camelia rakudo-moar 4cd287: OUTPUT« 1..2␤foo in block at /tmp/H1RvP4jmhb line 1␤ not ok 1 - code dies␤ ␤# Failed test 'code dies'␤# at /tmp/H1RvP4jmhb line 1␤ ok 2 - # SKIP Code did not die, can not check exception␤ # Looks like you failed 1 test of 2␤not ok…»
MadcapJake i've written a whole bunch of try/catch blocks with a series of pass/flunk style tests :S so I'm really glad to cut a lot of that out 22:03
dbrunton I have a few questions about doc/Supply.pod, and I'm not completely certain where to raise them. 22:05
Anyone here interested and/or have a few minutes to talk it through? 22:06
jnthn dbrunton: Have a few minutes...hopefully have the brane for it too :) 22:08
dbrunton hee hee, okay :) 22:11
Starting with the Promise method-
The doc has a couple places where it doesn't match the implementation and tests, specifically-
Supply.new - could be Supplier.new.Supply, but 22:12
later, the Supply $s has emit called on it, which is also not a method on a Supply, but on a Supplier, so maybe it needs to have a Supplier around.
So, something like this works: my $r = Supplier.new; my $s = $r.Supply; 22:13
dbrunton Then the emit down below can be changed to $r.emit. 22:13
dbrunton But this is where it starts to get a little tangled, because the promise acts a little different as well. 22:14
Specifically, $p.then doesn't call its method until $r.done, which is, again, not exactly what's documented. 22:15
jnthn Yeah, there were a number of changes, and it seems the docs weren't updated to match :)
dbrunton Yeah, that part's fine, I'm just not certain which behavior is correct- should I just make it so the documentation reflects the current rakudo behavior? 22:16
I think it's possible there is a bug or two in there (specifically, I'm not certain the $p.then behavior in rakudo is correct, and by not certain, I just mean not certain :))
I feel competent to get rid of all the Supply.new calls and replace them with Supplier.new.Supply or something equivalent :) 22:17
I could also happily muddle through this and send it along as a pull request for discussion if that's more sensible, I just wouldn't want it to get merged without some pretty thorough review :) 22:18
dalek c: 6ddeaa2 | jnthn++ | doc/Type/Supply.pod:
Fix Supply.Promise docs; dbrunton++.
22:21
jnthn Yeah, if there's more places that need a similar tweak, a PR would be good. 22:22
The docs were certainly in the wrong for the case of .Promise
They were right at some point in history :) 22:23
dbrunton For sure :)
jnthn We had various cleanups related to Supply not so long before the Christmas release.
dbrunton Thanks for taking a look, I'll take another pass through. The test coverage is pretty good, I presume I can treat that as gospel truth?
dalek c: 614044b | jnthn++ | doc/Type/Supply.pod:
There is no Supply.close method any more.

You .close individual taps.
22:25
jnthn dbrunton: Yeah, so long as they're not fudged (marked with something like `#?rakudo skip ...` or so)
dbrunton: But we consider the test suite is the language specification, so it's a good place to look for what is intended behavior. 22:26
dbrunton jnthn: perfect, thanks for taking a pass through it. I have to go feed the kids dinner, but I sent a small pull request and will happily muddle through Supply.wait (the other one that was a bit wonky). 22:28
dbrunton I really appreciate your all's work on this, it's been quite fun to work with. 22:28
dalek c: 7e56f2e | (David Brunton)++ | doc/Type/Supply.pod:
live method

Supplier creates a Supply.
22:30
c: 13d61d7 | RabidGravy++ | doc/Type/Supply.pod:
Merge pull request #396 from dbrunton/patch-9

live method
jnthn Oops, that PR adds back the doc for the close method that I removed...
dbrunton Shoot, I'm sorry jnthn.
jnthn np :) 22:31
RabidGravy oh sorry I should have noticed
dbrunton I need to take a break anyhow, so no collisions from me for a while.
:)
Again, thank you all. You're the best!
dalek c: 332c51d | jnthn++ | doc/Type/Supply.pod:
Remove Supply.close docs, again. :-)
22:32
jnthn dbrunton: Thanks for the PR. Happy feeding. :-)
sortiz m: use NativeCall; class MV is repr('CStruct') { has uint64 $.start; method s { if $!start {} } } 22:46
camelia rakudo-moar 4cd287: OUTPUT«===SORRY!===␤Cannot unbox a type object␤»
lizmat returned from Deadpool and starts working on the P6W
sortiz m: use NativeCall; class MV is repr('CStruct') { has uint64 $.start; method s { if +$!start {} } } # This works :/ 22:47
camelia ( no output )
sortiz And the error message is totally uninformative! 22:48
Skarsnik duh 22:51
I don't even get why it does not work x)
sortiz Toke me hours to find the point of the error! 22:55
jnthn Odd, that's a compile-time failure even
raiph doc.perl6.org/language/control#if says "The block attached to the condition will only be evaluated if the condition means True when coerced to Bool."
jnthn sortiz: Yeah, it's a crash during code-gen, bizzarely 22:56
sortiz: Please RT it, if you didn't already. --ll-exception gives some clues as to where it's going wrong.
sortiz I'll RT it. 22:57
jnthn Thanks 22:58
jnthn too tired for more patching today
sortiz jnthn, Do you distract with a mad experiment? See gist.github.com/salortiz/64e34f05273e34b04310 23:09
orbus my $c=Channel.new; my $s1=$c.Supply; my $s2=$c.Supply; $s1.tap(-> $x {say "1:$x"}); $s2.tap(-> $y {say "2:$y"}); for ^10 {$c.send($_)}; $c.close; await $c.closed 23:19
m: my $c=Channel.new; my $s1=$c.Supply; my $s2=$c.Supply; $s1.tap(-> $x {say "1:$x"}); $s2.tap(-> $y {say "2:$y"}); for ^10 {$c.send($_)}; $c.close; await $c.closed
camelia rakudo-moar 4cd287: OUTPUT«Could not spawn thread: errorcode -111:0␤␤»
orbus d'oh
jnthn I think the camelia is limited (by memory?) in how many threads can be started. 23:21
And the scheduler isn't smart enough to not make so many
orbus yeah 23:22
well
was just trying to figure out if the results of that are expected behavior
the values from the channel only get emitted on one supply or the other
I was going to document Channel.Supply better
jnthn Yeah, they compete
orbus okay, cool
I'll write something up and submit a pr 23:23
thanks
jnthn Channels are largely for that kind of use case
orbus sure
jnthn Means you can spin up a bunch of workers that react { whenever $channel { ... } }
And they'll compete over the incoming work 23:24
orbus I was just thinking it might also be nice to have a way for a single channel to send to multiple endpoints
orbus there might already be one 23:24
jnthn my $s = $channel.Supply.share;
orbus ah
okay, cool 23:26
haven't had much time to mess with perl6 stuff lately
life tends to get in the way
jnthn decides to let sleep get in the way :) 23:30
'night o/
lizmat good night, jnthn! 23:31
orbus later
skids m: Failure.new(Exception) # This is a less awesome error than it was prior to today's optimization. Though, even then it was only awesome by accident. 23:35
camelia rakudo-moar 4cd287: OUTPUT«Use of uninitialized value of type Exception in string context␤Any of .^name, .perl, .gist, or .say can stringify undefined things, if needed. in block <unit> at /tmp/wr4MBQeDE_ line 1␤␤␤Actually thrown at:␤ in block <unit> at /tmp/wr4MBQeDE_ l…»
skids (used to be "Invocant requires an instance...")
orbus pr sent 23:37
orbus goes to find food 23:37
lizmat and another Perl 6 Weekly hits the net: p6weekly.wordpress.com/2016/02/15/...ersioning/ 23:54
and on that note: good night, #perl6! 23:56
sortiz 'night lizmat 23:57