»ö« 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.
Kaiepi i'm writing a slang and want to call a lexical routine used in Perl6::Actions. how can i do that, if it's possible? 00:00
i tried poking around in OUTER, CALLER, etc. from the method of the role that gets mixed in but i can't find it 00:02
Geth whateverable: 263a682de4 | (Aleks-Daniel Jakimenko-Aleksejev)++ | lib/Whateverable/Bits.pm6
Plus sign can't be part of the nickname

I don't know what I was thinking.
00:06
AlexDaniel m: say 42 00:11
camelia 42
aearnus[m] got around to submitting an issue for zef based on what I was talking about the other day 01:25
github.com/ugexe/zef/issues/310
aearnus[m] currently trying to nuke my entire perl6 install and test from scratch to see if it'll work 02:03
Geth whateverable: 91a097da66 | (Aleks-Daniel Jakimenko-Aleksejev)++ | lib/Whateverable/Userlist.pm6
Pass along userlist events

Otherwise nothing else will be able to catch them. Heartbeat doesn't work without this.
02:26
guifa returns from the depths of the unknown 03:55
aearnus[m] it's on the tip of my tongue, but is there a more elegant way to write this? github.com/Aearnus/crystallarium/b...p6#L17-L21 04:22
Elronnd @!tokens.push(LoginToken.new).tail 04:29
aearnus[m] m: (given 5 { }).say 04:33
camelia Nil
aearnus[m] Elronnd: clever! that went right over my head somehow
thanks
masak it might be just my personal taste, but taking .tail there while you yourself constructed the object feels... excessive 06:35
aearnus[m] it looks so much nicer than the 3 lines of construction -> pushing -> returning tho 06:36
masak how about `@!tokens.push(LEAVE return LoginToken.new);`? *grin*
m: my @a; sub foo { @a.push(LEAVE return 42) }; say foo(); say @a.perl 06:37
camelia Attempt to return outside of any Routine
in sub foo at <tmp> line 1
in block <unit> at <tmp> line 1
masak aww
...is that a bug? I thought LEAVE executed dynamically inside the scope of the routine, before unwinding? 06:38
masak tries to confirm this with S04
aearnus[m] in theory that's really slick 06:40
masak I couldn't find anything substantiating that. closest thing I read was "`LEAVE` can see its lexical variables", but it seems it's silent on when exactly `LEAVE` fires
masak consults the spectests 06:41
hm, the spectests are silent on this as well 06:43
jnthn: what do you think -- do you have any intuition on when `LEAVE` runs -- before or after leaving the dynamic scope of a routine ("returning")? specifically, does it make sense to `return` from a `LEAVE`? (the way one can `return` from a `CATCH`) 06:44
hm, could be there's a catch-22 there. don't want the `return` to trigger a new `LEAVE` process. clearly we're already LEAVEing at that point 06:45
aearnus[m] Solution: make `LoginToken.new` throw & and put the return in a `CATCH` phaser instead :^) 06:49
hehe, that's too much dark magic
masak haha 06:59
I like the way you think, though
Geth doc: 6be75b81ef | (JJ Merelo)++ | 2 files
Some clarification for integer bitwise XOR operators and others

Works towards #2939. The main problem is that Boolean bitwise operators are not indexed, so they are hard to find. Coming up next.
07:28
doc: 95d5707238 | (JJ Merelo)++ | doc/Language/operators.pod6
Adds the Boolean bitwise XOR operator

Which was not documented. That closes #2939
synopsebot Link: doc.perl6.org/language/operators
chloekek p6: my $x = 0 but True; say +$x; say ?$x; 09:24
camelia 0
True
chloekek No more need for '0 but true' :P 09:25
jnthn masak: LEAVE runs when we're already certainly leaving the routine; while it's sufficiently in dynamic scope that we can see any my $*foo declared in there, we're already outsie of the `return` control exception handler 09:32
masak: Basically it's done as part of the stack unwind, so we've already done the VM-level return instruction by the point it's triggered
So you can't sensibly initiate another round of returning
m: sub foo() { LEAVE .say; return 42 }; foo() 09:33
camelia (Any)
jnthn m: sub foo() { KEEP .say; return 42 }; foo()
camelia (Any)
jnthn m: sub foo() { LEAVE { .say }; return 42 }; foo()
camelia (Any)
jnthn Oh, right...I'm thinking of POST :)
But POST runs at that point too but it gets teh return value 09:34
m: sub foo() { POST { .say }; return 42 }; foo()
camelia 42
jnthn Like that
So we need to have already been returning for that also
Kaiepi my networking grant's off to a bit of a slow start since i chose to start with bug fixes mainly, but at some point this week probably i'll be getting started on some of the more exciting changes 10:26
synchronous udp/unix/raw socket support soon(tm)
moritz \o/ 10:43
AlexDaniel Kaiepi++ :) 11:31
El_Che (Damn, I like the Rakudo name. Can we call the language Rakudo and the compiler raku?) 11:44
El_Che ducks
moritz let's name the compiler doraku and the language rakudo -- what could possibly go wrong? :-) 11:49
El_Che moritz: <insert Fry's gif "I don't know if serious or actually a great idea" here> 11:52
moritz FTR, that was not serious 11:53
El_Che I know :) 11:53
Geth problem-solving/path-to-raku: 04108b11a0 | (Elizabeth Mattijsen)++ | solutions/language/PATH-TO-RAKU.md
Remove suggestion of .code, go for .raku.
12:13
problem-solving/path-to-raku: 9301d09db5 | (Elizabeth Mattijsen)++ | solutions/language/PATH-TO-RAKU.md
Remove suggestion for new backcronym for NQP
12:15
scimon Trying to make points about Perl6 as a language and one of the criteria is "Hireability" I'm trying to make the point that is we advertise jobs with Perl6 as a valid language we'll basically be the only company in London doing so. 13:38
Which to my mind is a good thing.
timotimo i personally am not going to relocate to not-so-great britain :) 13:39
scimon Point. 13:41
tadzik well, if you're looking for remotes... :)
scimon (I will hopefully be relocating to soon to be independent Scotland)
El_Che scimon: if your ambition is to fill a small team, sure
tadzik I can imagine that attracting some adventurous Perl 5 developers 13:42
El_Che scimon: in a wider scope Perl[56] is not a magnet for the younger generation
scimon Well that's the thing. We do seem to be getting interest in Perl6 from all over. 13:43
Heck I find getting Perl5 devs to try it quite hard to do.
El_Che scimon: it would trigger my interest, certainly. But a alarm would be triggered about the marketability of Perl 6 in my resume 13:44
lizmat scimon: in my opinion, the only Perl 5 devs that want to try out Perl 6 are no longer programming Perl 5 for a living 13:52
El_Che scimon: if you convert Perl 5 programmers to 6, Booking will send hitmen to get you 13:55
it's difficult enough to find Perl 5 people as it is :) 13:56
lizmat El_Che: please don't try to spread any funny FUD
El_Che lizmat: do you thing people would really believe the hitmen story? 13:57
lizmat people believe a lot of things about Booking
El_Che wow
we live in a funny time 13:58
lizmat yes, indeed we do
El_Che for the record, the hitmen story is fake news, they were already fully booked for the Epstein case
lizmat :-) 14:00
El_Che (however, finding perl 5 people is not simple) 14:04
scimon does hiring, so maybe he has a different experience (it's been a while for me) 14:05
lizmat finding people *wanting to do Perl 5* is hard
robertle I wonder whether it makes sense to focus on the product during the hiringm not the tech stack, and look for people that are comfortable with multiple languages 14:06
it's kinda weird to look for a Java developer as well. I mean I don't care about the java part and neither should the applicant, we should both care about the product we want to build and use whatever to achieve it. 14:07
El_Che robertle: ideally, yes. In practice, when enough jobs are available, people look specifically for a certain tech or stack
robertle "whatever" could be java in one environment, or fortran in another
El_Che lots of people I know are "Java Spring(boot)" people
and won't look at nothing else
people doing dynamic languages seem more flexible 14:08
robertle yeah I know, just saying that sometimes companies make matters worse by explicitely stating a tech stack as a role description
El_Che robertle: it's often out of despair. Someone added a "go scripting" to a description on a job we had open :) 14:09
some HR people are technical enough to be dangerous :)
timotimo "visual perl6"? :)
robertle just to make it sound appealing? we have similar things here, where pretty random buzzwords get added to job ads to make them more likely to be googled :)
El_Che timotimo++ 14:10
timotimo "no dogs"
"60 years experience in perl6 a must"
Geth ¦ problem-solving: AlexDaniel assigned to jnthn Issue .perl should be replaced with a pluggable system github.com/perl6/problem-solving/issues/91 14:32
Guest93 Hi! So, i've been looking into learning more about grammars, made this simple calculator as an exercise pastebin.com/VTVRMteJ but found the case in which my implementation performs very poorly (the last line in the paste). My understanding is that it tries to match every subgrammar prior to getting to the trivial case, and the time spent in 15:45
creases exponentially. Is there a common way to address this? Do i simply avoid this recursive style of definitions?
moritz Guest93: it generally helps to factor out alternations on the left 15:46
rule term { <factor> [ $<op>=['+' | '-'] <expression> ]? } 15:47
Guest93 I see 15:48
moritz erm, mixed up the symbols, but the structure should be clear
Guest93 Yes, pretty clear, i'll try that, thanks! 15:49
moritz good luck! :D
jnthn When I do such things I typically just parse like <term> [<infix> <term>]* and then do a precedence sort in the actions
Guest93 Interesting, i'll try that too after, seems a bit more complex, but would be helpful to understand these better :D Thanks! 15:52
woolfy Guest93 : This book might be of interest to you too... www.apress.com/gp/book/9781484232279 15:58
Geth whateverable: c46a08fc66 | (Aleks-Daniel Jakimenko-Aleksejev)++ | xbin/Tellable.p6
Do not pass messages if the user reacts immediately

Implements #353, but no tests are added.
16:14
Guest93 moritz instantaneous now! woolfy, i'll check it out, thanks again, everyone :) 16:15
scimon lizmat: The Perl5 hiring thing is part of the problem we have 16:30
(Right running away)
Doc_Holliwood Can somebody explain this whenever Promise.Kept idiom to me? ( pastebin.com/QNs1SULU ) 16:51
I don't understand why this asynchronizes the supply
AlexDaniel Doc_Holliwood: where did you find that? I don't think it does anything useful… 16:54
Doc_Holliwood It works as intended. I just don't understand why it does that. The asynchronize sub was written by jnthn over on stackoverflow 16:56
stackoverflow.com/questions/574863...-at-a-time
AlexDaniel ahhh 16:57
AlexDaniel Doc_Holliwood: I don't get it too :) 17:11
Doc_Holliwood Thank you, that helps :-D 17:13
cpan-p6 New module released to CPAN! Red (0.0.4) by 03FCO 17:58
Kaiepi i tried reading the code for Promise to see if i could work out why Promise.kept is there and... yeah i don't get it either 18:05
timotimo Promise.kept(1) creates a promise that is already kept with the value 1 18:06
tellable6 2019-08-19T16:18:08Z #moarvm <AlexDaniel> timotimo it should work now
timotimo Promise.kept creates one that's kept with the value True
lizmat Kaiepi: if your API requires you to return a Promise, but you do not have anything to wait for, Promise.kept allows you to return one without having to wait 18:07
AlexDaniel timotimo: so it doesn't work!
timotimo so all it does is immediately launch the whenever when the supply block's setup is finished
AlexDaniel: whoops
Kaiepi yeah, i got that part but why isn't it redundant to have there? 18:10
timotimo because here you want to make it be installed after initial setup has finished 18:11
Doc_Holliwood timotimo: yes, but what in that statement is saying "async from here on?" 18:17
the output of that snippet is 221222 you see, the two supplies run in parallel 18:18
but why?
timotimo i believe it's because the setup code runs synchronously, and subscribing to the $supply1 and $supply2 will run the setup code of these synchronously, too, and they have await in them 18:26
timotimo but if you whenever Promise.kept, it'll finish the outermost setup code first, and then the "await" can get execution to go back to other tasks 18:27
that could be wrong
timotimo BBL 18:28
Geth whateverable: 72b3976633 | (Aleks-Daniel Jakimenko-Aleksejev)++ | xbin/Tellable.p6
Sleep a little bit between messages

Otherwise they are sometimes delivered out of order.
18:41
Geth doc/master: 4 commits pushed by Coke++ 19:21
[Coke] waves. 19:22
robertle what's a good, modern example of a perl module with native code inside? 19:56
Doc_Holliwood by definition all perl6 is modern, isn't it? do you mean, idiomatic? 19:58
robertle mostly non-panda :) 20:03
tadzik :( 20:08
Doc_Holliwood what's wrong tadzik? did somebody steal your closures? 20:09
[Coke] remembers when he used to be able to write code at work. 20:10
lizmat hugs tadzik 20:10
tadzik :) 20:22
aearnus[m] if I wanted to give a mini talk about Perl 6 at my local hackathon, who would I have to talk to / get permission from? 20:30
[Coke] ... no one? 20:31
we like it when people talk about Perl 6
[Coke] or do you mean a *specific* talk that someone already gave? 20:31
aearnus[m] isn't the branding under some sort of licensing [Coke] 20:32
Nah nah I just meant stuff like using the Camelia logo
moritz aearnus[m]: you get permission from your hackathon organizers :-)
aearnus[m]: you can use Camelia and the Perl trademark for communication about Perl 6 without any need for permission
github.com/perl6/mu/blob/master/mi...amelia.txt 20:33
The Camelia image is a trademark of Larry Wall, and permission is
granted for non-exclusive use to label anything related to Perl 6,
provided the image is labeled as a trademark when used as a main logo
on a page. (It is not necessary to so label icons, or other casual
uses not related to business.) Such labeling may be done either by
footnote or with a TM mark.
see github.com/perl6/marketing/tree/master/LOGOs for logo variants 20:34
lizmat and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2019/08/19/...were-back/ 20:36
aearnus[m] awesome! thank you moritz !
lizmat++
moritz lizmat++ 20:38
leont Is spider-mario also in this chat by another name? The rakudo package for arch hasn't been updated since april (and I think we've had a stable release since) 20:53
timotimo .seen spider-mario 20:58
tellable6 timotimo, I saw spider-mario 2017-03-23T10:08:23Z in #perl6: <spider-mario> (wow, already)
timotimo oof, that has been a while 20:59
MasterDuke leont: i think he filed a rakudo issue because the change to the build process messed with his pkgbuild 21:02
MasterDuke R#3090 21:03
synopsebot R#3090 [open]: github.com/rakudo/rakudo/issues/3090 [BLOCKER][build] Installer does not play well with Arch Linux’s makepkg
leont Ah, that would explain the situation
parrot_raiser I've just tried to run p6doc after installing rakudo. It aborts with a fairly complex error message, ultimately about "too many positionals" in build_index. Any suggestions? 21:22
Sorry, that's "p6doc build" 21:23
[Coke] what version of rakudo, p6doc, and OS?
(maybe update?) 21:24
parrot_raiser rakudo 2019.03.1, the p6doc that came with it, Mageia 7 Linux - I'd quote uname but can't get a screen scrape. 21:26
Linux localhost 5.2.7-desktop-1.mga7 #1 SMP Wed Aug 7 10:32:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux 21:28
pamplemousse lizmat++ #p6 weekly 21:35
MasterDuke parrot_raiser: huh, it doesn't seem to do anything for me (runs for a second or two, but no output or errors) 21:37
parrot_raiser Is there somewhere I can post the complete error message chain? 21:39
MasterDuke github.com/perl6/doc/issues 21:40
or do you mean a gist/pastebin site? 21:41
parrot_raiser MasterDuke I was actually asking about pastebin, but I see issue # 2387 was exactly the same problem 21:46
MasterDuke parrot_raiser: huh, says it's fixed, but you have a newer version than when that was said. i'd suggest commenting or creating a new issue 21:50
parrot_raiser MasterDuke I've added the details in a comment to the issue. If it's been fixed, the fix apparently hasn't reached Rakudo* 21:59
MasterDuke parrot_raiser: cool, thanks 22:01
guifa is wondering the best interface for a CLDR item and looking for advice 22:22
guifa It’s to compute the grammatical gender of a list. E.g. in Spanish m+m = m, f+f = f, but f+m = m, but in other languages the calculating might be different. 22:23
I’m thinking list-gender(**@list, language) which is what I’ve used for other CLDR-based submodules but that kind of ruins the whole slurpy factor. OTOH I don’t really like the idea of making most things need :language($foo) instead of just $foo (and I’d prefer consistency so I don’t want some to take it as a named and others as a positional). 22:26
Geth ¦ problem-solving: AlexDaniel self-assigned there is no security process for receiving security critical bug reports github.com/perl6/problem-solving/issues/92 22:27
guifa I imagine most people will be accessing it by passing a list or by generating the list in place, FWIW. E.g, list-gender(@people».gender) or by list-gender(@list-of-genders) but I kind of want to keep it open to use list-gender($cat,$dog,$desk,$chair), hence hte condundrum 22:29
Geth doc/rx-corr: 2c3fcc92df | threadless-screw++ | doc/Language/regexes.pod6
Literals and metacharacters: layout correction, introduction of new examples, minor corrections
22:51
doc: threadless-screw++ created pull request #2957:
Literals and metacharacters: layout correction, introduction of new e…
22:52
tbrowder .tell lizmat great catchup weekly! 23:06
tellable6 tbrowder, I'll pass your message to lizmat
SmokeMachine vrurg: just to let you know, there is a new Red release! \o/ 23:54
vrurg SmokeMachine: My congrats! \o/ :) 23:55
vrurg is totally back to core development again...
SmokeMachine vrurg: and I’m probably releasing a new :api version soon... I’m changing the `is referencing` interface... 23:56
vrurg Interesting. How is it looking now?
SmokeMachine vrurg: it’s block will receive de model it should use... I mean, instead of { MyModel.id } something like: { .id }, :model<MyModel> 23:59