»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_log/perl6 | UTF-8 is our friend! 🦋
Set by Zoffix on 25 July 2018.
vrurg Looks like the autogenerated BUILDALL doesn't call BUILDALL from ancestors. Am I right in this guess? 00:16
leont Yet another «Cannot invoke this object (REPR: Null; VMNull)» 01:23
Adding --ll-exception doesn't change a bit of the output, that's all I'm going to get
I keep running into precompilation issues when doing meta-programming :-( 01:24
sena_kun leont, can you provide a gist please? maybe I can help, have been doing a lot of this lately. 01:30
though my solutions are most often "try to rewrite it some other way that doesn't die" or "report as a bug with a golfed gist", so not sure if qualified enough. :) 01:31
leont I'm using a trait to mix in a role into a Sub 01:34
So far I've "solved this" by postponing this whole approach of using a trait to make something happen at compile-time, as it was an optimization anyway 01:35
sena_kun hmm, I have used traits to mix in roles into simpler types like Str. 01:37
though it was for traits on attributes, not subroutines.
AlexDaniel sena_kun, jnthn: so what about `zef install Cro::WebSocket`? Does that work for you? Should it work? 01:49
it's the last one in R#2638 and I was hoping that it is a flapper, but it does not look so
synopsebot R#2638 [open]: github.com/rakudo/rakudo/issues/2638 [⚠ blocker ⚠] [WIP] Blin 2019.01
sena_kun is still on 2018.12-211-ge87b7afb0 01:50
Cro::WebSocket is known to be somewhat unstable as in "it can fail tests at 1/100 rate", but it doesn't just dies and it definetely doesn't fail tests every time. 01:51
AlexDaniel here's what I see, fwiw: gist.github.com/AlexDaniel/6447ca0...a7866b91df
also it eats memory like crazy
sena_kun this is another issue from known ones. 01:52
AlexDaniel and that happens almost every time if not every time
sena_kun and is reported at github.com/croservices/cro-websocket/issues/19
AlexDaniel, I think it is a regression.
please ping or .tell jnthn to look into it later, I think. 01:53
let me check what the test does exactly...
ah, frame parser.
it's a regression for sure. 01:54
as in, there are no particulary unstable parts, but I see at least `$parser.transformer($fake-in.Supply).schedule-on($*SCHEDULER).tap: -> $frame` and similar "smarty" code which was stable as a rock since its creation. 01:55
so a regression and a leak.
AlexDaniel R#2644 01:56
synopsebot R#2644 [open]: github.com/rakudo/rakudo/issues/2644 [regression][⚠ blocker ⚠] Some regression with Cro::WebSocket
sena_kun hopes his head is still here after bringing bad news
AlexDaniel++
leont Apparent, I found a bug in the multi-dispatcher -_- 02:01
m: perl6 -e 'sub foo ($foo, Str :@bar) { .say for @bar }; foo(1)'
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3perl6 -e7⏏5 'sub foo ($foo, Str :@bar) { .say for @
expecting any of:
infix
infix stopper
postfix
statement…
leont Erm 02:02
m: sub foo ($foo, Str :@bar) { .say for @bar }; foo(1)
camelia ( no output )
leont m: multi foo ($foo, Str :@bar) { .say for @bar }; multi foo () {}; foo(1)
camelia Cannot resolve caller foo(Int:D); none of these signatures match:
($foo, Str :@bar)
()
in block <unit> at <tmp> line 1
leont There's no reason why the latter shouldn't work if the former does
AlexDaniel m: multi foo ($foo, Str :@bar) { .say for @bar }; foo(1)
camelia Cannot resolve caller foo(Int:D); none of these signatures match:
($foo, Str :@bar)
in block <unit> at <tmp> line 1
AlexDaniel 6c: multi foo ($foo, Str :@bar) { .say for @bar }; foo(1) 02:03
committable6 AlexDaniel, gist.github.com/1bf7e369bd0e949a33...851f4f2de5
leont m: multi foo ($foo, Str :@bar = Array[Str].new) { .say for @bar }; multi foo () {}; foo(1) 02:05
camelia ( no output )
AlexDaniel leont: yeah, weird… file a bug report 02:06
leont Just did that, #2645 02:10
huyna say "Testing the VM" 02:26
evalable6 Testing the VM
MasterDuke the memory growth in R#2644 seems like it might be because of some weird array splicing 02:31
synopsebot R#2644 [open]: github.com/rakudo/rakudo/issues/2644 [regression][⚠ blocker ⚠] Some regression with Cro::WebSocket
MasterDuke there are a lot of splice calls where the offset is some large increasing value (e.g., 1520800320 or 50573760) and the count is 0 02:33
SmokeMachine m: Mu.ACCEPTS: Set.HOW
camelia Cannot resolve caller ACCEPTS(Mu:U: Perl6::Metamodel::ClassHOW+{<anon>}); none of these signatures match:
(Mu:U: \topic, *%_)
(Mu:U: Mu:U \topic, *%_)
in block <unit> at <tmp> line 1
SmokeMachine m: Set.^compose; Mu.ACCEPTS: Set.HOW 02:34
camelia ( no output )
SmokeMachine I think it’s just not being composed... 02:38
m: Set.^compose; say Set.HOW ~~ Metamodel::EnumHOW
camelia False
isomorphismes examples.perl6.org/categories/pars...rings.html "for now ... a rakudo binding issue" 03:02
lookatme_q: is there a way to require either both ( and ) or neither ( nor ) in a regex? thanks. 03:03
Geth doc: 9c057a411b | (Richard Hainsworth)++ (committed using GitHub Web editor) | doc/HomePage.pod6
Update HomePage.pod6

removed commented out `html` referring to core modules that includes a link to a non-existent file
03:18
isomorphismes how long is the "for now" in the {} rakudo binding issue? 03:29
Geth doc: 1ce5d971b1 | (Richard Hainsworth)++ (committed using GitHub Web editor) | doc/Language/5to6-nutshell.pod6
Update 5to6-nutshell.pod6

Fix link with extra trailing space `.../Blue_Tiger/ `
synopsebot Link: doc.perl6.org/language/5to6-nutshell
guifa If you have a typed array, you can figure out the type of its values using .of, and you can get its class + value type using .WHAT (or .^name as a Str). Is there any built in to isolate the base class sans the value type? 03:53
AlexDani` m: my Str @a; say @a.of; say @a.^name; say @a.^mro 04:08
camelia (Str)
Array[Str]
((Array[Str]) (Array) (List) (Cool) (Any) (Mu))
AlexDaniel guifa: hm, by any chance are you trying to do something like `$foo ~~ Array` ? 04:09
guifa AlexDaniel: I have a (probably overly ambitious) idea to try to create a coercing assignment operator 04:10
so that @str-typed-array =~~ <a b c> will not fail 04:12
(where =~~ is going to be my operator)
MasterDuke m: my Str @a; say @a.HOW.mixin_base(@a) 04:13
camelia (Array)
AlexDaniel m: my Str @a; say @a.^mixin_base 04:14
camelia (Array)
guifa MasterDuke: thanks! 04:14
AlexDaniel m: my Str @a; say @a.^mixin_base.^name
camelia Array
AlexDaniel guifa: what's the result of `@str-typed-array =~~ <a b c>` ? 04:15
MasterDuke isomorphismes: i think that {} rakudo binding issue has been around for a while'
AlexDaniel intended result I mean
guifa Intended result is to basically place Array[Str].new(<a b c>) (obviously, I'm overly simplifying it) into @str-typed-array 04:17
Because if you use = it fails because the types don't match, even though <a b c> can easily be coerced into Array[Str]
AlexDaniel but… 04:19
m: my Str @a; @a = <42 b 50>; say @a
camelia [42 b 50]
guifa m: my Array[Str] $a = <a b c > 04:20
camelia Type check failed in assignment to $a; expected Array[Str] but got List ($("a", "b", "c"))
in block <unit> at <tmp> line 1
AlexDaniel I see 04:22
guifa I get why the type check fails, but I think it might be useful to have an operator that does its best to do coercions
(at least where they can be reasonably done, e.g., if the right term has a coercion method for the left, or for certain built in types that are predictable) 04:23
AlexDaniel I don't understand this:
m: my Array[Str] $a; my @b := $a; @b = <a b c>
camelia Invocant of method 'STORE' must be an object instance of type 'Array', not a type object of type 'Array[Str]'. Did you forget a '.new'?
in block <unit> at <tmp> line 1
AlexDaniel ahh, actually 04:24
m: my Array[Str] $a = Array[Str].new; @$a = <a b c>; say $a
camelia [a b c]
AlexDaniel guifa: what about something like this? ↑ 04:25
SmokeMachine m: say Set.^mro
camelia ((Set) (Any) (Mu))
SmokeMachine m: say Set.HOW.^mro
camelia No such method 'gist' for invocant of type 'Perl6::Metamodel::ClassHOW+{<anon>}'. Did you mean 'isa'?
in block <unit> at <tmp> line 1
guifa AlexDaniel: hmm... interesting 04:28
Although that wouldn't do much for something like this I don't think: 04:29
m: my Str @a; @a = (1,2);
camelia Type check failed in assignment to @a; expected Str but got Int (1)
in block <unit> at <tmp> line 1
guifa But of course
m: my Int $a = 1; $a.Str 04:30
camelia ( no output )
guifa m: my Int $a = 1; say $a.Str 04:30
camelia 1
guifa So the idea would be that using =~~ would allow you to do @str-typed = (1,2,3,4) because all of the elements can be coerced. 04:31
AlexDaniel m: my Str @a; @a = ~« (1,2,3,4); say @ 04:34
camelia []
AlexDaniel m: my Str @a; @a = ~« (1,2,3,4); say @a 04:35
camelia [1 2 3 4]
AlexDaniel I wish `my Str() @a` worked
guifa Yeah. What I'm thinking is beyond that though. If the classes were custom, or for fully (k/v) typed hashes. I figured a single catch all similar-ish to the smart match could be a nice tool, especially if it covers 80-90% of the typed gotchas 04:38
Not sure how good I can get it to work, but hey, experimenting around is half the fun 04:39
AlexDaniel I guess people don't use typed arrays often enough 04:40
there are many small but painful things that need to be fixed, I think
guifa I definitely overused them in my first biggish project (consequence of having done way too much Java in the past few years no doubt) and I came across it a lot 04:41
SmokeMachine m: my Str() @a; @a = 1,2,3; day @a 04:48
camelia 5===SORRY!5===
Coercion Str(Any) is insufficiently type-like to qualify a variable
at <tmp>:1
------> 3my Str() @a7⏏5; @a = 1,2,3; day @a
Undeclared routine:
day used at line 1. Did you mean 'say'?

SmokeMachine m: my Str() @a; @a = 1,2,3; say @a
camelia 5===SORRY!5=== Error while compiling <tmp>
Coercion Str(Any) is insufficiently type-like to qualify a variable
at <tmp>:1
------> 3my Str() @a7⏏5; @a = 1,2,3; say @a
expecting any of:
constraint
SmokeMachine m: my Str() $a; $a = 1; say $a 04:49
camelia 5===SORRY!5=== Error while compiling <tmp>
Coercion Str(Any) is insufficiently type-like to qualify a variable
at <tmp>:1
------> 3my Str() $a7⏏5; $a = 1; say $a
expecting any of:
constraint
SmokeMachine m: my Str() @a = 1,2,3; say @a
camelia 5===SORRY!5=== Error while compiling <tmp>
Coercion Str(Any) is insufficiently type-like to qualify a variable
at <tmp>:1
------> 3my Str() @a7⏏5 = 1,2,3; say @a
expecting any of:
constraint
SmokeMachine m: my Str() $a = 1; say $a 04:50
camelia 5===SORRY!5=== Error while compiling <tmp>
Coercion Str(Any) is insufficiently type-like to qualify a variable
at <tmp>:1
------> 3my Str() $a7⏏5 = 1; say $a
expecting any of:
constraint
SmokeMachine m: my Str(Int) $a = 1; say $a
camelia 5===SORRY!5=== Error while compiling <tmp>
Coercion Str(Int) is insufficiently type-like to qualify a variable
at <tmp>:1
------> 3my Str(Int) $a7⏏5 = 1; say $a
expecting any of:
constraint
SmokeMachine m: my Str() $a = 1.Str; say $a 04:51
camelia 5===SORRY!5=== Error while compiling <tmp>
Coercion Str(Any) is insufficiently type-like to qualify a variable
at <tmp>:1
------> 3my Str() $a7⏏5 = 1.Str; say $a
expecting any of:
constraint
SmokeMachine bisect: old=2018.11 my Str() $a = 1; say $a 04:51
bisectable6 SmokeMachine, On both starting points (old=2018.11 new=4fd8e87) the exit code is 1 and the output is identical as well
SmokeMachine, gist.github.com/5e24412763b5253ff6...f78c50c79a
SmokeMachine bisect: old=2018.01 my Str() $a = 1; say $a 04:52
bisectable6 SmokeMachine, On both starting points (old=2018.01 new=4fd8e87) the exit code is 1 and the output is identical as well
SmokeMachine, gist.github.com/b3d90ddbe141a2a614...5fe68d8d0c
SmokeMachine m: sub a(Str() $a) { say $a }; a 42 04:59
camelia 42
SmokeMachine I think I’m too tired to play... :( of course that doesn’t work... and the error was trying to tell me that... 05:00
AlexDaniel yeah
guifa doesn't work for assignment, but did give me an idea for handling things in my operator :-) 05:01
guifa In fact, if you only wanted to handle scalar assignments, would be as simple as 05:09
sub infix:<=~~>(::T $a is rw, T() $b) { $a = $b }
meuirkat anything for MSSQL server (DBIish?)... jsut getting back into perl! 05:14
Geth doc: 2b599545dd | (Richard Hainsworth)++ (committed using GitHub Web editor) | doc/Language/system.pod6
Update system.pod6

Fix bad link (missing |) and change from entry target to target.
05:23
synopsebot Link: doc.perl6.org/language/system
holyghost I've managed to make a virtual loopback system for WAV files, 16 and 32 bit. I have the base widgets for my perl6 DAW working with event loop. 05:26
Geth doc: c8748d981a | (Richard Hainsworth)++ (committed using GitHub Web editor) | doc/Language/traits.pod6
Update traits.pod6

fixed bad link
05:37
synopsebot Link: doc.perl6.org/language/traits
Geth doc: fdef767720 | (Richard Hainsworth)++ (committed using GitHub Web editor) | doc/Language/contexts.pod6
Update contexts.pod6

bad link fix
05:53
synopsebot Link: doc.perl6.org/language/contexts
doc: a045b7da74 | (Richard Hainsworth)++ (committed using GitHub Web editor) | doc/Language/traits.pod6
Update traits.pod6

bad link fix
05:55
synopsebot Link: doc.perl6.org/language/traits
Geth doc: f668750c32 | (Richard Hainsworth)++ (committed using GitHub Web editor) | doc/Language/faq.pod6
Update faq.pod6

Attempt to fix bad link. `L<language|/language.html>` is good pod, but creates an error with htmlify.p6. Removing the extension, which is added by the site automatically, should produce a good link
06:09
synopsebot Link: doc.perl6.org/language/faq
jmerelo releasable6: status 06:14
releasable6 jmerelo, Next release will happen when it's ready. 11 blockers. 158 out of 251 commits logged 06:15
jmerelo, Details: gist.github.com/fa67cbce6ad9bbd66b...cdb4e4cdf1
jmerelo Oh, one blocker more...
Geth doc: 28f4d6c677 | (Richard Hainsworth)++ (committed using GitHub Web editor) | doc/Language/containers.pod6
Update containers.pod6

fix bad link
synopsebot Link: doc.perl6.org/language/containers
AlexDaniel squashable6: next 06:23
squashable6 AlexDaniel, Next SQUASHathon in 7 days and ≈3 hours (2019-02-02 UTC-12⌁UTC+14). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day
AlexDaniel jmerelo: what about this? ↑ :)
are you ready?
Geth doc: f0b22bc62b | (Richard Hainsworth)++ (committed using GitHub Web editor) | doc/Language/list.pod6
Update list.pod6

bad link fix
06:24
synopsebot Link: doc.perl6.org/language/list
AlexDaniel I can run blin for you, whenever you tell me to
jmerelo AlexDaniel: yep, I need to do that
squashable6: status
squashable6 jmerelo, Next SQUASHathon in 7 days and ≈3 hours (2019-02-02 UTC-12⌁UTC+14). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day
jmerelo AlexDaniel: I'll try to set some time aside tomorrow or Wednesday at the latest 06:25
It's been a busy end of the term
Geth doc: 2b1185208d | (Richard Hainsworth)++ (committed using GitHub Web editor) | doc/Type/Associative.pod6
Update Associative.pod6

bad link fix.
06:26
synopsebot Link: doc.perl6.org/type/Associative
Geth doc: 4d79601374 | (Richard Hainsworth)++ (committed using GitHub Web editor) | doc/Language/traps.pod6
Update traps.pod6

bad link fix
06:31
synopsebot Link: doc.perl6.org/language/traps
cpan-p6_ 03cpan-p6_ reporting for duty! [Perl 6] 02git.tyil.nl/perl6/app-cpan-uploadnotifierbot 06:38
Xliff I'm getting this error: ===SORRY!=== Cannot call method 'typed_panic' on a null object (definite LTA!) 06:47
Part of a larger object that is not golfable at this time.
Geth doc: a0c7d61a74 | (Richard Hainsworth)++ (committed using GitHub Web editor) | doc/Language/modules.pod6
Update modules.pod6

Remove the Link to upload to Pause because it generates an error in testing because there are no authentication parameters. Someone who gets as far as registering on Pause will find the link to upload.
06:49
synopsebot Link: doc.perl6.org/language/modules
ToddAndMargo Hi All. How do I get rid of the extra space? p6 'my $x="abc1abc2abc"; $x ~~ s| (.*) abc | $0 |; print "<$x>\n";' < abc1abc2 >
I just want to delete that final "abc"
never mind. p6 'my $x="abc1abc2abc"; $x ~~ s| (.*) abc |$0|; print "<$x>\n";' <abc1abc2> 06:51
jmerelo m: my $x="abc1abc2abc"; $x ~~ s| (.*) abc | $0 |; print "<$x>\n";
camelia < abc1abc2 >
jmerelo m: my $x="abc1abc2abc"; $x ~~ s| (.*) abc | $0 |; print $x.trim; 06:51
camelia abc1abc2
jmerelo ToddAndMargo: ^^^^
ToddAndMargo I forgot that the sub part is litteral and can't use spaces 06:52
Geth doc: b1342b96db | (JJ Merelo)++ | doc/Language/syntax.pod6
Fixes identifiers, closes #2568
synopsebot Link: doc.perl6.org/language/syntax
jmerelo m: my $x="abc1abc2abc"; $x ~~ s| (.*) abc | $0 |; print $x.perl 06:53
camelia " abc1abc2 "
jmerelo m: my $x="abc1abc2abc"; $x ~~ s| (.*) abc |$0|; print $x.perl
camelia "abc1abc2"
jmerelo ToddAndMargo: ^^^^
Xliff typed_panic issue results from a misnamed package. The right package name is issued in the use statement, but in that file, the "unit package" declaration does NOT use the correct name. 06:56
Still not golfable, but maybe someone can try some tests and see if they can trigger it.
Nope. Still there, but further along, this time. 06:57
Xliff m: use v6.vc; say 1 06:58
camelia ===SORRY!===
Cannot call method 'typed_panic' on a null object
Xliff ^^
jmerelo Xliff: wow. 06:59
Xliff jmerelo: Yeah.
cpan-p6 03cpan-p6 reporting for duty! [Perl 6] 02git.tyil.nl/perl6/app-cpan-uploadnotifierbot 07:24
tyil >:( 07:52
stop dying
or I'm going to rewrite you
Xliff \o/ 07:55
I can run javascript in a simple browser via WebKit in Perl6!!!!
JavaScript and Perl6 can now communicate! :D :D
tyil: I feel your pain. Was just there not 5 minutes ago. 07:56
tyil ;~; 07:57
I need to rewrite it anyway since I have better infra to work with for those updates now
tyil I should setup grafana and start gathering stats on my infra and services as well tbh 08:10
Xliff UPDATED -- JavaScript!! -- gist.github.com/Xliff/afed9c58e738...6645520c8f 08:14
tyil good timing tbh, it seems chrom(e|ium) and firefox are going to break adblocking 08:41
so we need a new browser
El_Che tyil: firefox? 10:08
Altreus Presumably there will be a fork that doesn't 10:21
good thing you said though, because I was about to try switching back to firefox even though it's so slow
Altreus installs brave browser 10:32
pmurias Altreus: doesn't brave replace ads with their own ads or something like that? 10:33
Altreus gonna see 10:34
tyil pmichaud: yes 10:42
I'm waiting for Xliff's Perl 6 browser :'D 10:43
cpan-p6 New module released to CPAN! FastCGI-NativeCall (0.0.6) by 03JSTOWE
Xliff WTF? Why break ad-blockers? 10:46
Stupid things will block the site contents if left to run rampant!
>:( 10:49
tyil welcome to google, who's sole purpose is to show more ads 11:11
I'm not sure why anyone expected google to not try and break everything to ensure people look at more ads
Xliff Google was supposed to be the good guy. I'm so disappointed. 11:15
Xliff And now, I can't get to YouTube without a forced ad going down my throat. 11:16
tadzik google, the good guy? Lol 11:21
they're ad company. Their product is you. All the software they create is merely a platform to sell you on 11:22
when your entire business model revolves around showing people ads, it's a reasonable plan to dominate the web browser market, and when no real competition exists just force everyone to bend over
using anything that uses chromium/blink under the hood just adds to the problem: Chrome-alike keeps being the dominant web client, and google keeps being able to decide how to shape the web around it 11:24
(sorry for the vent :P) 11:25
moritz that's why I'm a nearly-religious firefox user :) 12:00
leont has been a mozilla user for so long that he even ran netscape 5 for a while (yes that existed, and it was easily their worst. 12:17
pmurias tadzik: OTOH if there are other serious users and developers of blink then there is a least a threat of someone forking it 12:25
leont Yeah, this is an issue worth forking over, even though it's kind of unsustainable in the long term 12:32
tadzik the other side is that maining a separate browser engine is also unsustainable in the long term 12:35
this is what Opera realized a few years back, and Microsoft recently
pmurias I would assume Microsoft has enough resources to maintain a browser 12:45
making their browser behave exactly like Chrome is a better strategy if they want to challenge it 12:46
leont Microsoft forking chrome would be an interesting turn of events 12:49
El_Che leont: netscape 5? you youngster
anyway, never got on the the chrome wagon, FF since Phoenix 12:50
leont I did use 2, 3, and 4 as well, but netscape 5 never even got out of alpha, and hence I've never met anyone else who used it 12:53
El_Che I was backpacking on those days and I had a cd with early Phoenix and Firebird I installed on cybercafés to work around their stupid browsers (skinned IE or something)
So I must have installed FF and predecessors in around 40 countries :)
tyil moritz: imo, Firefox has gone downhill very fast in the past couple years as well anyway 12:54
leont It's the start of the rewrite that would later become mozilla, and even later than that firefox
tyil there are no good browsers nowadays, firefox is only reasonably acceptable because the alternatives are worse
leont Firefox went copying chrome, and I hated it at every turn
El_Che UI?
tadzik copying chrome in what way?>
leont Mainly UI
tyil leont: and making garbage plugins like pocket and looking glass 12:55
which came installed and enabled by default for some reason
breaking all customization by breaking XUL
El_Che lookily you can disable pocket, but it shoudn't be on by default
luckily
tyil I just compile Firefox without pocket
moritz I'm pretty OK with firefox since Quantum
tyil its the only way to be sure Mozilla won't fuck you over
El_Che pocket.enabled to false in about:config does the trick 12:56
tyil untill they "accidentally" switch it on again
El_Che They haven't so far
tyil I'm not taking any chances, I'll just remove it altogether
El_Che and if it's enabled you'll see it right away
(before I had a decent volume allowence on mobile I use to use pocket before FF integrated it) 12:57
tyil I've lost confidence in Mozilla's good will these days, so I just prefer to compile it without all that garbage they throw in 12:58
tbrowder hi, #perl6 13:20
.tell lizmat i have a p6 pic that might be suitable for next p6 weekly 13:21
yoleaux tbrowder: I'll pass your message to lizmat.
lizmat .
yoleaux 13:21Z <tbrowder> lizmat: i have a p6 pic that might be suitable for next p6 weekly
lizmat do tell
tbrowder it's a pic of my new personal florida car tag with "PERL 6" on it 13:22
tbrowder small jpg, 44kb 13:24
lizmat could you gist it somewhere or mail it to me 13:25
tbrowder email addr?
jcarty Can someone tell me where I can find out what the significants of a *% is in the arguments for this method. github.com/perl6-community-modules...WW.pm6#L14 13:29
I was trying to give it a hash with some headers but it did not seem to like that.
sena_kun you have to pass named arguments there. 13:31
sena_kun or if you have a Hash, then you need to make it a Capture. Like... 13:31
leont That's slurpy named arguments
sena_kun m: sub a($a, *%rest) { say %rest; }; a(1, a => 1, b => 2); my %args = a => 1, b => 2; a(1, |%args); 13:32
camelia {a => 1, b => 2}
{a => 1, b => 2}
tbrowder lizmat: what'cha think? 13:33
lizmat it's a bit small ? 13:35
lizmat I guess I'll wait for the picture with the truck :-) 13:35
tbrowder i can make it bigger, full size is about 1.3 Mb 13:36
jcarty Ah thank you Sena. I've never really seen * or a | appearing in the parameters and I wasn't sure where to find out what they meant. 13:37
sena_kun jcarty, docs.perl6.org/language/functions#...onventions <- also see this. 13:38
tbrowder lizmat: of course it's b&w because it's a pic of the proof, not the real plate which will be more colorful--i'll wait for that and resend.
lizmat tbrowder: yeah, think that'll be better
tobs jcarty: fwiw you can also type "*%" into the search bar on the docs site and it'll show you the relevant result. It can handle non-alphabetic characters better than your average websearch. 13:39
lizmat tbrowder: you'll be competing with twitter.com/zoffix/status/1022612337088450560 13:40
jcarty You're right, not sure how I missed. I must have only looked at the first few results which were about infix 13:41
tbrowder well mine says "PERL 6" (but I still love p5 folks if they are nice)
El_Che If I would get plate related with Perl names it would be "ITS COMPLICATED" 13:53
leont Despite being fairly small, it seems moving prove6 to a module and keeping a tiny two line script significantly improves startup performance (because precompilation) 15:12
timotimo yeah, it's usually worth a lot to do that 15:14
Juerd :|
timotimo it'd be cool if we could make -MBlah -e'' completely skip loading parser and grammar for this purpose
Juerd timotimo: Maybe even a command line flag that just calls a method on Blah 15:15
IIRC -r is available. It could be "run"
jnthn Hm, if Blah exports a MAIN then I think that will be run automatically?
timotimo yeah, it should
Juerd jnthn: Good point :) 15:16
Still the empty -e is kind of ugly
leont It's 70 lines of code and 100 lines of pod, that shouldn't take more than a milisecond per line to process
timotimo we could have an extremely slimmed-down version of the grammar that fails over to the full grammar when it fails or the input has a sufficient length
leont: can you --stagestats ?
Juerd leont: Parsing's slow :(
timotimo when it sees a "use" statement, it'll go to the module loader immediately and only resume parsing when that's done 15:17
timotimo with a gigantic bit of cheating we could speculatively continue parsing on the assumption that the use statement doesn't have an effect "yet" 15:18
leont It takes 0.45 seconds as a script, and 0.19 seconds when mostly a module 15:19
(That is stage parse times)
timotimo a --profile-compile could be interesting; what rakudo version do you have? 15:20
leont 2018.12 15:21
timotimo OK, cool. if you give me the result of --profile-compile --profile-filename=profile.sql i can have a closer look if anything stands out
leont Before? After? Both? 15:21
pmurias timotimo: what would the slimmed down grammar do? 15:22
timotimo pmurias: 1) consume only a tiny bit of memory, 2) be very quick to run, 3) be enough for very simple scripts
both would be fine :)
pmurias timotimo: so the mini grammar would be used for wrappers that call only call to a module or for simple scripts? 15:25
timotimo for example
though it may be a waste either way
pmurias isn't that just an ugly workaround for lack of precompilation for scripts? 15:27
timotimo perhaps
jnthn Precomp for scripts, even only for installed ones, would be nice 15:31
I don't know of any reason we can't do that, other than somebody spending time to work through the problems blocking it
Geth doc: 8ceae43acd | cfa++ | doc/Language/routines.pod6
/type/Empty → /type/Slip#index-entry-Empty-Empty
15:45
synopsebot Link: doc.perl6.org/language/routines
SmokeMachine m: say Mu.ACCEPTS: Array.HOW 17:02
camelia Cannot resolve caller ACCEPTS(Mu:U: Perl6::Metamodel::ClassHOW+{<anon>}); none of these signatures match:
(Mu:U: \topic, *%_)
(Mu:U: Mu:U \topic, *%_)
in block <unit> at <tmp> line 1
SmokeMachine m: Array.^compose; say Mu.ACCEPTS: Array.HOW 17:03
camelia True
SmokeMachine .tell guifa the =~~ operator is a great idea! 17:06
yoleaux SmokeMachine: I'll pass your message to guifa.
jmerelo SmokeMachine: what does it do? 17:17
SmokeMachine jmerelo: auto coerce... 17:18
jmerelo SmokeMachine: interesting. 17:18
SmokeMachine jmerelo: colabti.org/irclogger/irclogger_lo...01-25#l271 17:19
jmerelo SmokeMachine: is that already in the code? In the next release? 17:20
releasable6: status 17:21
releasable6 jmerelo, Next release will happen when it's ready. 10 blockers. 158 out of 254 commits logged
jmerelo, Details: gist.github.com/eda3c084aa470cf85d...d00643c2c1
SmokeMachine jmerelo: no!
jmerelo SmokeMachine: ah, just an operator defined somewhere. Interesting anyway.
(I was also afraid I'd have to document it)
SmokeMachine :) 17:22
cpan-p6 03cpan-p6 reporting for duty! [Perl 6] 02git.tyil.nl/perl6/app-cpan-uploadnotifierbot 17:40
daxim m: grammar {rule TOP { x <Y> z }; rule Y { y };}.parse('x y z').perl.say 17:55
camelia Match.new(orig => "x y z", made => Any, list => (), pos => 5, from => 0, hash => Map.new((:Y(Match.new(hash => Map.new(()), pos => 4, from => 2, list => (), made => Any, orig => "x y z")))))
daxim how do I keep the tokens as part of the tree, like in other parsers?
jmerelo daxim: you do have the Y token in the hash key 17:56
daxim in regexp-grammars, I can assign to $MATCH, but assigning to $<something> apparently makes no difference
jmerelo, Y is a rule 17:57
the tokens are x, y and z
jmerelo It could be a token
m: grammar {rule TOP { x <Y> z }; token Y { y };}.parse('x y z').perl.say
camelia Match.new(list => (), from => 0, orig => "x y z", pos => 5, made => Any, hash => Map.new((:Y(Match.new(list => (), from => 2, orig => "x y z", pos => 3, made => Any, hash => Map.new(()))))))
daxim ok 17:58
daxim I want to keep the terminals. 17:58
jmerelo daxim: you can do the same with the others. If you want them tokenized, you'll have to create a token for them.
daxim is there no other way?
jmerelo m: grammar {rule TOP { <TERM> <Y> <TERM> }; token TERM { \w+ }; token Y { y };}.parse('x y z').perl.say 17:59
camelia Match.new(hash => Map.new((:TERM([Match.new(pos => 1, made => Any, from => 0, hash => Map.new(()), list => (), orig => "x y z"), Match.new(made => Any, from => 4, hash => Map.new(()), list => (), orig => "x y z", pos => 5)]),:Y(Match.new(made => Any, …
jmerelo Hey, that worked.
jmerelo daxim: afraid not. They're explicitly called tokens for a reason... if you want to tokenize, you have to create a token for them... 17:59
daxim I'm thoroughly disappointed 18:00
btw there is no separate 'y' in the result of your code, either
timotimo daxim: getting the "x y z" for TOP and "y" for Y is not good enough? 18:01
timotimo and there is a separate y, it just doesn't get output as "y", it gets output as "orig was x y z, the result was from 2 to 3" 18:02
m: grammar {rule TOP { <TERM> <Y> <TERM> }; token TERM { \w+ }; token Y { y };}.parse('x y z').say
camelia 「x y z」
TERM => 「x」
Y => 「y」
TERM => 「z」
jmerelo daxim: ^^^ right.
timotimo the gist output is a lot more readable
which is why .gist is what's "for humans" and .perl is what's "for compilers" 18:03
timotimo daxim: does that solve your troubles or do you need something more? 18:05
also, you can still totally just have positional captures with ( ), that way you have no need to introduce new tokens/regex/rule things in your grammar 18:06
if you'd prefer a name over having numbers, go with $<bloop>=[x y z] instead
daxim m: grammar {rule TOP { $<bloop>=(x) $<bloop>=(<Y>) $<bloop>=(z) }; rule Y { $<bloop>=(y) };}.parse('x y z').perl.say 18:13
camelia Match.new(from => 0, list => (), orig => "x y z", hash => Map.new((:bloop([Match.new(hash => Map.new(()), pos => 1, made => Any, from => 0, orig => "x y z", list => ()), Match.new(hash => Map.new((:Y(Match.new(hash => Map.new((:bloop(Match.new(pos => …
timotimo using $<bloop>=(abc) will give you the name as well as the number 18:14
daxim can you show me a working example?
timotimo m: grammar {rule TOP { $<bloop>=(x) $<bloop>=(<Y>) $<bloop>=(z) }; rule Y { $<bloop>=(y) };}.parse('x y z').say
camelia 「x y z」
bloop => 「x」
bloop => 「y 」
Y => 「y 」
bloop => 「y」
bloop => 「z」
timotimo oh? was i wrong about the round parenthsis? 18:15
perhaps i was :)
anyway, that's just your code again, but with .say instead of .perl.say
i need to be AFK for a bit, but i think you're on the right track here, just make sure not to look at the .perl output :) 18:17
Data::Dump::Tree has a special role you can mix in to dump match objects especially
that could maybe make things clearer
o/
daxim nothing is clear
how can I override the parse method? I want to customise the return value with a callback or something 18:18
lizmat m: role A { method Str() { say "foo"; callsame } }; my $a = 42 but A; say $a.Str 18:19
camelia foo
42
lizmat daxim: ^^ 18:20
docs.perl6.org/language/functions#...ispatching 18:21
daxim yes but that fires only once the whole tree has already been assembled with Match-es, right?
lizmat is this for debugging ? 18:22
daxim this is for keeping nonterminals 18:23
terminals
lizmat which return value do you want to customize? 18:24
daxim the whole return value, recursively. e.g. just ["TOP","x",["Y","y"],"z"] instead of nested Match objects 18:25
lizmat well, that's a bit hard in cases where you have positional and named matches at the same level 18:26
as the Match object is the only type of object that can keep both an Array as well as a Hash
lizmat afk for a bit& 18:29
isomorphismes Is mojolicious, dancer, or another framework more adopted in perl6? 18:30
or does it not matter?
daxim dancer port: modules.perl6.org/dist/Bailador:cpan:UFOBAT another web framework: cro.services/ 18:34
jmerelo Hi, isomorphismes 18:36
isomorphismes: it's not that it does not matter. It's simply a different language. You can't simply "adopt" it. You can either use some modules in lizmat's butterfly project to convert your code, or rewrite it
isomorphismes: that's been the approach of Bailador, which is a translation of Dancer concepts to Perl 6 18:37
zachk isomorphismes, I'd say check out cro, it can do more then just web services, I wrote a chat server in it using under 50 lines of code 18:39
isomorphismes jmerelo: gotcha. thanks 18:43
zachk: thank you
jmerelo isomorphismes: sure :-) Any time.
isomorphismes zachk: did you post your chat server on github? 18:45
daxim: thank you
zachk isomorphismes, yes with incomplete global variable interpolation for chat extension 18:46
it's my first big perl6 program
hold on...
github.com/ArchaicArchon/tchat/blo...r/tchat.p6 18:47
jmerelo zachk: congrats :-)
zachk you could just sort of ignore the interpolate sub/function and take it out of the code and tidy it up a bit
thank you
I have written quite a few simple chat servers, this is the smallest so far 18:48
isomorphismes is there a command-line (non-browser) way to search the v6 version of CPAN? I'm trying to compare Cro::TCP to whatever base TCP rakudo has. Not sure of the workflow. cheers 18:51
zachk you probably want to zef install cro like it says on cro's website 18:52
oh compare, nvm
isomorphismes zachk: yeah I mean without searching github repos through google, can I do in two panes zef search TCP | zef info - ~versus~ zef info Cro::TCP 18:53
zachk isomorphismes, you know more zef than me!
cro uses supplies and messages , you dont have to handle raw sockets or do much error handling afaik 18:54
isomorphismes tks 19:13
jmerelo isomorphismes: there are actually two versions of CPAN v6, one is called "ecosystem" (it's simply a file in a repo) and the other is the Perl 6 directory in CPAN. As you have pointed out, you can search both with zef 19:16
also modules.perl6.org
That only searches module names, not "provides" names modules.perl6.org/search/?q=TCP 19:17
Also, they return different things. Well... modules.perl6.org looks up descriptions and names, while zef searches "provides", but apparently not descriptions. 19:19
isomorphismes jmerelo: thanks. yeah, I am not having good luck with zef search 19:20
I like the name though
jmerelo isomorphismes: I'm looking up the source, anyways. Sometimes it's got goodies that are not immediately available to non-initiated
isomorphismes jmerelo: sounds like simplest thing to do to stay in terminal is have a clone of github.com/perl6/ecosystem and search in there for things. I'm fine with that 19:22
isomorphismes techniaclly calling otu to the net is just more work anyway (and not accessible in the mountains) 19:22
jmerelo isomorphismes: two things 19:28
jmerelo isomorphismes: first, if you see when zef operates it downloads a couple of files. They're probably stored somewhere, but you can just download them from the repo. 19:29
isomorphismes: second, I'm checking out the source and it might have something like that.
I mean, to search for other fields.
isomorphismes yeah I had that thougth as well 19:33
it's also a little shocking to not have man rakudo etc. 19:34
man zef
jmerelo isomorphismes: checking out sources. Looks like internally it's prepared to look source up based on other fields, but it's not in the CLI 19:36
cpan-p6 New module released to CPAN! AttrX-Mooish (v0.6.0) by 03VRURG 19:37
jmerelo isomorphismes: so, modules.perl6.org or files
sena_kun jmerelo, what are you trying to find?
a complete ecosystem metadata dump file(s)? 19:38
jmerelo sena_kun: look up info fields and other fields of distros 19:42
isomorphismes: this does something, at least: curl raw.githubusercontent.com/ugexe/Pe...cpan1.json | jq ".[] | .description " | grep TCP
But you need to repeat it for the two sources, and then for every field. 19:43
sena_kun I keep thinking an alternate installation tool would really help Perl 6
isomorphismes anybody in here knows Gabor Szabo's email / way to ge tinvitation to perl6-bailador.slack.com ?
jmerelo .seen szabgab 19:44
yoleaux I saw szabgab 30 Jan 2018 15:26Z in #perl6: <szabgab> It is linked under "smoke testing" on perl6.org/community/ so if that site is not in use then maybe it should not be linked either.
isomorphismes thanks jmerelo
jmerelo isomorphismes: it's as above at gmail, probably.
sena_kun jmerelo, who knows, maybe a zef plugin will do the job.
jmerelo But he's not very active in Bailador lately... I think ufobat is now carrying on the work
jmerelo isomorphismes: and, come to think of it, I'm in that slack and it's been inactive for some time now... 19:45
isomorphismes sena_kun: general idea being, from the cli it would be nice to be able to curl an api that gives one the information that's useful to compare multiple options.
jmerelo sena_kun: if only that was documented too...
isomorphismes: right. That would be nice. 19:46
isomorphismes npm sort of has this but you can't tell how many users, the version #, number of "stars" (stupid design anyway), or which of the packages claiming to implement [topic] actually work. no filtering..
jmerelo: sena_kun: I'd be up for working on this another day, right now I want to add aliases for =begin boring and =begin extra to pod v6
I think aliasing them to footnote and comment are a fine start 19:47
sena_kun sounds like an idea for a service and a small client tool.
isomorphismes sena_kun: definitely
isomorphismes but the larger problem of cheap, clear communication I want to address in a different way which Iw ill share in this chat later 19:48
jmerelo goes AFK for dinner
tobs I have a character in a variable $X. How do I match anything but $X with a regex? I can't seem to find a way to interpolate into a negated character class. 19:53
sena_kun m: my $a = 'a'; say 'a' ~~ /<[$a]>/; say 'a' ~~ /<-[$a]>/; 19:55
camelia 「a」
Nil
pmurias random idea: would having a dancer style sugar layer on top of Cro make sense?
moritz it would, especially if it stills allows some asynchronicity
sena_kun pmurias, can you show an example of dancer style sugar, please?
tobs m: my $X = 'a'; say '$' ~~ /<[$X]>/; say 'a' ~~ /<-[$X]>/; 19:56
camelia 「$」
「a」
tobs sena_kun: it doesn't insert the contents of $X but Q[$X] into the character class 19:57
pmurias sena_kun: I mean offering an interface like Dancer does, I would have to play around with it a bit to see how it looks like
sena_kun pmurias, based on `get '/profile/:id' => sub` style stuff I see at perldancer.org, cro already has it, even cooler version of it. Of course, I may be missing something as I literaly just looked up some examples. :) 19:58
daxim I have typed up my problem on SO: stackoverflow.com/questions/543719...-terminals
sena_kun pmurias, did you see examples of Cro::HTTP::Router usage?
tobs, oh, I am dumb, sorry. 19:59
tobs ... and that's how fuzzy testing was born :) 20:00
pmurias sena_kun: yes, the interface seems very similiar 20:07
sena_kun :)
sena_kun and I somehow suspect Cro has some things made nicer, or, at least, that'd be odd to jnthn to make a possibly similar interface but worse. And, as I said before, Cro is not a web framework, though parts for web framework were written using it. :) 20:10
moritz daxim: I've written an answer; please let me know if that goes into the right direction 20:12
daxim ⌛ processing ⌛ 20:13
daxim looks good. that's munging the tree after it's been built up fully, any possibility to transform the caps at the time they are created? 20:43
timotimo you might be able to override some of the allcaps methods 20:54
timotimo m: grammar Test { rule TOP { x <Y> z }; rule Y { y }; method CAPS(|c) { say "caps called with {c.perl}" }}; Test.parse("x y z") 20:54
camelia ( no output )
timotimo m: grammar Test { rule TOP { x <Y> z }; rule Y { y }; method MATCH(|c) { say "MATCH called with {c.perl}" }}; Test.parse("x y z")
camelia MATCH called with \()
P6opaque: no such attribute '$!pos' on type Match in a Bool when trying to get a value
in block <unit> at <tmp> line 1

MATCH called with \()
timotimo m: grammar Test { rule TOP { x <Y> z }; rule Y { y }; method MATCH(|c) { say "MATCH called with {c.perl}"; self }}; Test.parse("x y z") 20:55
camelia MATCH called with \()
MATCH called with \()
timotimo hum.
m: grammar Test { rule TOP { x <Y> z }; rule Y { y }; method MATCH(|c) { say "MATCH called with {c.perl} on {self.perl}"; self }}; Test.parse("x y z")
camelia MATCH called with \() on Match.new(made => Any, pos => 5, from => 0, hash => Map.new(()), list => (), orig => "x y z")
MATCH called with \() on Match.new(list => (), orig => "x y z", made => Any, from => 0, pos => 5, hash => Map.new(()))
timotimo m: grammar Test { rule TOP { x <Y> z }; rule Y { y }; method MATCH(|c) { say "MATCH called with {c.perl} on {self.perl}"; self.ast = $++; self }}; Test.parse("x y z")
camelia MATCH called with \() on Match.new(from => 0, made => Any, orig => "x y z", list => (), pos => 5, hash => Map.new(()))
Cannot modify an immutable Str (Nil)
in method MATCH at <tmp> line 1
in block <unit> at <tmp> line 1
timotimo m: grammar Test { rule TOP { x <Y> z }; rule Y { y }; method MATCH(|c) { say "MATCH called with {c.perl} on {self.perl}"; self.make: $++; self }}; Test.parse("x y z") 20:56
camelia MATCH called with \() on Match.new(pos => 5, list => (), made => Any, hash => Map.new(()), from => 0, orig => "x y z")
MATCH called with \() on Match.new(made => 0, hash => Map.new(()), pos => 5, list => (), orig => "x y z", from => 0)
timotimo would need more levels of depth, doesn't seem to run on the TOP method
m: grammar Test { rule TOP { <MYTOP> }; rule MYTOP { x <Y> z }; rule Y { y }; method MATCH(|c) { say "MATCH called with {c.perl} on {self.perl}"; self.make: $++; self }}; Test.parse("x y z")
camelia MATCH called with \() on Match.new(hash => Map.new(()), pos => 5, from => 0, orig => "x y z", made => Any, list => ())
MATCH called with \() on Match.new(hash => Map.new(()), pos => 5, made => 0, list => (), from => 0, orig => "x y z")
timotimo hmm
ah, of course, i'd set the value before i print the object
m: grammar Test { rule TOP { <MYTOP> }; rule MYTOP { x <Y> z }; rule Y { y }; method MATCH(|c) { self.make: $++; say "MATCH called with {c.perl} on {self.perl}"; self }}; Test.parse("x y z") 20:57
camelia MATCH called with \() on Match.new(orig => "x y z", made => 0, hash => Map.new(()), list => (), from => 0, pos => 5)
MATCH called with \() on Match.new(made => 1, hash => Map.new(()), orig => "x y z", pos => 5, from => 0, list => ())
timotimo btw you can totally just override the match method inside the grammar, since grammars are just slightly funky classes 20:59
daxim I didn't even know about method MATCH until now
where the heck is it documented? 21:00
timotimo it isn't 21:03
it's not user-facing API .. so probably not what you want in the end 21:04
daxim WELL IT'S PUBLIC NOW
timotimo welp, the gig is up!
i think moritz' transform sub isn't bad. you can put it into the grammar's parse method and that'll make YourGrammar.parse return the datastructure you want immediately 21:06
may also want to override method "subparse", if you want to offer the functionality to your users 21:07
daxim hm hm
timotimo m: grammar Trickery { method parse($input, :$rule) { $input.comb } }; Trickery.parse("hello how are you").perl.say
camelia ("h", "e", "l", "l", "o", " ", "h", "o", "w", " ", "a", "r", "e", " ", "y", "o", "u").Seq
isomorphismes another good cli tool would be something like bro or tldr. Pulling from examples.perl.com. 21:09
AlexDani` oh yeah, I did try tldr recently 21:13
AlexDaniel and wondered if perl6 should be added there somehow 21:13
it does have something for perl5, so why not perl6 :)
SmokeMachine m: given Mu.^find_method(“ACCEPTS”) { say .file; say .line } 21:18
camelia SETTING::src/core/Mu.pm6
15
perlbot Randy pasted a new file at perlbot.pl/p/ljxspo - 21:22
timotimo lols 21:25
sena_kun I am glad perl interpreter stopped at line 5 and rejected the program as invalid. :) 21:27
sena_kun .oO ( in many senses )
lucs Grammar question : gist.github.com/lucs/0f64cd5448ccf...85bea34f7e 21:46
lucs Gotta go. Please .tell me if any of you folks have ideas for my grammar question. 22:06
lucs goes to see a Hommage à Gilles Tremblay concert.
moritz .tell lucs I've answered in a gist comment. You might also want to check out www.apress.com/us/book/9781484232279 :D 22:28
yoleaux moritz: I'll pass your message to lucs.