»ö« 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.
b2gills jnthn: the biggest problem I see with your batch change to t/harness is that subroutines are always globally scoped, so it doesn't make a lot of sense to put it inside of an if block. 00:03
colomon Any chance of getting a 32-bit Rakudo running on my Windows XP VM? 00:27
colomon grabs the R* MSI from March 00:28
colomon hmmm, seems to work 00:30
japhb b2gills: *named* subs are package-scoped in Perl 5, true, but *anon* subs aren't. So just change 'sub batch {' to 'my $batch = sub {' if that matters. The thing that makes me chuckle is that it's a functional solution in a way Perl 5 people don't often do. They'd more likely process each batch as it was created, rather than make an array of batches and map over it. 00:47
Actually, I wouldn't be surprised if recent Perl 5 has my-scoped subs, but I stopped paying attention when 1) I spent a whole bunch of accumulated favors at a previous job just getting them to switch to 5.10 so I wouldn't have to go insane with some RHEL default, and 2) Perl 6 came along. 00:51
*2) A working Perl 6 compiler came along.
b2gills Perl5 does have lexical subs, if you precede them with `my` added in 5.20 00:52
perldoc.perl.org/perl5200delta.html...ubroutines 00:53
oops it was added in 5.18: perldoc.perl.org/perl5180delta.html...ubroutines
b2gills I was actually thinking of adding `sub rotor (\@$@) {...}`to bring something like a P6ism to the harness since it is likely to be edited by someone who is more comfortable in Perl6 than Perl5. The biggest problem is that Perl5 doesn't have pair objects, so you would always have to call it as `rotor @a, 50 => 0, 25 => 0`. 01:00
colomon my $tess_stuff = ""; 01:01
Variable '$tess_stuff' is not declared
hmm?
how is it that I’ve … oh, hmmm 01:02
dang it, p5’s heredoc << is just a texas open quote in p6, isn’t it? 01:06
qq:to 01:11
colomon huh. I’m invoking perl6 in a windows batch file, and it seems to kill the batch file after completing the p6 script. :\ 01:24
tony-o what's your bat file look like 01:46
ugexe probably double clicking a batch file 01:47
tony-o @ECHO on ::for life 01:48
colomon set MV_MODELER=nmtlib 01:51
perl6 build/make_utils_projects.pl %MV_MODELER -on -jt -express +sw
nmake /fsource_makefile
etc
colomon it never gets to the nmake 01:51
tony-o sounds like a problem with the bat file 01:52
colomon If I comment out the line that starts perl6, the file works fine
tony-o that means that it's definitely a problem with the bat file 01:53
colomon ?
tony-o what's the output of that perl6 command by itself 01:54
did you try renaming the bat file? 01:55
colomon wait, you mean my bat file, or the perl6 bat file? 01:56
tony-o the perl6 bat file 01:57
colomon ah
tony-o if you're starting a perl6 bat file then you need to use 'call' in the bat
colomon tony-o++ 01:58
that did it. brill!
colomon suspects he knew that rule once, but has long since switched away from using Windows. 02:02
b2gills I know! I knew that rule once ( back in the 90's ) 02:06
grondilu a new compilation target to look at? techcrunch.com/2015/06/17/google-mi...or-the-web 02:07
mudguts Hello all - does anyone know where there's an example of CANDO - perl6's AUTOLOAD? 04:33
ugexe github.com/perl6/roast/blob/master...spection.t ? 05:01
ugexe honestly not sure if .cando and .CANDO were/are the same thing 05:04
TEttinger hm, not sure if a perl6 question specifically, or if perl... but I tried to install Padre, the perl IDE, off CPAN, and got a weird error 05:32
TEttinger 'Parse::ErrorString::Perl' seems to be the culprit 05:33
error log: pastie.org/private/bqrtfct0pn2ohknjfsmng#11 05:34
anyone have a perl6-syntax-aware editor that they recommend? 05:35
dalek osystem: 94fa0e1 | (Sterling Hanenkamp)++ | META.list:
Adding KnottyPair to the Perl ecosystem
05:39
skids TEttinger: the vi users here have something they find adequate for newer vim versions 06:07
TEttinger never could get used to vi or emacs
skids Personally I want my editor to not distract me or deceive me, so I disable most stuff like that. But emacs has a few must-haves so I've stuck with it. 06:09
mudguts ugexex: (sorry - got called away) - if you look at the very bottom of S10 there is a section on autoloading based on a special multi called CANDO. 06:32
But I cant find a single mention of it *anywhere* else 06:33
moritz I don't think it's implemented 06:36
moritz we have FALLBACK though 06:36
mudguts Can you tell me where I can find a FALLBACK example? 06:44
skids I think I used it in Grammar::ABNF.
To case-fold rule names.
mudguts <looking> bbl 06:45
RabidGravy mudguts, in summary 06:50
m: class Foo { method FALLBACK(*@args) { say "goo" } }; Foo.new.goo 06:51
camelia rakudo-moar df0c3a: OUTPUT«goo␤»
RabidGravy though 06:53
m: class Foo { method FALLBACK($name, *@args) { say $name, @args } }; Foo.new.goo; Foo.new.blar("zub")
camelia rakudo-moar df0c3a: OUTPUT«goo␤blarzub␤»
RabidGravy may make it clearer how it works, it's somewhat tidier that p5's AUTOLOAD 06:54
masak morning, #perl6 06:57
RabidGravy marnin
moritz \o masak
masak m: say "m{<a o>.roll}rni{<n ng>.roll}" 06:58
camelia rakudo-moar df0c3a: OUTPUT«marning␤»
masak m: say "m{<a o>.roll}rni{<n ng>.roll}" for ^3
camelia rakudo-moar df0c3a: OUTPUT«mornin␤morning␤mornin␤»
mudguts <back again>... 07:00
mudguts RabidGravy: Thankyou for the explanation. 07:04
Last question (I hope) - Is there something like indirect object syntax that allows one to lead with a method name?
RabidGravy in summary, no 07:06
mudguts Cool. I'll go fiddle with FALLBACK. cheers. 07:07
masak waitwait, there *is* such a syntax. 07:08
mudguts still here 07:09
masak m: say abs: -42
camelia rakudo-moar df0c3a: OUTPUT«5===SORRY!5=== Error while compiling /tmp/kbd6qsxgiL␤Unsupported use of bare "abs"; in Perl 6 please use .abs if you meant $_, or use an explicit invocant or argument␤at /tmp/kbd6qsxgiL:1␤------> 3say abs7⏏5: -42␤»
masak hm.
m: say abs -42:
camelia rakudo-moar df0c3a: OUTPUT«5===SORRY!5=== Error while compiling /tmp/S8JDkgecAd␤Confused␤at /tmp/S8JDkgecAd:1␤------> 3say abs -42:7⏏5<EOL>␤ expecting any of:␤ colon pair␤»
masak though maybe I don't *know* the syntax... :)
moritz knows why he doesn't like indirect object syntax
masak checks S12 07:10
mudguts no dont... I can do that
I'll do so and come back here if I have more questions
masak m: class C { method close { say "OH HAI" } }; my $handle = C.new; close $handle:;
camelia rakudo-moar df0c3a: OUTPUT«OH HAI␤»
masak there you go.
I'm not sure why the abs example above didn't work. 07:11
mudguts well, ok.... I cant do that anywhere near as fast as that... :-)
masak S12:298, fwiw.
synbot6 Link: design.perl6.org/S12.html#line_298
mudguts Many thanks. I'll go fiddle with FALLBACK *and* indirect-object-like syntax 07:12
masak \o/
FROGGS masak: abs is probably parsed specially to throw that Unsupported at you 07:13
moritz m: say sin 0:
camelia rakudo-moar df0c3a: OUTPUT«5===SORRY!5=== Error while compiling /tmp/U6aCB_Z_zU␤Confused␤at /tmp/U6aCB_Z_zU:1␤------> 3say sin 0:7⏏5<EOL>␤ expecting any of:␤ colon pair␤»
FROGGS m: my $a = 0; say sin $a:
camelia rakudo-moar df0c3a: OUTPUT«5===SORRY!5=== Error while compiling /tmp/UtNVYmWk_X␤Confused␤at /tmp/UtNVYmWk_X:1␤------> 3my $a = 0; say sin $a:7⏏5<EOL>␤ expecting any of:␤ colon pair␤»
moritz m: say sqrt 0:
camelia rakudo-moar df0c3a: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Dqp4Cs8tQW␤Confused␤at /tmp/Dqp4Cs8tQW:1␤------> 3say sqrt 0:7⏏5<EOL>␤ expecting any of:␤ colon pair␤»
moritz m: say(sqrt 0:)
camelia rakudo-moar df0c3a: OUTPUT«0␤»
FROGGS m: my $a = 0; sin $a:
camelia rakudo-moar df0c3a: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Rl9gS7OYML␤Confused␤at /tmp/Rl9gS7OYML:1␤------> 3my $a = 0; sin $a:7⏏5<EOL>␤ expecting any of:␤ colon pair␤»
masak oh, so it's related to listops. surprising. 07:14
moritz just found a bug in vim 07:27
when you have a file open, and another program modifies the file, vim asks you if you want to reload it
and if you do, it ignores the modeline in that file
masak moritz: wow. 07:30
moritz: submit a vimbug! :)
moritz masak: I will. But first I'll check if newer vims still do that 07:31
or if it's maybe an oddity in my configuration
masak I wonder if we'll ever get good "model refactoring" tooling, like we have relatively simple refactor actions today for Extract Method etc. 07:34
model refactors are trickier, but often far more interesting.
moritz what do you mean by "model refactoring"? 07:35
change the data model?
masak could me something like, I had a hash somewhere, but now I want to switch to a set instead.
so I have to change not just the declaration, but all places that use that data structure. 07:36
moritz aye
another common one at $work is "move an attribute to a different object"
masak right, that'd count too.
right now in 007 I have a situation where I'm changing array-of-thing to array-of-hash-of-thing. 07:37
it's error-prone to find and change all the places that use this data structure. I'm glad I have the tests, at least.
moritz one notes that static typing would also help find the places.
masak indeed. 07:38
masak m: my @a = { :foo }, { :bar, :baz }; @b = @a.map(*.clone.item); say @b.perl; say @a[0] === @b[0] 07:43
camelia rakudo-moar df0c3a: OUTPUT«5===SORRY!5=== Error while compiling /tmp/x1ni1zkIyW␤Variable '@b' is not declared␤at /tmp/x1ni1zkIyW:1␤------> 3my @a = { :foo }, { :bar, :baz }; 7⏏5@b = @a.map(*.clone.item); say @b.perl; ␤»
masak m: my @a = { :foo }, { :bar, :baz }; my @b = @a.map(*.clone.item); say @b.perl; say @a[0] === @b[0] 07:44
camelia rakudo-moar df0c3a: OUTPUT«[{:foo}, {:bar, :baz}]<>␤False␤»
masak apparently, that `.item` is necessary, or the cloned hashes flatten into the array.
m: my @a = { :foo }, { :bar, :baz }; my @b = @a.map({ { .list } }); say @b.perl; say @a[0] === @b[0] 07:51
camelia rakudo-moar df0c3a: OUTPUT«[:foo, :bar, :baz]<>␤False␤»
masak m: my @a = { :foo }, { :bar, :baz }; my @b = @a.map({ { %$_ } }); say @b.perl; say @a[0] === @b[0] 07:52
camelia rakudo-moar df0c3a: OUTPUT«[:foo, :bar, :baz]<>␤False␤»
masak hm.
m: my @a = { :foo }, { :bar, :baz }; my @b = @a.map({ .list.hash }); say @b.perl; say @a[0] === @b[0] 07:53
camelia rakudo-moar df0c3a: OUTPUT«[:foo, :bar, :baz]<>␤False␤»
masak m: my @a = { :foo }, { :bar, :baz }; my @b = @a.map({ .list.hash.item }); say @b.perl; say @a[0] === @b[0]
camelia rakudo-moar df0c3a: OUTPUT«[{:foo}, {:bar, :baz}]<>␤False␤»
timotimo moin 07:57
masak moin moin 07:58
or, as we'd say in Low Saxon, "mooien Morgen" :) 07:59
Ven waves 08:00
TEttinger gaaaaah
DrForr Sounds Dutch to me.
TEttinger Padre doesn't know how to syntax highlight NQP
token string { <?[']> <quote_EXPR: ':q'>
masak TEttinger: patch it! :) 08:01
TEttinger that single quote screws up the whole syntax highlighter
they haven't released since 2013 and the build has been broken for all of 2015
masak DrForr: it's Dutch, German, Danish... they use it in Luxemburg, too.
TEttinger: oh, that's sad news :/
DrForr Notify the maintainer?... 08:06
timotimo TEttinger: any editor that's based on TextMate and Atom has perl6 syntax highlighting 08:09
TEttinger timotimo, thanks again, will take a look
masak style survey: `%h{$key}:exists`, or `%h{$key} :exists` ? 08:19
moritz the former 08:21
I think of it as postcircumfix:<{ }>(:$exists!)
so it belongs to the } as close as possible
(in fact, I'm slightly surprised it doesn't go on the inside 08:22
%h{$key :exists}
masak :)
I think I can motivate to myself why it doesn't go on the inside. not sure I can verbalize it, though.
something like, adverbs that modify ops come after the op. it's mostly a coincidence that {} has an inside. 08:23
of course, that answer is a little bit like saying "it's not X because it's Y".
arnsholt My parser intuition says that allowing the adverb inside the circumfix would make the parsing gnarly 08:24
masak arnsholt: because adverbs are otherwise so easy to parse? :P
arnsholt Gnarlier, then =p 08:25
masak "gnarlier" is a good slogan for adverbs in general... :P 08:26
timotimo well, there can also be , inside the { }
so it's a bit strange to have %foo{"bar", "baz" :exists}
masak timotimo: right.
timotimo on the other hands, named arguments are already like that
masak this looks like it deserves to be linked here: stefan-marr.de/papers/pldi-marr-et-...ogramming/ 08:27
TEttinger timotimo, woah, using Atom now, very slick, and it successfully handles [']
but
masak HN discussion: news.ycombinator.com/item?id=9741072
TEttinger it fails on the very next line with ["] 08:27
timotimo haha
oh man
grammars really are a tiny bit difficult every now and then 08:28
i wonder: is gnome shell supposed to take about 1 gig of ram?
maybe right now is the time to get back to xfce.
arnsholt I'm really happy with XMonad, FWIW 08:31
TEttinger github.com/atom/language-perl ok, so this is what it uses. the line that causes it to fail is here, github.com/perl6/nqp/blob/master/e...h.nqp#L231 08:33
open source syntax highlighters are nice :)
TEttinger and I'm wondering, what type of... grammatical construct? is it that ["] is not the start of a string 08:34
masak it's in a rule, yes?
TEttinger oh! 08:35
masak hm, isn't it <["]> ?
TEttinger and it breaks github's syntax highlighting too
pretty much, masak
| <?["]> <quote_EXPR: ':qq'>
masak right. 08:36
that's a zero-width character class.
...I think the term is. :)
TEttinger a double quote with no closing quote?
that's practically a negative width thing... 08:37
masak both the opening and closing quotes are parsed by quote_EXPR
which is why the `?` is there in `<?["]>`, because it's not consuming the `"`
jnthn Generally, you can make any <...> assertion a zero-width lookeahead by starting with ?
TEttinger ah, so the syntax highlighter needs to be aware of '?'
jnthn <foo> # call rule <foo> and capture if it matches 08:38
<?foo> # call rule foo, check it matches, but don't advance the cursor
uh, and I meant "rule foo" in the first one
jnthn still waking up :)
TEttinger ok, I still don't know why it can have one double quote with no closing quote 08:39
masak should I call it "zero-width", or "positive lookahead"?
jnthn TEttinger: quote_EXPR matches an opening and a closing 08:39
masak TEttinger: what I said above.
TEttinger I mean in that line of source
masak TEttinger: it's a zero-width match!
jnthn Oh, you mean the syntax highlighter bug
TEttinger yes
jnthn Yes, no idea about that :)
masak it shouldn't count the " as an opening close, is the short answer.
TEttinger ok 08:40
masak more generally, it shouldn't count anything inside a char class as an opening quote.
or an opening anything.
char classes are very special environments wrt parsing, and they do tend to confuse syntax highlighters for this reason.
regex syntax is already a DSL, but charclasses are even DSL-ier than that.
TEttinger where a char class is anything within /<.*\[.+\]>/ 08:41
is that the right uh regex
timotimo well, ".*" is a bit much
masak TEttinger: right, modulo things like `?` and other stuff.
TEttinger .?
masak well, `<- ["]>` is OK too, IIRC.
maybe just check STD :) 08:42
one of the silliest workaround patterns I know in Perl 6: creating an IIFE just to be able to use `~~` in an action method. :) 08:44
TEttinger so under what conditions do the contents of <THE STUFF IN HERE> get parsed as a character class? 08:44
masak TEttinger: when there's also a `[]` in there. 08:45
TEttinger x < y[0] && y[1] > z
masak TEttinger: but I don't know if that's a good way to explain it to the parser.
right.
TEttinger hm
masak TEttinger: maybe check how STD has it?
TEttinger I don't even know what STD is other than something I don't want to need to be tested for 08:46
masak heh.
github.com/perl6/std/blob/master/STD.pm6 08:47
TEttinger thanks
timotimo what's an IIFE?
masak timotimo: "Immediately Invoked Function Expression". it's a JavaScript term. 08:49
timotimo: in this case, the sub insulates against the grammar's $/ and gives a fresh one to match with.
TEttinger oh wow. github can't even syntax highlight STD.pm6 08:51
github.com/perl6/std/blob/master/S...#L283-L286
timotimo ah
i think github uses the same highlighter as textmate and atom and such
TEttinger everything after this line is a string, unless it was supposed to be in double quotes... github.com/perl6/std/blob/master/STD.pm6#L3571 08:53
and it only stops because it incorrectly parses a comment, wow 08:54
TEttinger github.com/perl6/std/blob/master/STD.pm6#L4428 08:54
is there any way I could uh, fix this with approaching-zero perl knowledge :) 08:55
masak: I can't find the term char class (searched for class) in STD.pm6, does it have any other names? 08:57
timotimo you're looking for cclass_elem and friends
masak I skimmed the grammar stuff and didn't find it either :/
timotimo and cclass_expr
TEttinger err, is this? github.com/perl6/std/blob/master/STD.pm6#L5020 08:58
timotimo things between < ... > are called "assertion"
masak timotimo++
TEttinger maybe github.com/perl6/std/blob/master/STD.pm6#L5185 ? 08:59
TEttinger ok, yeah. it looks like quotes get special-special treatment in cclass_elem github.com/perl6/std/blob/master/STD.pm6#L5253 09:01
timotimo that isn't for "between [ and ]", though
std: / <["hello there"]> / 09:02
camelia std 28329a7: OUTPUT«Potential difficulties:␤ Repeated character (") unexpectedly found in character class at /tmp/IbZNwMacQs line 1:␤------> 3/ <["hello there"]7⏏5> /␤ Repeated character (l) unexpectedly found in character class at /tmp/IbZNwMacQs line 1:␤------> 3/…»
timotimo this is about <"hi"> instead
TEttinger is this then, timotimo? github.com/perl6/std/blob/master/STD.pm6#L5218 09:03
TEttinger timotimo: the syntax trouble stems from trying to highlight <?["]> 09:03
also, <?[']>
if I wasn't clear, this is not a problem with Perl 6, this is a problem with an implementation of syntax highlighting for it 09:06
timotimo i know :)
TEttinger but I definitely don't "get" the syntax well enough to fix this
timotimo could be the ? trips the parser up. possibly also <-["]>?
TEttinger so... somewhere in std.pm6 there's a list of what is valid in a cclass, syntactically, right? 09:07
TEttinger github.com/perl6/std/blob/master/S...5144-L5151 maybe? 09:10
TEttinger brain... hurts 09:13
timotimo those are things valid between < and > 09:14
it might get easier when you notice that <sym> inside the token just matches what's in the :sym< ... > at the end of the token's name
so token assertion:sym<...> { <sym> } simply matches "..."
and the rules for <|>, <?>, <!> and <*> mostly just mean you can have < > with nothing but a single |, ?, ! or * inside 09:15
TEttinger timotimo, eh? I thought the <> in <|> was part of the syntax for any sym stuff, not just syms inside <> in the src you're reading 09:22
DrForr <<"\x[1234]">> # is legal as well, for example...
timotimo you are right; it's just that the < > from assertions and from :sym are overlapping right now 09:23
TEttinger oh ok
so the assertion always is in <>
timotimo i meant to refer to the parts from here "token assertion:sym<|> { <sym> [ <?before '>'> |" to there 09:24
to hopefully keep your head from hurting :)
TEttinger heh
timotimo it seems i worded my attempted explanations poorly and made matters worse :D 09:24
TEttinger oh no, this is very "meta" stuff, using perl to parse perl
so there's going to be a lot of confusion however it goes 09:25
so should I post a github issue on github.com/atom/language-perl so they know that it doesn't parse charclasses correctly when they contain quotes? 09:27
or does someone want to send a PR fixing the relatively small perl 6 file? 09:28
masak the trick with very "meta" stuff, metacircularity, and things parsing/evaluating themselves, seems to reside in acknowledging that you are dealing with two things ("parser"/"parsee") which just happen to be the same thing. 09:29
itz hmm the average perl6 module has pod or markdown visible from github rather than via p6doc Module::Name after install 09:31
TEttinger ...do they even handle character classes? github.com/atom/language-perl/blob...l%206.cson 09:31
timotimo TEttinger: i'd prefer that to be fixed in textmate's perl bundle and having it re-converted again
itz maybe panda should append such pod to the main module
TEttinger timotimo, yeah 09:31
is that open source? 09:32
timotimo it is
github.com/textmate/perl.tmbundle
TEttinger github.com/textmate/perl.tmbundle/...tmLanguage
ah
TEttinger hm. github.com/atom/language-perl/pull/39 09:35
timotimo well, the perl6.cson file is separate from the perl.cson file 09:38
though there's probably a derivation of some kind going on?
TEttinger I didn't see one 09:41
timotimo the perl6.cson file seems pretty small 09:44
can it be complete without deriving from the perl.cson file? 09:45
well, it is just a syntax highlighting definition file, not a complete grammar
itz if perl6 is written in itself is it possible to use its own grammar from externally to parse itself? 09:49
jnthn m: nqp::istype(Int, Numeric)
camelia rakudo-moar df0c3a: OUTPUT«===============================================================================␤The use of nqp::operations has been deprecated for non-CORE code. Please␤change your code to not use these non-portable functions. If you really want␤to keep using nqp:…»
jnthn m: EVAL 'nqp::istype(Int, Numeric)'
camelia ( no output )
jnthn Oops :)
TEttinger hm. is there any kind of potential workaround to <?[']> and <?["]> not highlighting? like an equivalent that escapes ' or ", or puts it in a string of the other type like '"' 09:53
moritz m: say "\C[APOSTROPHE]" 09:54
camelia rakudo-moar df0c3a: OUTPUT«5===SORRY!5=== Error while compiling /tmp/WTQJjdM72o␤Unrecognized backslash sequence: '\C'␤at /tmp/WTQJjdM72o:1␤------> 3say "\7⏏5C[APOSTROPHE]"␤ expecting any of:␤ argument list␤ double quotes␤ term␤»
moritz m: say "\c[APOSTROPHE]" 09:55
camelia rakudo-moar df0c3a: OUTPUT«'␤»
TEttinger oh!
moritz m: say so "'" ~~ /<[\c[APOSTROPHE]]>/
camelia rakudo-moar df0c3a: OUTPUT«True␤»
TEttinger double quote, moritz?
that's very handy, thank you. moritz++ 09:56
moritz .u "
yoleaux U+0022 QUOTATION MARK [Po] (")
TEttinger m: say so '"' ~~ /<[\c[QUOTATION MARK]]>/ 09:56
camelia rakudo-moar df0c3a: OUTPUT«True␤»
dalek kudo/nom: d422469 | jnthn++ | src/Perl6/ (3 files):
Fix missing nqp::op use detection inside an EVAL.
10:02
kudo/nom: 7925788 | jnthn++ | src/ (2 files):
Complain when trying to override special form ops.

Don't silently allow things that'll never work, leading to confusion as seen in RT #125427.
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=125427
dalek kudo/nom: c875f5f | jnthn++ | src/core/Version.pm:
Minor performance tweak (remove dupe .Numeric).
10:03
ast: 76e6a8a | jnthn++ | S32-exceptions/misc.t:
Tests for RT #125427.
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=125427
TEttinger well, it looks silly, but it works. github.com/tommyettinger/lilikoi/b...i.nqp#L246
dalek ast: 86d2451 | jnthn++ | integration/weird-errors.t:
Test to cover RT #125365.
10:04
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=125365
dalek kudo/nom: 84d11db | jnthn++ | src/core/Exception.pm:
Show location of bogus control exceptions.

Steal the Backtrace of the control exception that we failed to find a handler for, so we actually have some location information to emit. Fixes RT #125339.
10:27
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=125339
dalek ast: 0abc04d | jnthn++ | S04-exception-handlers/control.t:
Test for RT #125339.
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=125339
jnthn lunch & 10:31
colomon m: my $s = <a b c>.Set; given “z” { when $s { say “Match” } } 10:58
camelia ( no output )
colomon m: my $s = <a b c>.Set; given “a” { when $s { say “Match” } }
camelia ( no output )
jnthn m: my $s = <a b c>.Set; given “a” { when * (in) $s { say “Match” } } 11:03
camelia rakudo-moar 84d11d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/JL81QQYYMe␤Missing block␤at /tmp/JL81QQYYMe:1␤------> 3my $s = <a b c>.Set; given “a” { when *7⏏5 (in) $s { say “Match” } }␤ expecting any of:␤ block or pointy block␤ …»
jnthn Hm, whatever the ops is :)
But it's doing "a".ACCEPTS($s) 11:04
Which I guess ain't going to end too well
espadrine timotimo: what's a good example of perl6 to check syntax highlighting with? 11:04
psch m: my $s = <a b c>.Set; given “a” { when * (elem) $s { say “Match” } } 11:11
camelia rakudo-moar 84d11d: OUTPUT«Match␤»
jnthn .tell TimToady The Proc::Async-using thing seems to run reliably now (didn't see it crash at all in a bunch of attempts locally for my Windows port of it); would be interested to know if you see the same. 11:29
yoleaux jnthn: I'll pass your message to TimToady.
FROGGS jnthn++ 11:30
jnthn .ask TimToady Are you doing any active work on the NFA engine at the moment? I know fates are high on your list; it has some NFG fail that I should look into at some point, but don't want to make conflicts with what you're doing.
yoleaux jnthn: I'll pass your message to TimToady.
jnthn I suspect the last of the Proc::Async things went away with fixing that lazy deserialization bunch of races.
espadrine timotimo: so I converted the tmlanguage file to ace format, then updated my converter to convert it to codemirror format, here is the (imperfect) result: gist.github.com/espadrine/7f54306303b8c4cbca77 11:31
FROGGS yeah
jnthn figures he'll pack up a couple of boxes of stuff, then look at RT #125408, then maybe work a bit at prep for multi-dim arrays 11:32
FROGGS btw, I think it is highly confusing that a Process in Java exposes its stdout via the method .getInputStream()
jnthn FROGGS: Ouch, that's not a great bit of API design... 11:33
psch FROGGS: yes, i agree
but you *get* an InputStream...
FROGGS true that :o)
FROGGS psch: but I also get an InputStream for stderr, which is exposed via .getErrorStream 11:33
so...
I like our API better :P 11:34
psch yeah, it's still bad API design :)
dalek kudo/nom: f1fa644 | peschwa++ | src/vm/ (2 files):
Let Failure always match p6typecheckrv.

According to jnthn++ there's a need to adjust Perl6::Optimizer to not inline non-native calls anymore with this, but I am unclear how exactly that should be done and don't see any fallout from not doing it.
FROGGS psch: do you happen to know how I can redirect the stdout/stderr of a process to nirvana? 11:35
i.e. not letting inherit ours, and not capturing it
psch not offhand, no. i'd guess passing new ones, but those gobble memory in the worst case... 11:36
r: sub foo($) { }; { foo(Junction); CATCH { default { .perl.say } } } # this stumps me
camelia rakudo-moar 84d11d: OUTPUT«X::TypeCheck::Binding.new(symbol => "<anon>", operation => Any, got => Junction, expected => Any)␤»
( no output )
FROGGS hmmm, okay... I'll fix/implement the other stuff first
(or write tests) 11:37
psch huh, jvm should have printed something there...
r: sub foo($) { }; { foo(Junction); CATCH { default { .perl.say } } }
camelia rakudo-moar 84d11d: OUTPUT«X::TypeCheck::Binding.new(symbol => "<anon>", operation => Any, got => Junction, expected => Any)␤»
..rakudo-jvm 84d11d: OUTPUT«X::AdHoc.new(payload => "Nominal type check failed for parameter 'null'")␤»
psch there
FROGGS jnthn: btw, nqp::openpipe won't be used anymore when I am done... shall I mark the op in interp.c somehow so it can be reused?
psch it's in Binder.java, moar doesn't explicitely check for gcx.Junction (or the equiv)...
i don't get how to go past that, though, and fall through to juncOrFail()... 11:38
FROGGS hmmm, I dont know enough here to be of help 11:39
psch yeah, my attempts have just resulted in more than one spectest FAIL in S03-junctions/misc.t, and without knowing where further i should look for discrepancies i don't take that as a good sign... :) 11:40
psch FROGGS: stackoverflow.com/questions/4799006/ is probably the best you can do 11:53
i.e. subclass OutputStream with empty write() candidates
FROGGS hh!
ahh*
psch (the top-voted answer, not the example in the quest, just to be clear :) )
FROGGS but I don't want to redirect our stdout... only the sub process's 11:54
psch depending on how often you need the inline implementation of the OutputStream interface might even be cleaner than creating a NullPrintStream as in the second answer
well, ProcessBuilder lets you set the Process' streams 11:55
FROGGS true...
jnthn FROGGS: Yes, in oplist we tend to mark the name as DEPRECATED 12:06
FROGGS: It says what to do in the comment at the top of oplist ;) 12:07
colomon is on day two of converting $work scripts from p5 to p6 12:14
jnthn :) 12:24
jnthn tires of putting stuff into boxes and returns to hacking
FROGGS jnthn: I don't read comments :P
nebuchadnezzar \o/ 12:26
yoleaux 17 Jun 2015 20:17Z <[ptc]> nebuchadnezzar: do you mean to modify upstream sources in the `upstream` branch, or do you mean the upstream sources in the `master` branch?
17 Jun 2015 20:19Z <[ptc]> nebuchadnezzar: I believe the terminology and branch names might be confusing me slightly...
FROGGS nebuchadnezzar: what what what? 12:28
jnthn .ask RabidGravy if rt.perl.org/Ticket/Display.html?id=125408 also seems fixed for him (I just tried it and it doesn't fail)
yoleaux jnthn: I'll pass your message to RabidGravy.
FROGGS nebuchadnezzar: is it true that MoarVM needs to run on mips(el) in order to make it fit for release? 12:31
jnthn "fit for release" in what sense? 12:35
moritz debian, I think
jnthn Better not be.
FROGGS aye
jnthn That'd be ridiculous.
FROGGS bugs.debian.org/cgi-bin/pkgreport....src=moarvm 12:36
Severity
1 Serious (policy violations or makes package unfit for release)
moritz iirc you can specify the architecture on which a package can be built
FROGGS jnthn: but no worry, I can get in libffi support until next releae
release*
DrForr Speaking of which I'm putting together the start of an opencv binding tonight. 12:37
jnthn Uhm...but aren't we depending on a dyncall package?
nebuchadnezzar FROGGS: I don't think so, I'm not a Debian developper but I know that some software use an “Architecture: any [!mipsel]” or something like that
jnthn Hm, aparently not... 12:38
FROGGS jnthn: there is no dyncall package 12:39
(sadly)
jnthn Bah, so that becomes "our problem".
But yeah, if there's a way to just say "no, we don't intend this to work" wrt mips, let's do that. 12:40
We've so, so many better things to spend our time on than platforms with a fraction of a percent market share.
nebuchadnezzar jnthn: several software are in the same situation, the Debian porters sometimes made patches and submit them upstream, and sometime the software is excluded from an architecture: anonscm.debian.org/cgit/mirror/pac...h-specific 12:43
nebuchadnezzar or maybe just the Architecture: www.debian.org/doc/debian-policy/c...chitecture 12:44
moritz so !mipsel it seems 12:48
nebuchadnezzar moritz: yes, I'll see with the Debian team what the best to do 12:49
jnthn nebuchadnezzar++ 12:52
jnthn Certainly if somebody who knows/cares for that architecture provides a patch, I'll happily accept it. 12:52
dalek ast: 02bc00a | jnthn++ | S15-nfg/many-threads.t:
Add tests covering Uni => NFG over many threads.

This tests thread safety of the graphemes table. There's an NYI in MoarVM at the moment that causes this test to panic; once that's fixed, this test can be added to spectest.data and will ensure we don't regress in this area.
12:54
dalek ast: 486ed3d | peschwa++ | S03-operators/arith.t:
Correct expectation for a few tests.

Now that Failure falls through p6typecheckrv we actually get Numeric::DivideByZero, not TypeCheck::Return.
13:07
kudo-star-daily: c5fd165 | coke++ | log/ (2 files):
today (automated commit)
13:12
rl6-roast-data: 1d39954 | coke++ | / (9 files):
today (automated commit)
TEttinger In NQP, how would you make a grammar token that matches double-quoted strings with a # before them? 13:24
more accurately, I need # to be a "dispatch character" that changes the next thing read 13:25
jnthn '#' <?["]> <quote_EXPR: ...> # or some such
TimToady m: say abs -42: ;
yoleaux 11:29Z <jnthn> TimToady: The Proc::Async-using thing seems to run reliably now (didn't see it crash at all in a bunch of attempts locally for my Windows port of it); would be interested to know if you see the same.
camelia rakudo-moar f1fa64: OUTPUT«42␤»
yoleaux 11:30Z <jnthn> TimToady: Are you doing any active work on the NFA engine at the moment? I know fates are high on your list; it has some NFG fail that I should look into at some point, but don't want to make conflicts with what you're doing.
TEttinger that is very easy, thank you :) jnthn++ 13:26
TimToady masak: it's just an EOF anomaly
moritz m: say abs -42:;
camelia rakudo-moar f1fa64: OUTPUT«42␤»
moritz m: say abs -42:
camelia rakudo-moar f1fa64: OUTPUT«5===SORRY!5=== Error while compiling /tmp/V2UzSPiN8k␤Confused␤at /tmp/V2UzSPiN8k:1␤------> 3say abs -42:7⏏5<EOL>␤ expecting any of:␤ colon pair␤»
muraiki I saw someone mention Proc::Async; I had problems a few months ago with using it in multiple threads simultaneously, but now I haven't had any problems at all. so thanks to whomever fixed that :)
moritz TimToady++
muraiki: most likely jnthn++ 13:27
muraiki jnthn++ thanks :)
TimToady .tell jnthn Proc::Async works now on Linux, and I'm mostly going to be touring Grand Tetons/Yellowstone over next few days, but if I work on anything, will probably be dynvar cache rather than fates
yoleaux TimToady: I'll pass your message to jnthn. 13:28
muraiki is there a way to specify the working directory of the command to be executed with Proc::Async? not the absolute path to the executable, but the working directory... I figure using cwd and then Proc::Async will not be thread safe
ugexe muraiki: nope. tried to figure that out for awhile myself
and you cant do (cd somedir && $cmd) with proc::async for whatever reason
muraiki hrm. maybe it's something I could submit a pr for, but I have no idea what I'm doing :) 13:29
jnthn TimToady: Cool thanks
yoleaux 13:27Z <TimToady> jnthn: Proc::Async works now on Linux, and I'm mostly going to be touring Grand Tetons/Yellowstone over next few days, but if I work on anything, will probably be dynvar cache rather than fates
jnthn muraiki: Well, can file an RT; it's a reasonable request :)
muraiki jnthn: thanks :)
ugexe ive been using my $dir = $*CWD, chdir $some-dir; proc::async stuff; LEAVE chdir $dir and havent had any problems actually 13:30
although i imagine if something crashes it would have thread implications like you mention
nwc10 .tell yoleaux I'm very confused as to why messages are going via you
yoleaux nwc10: Thanks for the message.
nwc10 .tell yoleaux good morning.
yoleaux nwc10: Thanks for the message.
ugexe i also apparently get the occasional flapper from proc::async still where the promise never goes past the planned stage. but not very often 13:34
jnthn ugexe: There's an RT I've been working on where that can happen even without Proc::Async, but with a Promise more generally
ugexe jnthn: ah, could very well be it i suppose 13:35
TEttinger so, where are grammar things like <ident> defined? is that a rule that matches valid perl identifiers?
(if I wanted to have an identifier rule that matched anything not starting with a digit or reserved symbol, is that possible?) 13:36
(ending at whitespace or comma) 13:37
jnthn TEttinger: They're built-ins, but since thye're just methods you can override them
psch TEttinger: src/HLL/Grammar.nqp and src/NQP/Grammar.nqp for the definitions 13:38
TEttinger thanks both!
psch TEttinger: the former is the base for any HLL, the latter the NQP grammar
ugexe whats wrong with Grammar::Debugger? 13:40
TEttinger hm, I can't actually find ident anywhere in HLL/Grammar 13:43
the NQP grammar only mentions it kinda, twice, as 13:44
token identifier { <.ident> [ <[\-']> <.ident> ]* }
psch TEttinger: nqp/src/QRegex/Cursor.nqp:622 13:45
TEttinger woah
psch a grammar is a Cursor
or something like that :s
psch m: say grammar { } ~~ Cursor 13:46
camelia rakudo-moar f1fa64: OUTPUT«True␤»
TEttinger it appears to just check for alphabetical or underscore
.u _
yoleaux U+005F LOW LINE [Pc] (_)
psch TEttinger: well, that's a reasonable default for identifiers in most languages i'd say 13:47
TEttinger yeah, I just wasn't sure what it really meant 13:57
dalek kudo/attr-isrequired: 95cf7f6 | coke++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:
Add a getter for Attribute's $!required
14:06
[Coke] so, with that patch, if I try to loop over some attrs later and call $_.required, it can't find the method. arglebargle. 14:07
TEttinger how do you uh... negate a regex class in a grammar? I can't find any instances of [^A-Z] or whatnot being used 14:13
jnthn <-[A..Z]>
TEttinger oh, that's again simple :) 14:14
jnthn++ thanks
flussence m: /<[^A-Z]>/
camelia rakudo-moar f1fa64: OUTPUT«5===SORRY!5=== Error while compiling /tmp/3MSQipVQ6E␤Unsupported use of - as character range; in Perl 6 please use .. for range, for explicit - in character class, escape it or place it as the first or last thing␤at /tmp/3MSQipVQ6E:1␤------> 3/<…»
flussence m: /<[^A..Z]>/
camelia ( no output )
flussence std: /<[^A..Z]>/
camelia std 28329a7: OUTPUT«ok 00:00 137m␤»
TEttinger hm ok
flussence hm, no complaints about that there...
jnthn flussence: Are you complaining that it doesn't complain? :) 14:15
flussence is putting "^" at the start of a character class intentionally, rare enough that warning about it would be a good idea?
yeah, that :)
jnthn Worth considering; it'll be a common thing to try 14:16
TEttinger m: "hey" ~~ /<-[\d\'\"\{\}\(\)\[\]\~\#\,\s\/]>/ 14:17
camelia ( no output )
TEttinger m: say "hey" ~~ /<-[\d\'\"\{\}\(\)\[\]\~\#\,\s\/]>/
camelia rakudo-moar f1fa64: OUTPUT«「h」␤»
TEttinger ahhhh
dalek ast: e3540cd | jnthn++ | S15-nfg/many-threads.t:
Tweak to make the test "harder".

By doing enough work to trigger some GCs while doing per-thread work also.
TEttinger ok
m: say "hey" ~~ /<-[\d\'\"\{\}\(\)\[\]\~\#\,\s\/]><-\'\"\{\}\(\)\[\]\~\#\,\s\/>+/ 14:18
camelia rakudo-moar f1fa64: OUTPUT«5===SORRY!5===␤Unrecognized regex metacharacter < (must be quoted to match literally)␤at /tmp/b5d3BaNn3P:1␤------> 3 ~~ /<-[\d\'\"\{\}\(\)\[\]\~\#\,\s\/]><-7⏏5\'\"\{\}\(\)\[\]\~\#\,\s\/>+/␤Unable to parse regex; couldn't find final '/'␤…»
TEttinger m: say "hey" ~~ /<-[\d\'\"\{\}\(\)\[\]\~\#\,\s\/]><-[\'\"\{\}\(\)\[\]\~\#\,\s\/]>+/
camelia rakudo-moar f1fa64: OUTPUT«「hey」␤»
TEttinger woo complicated regexes!
flussence m: say "hey" ~~ /<-[\d'"{}()[]~#,s/]><-[\s'"{}()[]~#,/]>+/ 14:19
camelia rakudo-moar f1fa64: OUTPUT«5===SORRY!5=== Error while compiling /tmp/cig_kWRS7u␤Unable to parse expression in metachar:sym<assert>; couldn't find final '>' ␤at /tmp/cig_kWRS7u:1␤------> 3say "hey" ~~ /<-[\d'"{}()[]7⏏5~#,s/]><-[\s'"{}()[]~#,/]>+/␤ expecting any o…»
flussence oh
m: say "hey" ~~ /<-[\d'"{}()[\]~#,s/]><-[\s'"{}()[\]~#,/]>+/
camelia rakudo-moar f1fa64: OUTPUT«「hey」␤»
TEttinger m: say "hey" ~~ /.U #/
camelia rakudo-moar f1fa64: OUTPUT«5===SORRY!5===␤Regex not terminated.␤at /tmp/WeGQ1MmzV7:1␤------> 3say "hey" ~~ /.U #/7⏏5<EOL>␤Unable to parse regex; couldn't find final '/'␤at /tmp/WeGQ1MmzV7:1␤------> 3say "hey" ~~ /.U #/7⏏5<EOL>␤ expecting any of:␤ …»
TEttinger OOPS 14:20
.u #
yoleaux U+0023 NUMBER SIGN [Po] (#)
dalek p: 16db457 | jnthn++ | tools/build/MOAR_REVISION:
Bump MOAR_REVISION for NFG mutli-thread fixes.
14:29
dalek kudo/nom: d179b43 | jnthn++ | t (2 files):
Bump NQP_REVISION; run S15-nfg/many-threads.t.
14:31
timotimo muraiki: porting to the JVM has forced us to make the "current working directory" completely virtual, which fortunately means we can have one per thread, rather than a process-global one. you can just have a "my $*CWD = '/...'" before your invocation and it should work - if not, please report bug 14:48
muraiki timotimo: thanks! although it looks like nqp::spawnprocasync takes a cwd arg, so I think adding it to Proc::Async would be pretty straightforward. that way if you wanted to do a few commands with different cwds in one thread, you wouldn't have to juggle them (such as saving the original cwd for a later command) 14:50
timotimo if you "my $*CWD", you don't have to remember the original value; if you leave the block you've defined it in, you get the original value right back 14:51
muraiki so I'd just put a bunch of blocks in one thread?
I see
I guess I just like being able to supply it in the constructor :) but thanks, that will solve my problem 14:52
masak catching up on backlog. 15:10
did someone rakudobug the indirect object colon EOF anomaly?
jnthn RT says no
Or at least, they didn't do so today 15:11
masak says "rakudobug"!
jnthn (just looking at the tail of the cue)
uh, queue
colomon just told a shell script to use perl7... 15:20
dalek pan style="color: #395be5">perl6-examples: 742c9dd | paultcochrane++ | lib/Pod/Htmlify.pm6:
Replace hard tabs with spaces
pan style="color: #395be5">perl6-examples: 6191b48 | paultcochrane++ | lib/Pod/ (2 files):
Link source files from subcategories to GitHub correctly

Source files from within subcategories were missing their subcategory within the link url pointing to GitHub. This commit ensures that files from categories and subcategories are linked to the correct url.
japhb Dunno if someone reported it, but Grammar::Debugger is failing tests. Since it seems to be confused by Failure, perhaps it's fallout from the Failure RV typecheck change ...? 15:35
jnthn japhb: Ugh, maybe... 15:37
Ven_ also had a segfault with the debugger not long ago (with readline not installed) 15:41
hoelzro morning #perl6 15:56
FROGGS[mobile] hi hoelzro
timotimo o/ 15:57
hoelzro o/ FROGGS[mobile], timotimo 15:58
lizmat morning #perl6! 16:03
lizmat is packing and getting ready to commute home
hoelzro o/ lizmat 16:04
safe travels back home!
lizmat thank you! 16:05
FROGGS[mobile] hi lizmat!
lizmat FROGGS[mobile] o/ 16:06
hoelzro jnthn: regarding that loop (my $i = 0;;) issue in RT (alledged variable escape), I can see how that would be confusing. Is there something we can do to clarify that for people? 16:07
lizmat but isn't that a genuine scoping bug ? 16:08
jnthn No, it's not a bug.
The rules in Perl 6 are very clear.
timotimo i don't think the my $i is scoped to the inside of the () and { } only
lizmat ok, then it's a case DIHWIDT
jnthn If it's inside the the curlies of a closure, or in the signature to a block, then it's scoped to the block. Otherwise it's not. 16:09
We could perhaps better document that.
lizmat some people might think it's a "signature" of the loop
jnthn I don't think we need to stress much over it, though.
Uses of "loop" should be rare anyway.
lizmat agree, DIHWIDT :-)
jnthn Given we've ranges and sequences... :) 16:10
lizmat well, yes, but the people who try to program C in Perl 6, *will* be confused by this I guess
hoelzro jnthn: I don't think it's a bug; I'm just wondering if there's something we should do to caution people when they do something like loop (my $i; ...)
hoelzro lizmat: in C99, it's scoped to outside of the block, isn't it? 16:11
[ptc] hi #perl6, why does `for $file.IO.lines[^Inf] <-> $line { $line ~~ s:nth(5)/\s/;/; $line.say }` give Cannot assign to an immutable value
hoelzro I know in C++ it's not
jnthn And in C89 I'm not sure you can even do it. :)
[ptc] whereas `my @lines = $file.IO.lines[^Inf]; for @lines <-> $line { $line ~~ s:nth(5)/\s/;/; $line.say }` doesn't (and runs) 16:12
hoelzro jnthn: I think the documentation was clear (it wasn't hard for me to find the section in S04 that I linked), I'm just wondering if a compiler warning would be smart
jnthn hoelzro: I don't think it warrants a warning
masak seeing another Parrot release go by, I'm struck by how many types of parrot are called something with "Lovebird".
lizmat but I guess 'for ^Inf -> $i { say $i; last if $i==5 }' is a better idiom than loop (my $i = 0; $i++; $i==5) { }
jnthn Because most of the time, unless you do declare another $i later, you're not going to have a problem. 16:13
We could put a hint on the "already declared" error
hoelzro alright, good point
profan so that's scoped outside of the loop block itself?
i mean, the "loop" construct doesnt have its own scope in that context
jnthn profan: Correct, loop doesn't get to be an exception to the rule. 16:14
lizmat masak: was there a Parrot release?? I didn't see it?
jnthn And in the for case, there's no problem 'cus the loop variable is a block parameter.
hoelzro: There's already a request in RT for the "already declared" message to point to where the previous decl was 16:16
hoelzro: I guess we could try and keep enough info around to give a hint about loop.
hoelzro it would be a nice to have 16:17
I just want people trying Perl 6 to not get confused, and I remember tripping up on if my $value = $something { ... } back when I was learning 16:18
jnthn Yeah, there the idiom you tend to want is "if something() -> $value { ... } 16:19
hoelzro right 16:20
but a lot of people (esp. Perl 5ers) may try if my $value = something() { ... } and get confused when that variable "escapes" 16:21
but you're right that the redeclaration warning is probably sufficient
jnthn wonders if this is mentioned in the 5to6 in doc 16:24
[ptc] could someone explain the difference between `for $file.IO.lines[^Inf] <-> $line { $line ~~ s:nth(5)/\s/;/ }` (which gives an error) and `my @lines = $file.IO.lines[^Inf]; for @lines <-> $line { $line ~~ s:nth(5)/\s/;/ }`, which doesn't?
jnthn Yes, it's mentioned
[ptc]: In the second case you've (eagerly) assigned to an array @lines which puts everything into a Scalar container 16:25
[ptc]: In the first case, you're iterating through a lazy list of lines and there is no container
Use "-> $line is copy" to make the first work out
[ptc] jnthn: ok, so that's why it's not possible to assign to $line in the loop?
jnthn Correct
iirc though, we should never have allowed $line to be bound to a non-container 16:26
(with <->)
[ptc] ah, ok. Just trying to get an example to work again, and am wondering why it doesn't work
jnthn So the error should have come a little earlier.
PerlJam m: my ($a,$b) = "foo bar" ~~ m/^(\w+) \s* (\w+)/; say "($a)($b)";
camelia rakudo-moar d179b4: OUTPUT«Use of uninitialized value $b of type Any in string context in block <unit> at /tmp/2ZyCzvi3pP:1␤(foo bar)()␤»
jnthn But "is copy" is probably what you're looking for.
PerlJam Am I having a brain-fart or should that still work in P6?
[ptc] jnthn: cool, thanks. I'll give it a go 16:26
lizmat commuting& 16:27
[ptc] jnthn: btw: the explanation wrt containers was helpful! 16:27
jnthn PerlJam: You get back a Match object 16:27
PerlJam: You probably want to get the list view of it
m: my ($a,$b) = list "foo bar" ~~ m/^(\w+) \s* (\w+)/; say "($a)($b)";
camelia rakudo-moar d179b4: OUTPUT«Use of uninitialized value $b of type Any in string context in block <unit> at /tmp/SNbuCQ6WF2:1␤(foo bar)()␤»
jnthn m: my ($a,$b) = flat "foo bar" ~~ m/^(\w+) \s* (\w+)/; say "($a)($b)";
camelia rakudo-moar d179b4: OUTPUT«Use of uninitialized value $b of type Any in string context in block <unit> at /tmp/kO2vRbKlxp:1␤(foo bar)()␤»
jnthn hmm
oh...
m: my ($a,$b) = @("foo bar" ~~ m/^(\w+) \s* (\w+)/); say "($a)($b)"; 16:28
camelia rakudo-moar d179b4: OUTPUT«(foo)(bar)␤»
jnthn m: my ($a,$b) = ("foo bar" ~~ m/^(\w+) \s* (\w+)/).list; say "($a)($b)";
camelia rakudo-moar d179b4: OUTPUT«(foo)(bar)␤»
jnthn One of those.
dalek pan style="color: #395be5">perl6-examples: 2a0d34b | paultcochrane++ | categories/euler/prob054-andreoss.pl:
[euler] Purge trailing whitespace
16:33
pan style="color: #395be5">perl6-examples: 76fc334 | paultcochrane++ | t/categories/ (2 files):
[t] purge trailing whitespace
pan style="color: #395be5">perl6-examples: 9251efb | paultcochrane++ | categories/euler/prob054-andreoss.pl:
[euler] enable loop param to be writable in loop

The code `for $file.IO.lines[^$lines] <-> $line` iterates over a lazy list of lines without a container, thus it gives the error `Cannot assign to an immutable value` (since `$line` is immutable in this case). To enable
  `$line` to be writable within the loop, one needs to replace `<-> $line`
with `-> $line is copy`. Thanks to jnthn++ for the clear explanation. Unfortunately, the script doesn't produce the correct answer, but that's another issue.
xinming How do we make a dump the object, so we it can be initialized later? 16:55
[ptc] .tell andreoss could you have a look at euler/prob054-andreoss.pl please? It runs again, however gives 380 as the answer instead of 376, and I'm not sure why
yoleaux [ptc]: I'll pass your message to andreoss.
xinming When I try to do something with $obj.perl.say, I only saw the MyClass.new without any arguments
Ignore me, I use has $attr, not has $.attr 16:56
JimmyZ_ 好久不见 16:59
masak JimmyZ_! 好久不见! 17:02
JimmyZ_ :) 17:03
tony-o m: class A { has $attr = 5; method a { $!attr.say; }; }; A.new.a
camelia rakudo-moar d179b4: OUTPUT«5␤»
nwc10 ilmari just pointed me at this: i.imgur.com/qq2ceU9.jpg 17:03
tony-o xinming: ^^ 17:04
nwc10: lol
spintronic hi guys simple question how do I enter multiline input into the perl6 REPL? 17:05
masak pierrot: there's ongoing work on a better REPL which allows you to do that. 17:06
er, spintronic*
JimmyZ_ so whats the differenc between has $attr and has $.attr 17:07
spintronic ah ok thanks masak!
tony-o $! doesn't auto create accessors/setters for you
masak JimmyZ_: `has $attr` gives you an `$!attr` but allows you to call it `$attr` in the class scope.
JimmyZ_: because it doesn't have a `.`, it doesn't give you accessors.
tony-o m: class E { has $.a; }; E.new.^methods.say; 17:08
camelia rakudo-moar d179b4: OUTPUT«a␤»
masak JimmyZ_: I see most people discouraging use of `has $attr` in favor of the more explicit `has $!attr`
tony-o $.a auto creates that accessor for $!a
masak++
masak JimmyZ_: but `has $attr` has also been called "a sop to people who don't like twigils"
tony-o m: class E { has $!a = 5; method a { return $!a+5; }; }; E.new.a.say; 17:09
camelia rakudo-moar d179b4: OUTPUT«10␤»
masak tony-o: it does, but it also steps aside if there's a `method a` in the class. 17:13
JimmyZ_ masak: thanks. it is nice to have 'has $attr' 17:15
xinming It's a long time since I pick perl6 up again. as I saw that we'll have a workable and almost stabilized perl6 interpreter. :-)
DrForr Seems pretty stable these last few weeks :) 17:16
xinming Things changed a lot, the new Type object thing, and other things. Will read the doc more to catch up. 17:17
JimmyZ_ xinming: 欢迎回来 17:18
masak heh. meant to comment on rt.perl.org/Public/Bug/Display.html?id=125431 , but jnthn++ had already left exactly the comment I wanted to write ;) 17:19
xinming: what new Type object thing?
xinming masak: I mean the type object. 17:21
谢谢
masak: my Int $var; $var contains Int type
and also the Nil and () thing 17:22
JimmyZ_ it is not new.
masak was gonna say. 17:23
I don't know how back you have to go for `my Int $var;` to not contain Int. maybe forever. 17:24
there are some changes around Nil and (), yes.
hoelzro++ # release 17:25
m: sub foo ($a, $f) { if $f { foo("z", 0) }; {$_=$a; say $a; say $_} }; foo("x", 1)
camelia rakudo-moar d179b4: OUTPUT«z␤z␤z␤z␤»
masak wow, to think that we still have a lexical bug... :/ 17:27
masak the correct output would be "[call foo("x", 1)][call foo("z", 0)]z␤z␤[return]x␤x␤[return]" 17:29
bartolin j: sub foo ($a, $f) { if $f { foo("z", 0) }; {$_=$a; say $a; say $_} }; foo("x", 1) 17:30
camelia rakudo-jvm d179b4: OUTPUT«z␤z␤x␤x␤»
bartolin hi, #perl6
hoelzro [Coke]: btw, I didn't get around to updating the PortFile for Moar/NQP, but I can do that after work today 17:31
masak here's a shorter version: 17:33
m: my $y = 1; sub foo($x) { $y-- && foo("z"); { say $x } }; foo("x")
camelia rakudo-moar d179b4: OUTPUT«z␤z␤»
masak again, should say "z␤x␤"
masak adds the example to RT #109322 17:35
bartolin nice, masak++
masak bartolin: I am a lexbug hunter. I stalk lexbugs through the dark night, and when I catch them, I drive a stake through their cold, bloodthirsty heart. 17:36
bartolin didn't know masak's particular love for lexbugs 17:37
masak "love" is a charitable interpretation of what I said. 17:38
bartolin *g*
masak watch this:
FROGGS ohh noes!! whitespace! 17:39
masak moritz: RT #58392!
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...l?id=58392
masak (sorry, lag)
bartolin reads ...
grondilu m: enum Square ("a".."h" X~ 1..8); say a1 # should this work? 17:40
camelia rakudo-moar d179b4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/7jXucfm4Gk␤Undeclared routine:␤ a1 used at line 1␤␤»
grondilu m: enum Square <a1 a2>; say a1 # should this work?
camelia rakudo-moar d179b4: OUTPUT«a1␤»
grondilu m: enum Square BEGIN "a".."h" X~ 1..8; say a1 17:41
camelia rakudo-moar d179b4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/qlsG29Qxa2␤Undeclared name:␤ Square used at line 1␤Undeclared routines:␤ a1 used at line 1␤ enum used at line 1␤␤»
masak I was expecting moritz to give a start and scream in horror... but maybe he's AFK, and we'll get a delayed scream ;) 17:43
bartolin masak: that looks like it was a very nice bug ... 17:44
masak it's the most frustrating bug in the entire RT.
grondilu: I don't see offhand why that shouldn't work. 17:45
jnthn It's very well RT'd already that enum doesn't like anything too fancy 17:46
It's non-trivial to fix because enums show up in the CORE.setting
Or at least, it was last time I looked.
masak oh. circularity trouble. 17:47
jnthn Aye
And to think some folks wish Rakudo were a bootstrapping compiler... :P
m: sub foo ($a, $f) { if $f { foo("z", 0) }; if 1 {$_=$a; say $a; say $_} }; foo("x", 1) 17:49
camelia rakudo-moar d179b4: OUTPUT«z␤z␤x␤x␤»
jnthn m: sub foo ($a, $f) { if $f { foo("z", 0) }; (-> {$_=$a; say $a; say $_})() }; foo("x", 1)
camelia rakudo-moar d179b4: OUTPUT«z␤z␤x␤x␤»
masak jnthn: maybe there's room for a two-level definition enums: something like not-quite-enums that are used early, and then the real enums later?
just a thought. 17:50
spintronic how do I load a script from the Perl6 REPL?
masak spintronic: you can load a module with the -M flag
spintronic masak: looks like I can use EVAL slurp 'myscript.p6' too? 17:51
jnthn masak: That may be a way to do it
spintronic: or EVALFILE 'myscript.p6'
jnthn tests a fix for the bare block thing 17:54
skids So, I doubt I'll get much of anywhere but I'm toying with implementing .assuming(foo,*,Nil,bar) etc and signatures on the produced primed functions. 17:55
is there any reason not to break subroutines out of BOOTSTRAP's "sub bind" for code reuse, performance-wise?
spintronic jnthn and masak: both of them work great thanks!
jnthn skids: What do you want to re-use there, ooc? 18:00
skids Well, the $capsnap was the first thing I noticed, but I'm sure there will be more. 18:00
timotimo how smart are we about taking closures of things that don't use many of the outer lexical values? we're probably doing fine, as all subs are basically lexical values more or less and our closures aren't multiple megabytes in size just because they're lexically inside the core setting? 18:01
jnthn timotimo: We just have an ->outer pointer, it's all be reference, we don't copy
timotimo ah, good
dalek kudo/nom: 175c4d8 | jnthn++ | src/Perl6/Actions.nqp:
Fix reentrancy fail with bare blocks.

Resolves RT #109322.
18:02
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=109322
dalek ast: 7fae5b5 | jnthn++ | S06-advanced/lexical-subs.t:
Unfudge test for RT #109322.
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=109322
skids Really it looks like eventually binding could be "prime, and if there are no leftover args, you successfully bound" 18:03
jnthn Well, note that the bind code is implemented separately on JVM, and in most cases on MoarVM for normal binds we never use the binder, we compile the signature 18:04
skids Right, but for bootstrap. 18:04
timotimo jnthn: where would i have to look to put in diagnostics for why binds sometimes don't get compiled on moar? 18:05
skids And yeah implementing the JVM .assuming stuff would be a learning curve for me, not knowing any java.
jnthn skids: What particular behavior of assuming are you wanting to implement? 18:06
skids A few. There's an RT complaining about the arity of the result, and the spec says you can pass whatever stars in to curry x and z but not y in :(x,y,z)
jnthn skids: Faking up a signature/arity/count?
Ah 18:07
bartolin wow, jnthn++ # that quick fix for RT #109322 (and all those other fixed tickets)
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=109322
timotimo because sometimes i see "bind" and "bind_one_value" and friends at somewhat high places in profiles
skids BTW I found RT#125437 while looking over the binder code.
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=125437
jnthn skids: I don't think you've have to change the binder to do those
timotimo usually not as high as the reify gang, but i'd expect them to almost always disappear completely 18:08
and they end up with very high call counts sometimes
bbiab
jnthn timotimo: I'd put something in Actions.nqp
skids No don't have to, just wondering if there is a reason not to factor code for reuse in BOOTSTRAP, like is it not efficiently compiled or something.
jnthn timotimo: There's a line "if lower_signature(...)" 18:09
timotimo: Add an else to that if and you can log which blocks don't be their sigs lowered
skids: Well, the other big reason is that we don't use that code path at all on JVM; iirc it's in #?if moar... 18:10
skids jnthn: yes, I'm aware. But I don't think(?) things are introspectable enough yet to do all these things from Perl6. 18:11
Also a missing part is how, once I have the new Signature, to attach it to the code block that does the call with the combined capture. 18:13
Unless using EVAL is a performant option. 18:14
Oh, and one other question was under what scenarios "unnamed capture parameters" appear. 18:17
jnthn One option would be to have the code object be mixed in to, so that .signature/.arity/.count respect the assumed signature 18:18
You could even lazily work those bits out if they're asked for
skids That's an idea, for sure. 18:20
jnthn You may need to use nqp::ops to manipulate the Signature
Well, almost certainly will 18:21
skids Yeah there's no useful Signature.new, was a problem. The other is if we want .assumming to blow up at that code line when impossible priming parameters are provided.
*arguments 18:23
xinming m: class T { has Array of Int @abc }; 18:24
camelia ( no output )
xinming m: class T { has Array of Int @.abc; method t () { @abc.perl.say } }; T.new.t; 18:25
camelia rakudo-moar 175c4d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/8M9D5kS81g␤Variable '@abc' is not declared. Did you mean '@!abc'?␤at /tmp/8M9D5kS81g:1␤------> 3{ has Array of Int @.abc; method t () { 7⏏5@abc.perl.say } }; T.new.t;␤»
xinming m: class T { has Array of Int @!abc; method t () { @abc.perl.say } }; T.new.t;
camelia rakudo-moar 175c4d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/ni1o9f9G5F␤Variable '@abc' is not declared. Did you mean '@!abc'?␤at /tmp/ni1o9f9G5F:1␤------> 3{ has Array of Int @!abc; method t () { 7⏏5@abc.perl.say } }; T.new.t;␤»
nine How's the GLR doing these days? 18:26
skids m: class T { has Array of Int @.abc; method t () { @.abc.perl.say } }; T.new.t;
camelia rakudo-moar 175c4d: OUTPUT«Array[Array[Int]].new()␤»
xinming hmm, The reason I test this is because, It seems 'has Array of Int @array' doesn't work. But 'has Array:of(Int)' worked.
strange
bbl
My mistake, It worked now. I don't know why, maybe typo. 18:27
skids xinming: the twigils.
note that that's an array of an array of int 18:28
xinming skids: Yes, And I just noticed, I don't need 'Array of' thing in my case. 18:30
It seems, perl6 still doesn't support required object attributes yet. 18:36
needs to do it within BUILD method
skids xinming: has $.a = die("must haz a")
but someone is working on an "is required" trait. 18:37
xinming Ok, got it, thanks. I tried with 'is required', and I got an error, I thought it's not supported.
skids (And personally I think has $.a! to be consistent with sigs might be nice.) 18:38
Yes "is required" is NYI.
xinming m: class A { method hello () { "Hello".say; } }; class T { has A $.a handles qw:w(hello) }; T.new.hello; 18:41
camelia rakudo-moar 175c4d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/q2IH0hYjkZ␤Invalid adverb value for :w(hello)␤at /tmp/q2IH0hYjkZ:1␤------> 3class T { has A $.a handles qw:w(hello) 7⏏5}; T.new.hello;␤»
xinming Is this a bug? 18:42
m: class A { method hello () { "Hello".say; } }; class T { has A $.a handles qw(hello) }; T.new.hello;
camelia rakudo-moar 175c4d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/BCJOIpB5oJ␤Cannot invoke this object (REPR: Null, cs = 0)␤at /tmp/BCJOIpB5oJ:1␤»
xinming m: class A { method hello () { "Hello".say; } }; class T { has A $.a handles qq:w(hello) }; T.new.hello;
camelia rakudo-moar 175c4d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/rZD0Lex865␤Invalid adverb value for :w(hello)␤at /tmp/rZD0Lex865:1␤------> 3class T { has A $.a handles qq:w(hello) 7⏏5}; T.new.hello;␤»
xinming these three neither worked.
xinming the <> worked though 18:42
ugexe m: class A { method hello () { "Hello".say; } }; class T { has A $.a handles /^hell/ }; T.new.hello; 18:43
camelia rakudo-moar 175c4d: OUTPUT«Hello␤»
xinming I don't mean the regex 18:45
I mean the qw thing in perl6
skids m: qw:w(hello).say
camelia rakudo-moar 175c4d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/LfdSTTsZRP␤Invalid adverb value for :w(hello)␤at /tmp/LfdSTTsZRP:1␤------> 3qw:w(hello)7⏏5.say␤»
xinming I'll test it again
yes, seems qw doesn't work.
skids m: q:w(hello).say 18:46
camelia rakudo-moar 175c4d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/7JiwM5FJjh␤Invalid adverb value for :w(hello)␤at /tmp/7JiwM5FJjh:1␤------> 3q:w(hello)7⏏5.say␤»
skids m: q:w/hell/.say
camelia rakudo-moar 175c4d: OUTPUT«hell␤»
skids It's the delimiter. 18:47
Whitespace is mandatory with () 18:48
xinming m: q:w (ab c);
camelia ( no output )
skids m: q:w (hello).say
camelia rakudo-moar 175c4d: OUTPUT«hello␤»
xinming m: q:w (ab c).say;
camelia rakudo-moar 175c4d: OUTPUT«ab c␤»
xinming m: q:w/ab c/.say;
camelia rakudo-moar 175c4d: OUTPUT«ab c␤»
xinming Ok, Thanks, the white space thing for () makes me feel unnatural exception. 18:49
skids It's necessary because there are other possible meanings.
PerlJam it seems totally natural to me :)
skids xinming: design.perl6.org/S02.html#Delimiter...ting_forms explained here. 18:50
grondilu the gist is you should avoid using () for that 18:51
xinming because when qw:w ().say <-- In this way, the ().say is closer to say, which makes me feel unnatural. I'll get used to after I get more understand of it. 18:52
skids: thanks
FROGGS $ perl6-j -e 'my $p1 = shell("dir", :out); my $p2 = shell("wc", :in($p1.out), :out); say $p2.out.lines' 19:02
35 104 1475
that was quite some work...
ugexe FROGGS: looks like POST testers.perl6.org/report needs some loving to accept new reports 19:03
FROGGS after adding tests I'll push to a branch so that jvm pro's can review
ugexe: will look
ugexe: should work now 19:05
it looses connection to its Pg database after weeks it seems 19:06
ugexe FROGGS++ with the quickness
i was hoping it wasnt me sending bad requests 19:07
FROGGS no, that seems very unlikely 19:08
tony-o okay, got a basic prettier dumper going, the colors are still ugly..there isn't much color wheel option in a terminal 19:09
oops
i.imgur.com/DjFHalp.png 19:11
damnit
PerlJam tony-o++ anyway :) 19:12
dalek pan style="color: #395be5">perl6-examples: ae590ca | paultcochrane++ | t/categories/cookbook/13classes-objects-and-ties.t:
[cookbook] add a test for 13classes-objects-and-ties
19:13
FROGGS tony-o: I like it
PerlJam Does NativeCall have a way to indicate const-ness? 19:15
dalek p/openpipe3: 04c2ae0 | FROGGS++ | src/vm/jvm/ (5 files):
extend nqp::shell/nqp::spawn with in/out/err/flags params

This means that we can use shell() and run() in rakudo for purposes we used pipe() for, but with extra freedom and flexibility. nqp::openpipe, as well as nqp::shell1 and nqp::shell3 are removed.
19:18
FROGGS PerlJam: no
tony-o as soon as i add arrays to it ill give it an upload so we can start making it better 19:19
its p rough
timotimo there are terminals out there that support an escape sequence that lets you specify 256 values for R, G and B each 19:22
ugexe pipe :p deprecation messages from IO::Handle: github.com/rakudo/rakudo/blob/nom/...dle.pm#L13 19:23
as in im not calling pipe directly. Some core feature like Proc::Async must be using it
FROGGS ugexe: are you calling CompUnit.precomp by any chance? 19:27
ugexe yeah 19:29
FROGGS that's causing it... 19:30
ugexe ah, which part? the pipe() in CompUnit.precomp doesn't have :p, and the error line itself points to that IO::Handle line 19:31
FROGGS ugexe: open(:p) is deprecated and warns, and pipe() which is meant to be used right now just calls open(:p) :o( 19:32
timotimo %) 19:34
ugexe that pipe() will just get replaced with Proc.pipe() etc fork in the future eh? 19:35
s/fork/branch/
timotimo FROGGS: großartige arbeit :) 19:39
FROGGS :D
ugexe: will be replaced with shell(...), run(...) or Proc.new(...).shell(...) etc 19:40
timotimo we'll end up with ten different ways to invoke external programs :\ 19:45
we'll also have to have something like python's shlex module, eh? 19:46
ugexe i dont mind a billion different ways after dealing with too few ways :) 19:47
but i draw my limit at a billion 19:48
timotimo mhm 19:49
dalek kudo/openpipe3: b9980d9 | FROGGS++ | src/core/IO/Handle.pm:
use nqp::shell instead of removed nqp::openpipe
dalek p/openpipe3: 8c606c6 | FROGGS++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
remove mapping for nqp::openpipe on moar
19:50
FROGGS timotimo: shell("cmd", :out) will result in a call to: Proc.new(:out).shell("cmd") 19:51
timotimo ok
FROGGS and run(@args, :out) will result in a call to: Proc.new(:out).run(@args) 19:52
so Proc is a bit like ProcessBuilder
dunno what shlex is though
so the only thing that's left for openpipe3 branch is tests tests tests 19:54
timotimo parses "shell expressions" if you want to do your own argument splitting from a given string
jnthn A lower-pitched shrillex? :P
ugexe anyone have an explanation for why $cmd="(cd whatever && echo 1)": shell($cmd) will do what is expected, and Proc::Async.new($cmd) does not? is it because of that argument splitting timo just mentioned?
FROGGS ugexe: does this work? Proc::Async.new("sh -c cd whatever && echo 1") 19:56
jnthn Maybe that shell tries to invoke a shell, and Proc::Async tries to invoke a process?
skids m: role A [ :$a where { $_ == False } ] { }; class B does A[:!a] { }; 19:57
camelia ( no output )
skids m: role A [ :$a where { $_ == False } = True ] { }; class B does A[:!a] { };
camelia rakudo-moar 175c4d: OUTPUT«===SORRY!===␤No appropriate parametric role variant available for 'A'␤»
skids recent breakage
star: role A [ :$a where { $_ == False } = True ] { }; class B does A[:!a] { };
camelia star-m 2015.03: OUTPUT«===SORRY!===␤No appropriate parametric role variant available for 'A'␤»
skids hrm.
zacts hello 19:58
skids was not expecting that last one to fail.
jnthn skids: If planning to use named args in role variants, you'd probably better know that they don't play into the role interning in any way at all.
FROGGS hi zacts
masak hi zacts
skids I've been using named args in roles for several years now. 19:59
jnthn: They are actually a big part of the Sum API. 20:00
skids m: role A [ $a where { $_ == False } ] { }; class B does A[False] { }; # anyway it is not a named arg thing 20:01
camelia ( no output )
jnthn skids: And if they've been doing the right thing in the way you have been using them I suspect they should continue to.
skids role A [ $a where { $_ == False } = True ] { }; class B does A[False] { }; 20:02
m: role A [ $a where { $_ == False } = True ] { }; class B does A[False] { };
camelia rakudo-moar 175c4d: OUTPUT«===SORRY!===␤No appropriate parametric role variant available for 'A'␤»
jnthn m: multi foo($a where { $_ == False } = True) { }; foo(False); 20:03
camelia rakudo-moar 175c4d: OUTPUT«Cannot modify an immutable Block␤ in sub foo at /tmp/Uyw7WhaXYZ:1␤ in block <unit> at /tmp/Uyw7WhaXYZ:1␤␤»
jnthn There you go
It's parsing the default as an assignment there somehow.
star: multi foo($a where { $_ == False } = True) { }; foo(False);
camelia star-m 2015.03: OUTPUT«Cannot modify an immutable Block␤ in method ACCEPTS at src/gen/m-CORE.setting:3867␤ in sub foo at /tmp/VWsAHlsKcO:1␤ in sub foo at /tmp/VWsAHlsKcO:1␤ in block <unit> at /tmp/VWsAHlsKcO:1␤␤»
jnthn Maybe that's what changed.
skids Oh right, I know now what must be done. It is an old bug.
jnthn I wonder how STD parses that 20:04
I dont't know how to get STD to show the difference though
skids m: role A [ $a where { $_ == False }␤= True ] { }; class B does A[False] { };
camelia ( no output )
skids It just seems to have crept into places it did not used to be, I think.
jnthn | where <EXPR('i=')> 20:06
skids RT#123623
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=123623
jnthn That's item assignment.
jnthn But yeah, seems it's nothing to do with roles, and everything to do with signatures. 20:07
The prec limit seems right though
ohhh 20:08
if $inprec lt $preclim { 20:09
But sTD has
if $inprec le $preclim {
zacts what are the main issues rakudo perl6 is facing for developers? 20:10
and what is a good newbie entrypoint into rakudo (other than learning perl6 itself)?
jnthn And if I change it in NQP to "le" then I get parse fails in NQP... 20:13
moritz zacts: github.com/edumentab/rakudo-and-nq...als-course
zacts cool
jnthn uh, maybe legitimately 20:14
zacts moritz: and how about current setbacks / issues facing developers?
what are the main problems that will need to be solved to make rakudo production ready?
jnthn std: my $a; my $b; defined($a) ?? $a := $b !! $b
camelia std 28329a7: OUTPUT«5===SORRY!5===␤Precedence of := is too loose to use between ?? and !!; please use parens around inner expression at /tmp/XJSJWP61px line 1:␤------> 3my $a; my $b; defined($a) ?? $a :=7⏏5 $b !! $b␤Parse failed␤FAILED 00:00 138m␤»
skids zacts: It's pretty complicated in there and the bus factor is a bit low. 20:15
jnthn Also, nobody has exactly the same definition of "production ready". 20:18
dalek ast: 7a175ae | usev6++ | S (2 files):
Use existing ticket number RT #118069
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=118069
jnthn For some people it's "need it to be faster", and working on optimization is always hard for any language 'cus you need to have a deep understanding of the language to know what you can do without getting caught. :) 20:19
For others it's "wish the concurrency was more stable", but developers who grok that area are few and far between. 20:21
For other people it's "need more modules so I can actually get stuff done"; this problem, thankfully, *is* a load easier to have many people contribute towards :)
Otherwise, it's a case of trawling through the bug queue and trying to deal with the most painful issues, but those can vary from "10 minutes" to "10 days". 20:22
jnthn There's sometimes bits of low hanging fruit, and it's worth picking in so far as some of it is directly about developer experience using Rakudo, and a bad failure mode can be enough for some people to be like "argh, not ready". 20:26
hoelzro speaking of LHF, I was just talking to Milwaukee.pm about that last night after my hacking on Rakudo tal 20:27
*talk
hoelzro people are eager to start helping with bugs, but it's not easy to identify what's easy and what's not in RT 20:28
hoelzro so I'm wondering if we should have a "low hanging fruit" tag 20:28
jnthn std: 1 ?? 2 ?? 3 !! 4 !! 5
camelia std 28329a7: OUTPUT«ok 00:00 136m␤»
jnthn std: 1 ?? 2 ?? first 3 !! first 4 !! 5
camelia std 28329a7: OUTPUT«5===SORRY!5===␤List operator is not allowed inside ??!!; please use parens at /tmp/C8v1Oqd_85 line 1:␤------> 031 ?? 2 ?? first 3 !!7⏏5 first 4 !! 5␤Parse failed␤FAILED 00:00 136m␤»
masak hoelzro: didn't we have a "low hanging fruit" tag in RT at some point? 20:30
jnthn LHF
And yeah, it's been used
maybe is somewhere else
masak maybe it's still there? :)
jnthn std: class C { multi method tree(Any:D: *@ [&first, *@rest]) { nqp::istype(self,Positional) ?? @rest ?? first(MapIter.new(self.list, { .tree(|@rest) }, Mu).list) !! first(self.list) !! self 20:31
camelia std 28329a7: OUTPUT«5===SORRY!5===␤Unable to parse block at /tmp/xUDz0vPPVS line 1:␤------> 3method tree(Any:D: *@ [&first, *@rest]) 7⏏5{ nqp::istype(self,Positional) ?? @rest ␤Couldn't find final '}'; gave up at /tmp/xUDz0vPPVS line 1 (EOF):␤------> 3}, Mu).list)…»
jnthn std: class C { multi method tree(Any:D: *@ [&first, *@rest]) { nqp::istype(self,Positional) ?? @rest ?? first(MapIter.new(self.list, { .tree(|@rest) }, Mu).list) !! first(self.list) !! self } }
camelia std 28329a7: OUTPUT«5===SORRY!5===␤Undeclared name:␤ 'MapIter' used at line 1␤Undeclared routine:␤ 'nqp::istype' used at line 1␤Check failed␤FAILED 00:00 152m␤»
jnthn std: sub istype() { }; class C { multi method tree(Any:D: *@ [&first, *@rest]) { istype(self,Positional) ?? @rest ?? first(MapIter.new(self.list, { .tree(|@rest) }, Mu).list) !! first(self.list) !! self } }
camelia std 28329a7: OUTPUT«5===SORRY!5===␤Undeclared name:␤ 'MapIter' used at line 1␤Check failed␤FAILED 00:00 152m␤»
hoelzro I don't see it in RT
jnthn std: sub istype() { }; class MapIter { }; class C { multi method tree(Any:D: *@ [&first, *@rest]) { istype(self,Positional) ?? @rest ?? first(MapIter.new(self.list, { .tree(|@rest) }, Mu).list) !! first(self.list) !! self } }
camelia std 28329a7: OUTPUT«ok 00:00 153m␤»
jnthn bah 20:32
std: sub istype() { }; class MapIter { }; class C { multi method tree(Any:D: *@ [&first, *@rest]) { istype(self,Positional) ?? @rest ?? first MapIter.new(self.list, { .tree(|@rest) }, Mu).list !! first self.list !! self } } 20:34
camelia std 28329a7: OUTPUT«5===SORRY!5===␤List operator is not allowed inside ??!!; please use parens at /tmp/8gt7yMDMJK line 1:␤------> 3elf.list, { .tree(|@rest) }, Mu).list !!7⏏5 first self.list !! self } }␤Parse failed␤FAILED 00:00 150m␤»
dalek kudo/nom: d474242 | jnthn++ | src/core/Any.pm:
Fix listop use inside ?? ... !!

We don't yet choke on it like STD does, but when we start to this will be a problem.
20:35
bartolin hoelzro: I think, it's just using [LHF] in the subject. Actually, there are a total of 30 tickets with this tag -- but only one of those is not resolved ... 20:36
jnthn Heh, we actually had in infix:sym<?? !!> a hack that uses the wrong prec level because EXPR did lt instead of le :) 20:38
masak hah!
jnthn With that fixed, we make it through the Rakudo build and "make test" 20:39
And it fixes the parse bug with the default
timotimo good catch 20:40
jnthn Now for the spectest fallout...
jnthn ugh, there is some too 20:40
naptastic p6: my $foo='string'; say "barf {$foo} frab"
camelia rakudo-moar 175c4d: OUTPUT«barf string frab␤»
naptastic p6: my $foo='string'; say "barf {} frab" 20:41
camelia rakudo-moar 175c4d: OUTPUT«Use of Nil in string context in block <unit> at /tmp/tmpfile:1␤barf frab␤»
naptastic p6: my $foo='string'; say "barf \{} frab"
camelia rakudo-moar 175c4d: OUTPUT«barf {} frab␤»
naptastic p6: my $foo='string'; say "barf {\} frab"
camelia rakudo-moar 175c4d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤You can't backslash that␤at /tmp/tmpfile:1␤------> 3my $foo='string'; say "barf {\7⏏5} frab"␤ expecting any of:␤ prefix␤ term␤»
naptastic Is there a way to use curlies in an interpolating string in Perl 6 without escaping them?
labster jnthn++ for the compiler reserved ops error, very nice.
masak naptastic: yes, there is some Q flag that'll turn brace interpolation off 20:42
jnthn naptastic: Use a quoting construct that defines what sort of things to interpolate
naptastic Guess I have some more reading to do
masak S02 has the details
naptastic p6: my $foo='string'; say qq/ barf {} frab /; 20:43
camelia rakudo-moar 175c4d: OUTPUT«Use of Nil in string context in block <unit> at /tmp/tmpfile:1␤ barf frab ␤»
jnthn m: my $x = 'nyan'; say q:s"$x cat ~=={.^.}"
camelia rakudo-moar 175c4d: OUTPUT«nyan cat ~=={.^.}␤»
naptastic Oh my! I do have some reading to do!
jnthn q is the thing that knows about backslash escapes, and :s turns on interpolating scalars 20:44
I think I did an advent blog post on quoting stuff a couple of years ago...
Though there's a decent chance this is described in doc.perl6.org somewhere too... 20:45
labster No, doc.perl6.org/language/quoting needs a bit more 20:45
jnthn Feel free to steal examples from the blog post :) 20:46
Unlucky. 13 spectests have regressiosn thanks to my EXPR fixes...
labster m: my $x = 'nyan'; say qq:!c"$x cat ~=={.^.}" # just turns off closure interpolation
camelia rakudo-moar 175c4d: OUTPUT«nyan cat ~=={.^.}␤»
jnthn Aye, that's another way 20:47
Also, there's gotta be a better ascii art nyan cat...
naptastic btw 20:48
^..^ is a bat
I don't care what anyone else says
labster naptastic: design.perl6.org/S02.html#Adverbs_on_quotes
naptastic it's a bat.
naptastic oh gawd, :x 20:48
labster yes, that's Perl 6's bat operator
masak naptastic: when Gotham needs help, they project ^..^ onto the clody sky.
labster when masak needs help, he projects »ö« 20:49
masak Camelia, I summon thee!
jnthn m: 'nananananananana' ^..^ 'man!' 20:50
camelia ( no output )
naptastic p6: say q:x/ls -al/; 20:51
camelia rakudo-moar d47424: OUTPUT«qx, qqx is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting:1␤ in sub QX at src/RESTRICTED.setting:11␤ in block <unit> at /tmp/tmpfile:1␤␤»
japhb
.oO( Nana-na-na, nana-na-na, heeyyy, GOODBYE )
naptastic Ok, good, that's what I thought
labster obligatory: xkcd.com/851/ 20:52
[ptc] done;
exit 0;
sorry! 20:53
timotimo FINISH SECTION
labster __END__
masak :q! 20:58
jnthn std: my @foo; my $exists = @foo[0]:exists; 20:59
camelia std 28329a7: OUTPUT«ok 00:00 140m␤»
masak sexists!
PerlJam gist.github.com/perlpilot/525c50dc95880e7388a2 20:59
masak PerlJam: that's for loading a library? wow. 21:00
jnthn grmbl. My preclimit handling fix has also broked something to do with adverbs 21:01
PerlJam masak: See github.com/perlpilot/p6-lapacke if you want to try it yourself.
labster ESLOWNESS
PerlJam (it's a simple interface to LAPACK)
jnthn PerlJam: Did you precomp any of that?
PerlJam no. I did not.
jnthn OK, so it's probably mostly parse/compilation time. 21:02
PerlJam Aye.
jnthn (Which we still need to get faster.)
PerlJam This is actually the first time I've tried to load anything so big and even really noticed that the compilation time was so long. 21:06
naptastic Yes please :(
masak PerlJam: it reminds me of the November load times back in 2008 :)
PerlJam: we just look at them and went "ok, this is not web scale" 21:07
it baseically forced us to precompile.
jnthn std: my @foo; (my $exists = @foo[0]):exists; 21:08
camelia std 28329a7: OUTPUT«ok 00:01 141m␤»
jnthn Does anybody have an STD?
masak *snrk*
jnthn If so, could you get me the AST it spits out for
std: my @foo; my $exists = @foo[0]:exists;
camelia std 28329a7: OUTPUT«ok 00:00 140m␤»
jnthn Because I think STD is getting it wrong. 21:09
And attaching the :exists adverb wrongly
'cus infixish has prec i=
(%item_assignment)
And we preclimit to %item_assignment for initializers
So we end up trying to adverb completely the wrong thing. 21:10
dalek pan style="color: #395be5">perl6-examples: 1fea69c | paultcochrane++ | categories/cookbook/09directories/09-05-all-files-dir.pl:
[cookbook] pass dir to process as command line arg
perl6-examples: da6fc19 | paultcochrane++ | categories/cookbook/09directories/09-05-all-files-dir.pl:
perl6-examples: [cookbook] be slightly more explicit about what's being processed
bartolin jnthn: my STD is from October 2014. That's probably too old? 21:13
jnthn bartolin: It's probably fine actually
bartolin: I doubt this aspect has changed for a couple of years
Because STD only parses, this thing coulda easily gone unknown for a long time
bartolin jnthn: ok, is that what you need: gist.github.com/usev6/3697d60ce7fe77f0d680 21:14
jnthn And Rakudo's had a bug that's been hiding it.
jnthn bartolin: Yes 21:15
Would lvoe second opinions, but that looks busted
The VAST::Adverb is on the scope declarator 21:16
jnthn bartolin: Thanks, I think that confirms I'm looking at STD bug. 21:18
Unfortunately, I don't immediately know what to do about this...
bartolin yw 21:18
timotimo looks like something TimToady ought to have a look at 21:20
jnthn Yeah, that's what I'm concluding, given every alternative I can think of has drawbacks 21:21
timotimo ISTR timtoady wrote what he'll be doing tomorrow; traveling?
jnthn Yeah, though maybe I can get an answer if he drops by :) 21:22
timotimo that'd be nice 21:23
jnthn .tell TimToady in STD, "my $exists = @foo[0]:exists" puts the adverb on the whole scope decl, because adverbs have item assignment precedence, put the initializer preclimits to item assignment. In Rakudo we wrongly had preclimit doing exclusive, not inclusive, checking, so we never noticed until now. 21:24
yoleaux jnthn: I'll pass your message to TimToady.
masak jnthn++ 21:25
jnthn .tell TimToady s/put/but/. Also I don't immediately see a good fix; I suspect changing adverb's prec will have bad effects, but initializer doesn't feel like the right change either. Ideas welcome. :) 21:26
yoleaux jnthn: I'll pass your message to TimToady.
masak jnthn: my mental rule for what the adverb ends up attached to is "look backwards, find the root of the sensible AST fragment". what you're saying here is that it finds the '=', not the '[0]' ? 21:26
masak well, the '=' *is* a higher point in the AST than '[0]'... 21:27
jnthn masak: According to the VAST, it finds the whole scope decl 21:28
masak: Thing is, the = there is not parsed as an infix
masak: Initializers are a special form.
masak oh?
oh, right.
jnthn Thus why we hit the preclimit.
I suspect this issue can be made to manifest itself somehwere else, though, with enough creativity 21:29
jnthn sub foo(@a, $b = @a[0]:exists) { } # probably also suffers it 21:29
masak well, thinking about it, I wouldn't mind if adverbs couldn't go on initializers or assignments. I've never wanted that, and I can't recall anyone ever expressing a need for that.
jnthn masak: Right, I think we agree that "my $exists = @foo[0]:exists" should see the adverb go onto the @foo[0] 21:30
masak: The problem is that in Rakudo it only did because we had a bug with preclimit handling.
masak nodnod
jnthn masak: And when I bring us in line with STD, I uncovered that STD also has this wrong.
masak intriguing!
fix one thing, another problem plops up.
it's like a waterbed of correctness ;)
jnthn Something like :) 21:31
naptastic p6: my $foo='barf'; say ͼ is $foo foo? ͽ 21:44
camelia rakudo-moar d47424: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤Two terms in a row␤at /tmp/tmpfile:1␤------> 3my $foo='barf'; say ͼ is $foo7⏏5 foo? ͽ␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement …»
naptastic p6: my $foo='barf'; say ͼ is foo? ͽ
camelia rakudo-moar d47424: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤Bogus postfix␤at /tmp/tmpfile:1␤------> 3my $foo='barf'; say ͼ is foo7⏏5? ͽ␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ …»
naptastic p6: my $foo = 'bar'; $foo =~ s߷ar߷az߷; say $foo; 21:47
camelia rakudo-moar d47424: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤Unsupported use of =~ to do pattern matching; in Perl 6 please use ~~␤at /tmp/tmpfile:1␤------> 3my $foo = 'bar'; $foo =~7⏏5 s߷ar߷az߷; say $foo;␤» 21:48
naptastic p6: my $foo = 'bar'; $foo ~~ s߷ar߷az߷; say $foo;
camelia rakudo-moar d47424: OUTPUT«baz␤»
naptastic p6: my $foo = 'bar'; $foo ~~ s߷ar߷az߷; print $foo;
camelia rakudo-moar d47424: OUTPUT«baz»
naptastic p6: my $foo = 'bar'; $foo ~~ s􏿽xABar􏿽xBB􏿽xABaz􏿽xBB; print $foo; 21:49
camelia rakudo-moar d47424: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤Missing infix inside hyper␤at /tmp/tmpfile:1␤------> 3my $foo = 'bar'; $foo ~~ s«ar»«7⏏5az»; print $foo;␤ expecting any of:␤ infix␤ infix stopper␤»
naptastic hmm... why didn't it like that? 21:50
p6: my $foo = 'bar'; $foo ~~ s<<ar>><<az>>; print $foo;
camelia rakudo-moar d47424: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤Unsupported use of brackets around replacement; in Perl 6 please use assignment syntax␤at /tmp/tmpfile:1␤------> 3my $foo = 'bar'; $foo ~~ s<<ar>>7⏏5<<az>>; print $foo;␤»
naptastic p6: my $foo = 'bar'; $foo ~~ s<ar><az>; print $foo;
camelia rakudo-moar d47424: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤Unsupported use of brackets around replacement; in Perl 6 please use assignment syntax␤at /tmp/tmpfile:1␤------> 3my $foo = 'bar'; $foo ~~ s<ar>7⏏5<az>; print $foo;␤»
naptastic wtf?
naptastic goes to read
FROGGS p6: my $foo = 'bar'; $foo ~~ s«ar» = 'az'; print $foo; 21:51
camelia rakudo-moar d47424: OUTPUT«baz»
masak FROGGS++ # faster
m: my $foo = 'bar'; $foo ~~ s/ar/az/; print $foo;
camelia rakudo-moar d47424: OUTPUT«baz»
jnthn p6: my $foo = 'b51 bomber'; $foo ~~ s<\d+> += 1; print $foo; 21:52
camelia rakudo-moar d47424: OUTPUT«b52 bomber»
jnthn Just had to show that one off :P
masak naptastic: only when you use open/close delimiters is there a parsing problem.
naptastic Hah, ok.
masak naptastic: I never quite understood what the parsing problem *was*, but it's a limitation I freely admit resides in me, not in Perl 6 ;)
naptastic That's... going to take some getting used to. 21:53
I use s{}{} all the time, to avoid the 'dancing matchsticks' effect
masak the good news, as jnthn++ hints at, is that we gained quite a bit of expressive power.
vendethiel \o #perl6 o/ 21:58
masak o/ \o 22:00
dalek osystem: f68db9e | tony-o++ | META.list:
weeeee, a data::dump

dump until your colorful heart's content with this great new module from the same guy that wrote at least one other module. when you use this module, you will feel fulfilled or frustrated or some other word that begins with ```f```. cool.
22:09
masak :) 22:13
jnthn f yeah! 22:17
naptastic Has anyone made a comprehensive list of which pairing characters can be used together? 22:30
masak 'night, #perl6
naptastic night masak 22:31
vendethiel 'night
jnthn naptastic: github.com/perl6/nqp/blob/master/s...mar.nqp#L4 22:32
(It's comprehensive by definition 'cus it's the one the parser uses. :)) 22:33
naptastic Hahahaha
thanks jnthn! It's not very pretty as-is, but I can work with it.
hmm, I wonder...
p6: say "<>[]()\{}\x[0028]\x[0029]\x[003C]\x[003E]\x[005B]\x[005D]\x[007B]\x[007D]\x[00AB]\x[00BB]\x[0F3A]\x[0F3B]\x[0F3C]\x[0F3D]\x[169B]\x[169C]\x[2018]\x[2019]\x[201A]\x[2019]\x[201B]\x[2019]\x[201C]\x[201D]\x[201E]\x[201D]\x[201F]\x[201D]\x[2039]\x[203A]\x[2045]\x[2046]\x[207D]\x[207E]\x[208D]\x[208E]\x[2208]\x[220B]\x[2209]\x[220C]\x[220A]\x[220D]\x[2215]\x[29F5]\x[223C]\x[223D]\x[2243]\x[22CD]\x[2252]\x[2253]\x[2254]\x[ 22:34
2255]\x[2264]\x[2265]\x[2266]\x[2267]\x[2268]\x[2269]\x[226A]\x[226B]\x[226E]\x[226F]\x[2270]\x[2271]\x[2272]\x[2273]\x[2274]\x[2275]\x[2276]\x[2277]\x[2278]\x[2279]\x[227A]\x[227B]\x[227C]\x[227D]\x[227E]\x[227F]\x[2280]\x[2281]\x[2282]\x[2283]\x[2284]\x[2285]\x[2286]\x[2287]\x[2288]\x[2289]\x[228A]\x[228B]\x[228F]\x[2290]\x[2291]\x[2292]\x[2298]\x[29B8]\x[22A2]\x[22A3]\x[22A6]\x[2ADE]\x[22A8]\x[2AE4]\x[22A9]\x[2AE3]\x[22AB]
camelia rakudo-moar d47424: OUTPUT«5===SORRY!5===␤Unrecognized backslash sequence: '\x'␤at /tmp/tmpfile:1␤------> 032243]\x[22CD]\x[2252]\x[2253]\x[2254]\x[7⏏5<EOL>␤Unable to parse expression in double quotes; couldn't find final '"' ␤at /tmp/tmpfile:1␤------> 032243]…»
naptastic \x[2AE5]\x[22B0]\x[22B1]\x[22B2]\x[22B3]\x[22B4]\x[22B5]\x[22B6]\x[22B7]\x[22C9]\x[22CA]\x[22CB]\x[22CC]\x[22D0]\x[22D1]\x[22D6]\x[22D7]\x[22D8]\x[22D9]\x[22DA]\x[22DB]\x[22DC]\x[22DD]\x[22DE]\x[22DF]\x[22E0]\x[22E1]\x[22E2]\x[22E3]\x[22E4]\x[22E5]\x[22E6]\x[22E7]\x[22E8]\x[22E9]\x[22EA]\x[22EB]\x[22EC]\x[22ED]\x[22F0]\x[22F1]\x[22F2]\x[22FA]\x[22F3]\x[22FB]\x[22F4]\x[22FC]\x[22F6]\x[22FD]\x[22F7]\x[22FE]\x[2308]\x[2309]\x[23
0A]\x[230B]\x[2329]\x[232A]\x[23B4]\x[23B5]\x[2768]\x[2769]\x[276A]\x[276B]\x[276C]\x[276D]\x[276E]\x[276F]\x[2770]\x[2771]\x[2772]\x[2773]\x[2774]\x[2775]\x[27C3]\x[27C4]\x[27C5]\x[27C6]\x[27D5]\x[27D6]\x[27DD]\x[27DE]\x[27E2]\x[27E3]\x[27E4]\x[27E5]\x[27E6]\x[27E7]\x[27E8]\x[27E9]\x[27EA]\x[27EB]\x[2983]\x[2984]\x[2985]\x[2986]\x[2987]\x[2988]\x[2989]\x[298A]\x[298B]\x[298C]\x[298D]\x[298E]\x[298F]\x[2990]\x[2991]\x[2992]\x
[2993]\x[2994]\x[2995]\x[2996]\x[2997]\x[2998]\x[29C0]\x[29C1]\x[29C4]\x[29C5]\x[29CF]\x[29D0]\x[29D1]\x[29D2]\x[29D4]\x[29D5]\x[29D8]\x[29D9]\x[29DA]\x[29DB]\x[29F8]\x[29F9]\x[29FC]\x[29FD]\x[2A2B]\x[2A2C]\x[2A2D]\x[2A2E]\x[2A34]\x[2A35]\x[2A3C]\x[2A3D]\x[2A64]\x[2A65]\x[2A79]\x[2A7A]\x[2A7D]\x[2A7E]\x[2A7F]\x[2A80]\x[2A81]\x[2A82]\x[2A83]\x[2A84]\x[2A8B]\x[2A8C]\x[2A91]\x[2A92]\x[2A93]\x[2A94]\x[2A95]\x[2A96]\x[2A97]\x[2A98
timotimo yeah, no, that ain't gonna fly :)
naptastic ]\x[2A99]\x[2A9A]\x[2A9B]\x[2A9C]\x[2AA1]\x[2AA2]\x[2AA6]\x[2AA7]\x[2AA8]\x[2AA9]\x[2AAA]\x[2AAB]\x[2AAC]\x[2AAD]\x[2AAF]\x[2AB0]\x[2AB3]\x[2AB4]\x[2ABB]\x[2ABC]\x[2ABD]\x[2ABE]\x[2ABF]\x[2AC0]\x[2AC1]\x[2AC2]\x[2AC3]\x[2AC4]\x[2AC5]\x[2AC6]\x[2ACD]\x[2ACE]\x[2ACF]\x[2AD0]\x[2AD1]\x[2AD2]\x[2AD3]\x[2AD4]\x[2AD5]\x[2AD6]\x[2AEC]\x[2AED]\x[2AF7]\x[2AF8]\x[2AF9]\x[2AFA]\x[2E02]\x[2E03]\x[2E04]\x[2E05]\x[2E09]\x[2E0A]\x[2E0C]\x[2
tony-o nice
naptastic E0D]\x[2E1C]\x[2E1D]\x[2E20]\x[2E21]\x[3008]\x[3009]\x[300A]\x[300B]\x[300C]\x[300D]\x[300E]\x[300F]\x[3010]\x[3011]\x[3014]\x[3015]\x[3016]\x[3017]\x[3018]\x[3019]\x[301A]\x[301B]\x[301D]\x[301E]\x[FD3E]\x[FD3F]\x[FE17]\x[FE18]\x[FE35]\x[FE36]\x[FE37]\x[FE38]\x[FE39]\x[FE3A]\x[FE3B]\x[FE3C]\x[FE3D]\x[FE3E]\x[FE3F]\x[FE40]\x[FE41]\x[FE42]\x[FE43]\x[FE44]\x[FE47]\x[FE48]\x[FE59]\x[FE5A]\x[FE5B]\x[FE5C]\x[FE5D]\x[FE5E]\x[FF08]\
x[FF09]\x[FF1C]\x[FF1E]\x[FF3B]\x[FF3D]\x[FF5B]\x[FF5D]\x[FF5F]\x[FF60]\x[FF62]\x[FF63]";
oooooookay nope nevermind.
tony-o put it in a gist
naptastic I swear I've got Perl 6 installed here someplace... 22:35
perl6 -e 'say "(blablablalbalbrarrrrgh)";' gave some pretty impressive output, almost all of which was actually readable! 22:36
Clearly I need to invest in a better terminal font though ;) 22:37
tony-o you can put your perl6 stuff in a gist and do p6: <link to gist>
naptastic ooh! That's useful! 22:39
What's gist?
timotimo gist.github.com is gist
naptastic p6: gist.github.com/naptastic/27da641c292d33e40ead 22:40
camelia rakudo-moar d47424: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤Unable to parse expression in single quotes; couldn't find final "'" ␤at /tmp/tmpfile:1␤------> 3FF5D]\x[FF5F]\x[FF60]\x[FF62]\x[FF63]";'7⏏5<EOL>␤ expecting any of:␤ single quo…»
timotimo it's the one nopaste service camelia understands 22:40
no private pastes, though
naptastic d'oh
timotimo :)
naptastic p6: gist.github.com/naptastic/06bb2c16a3f1a618b87a
tony-o m: gist.github.com/tony-o/9bff8e7c78fc484fba1f
camelia rakudo-moar d47424: OUTPUT«<>[](){}()<>[]{}«»༺༻༼༽᚛᚜‘’‚’‛’“”„”‟”‹›⁅⁆⁽⁾₍₎∈∋∉∌∊∍∕⧵∼∽≃⋍≒≓≔≕≤≥≦≧≨≩≪≫≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊂⊃⊄⊅⊆⊇⊈⊉…»
rakudo-moar d47424: OUTPUT«like this␤»
tony-o should this line also include 'lib'? -> github.com/tadzik/panda/blob/maste...da.pm#L166 22:44
jnthn sleep &
naptastic aw man, camelia truncated the output! 22:45
naptastic utf8 ༺ 22:59
timotimo hmm 23:22
i never put nqp::getcodelocation into any method or so for code objects
skids Been noticing "MVMArray: Can't pop from an empty array" lately during inside backtrace generation. Here's a one-liner: 23:25
m: '%s : %s'.fmt(1).say
camelia rakudo-moar d47424: OUTPUT«Directives specify 0 arguments, but 1 argument was supplied␤<Internal error while creating backtrace: MVMArray: Can't pop from an empty array in method AT-POS at src/gen/m-CORE.setting:14727␤ in method next-interesting-index at src/gen/m-CORE.settin…»
skids Seen it in more places than that though. 23:26
timotimo where does that pop? :\ 23:47
timotimo ah 23:59