»ö« 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.
irced i think prefixing with an ampersand to List'ify the sequence is probably going to be the most widely understood means of iterating over a "list" when flatenning is undesirable due to the presence of sub"lists" 00:04
though even a ( LIST ) needs to be "list"ified for the for loop. it is an idiosyncracy of the for loop perhaps, that it expects something besides a raw ( blah, blah ) to iterate over each element individually 00:06
irced i accept you, for loop. 00:07
irced weirdo.
ampersand oops i meant at symbol 00:13
irced i suppose one can say that a non-Array positional is internally read by the for loop as not having an internal field separator. then various operations can change its representation to the for loop or just change IFS="" to IFS="something that internally makes sense" 00:21
irced non-@rray positional 00:53
melezhik How to define function accepting list of arguments, in a way `foo a,b,c;` 01:27
?
irced melezhik: exactly three arguments? 01:28
melezhik no, 1 .. N 01:28
at least one and could be more
irced melazhik: well, there's various ways with various levels of complexity. to begin with a simple case, we can use the implicit arguments list @_ 01:29
sub fun() { say "There are {@_.elems} arguments" }; fun(a, b, 123); 01:30
m: sub fun() { say "There are {@_.elems} arguments" }; fun(a, b, 123);
camelia 5===SORRY!5=== Error while compiling <tmp>
Placeholder variable @_ may not be used here because the surrounding block takes no signature
at <tmp>:1
------> 3sub fun() { say "There are {@_.elems}7⏏5 arguments" }; fun(a, b, 123);
e…
irced oops, an implicit slurp i think is in order 01:31
melezhik I'd like to define signature
irced m: sub fun(*@_) { say "There are {@_.elems} arguments" }; fun(a, b, 123);
melezhik not just @_
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routines:
a used at line 1
b used at line 1
irced ok, well, since this route isn't working as expected, we can do that instead
m: sub fun($a, $b, $c) { say $a; say $b; say $c; }; fun('a', 'b', 123); 01:32
camelia a
b
123
irced m: sub fun(*@_) { say "There are {@_.elems} arguments" }; fun('a', 'b', 123);
camelia There are 3 arguments
irced that's why it wasn't working. 01:33
anyway, those are two examples, please help me narrow down what you need from here.
m: sub fun() { say "There are {@_.elems} arguments" }; fun('a', 'b', 123); 01:34
camelia 5===SORRY!5=== Error while compiling <tmp>
Placeholder variable @_ may not be used here because the surrounding block takes no signature
at <tmp>:1
------> 3sub fun() { say "There are {@_.elems}7⏏5 arguments" }; fun('a', 'b', 123);
irced m: sub fun { say "There are {@_.elems} arguments" }; fun('a', 'b', 123);
camelia 5===SORRY!5=== Error while compiling <tmp>
Placeholder variable @_ may not be used here because the surrounding block takes no signature
at <tmp>:1
------> 3sub fun { say "There are {@_.elems}7⏏5 arguments" }; fun('a', 'b', 123);
irced anyway, working with the two signatures, ($a, $b, $c) and (*@_), how do neither of these fit your requirements? 01:35
melezhik 01:36
melezhik Ideally I'd like to define function `foo(p,a,b,c)` where p is string and the rest - a,b,c,d ... - list, with this call semantic, without `[` `]` symbols around 01:37
and without parenthesis `(` `)` 01:38
irced to address the last part
melezhik signature should check that p is a string and just slurp the rest of parameters as array/list
irced err, ok, let me see 01:39
here we are 01:42
sub fun (Str:D $string-in, *@the-rest) { say $string.in; say @the-rest.gist }; fun "hello universe", 1, 2, 3, 4, 'kewl'; 01:43
m: sub fun (Str:D $string-in, *@the-rest) { say $string.in; say @the-rest.gist }; fun "hello universe", 1, 2, 3, 4, 'kewl';
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '$string' is not declared. Did you mean 'Stringy'?
at <tmp>:1
------> 3un (Str:D $string-in, *@the-rest) { say 7⏏5$string.in; say @the-rest.gist }; fun "h
irced m: sub fun (Str:D $string-in, *@the-rest) { say $string-in; say @the-rest.gist }; fun "hello universe", 1, 2, 3, 4, 'kewl';
camelia hello universe
[1 2 3 4 kewl]
irced there we are, whoa it worked 😄 01:44
melezhik irced thank you, this is what I've looked for `*@list`
(-:
irced ur welcome 01:45
glad it helped
*@list is the slurpy parameter, where * indicates to slurp. but depending on the complexity of your other parameters you might need to use a diffferent slurp. anyway, this is the simple case 01:46
melezhik let's start with this and then let see, but I don't expect anything more complex that just passing plain lists ... 01:47
irced melezhik: it's when you pass in lists of sublists that you might get unexpected results with a simple slurp. 01:48
melezhik sure
irced melezhik: but don't worry, if you do that the solution is simple, use a different slurp 01:50
melezhik: in fact, you can use the nonflattening slurpy instead of a regular slurpy to treat lists of sublists as they are.. come to think of it
m: sub fun (Str:D $string-in, **@the-rest) { say $string-in; say @the-rest.gist }; fun "hello universe", 1, 2, 3, 4, 'kewl';
camelia hello universe
[1 2 3 4 kewl]
irced melezhik: there, use **@the-rest to start with so you get what you put in. 01:51
melezhik: easy
m: sub fun (Str:D $string-in, **@the-rest) { say $string-in; say @the-rest.gist }; fun "hello universe", 1, (2, 3), 4, 'kewl'; 01:52
camelia hello universe
[1 (2 3) 4 kewl]
irced m: sub fun (Str:D $string-in, **@the-rest) { say $string-in; say @the-rest.gist if @the-rest}; fun "hello universe"; 01:58
camelia hello universe
irced melezhik: you should probably check for the other arguments of course, as shown, as they are optional by default
irced melezhik: don't forget that parameters themselves are immutable by default 02:07
Geth doc/master: 5 commits pushed by threadless-screw++, (Juan Julián Merelo Guervós)++ 06:16
Geth ¦ doc: JJ assigned to antoniogamiz Issue Standardize search categories github.com/perl6/doc/issues/1410 06:25
jmerelo There are a bunch of unanswered questions in StackOverflow stackoverflow.com/questions/tagged...Unanswered take a look at them, and help the community by answering them 06:53
jmerelo CFP in the London Perl Workshop is open: blogs.perl.org/users/lpw/2019/07/lo...-2019.html 06:57
AlexDaniel r: say 42 07:18
perlbot AlexDaniel: 42␤ 07:19
camelia 42 07:19

(timeout)
Geth whateverable: 933c6fbe3b | (Aleks-Daniel Jakimenko-Aleksejev)++ | xt/quotable.t
Add timeout test for Quotable

Found it on the server.
07:23
whateverable: 0df6093343 | (Aleks-Daniel Jakimenko-Aleksejev)++ | xbin/Evalable.p6
Remove “r:” shortcut from Evalable

It is now used by perlbot.
whateverable: 1433b21f04 | (Aleks-Daniel Jakimenko-Aleksejev)++ | maintenance/long-term-storage.p6
Move long-term storage cutoff dates

So that more space is saved.
patrickb .tell [Coke] wrt. rakudobrew not finding perl6 after install - could you create a bug report? I'm interested in doing something about this. 07:31
yoleaux patrickb: I'll pass your message to [Coke].
Geth whateverable: 1d1e56a7dc | (Aleks-Daniel Jakimenko-Aleksejev)++ | xbin/Committable.p6
Make committable work with slow snippets

The more releases we have, the longer it takes for committable to produce an answer. By returning a promise the bot will hopefully not ping out when running heavy code snippets.
jmerelo patrickb: I'm not sure it's a bug. It's simply that it's changed the way rakudobrew is declared. You have to run a script to make it find it.
patrickb jmerelo: I think I don't understand. 07:34
AlexDaniel squashable6: status
squashable6 AlexDaniel, ⚠🍕 Next SQUASHathon in 3 days and ≈20 hours (2019-08-03 UTC-14⌁UTC+20). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day
AlexDaniel hmmmmmmmm
jmerelo AlexDaniel: hmmmm is correct
patrickb: simply rakudobrew has changed in the way it installs "rakudobrew" as a command. Before it was simply a file somewhere, which you could access via a path, it's now a shell function. 07:35
patrickb: you need to declare that shell function in a shell before you can access rakudobrew, and before it can find perl6 anew.
Geth whateverable: e386853a23 | (Aleks-Daniel Jakimenko-Aleksejev)++ | lib/Whateverable.pm6
Sleep for a random amount of time before starting

Otherwise all bots join at the same time which looks suspicious.
07:36
patrickb jmerelo: Ah, so the entry in [Coke]s .bash_rc was wrong. Rakudobrew should have reported that the shim was missing and refuse operation. Might still be a bug... 07:37
jmerelo patrickb: probably, yes.
jmerelo AlexDaniel: so, about next squashathon 08:30
AlexDaniel: there are issues there since 2016
AlexDaniel: there are items in the wishlist, and outright errors. 08:31
AlexDaniel: I think there are also modifications in production that are not in the repo. We would have to onboard timotimo 08:33
AlexDaniel: also, everything is in Perl 5...
timotimo a rakudobrew squashathon? 08:34
or is that a whateverable squashathon? 08:35
jmerelo timotimo: No, a modules.perl6.org squashathon
patrickb I think the two discussions were unrelated.
AlexDaniel jmerelo: 🤷 08:38
jmerelo: 26 issues most of which I won't be able to help with 08:39
jmerelo AlexDaniel: you can still help with _some_ :-) 08:39
jmerelo AlexDaniel: midterm, we should migrate it to Perl 6 08:40
AlexDaniel: short term, we should try and fix some stuff.
AlexDaniel I thought the idea is to come with a better squashathon topic?
something that is actually fun for contributors…
last month was awesome 08:41
jmerelo AlexDaniel: I'm open to suggestions. But I take offense to your saying that perl 5 is not fun
Geth modules.perl6.org: 11302a5f92 | (JJ Merelo)++ | CONTRIBUTING.md
Adds mini-contribution guide
08:42
AlexDaniel jmerelo: small typo: “cna have a working copy” 08:43
does anybody have any cool idea for this squashathon? Something fun, please :) 08:44
Geth modules.perl6.org: 80f20a6279 | (JJ Merelo)++ | CONTRIBUTING.md
Fixes small typo
jmerelo AlexDaniel: fun is OK. But "needed" is also OK. 08:45
AlexDaniel failing to engage is not ok 08:46
remember docs&tools squashathon when somebody won a plush camelia for a single PR? :) 08:47
jmerelo AlexDaniel: Well, by having something that is more perl than perl 6 we could engage people that don't know perl 6
AlexDaniel: that's not fun... for me. It means we have to do a lot of additional work, or simply work is left undone. 08:48
AlexDaniel: perl6 is -Ofun, but it's even funnier if all tools and sites are ready and not working on a wing and a prayer.
AlexDaniel: plus, we're 3 days away from the squashathon. It's either that or some canned squashathon, like the next one, Rakudo and roast 08:49
AlexDaniel: we haven't actually had one of those for a long time.
AlexDaniel how many pages we have on the docs website?
jmerelo AlexDaniel: in the ballpark of coupe of thousands. Generated from ~ 500 documents. 08:50
AlexDaniel I'm thinking doc proofreading squashathon
jmerelo AlexDaniel: doc squashathon, in general... 08:51
AlexDaniel: proofreading is one thing, but people might want to do something more...
AlexDaniel: also, proofreading is fun?
AlexDaniel well, we can make a list of pages and turn every single one into a todo item. What you get is a bunch of actionable tasks 08:52
just an idea
jmerelo AlexDaniel: so you want 400 new issues in the doc repo? 08:53
AlexDaniel no, in a separate repo 08:54
jmerelo AlexDaniel: new repo? 08:55
AlexDaniel a temporary one, yeah
but that's just an idea, arguably not the best one given that we already have a bunch of tickets in the doc repo
jmerelo AlexDaniel: problem is, most of the documentation is basically OK. Coke takes care of typos running aspell from time to time. There are probably some grammar errors. 08:56
AlexDaniel: but those are possibly taken care of from time to time.
El_Che jmerelo: I think there are quite some people with interest in perl6 and not in perl5 (as never learnt it or don't use it any longer) 08:57
jmerelo AlexDaniel: there's also this issue: github.com/perl6/doc/issues/2554 In general, I have found that "old" chunks are the one that are incorrect. Not the grammar, but the examples, mostly.
El_Che: but there are more people who know perl 5 than perl 6. That they want to help with a Perl 6 tool or site is a different thing altogether 08:58
AlexDaniel: but I undertand this might be a contentious topic for a squashathon (cc: El_Che) 08:59
AlexDaniel: what do you think about creating an issue in perl6/doc with check boxes for proofread pages? 09:00
AlexDaniel: we can do a general perl6/doc squashathon, but we would also have an easy issue to start working with it.
AlexDaniel checkboxes might work, I'm not sure 09:01
it's hard to track who checks which checkbox
jmerelo AlexDaniel: squashable does that. It's maybe more difficult to know who's working on what, but it can be done via a comment (which Squashable will dutifully send here) 09:02
jmerelo AlexDaniel: there are 392 pod6 files in the documentation. 09:02
AlexDaniel weekly: Squashathon next weekend! See github.com/rakudo/rakudo/wiki/Mont...Squash-Day for more info 09:03
notable6 AlexDaniel, Noted!
AlexDaniel weekly: or should I say this weekend?
notable6 AlexDaniel, Noted!
AlexDaniel weekly: anyway, soon! Very soon :)
notable6 AlexDaniel, Noted!
jmerelo AlexDaniel: so, doc with proofreading squashathon? 09:06
AlexDaniel well, any other cool ideas? 09:07
there's one I have in mind 09:08
jmerelo AlexDaniel: shoot
AlexDaniel I'm not sure how I feel about this one, but 09:09
there's code-golf.io/ and perl6 solutions used to dominate in most answers, but not anymore. What if we organize community code golfing?
jmerelo AlexDaniel: probably OK... but not for this one
AlexDaniel: table it for next, maybe 09:10
AlexDaniel how come this shit idea will become better next month? :) 09:11
jmerelo AlexDaniel: we can talk it out in Riga :-)
AlexDaniel we already have a guide, fwiw github.com/AlexDaniel/raku-golf-cheatsheet 09:12
jmerelo AlexDaniel: we would need something specific for the hackathon... and also a repo that Squashable can follow.
AlexDaniel: we can talk it out, as said before.
AlexDaniel so github.com/AlexDaniel/raku-golf-cheatsheet is the repo 09:13
file a ticket for each hole, start a discussion
I can prepopulate most of the tickets with my solutions so that we have a starting point for most of them
jmerelo AlexDaniel: So you prefer that one to docs? 09:14
AlexDaniel I'm still trying to brainstorm more ideas :)
next month we'll likely have one squashathon about old-issue-tracker (which doesn't exist yet but hopefully will soon)
timotimo btw the only change on modules.perl6.org that isn't in the repo is this: 09:17
- $self->plugin('PODRenderer') if $self->mode eq 'development';
+ #$self->plugin('PODRenderer') if $self->mode eq 'development';
jmerelo timotimo: OK 09:20
AlexDaniel: I'd rather have the doc one 09:21
AlexDaniel: we still need help for the documentation, and there's not been a doc squashathon for a long time
Geth doc: c8288ae391 | (JJ Merelo)++ | doc/Language/contexts.pod6
Minor correction
09:28
doc: 7256cf354d | (JJ Merelo)++ | util/issue-with-all-pod6.p6
Generates an issuable list of files
synopsebot Link: doc.perl6.org/language/contexts
Xliff say ++$ 09:36
evalable6 1
jmerelo AlexDaniel: we still need to do the modules.perl6.org squashathon. Maybe leave it for later instead of deleting it...
AlexDaniel jmerelo: I don't get it. Why do we need to do it if it makes no sense? 09:38
if some shit needs to be done it doesn't mean we should have a squashathon about it
for you, what's the point of doing squashathons?
jmerelo AlexDaniel: mainly community 09:40
AlexDaniel: but also give some love to repos that don't get any, like that one. 09:41
AlexDaniel: Anyway, next squashathon has been tabled. I've created the issue, and put it in the table.
squashable6: status
squashable6 jmerelo, ⚠🍕 Next SQUASHathon in 3 days and ≈18 hours (2019-08-03 UTC-14⌁UTC+20). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day
AlexDaniel ok, cool 09:42
jmerelo: links are currently broken, I think a full url is required 09:43
jmerelo AlexDaniel: oh, right 09:44
AlexDaniel jmerelo: btw squashable will not tell which todo item was checked
I think the message will be “user X edited issues/2924” or something like that
jmerelo AlexDaniel: yep, right. No problem, as long as there's a link to it. 09:45
AlexDaniel jmerelo: also maybe it has to say what proofreading means, like what should contributors look out for 09:48
broken links? grammar? issues in code examples?
correctness of the text itself?
jmerelo AlexDaniel: OK 09:50
AlexDaniel: check it now 09:52
AlexDaniel maybe we need both rendered and non-rendered links? 09:54
Geth doc: c67873e457 | (JJ Merelo)++ | util/issue-with-all-pod6.p6
Adding both links for @alexdaniel
10:13
whateverable/master: 4 commits pushed by (Aleks-Daniel Jakimenko-Aleksejev)++ 10:19
AlexDaniel ok I'm down to two uncommitted files \o/
Geth whateverable: 3bde2a3ba5 | (Aleks-Daniel Jakimenko-Aleksejev)++ | xbin/Benchable.p6
Commit latest Benchable usability fixes
10:43
Geth whateverable: 9bf1bc4d19 | (Aleks-Daniel Jakimenko-Aleksejev)++ | xbin/build.p6
Groundwork for bump triples

The idea is to make it possible to bisect NQP and MoarVM whenever we hit a bump. Unfortunately this work has never been finished, but committing it now anyway to get rid of uncommitted files on the server.
10:47
AlexDaniel goodnight, bots 10:49
timotimo here's hoping the new rakudo version treats them well :) 11:02
AlexDaniel timotimo: yeah, I hope so 11:08
dpk greetings friends
AlexDaniel timotimo: 2018.06-something was the first version that worked well enough 11:09
dpk: o/
timotimo oh hai dpk
dpk after several years of only very sporadic maintenance, i've decided to finally take yoleaux offline
timotimo were you the owner of yoleaux?
oh, i guess you are .. or were
dpk a friend of mine has a replacement bot which does basically the same stuff, called saxo
AlexDaniel I'd prefer to run my own replacement
dpk okie dokes then 11:10
timotimo what do we usually use yoleaux for? message passing and last-seen, i think?
AlexDaniel dpk: can we get all messages .told from our channels that were not delivered yet?
dpk i can give you a CSV dump or something i guess 11:11
AlexDaniel dpk: works for me, yes, that'd be lovely
lizmat dpk++ # keeping yoleaux alive all those years 11:13
AlexDaniel yes, yoleaux was extremely useful
timotimo aye, it was very nice to have 11:14
Xliff dpk: Does that CSV include .seen data? 11:22
AlexDaniel that can be useful too 11:23
dpk no, and i would be reluctant to give that information out for privacy reasons
AlexDaniel: i've PM'd you a link to the CSV file 11:24
wait, bugger, i messed up and forgot to include a column for who the message is actually for >_<
AlexDaniel dpk: by any chance did you miss #moarvm channel?
dpk oh, probably that too 11:25
AlexDaniel dpk: what about only for those who were last seen on one of our channels? 11:26
dpk hmm i could do that i think, yes
AlexDaniel: okay, fixed if you redownload the tells db from the same URL 11:28
AlexDaniel dpk: yeah, that seems to be correct. Weirdly, Some messages are quoted while others are not, but I'll be able to work with that for sure 11:30
dpk okay, done the seens too 11:33
AlexDaniel dpk: great! Thank you very much 11:37
AlexDaniel ah I see, they're quoted if there's a comma in the message. Cool 11:39
dpk yeah, should be pretty standard CSV. i generated it with the CSV module from the Ruby standard library 11:40
i don't know the exact quoting rules
timotimo can "just"™ use json instead 11:41
it's a one-time thing anyway, isn't it?
AlexDaniel it is
timotimo: fucking hell, not only it doesn't start, but the stacktrace is totally wrecked
timotimo whateverable you mean?
AlexDaniel yes 11:42
timotimo ouchies :) 11:42
AlexDaniel now the error itself can be my fault, but
timotimo throw me at the error
AlexDaniel timotimo: gist.github.com/AlexDaniel/f0a935d...ng-file-L3 11:43
in method selfrun at Bisectable.p6 line 176
that's the wrong file
lizmat weekly: www.theperlfisher.com/index.php/201...se-bouche/
AlexDaniel it should say in “method selfrun at lib/Whateverable.pm6 line 176”
lizmat AlexDaniel: bot upgrade in progress ??? 11:44
timotimo hm, maybe backup all the precomp stuff and blow it away?
AlexDaniel lizmat: yes
lizmat okidoki
AlexDaniel lizmat: sorry for that, had to be done one day :)
timotimo i.e. see if blowing it away makes it work, but keep stuff around so we can figure out the error better
lizmat AlexDaniel: no pb
(yet)
:-)
no pressure :-)
AlexDaniel timotimo: I wonder if there's any precomp at all, given that the process is not allowed to write most of the files 11:45
timotimo: ok, I just tried it again with writable precomp and it gives proper stacktrace now 11:46
timotimo strange in any case. maybe we can reproduce wrong filenames in stacktraces whenever precomp can't be written
AlexDaniel otherwise it's just an old config it seems 11:50
AlexDaniel bisect: good=2016.02 bad 2016.03 say (^∞).grep({ last })[5] 11:56
bisectable6 AlexDaniel, Bisecting by output (old=2016.02 new=2016.03) because on both starting points the exit code is 0
AlexDaniel, bisect log: gist.github.com/ba24f1ee1abf3fa30d...11d703966d
AlexDaniel, (2016-03-18) github.com/rakudo/rakudo/commit/6d...41e7eb99b0
AlexDaniel ok, that really works!
good sign so far 11:57
Geth whateverable: 6b2edebaa1 | (Aleks-Daniel Jakimenko-Aleksejev)++ | META6.json
Add missing dependency (Cro::HTTP::Client)
12:01
whateverable: 10ef566365 | (Aleks-Daniel Jakimenko-Aleksejev)++ | services/whateverable@.service
Adapt the service file for modern rakudobrew
AlexDaniel weekly: www.theperlfisher.com/index.php/201...se-bouche/ 12:02
notable6 AlexDaniel, Noted! (weekly)
AlexDaniel lizmat: we're back up! 12:03
lizmat whee! AlexDaniel++
AlexDaniel on the latest rakudo and also using the latest version of whateverable :)
so some bot updates too
for example
AlexDaniel notable6: some very important note here! 12:03
notable6 AlexDaniel, Noted! (weekly)
AlexDaniel see how it put it into the weekly instead of “some”? :)
AlexDaniel notable6: (↑ that was just a bot test, nevermind) 12:04
notable6 AlexDaniel, I cannot recognize this command. See wiki for some examples: github.com/perl6/whateverable/wiki/Notable
AlexDaniel notable6: weekly (↑ that was just a bot test, nevermind)
notable6 AlexDaniel, Noted! (weekly)
AlexDaniel might still need some improvements though :) 12:04
notable6: uptime
notable6 AlexDaniel, 4 minutes and 50 seconds, 218.121094MiB maxrss. This is Rakudo version 2019.07.1-94-gd1f9d2848 built on MoarVM version 2019.07.1-50-gb614a7b4d implementing Perl 6.d.
AlexDaniel I'm hoping that they'll be leaking less too 12:05
timotimo AlexDaniel: how about setting up a little bit of monitoring that regularly logs info from the bots? 12:07
AlexDaniel timotimo: I think MasterDuke once did a thing that logs maxrss of every bot after running the tests 12:08
I don't think it works…
but what kind of info do you want?
timotimo dunno, as much as possible :P 12:09
timotimo how much data did it receive over the sockets, how much did it send, how many tasks did it do, a distribution of how much time it spent on each task 12:09
etc etc
how much cpu time it spent in total
how many threads spawned
lizmat weekly: blogs.perl.org/users/damian_conway/...rings.html 12:10
notable6 lizmat, Noted! (weekly)
AlexDaniel timotimo: do you want to calculate carbon footprint of these bots or something? xD
but yeah, that kind of monitoring would be great to have 12:11
timotimo they are very good examples of very long running processes that regularly get fed different amounts of data
AlexDaniel who knows what it reveals
Geth doc/master: 4 commits pushed by Coke++ 12:48
AlexDaniel weekly: goodbye, yoleaux! colabti.org/irclogger/irclogger_lo...07-29#l367 (whateverable replacement is coming soon) 13:05
notable6 AlexDaniel, Noted! (weekly)
chloekek AlexDaniel: timotimo: I think that having more monitoring and alerting for the ecosystem in general would be nice to have. 13:35
timotimo yeah
we used to have a collectd on p6c.org
then the machine died
AlexDaniel chloekek: what do you mean by the ecosystem?
chloekek AlexDaniel: the various websites and robots. 13:36
AlexDaniel rba: ↑ something to note about the infrastructure and stuff :) 13:37
chloekek I'ven't used collectd but I've used Prometheus which can do statistics collection, queries and alerts. 13:38
timotimo and prometheus is relatively simple to implement ad-hoc on the service side 13:39
maybe put something a little smaller than a Cro on there 13:40
though you can get that up without a cro router i'm sure 13:41
so maybe that's actually small enough to have not such a significant impact
also, some of the irc bots already have a http part for stuff like github notifications
chloekek Crometheus.
rba AlexDaniel: collectd noted. Guess it was an irc bot?
timotimo oooh
AlexDaniel no
timotimo no, collectd is a server process and there's different web frontends
i guess it's a little bit like munin? 13:42
though grafana could be nicer for now?
rba timotimo: can I come back to you about this later this week? 13:44
timotimo hm 13:45
not sure if we'll use collectd again
chloekek Is there a public overview of the servers and what they run/host? 13:47
AlexDaniel chloekek: I'm hoping that github.com/perl6/problem-solving/issues/68 will be it 13:48
cpan-p6 New module released to CPAN! Async::Workers (0.0.8) by 03VRURG 13:53
AlexDaniel rba: ↑ also note that, it's really important in my opinion 13:55
part of our previous problems is that we simply had no idea what's out there
rba AlexDaniel: noted :-) 13:56
chloekek AlexDaniel: thanks 14:02
chloekek 's been more interested in sysadmin lately. 14:21
timotimo maybe you'd like to hang out in ##perl6-infra 14:22
it's currently rather low-traffic 14:23
chloekek Thanks. 14:25
cpan-p6 New module released to CPAN! Gnome::GObject (0.13.14) by 03MARTIMM 15:59
jmerelo squashable6: status 16:48
squashable6 jmerelo, ⚠🍕 Next SQUASHathon in 3 days and ≈11 hours (2019-08-03 UTC-12⌁UTC+20). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day
lizmat and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2019/07/29/...sed-again/ 18:15
cpan-p6 New module released to CPAN! Gnome::Gdk3 (0.14.6) by 03MARTIMM 18:37
vrurg No more .ask for a while...? 19:16
vrurg SmokeMachine: ping 19:25
SmokeMachine vrurg: pong
vrurg I was thinking about releasing my hash in DB thing. But is there a way to provide table name at run time for a model? 19:26
SmokeMachine vrurg: runtime? the only way to change the table name I know is `is table<new_name>` and maybe `method ^table(|) { "new_name" }` (that I'm not sure if it works...) 19:28
discord6 <Nobody> I have a beginner question: how can I append to a string?
<Nobody> I could not find anything on the doc, I might be searching for the wrong keywords 19:29
vrurg SmokeMachine: it won't make sense releasing the model as a module because people would have different view over the table naming. 19:30
SmokeMachine but if this second option work, someone could do `method ^table($, $name?) { state $table-name = $_ with $name; $table-name }`
discord6 <Nobody> Nevermind, I should have searched for concatenation instead of appending
SmokeMachine vrurg: let me test...
vrurg SmokeMachine: I guess it doesn't. It takes type name only. 19:32
chloekek p6: enum Foo <Foo Bar>; Foo::Foo.perl.say; Foo::Bar.perl.say 19:35
camelia Foo::Foo
Foo::Bar
19:35
chloekek p6: enum Foo <Foo Bar>; Foo::kv.perl.say;
camelia Could not find symbol '&kv'
in block <unit> at <tmp> line 1
19:36
chloekek p6: enum Foo <Foo Bar>; Foo::.kv.perl.say;
camelia ("Bar", Foo::Bar, "Foo", Foo::Foo).Seq
chloekek p6: enum Foo::Bar <Foo Bar Baz>; Foo::Bar::.kv.say
camelia (Foo Foo Baz Baz Bar (Bar))
chloekek Why is (Bar) parenthesized here?
p6: enum Foo::Bar <Foo Bar Baz>; Foo::Bar::Bar.perl.say
camelia Foo::Bar
chloekek p6: enum Foo::Bar <Foo Bar Baz>; Foo::Bar::Baz.perl.say 19:37
camelia Foo::Bar::Baz
vrurg chloekek: I gues because it picks up Bar symbol from Foo namespace
SmokeMachine vrurg: www.irccloud.com/pastebin/vyYJ8B0U/ 19:37
chloekek vrurg: is that a bug? 19:38
ugexe no
m: class Foo::Bar { }; say GLOBAL::Foo; 19:39
camelia (Foo) 19:39
vrurg SmokeMachine: perhaps making table() a multi and have a variant with multi table(Str:D $name) ? So, for a used it'd be just Model.^table: "my name"? 19:40
*for a user
SmokeMachine vrurg: www.irccloud.com/pastebin/9ANBwwo1/ 19:41
vrurg: yes, I think that's a good idea... but while that's not implemented, I think this would be a solution... 19:42
vrurg SmokeMachine: aha, something like what I was thinking about for the last couple of minutes. :)
vrurg Fair enough. I'm not gonna work on it in a couple of days, perhaps. I have implemented to terrible design of own internal project that massive insertion of entries into a DB results in speed < 1 rec/sec whereas direct INSERT gives me 77 and Model.^create ends up with 17 recs/sec! 19:44
chloekek p6: class Foo { }; Foo::Foo.say 19:45
camelia Could not find symbol '&Foo'
in block <unit> at <tmp> line 1
19:45
chloekek p6: class Foo { class Foo { } }; Foo::Foo.say
camelia (Foo)
vrurg So, need to reconsider and redo a lot..
chloekek p6: class Foo { class Foo { } }; say Foo::Foo === Foo
camelia False
ugexe m: class Foo::Bar { }; class Foo::Baz { }; say Foo::.keys
camelia (Bar Baz)
chloekek p6: enum Foo <Foo>; say Foo === Foo::Foo; 19:46
camelia False
chloekek p6: enum Foo <Foo>; say Foo::Foo.perl;
camelia Foo::Foo
chloekek p6: enum Foo::Bar <Bar>; say Foo::Bar === Foo::Bar::Bar;
camelia False
chloekek p6: enum Foo::Bar <Bar>; say Foo::Bar::Bar.perl;
camelia Foo::Bar::Bar
chloekek :/ 19:47
ugexe why are you expecting a stash for Foo::Bar to be identity equal to Foo::Bar::Bar ?
chloekek Because:
p6: enum Foo::Bar <Foo Bar Baz>; Foo::Bar::Bar.perl.say
camelia Foo::Bar
chloekek I expect it to print Foo::Bar::Bar, like it prints Foo::Bar::Baz if you do this: 19:48
p6: enum Foo::Bar <Foo Bar Baz>; Foo::Bar::Baz.perl.say
camelia Foo::Bar::Baz
ugexe ah
ugexe m: enum Foo::Bar <Foo Bar Baz>; say Bar === Foo::Bar::Bar 19:50
camelia False 19:50
ugexe m: enum Foo::Bar <Foo Bar Baz>; say Baz === Foo::Bar::Baz
camelia True
ugexe yeah i'd say thats a bug
chloekek p6: enum Foo <Bla>; say Bla 19:51
camelia Bla
chloekek Ah you can access the members without qualification.
chloekek Would be nice if there's a way to disable that. 19:53
chloekek p6: enum foo ('bar', 'baz'); bar.say 19:59
camelia bar 19:59
chloekek Oh well. :) 20:02
ugexe just use the FQN inside the enum 20:05
although i guess that still leaves you with foo::foo::bar 20:06
chloekek I'm not actually naming the member the same as the package, I just noticed it when experimenting. 20:10
I have “enum Granite::Direction <West East North South Up Down>;”
cpan-p6 New module released to CPAN! Gnome::Gtk3 (0.17.9) by 03MARTIMM 20:12
sena_kun m: my int @a; for ^1000 { @a[$_] += @a[($_ + 3) % 1000] }; say INIT now - now; 20:13
camelia -0.00167835 20:13
sena_kun m: my int @a; for ^1000 { @a[$_] += @a[($_ + 3) % 1000] }; say now - INIT now;
camelia 0.0214331
sena_kun m: my int @a; for ^1000 { @a[$_] += @a[($_ + 3) % 1000] }; say now - INIT now;
camelia 0.0184006
sena_kun I know the code is useless, but does anyone have any ideas on how to make it faster? 20:14
sena_kun just saw a tweet saying that Perl 6 is like, erm, 39945.714286 times slower(!) than C, which is pretty ridiculous. tried the code myself and it is like 90 times slower than C, but not ~40_000. 20:16
replacing `for` with `loop` does not do a lot
timotimo my perl6 search column in tweetdeck didn't pick up a tweet like that recently 20:18
sena_kun timotimo, twitter.com/saito_ta/status/1155759758747373568 20:19
I am planning to write a gist with my measures and ask how did they measure it to be so bad
chloekek m: my int @a[1000]; for ^1000 { @a[$_] += @a[($_ + 3) % 1000] }; say INIT now - now; 20:20
camelia -0.01370243 20:20
timotimo oh, that's what those numbers mean
sena_kun this is a number of runs in a second
chloekek Pre-allocate the array and Conway's light cone will be proud.
timotimo chloekek: i think INIT now - now will have "now - now" inside the INIT block 20:21
chloekek Ohh wait.
sena_kun chloekek, erm, it did it worse for me. o.O
chloekek m: my int @a[1000]; for ^1000 { @a[$_] += @a[($_ + 3) % 1000] }; say now - INIT now;
camelia 0.316234
chloekek lmao 20:21
sena_kun m: my int @a[]; for ^1000 { @a[$_] += @a[($_ + 3) % 1000] }; say now - INIT now; 20:22
camelia Cannot create a dimension array with only 0 dimensions
in block <unit> at <tmp> line 1
sena_kun m: my int @a; for ^1000 { @a[$_] += @a[($_ + 3) % 1000] }; say now - INIT now; 20:22
camelia 0.0109711
chloekek Maybe it doesn't optimize well if you use a shaped array.
Oh hey, the C code is cheating. It uses undefined behavior.
sena_kun yeah
chloekek You can't += an uninitialized element, the compiler will just optimize that away and the program will do nothing. 20:23
timotimo oh, shaped arrays are *super* slow
sena_kun chloekek, it prints values with a print added, garbage ones, of course, can you somehow prove that the code is optimized away?
I am not a C hacker. :S 20:24
timotimo godbolt.org/z/Pr0rL2 20:25
remove the ; there in the include line, i'm super tired right now, lol
though that is C++, i should change it to 20:26
C
sena_kun timotimo, so it does just ret if I remove print. LOL 20:27
that's just epic
timotimo of course :)
sena_kun ok, now I need to write a humble response...
chloekek Also, % is slow if not optimized properly. If the RHS is constant you can always rewrite it to multiplications and bitshifts which are faster, but I don't know if MoarVM does that.
timotimo chloekek: it doesn't, but you could teach it if you'd like!
i can offer guidance
chloekek That'd be fun. I'd have to read the paper again. 20:28
timotimo lemire.me/blog/2019/02/08/faster-r...libdivide/ - i've seen this a couple of months ago and ever since i wanted it in moarvm 20:29
though in the code in question it'll be important to know if it does the math with 64bit or with big integers
chloekek p6: sub f { my int @a; for ^1000 { @a[$_] += @a[($_ + 3) % 1000] } }; my $before := now; f; my $after := now; say $after - $before; 20:30
camelia 0.059757 20:30
chloekek p6: sub f { my int @a; for ^1000 { @a[$_] += @a[($_ + 3) % 1000] } }; for ^100 { f }; my $before := now; f; my $after := now; say $after - $before;
camelia 0.002092
chloekek Gotta spesh that baby.
p6: sub f { my int @a; for ^1000 { @a[$_] += @a[($_ + 3) % 1000] } }; for ^500 { f }; my $before := now; f; my $after := now; say $after - $before; 20:31
camelia 0.0021146
chloekek p6: sub f { my int @a; for ^1000 { @a[$_] ⚛️+= @a[($_ + 3) % 1000] } }; for ^500 { f }; my $before := now; f; my $after := now; say $after - $before; 20:32
camelia 5===SORRY!5=== Error while compiling <tmp>
Confused
at <tmp>:1
------> 3sub f { my int @a; for ^1000 { @a[$_]7⏏5 ⚛️+= @a[($_ + 3) % 1000] } }; for ^500 {
expecting any of:
infix
infix stopper
sta…
timotimo have you got experience with MVM_SPESH_LOG yet? 20:34
chloekek Nope. 20:35
sena_kun timotimo, can I leave a link at godbolt? I mean, will it persist?
timotimo sena_kun: the share button offers "share on erddit" and "tweet", so i'd expect it to persist
sena_kun oooh, nice, thanks!
timotimo the long version of the url encodes everything in the url 20:36
even the layout of the splits and what windows you have open
timotimo p6: sub f { my int @a; for ^1000 { @a[$_] += @a.AT-POS(($_ + 3) % 1000) } }; for ^1_000 { f }; my $before := now; f; my $after := now; say $after - $before; 20:37
camelia 0.0021872 20:37
timotimo p6: sub f { my int @a; for ^1000 { @a[$_] += @a[($_ + 3) % 1000] } }; for ^1_000 { f }; my $before := now; f; my $after := now; say $after - $before;
camelia 0.002075
timotimo perhaps too short to be a good measurement
p6: sub f { my int @a; for ^1000 { @a[$_] += @a[($_ + 3) % 1000] } }; for ^1_000 { f }; my $before := now; for ^100 { f }; my $after := now; say $after - $before;
camelia 0.1537772 20:38
timotimo p6: sub f { my int @a; for ^1000 { @a[$_] += @a[($_ + 3) % 1000] } }; for ^1_000 { f }; my $before := now; for ^1_000 { f }; my $after := now; say $after - $before;
camelia 2.37775893
timotimo p6: sub f { my int @a; for ^1000 { @a[$_] += @a.AT-POS(($_ + 3) % 1000) } }; for ^1_000 { f }; my $before := now; for ^1_000 { f }; my $after := now; say $after - $before;
camelia 1.8682511
chloekek p6: use MONKEY-GUTS; sub f { my int @a; for ^1000 { my int $i = $_; my int $x = @a[($_ + 3) % 1000]; nqp::bindpos_i(@a, $i, $x) } }; for ^1_000 { f }; my $before := now; for ^1_000 { f }; my $after := now; say $after - $before; 20:43
camelia 1.4499136 20:43
timotimo on my machine my last one is more than three times faster
sena_kun ok, responded... 20:45
I wish people would do at least some research before posting ridiculous benchmarking results, others likely won't test them for themselves and just think "C good Perl 6 bad"... 20:46
timotimo sena_kun: translate your tweets for us? :)
chloekek I think the godbolt example optimized away because there are no side-effects and the result is unused. 20:47
sena_kun well, one I posted is "Your C code just does nop, $url. Can you show us your Perl 6 code? Here is mine - $github-url. It is not nop, but after optimization is still close in speed to nop C".
timotimo what was the ratio between C and p6 in your final example? 55x slower in p6? 20:48
chloekek Here we see that it is not actually optimized away if you use the array: godbolt.org/z/VlqKUN although I'm certain the compiler is allowed to.
sena_kun and a comment is, again, "Can you, please, show us your Perl 6 code? Your C code uses undefined behavior and turns into nop".
chloekek But do note how there are no division or modulo instructions in the assembly code, only multiplications, shifts and subtractions. :) 20:49
sena_kun chloekek, well, the original poster code does not have usage, so...
timotimo, what's the degree, let me check... C worked like 0.001 for me, and my original code is 0.167 in real. 20:50
0.003 real for C
timotimo m: say 1 / 0.167
camelia 5.988024 20:50
sena_kun m: 0.167 / 0.003 20:51
timotimo 6x per second, that's not all that impressive 20:51
camelia ( no output )
sena_kun m: say 0.167 / 0.003
chloekek What's really fun is if you initialize the array with zeroes, the compiler evaluates everything at compile time and then generates a single REP STOS instruction to fill the array with the results: godbolt.org/z/NZ5HN5 :D
camelia 55.666667
sena_kun so around 55 times
timotimo that's a good ratio between C and p6
chloekek That probably runs in a handful of nanoseconds.
timotimo ah, right, the code will literally never have anything but 0s in the result array 20:53
it even uses 64bit stores so it only has to do it 500 times instead of a thousand, haha
sena_kun well, I already said "the code is useless" part when I brought it here. :P
chloekek It'd be more interesting if the array was filled with 1s or 3s or something.
timotimo so actually we should also use 32bit int array on the perl6 side
p6: sub f { my int32 @a; for ^1000 { @a[$_] += @a[($_ + 3) % 1000] } }; for ^1_000 { f }; my $before := now; for ^1_000 { f }; my $after := now; say $after - $before;
camelia 2.68645491
timotimo p6: sub f { my int32 @a; for ^1000 { @a[$_] += @a[($_ + 3) % 1000] } }; for ^1_000 { f }; my $before := now; for ^1_000 { f }; my $after := now; say $after - $before; 20:54
camelia 2.0605061
timotimo the variability of timings on camelia is pretty oof.
chloekek Here's one that does some interesting work: godbolt.org/z/58_peL if that can be translated to Perl 6 that'd be useful.
sena_kun .oO ( maybe I need to start a blog in Japanese explaining that Perl 6 is not _SO_ slow as people think, but moderately slow and sometimes times faster than your python stuff ) 20:55
chloekek p6: sub f { my int32 @a[1000] }; for ^1_000 { f }; my $before := now; for ^1_000 { f }; my $after := now; say $after - $before; 20:56
camelia 0.02008364 20:56
chloekek p6: spurt('/tmp/foo.c', 'void f(int* a) { for (int i = 0; i < 1000; ++i) a[i] += a[(i + 3) % 1000]; }'); run('gcc', '/tmp/foo.c', '-shared', '-O3', '-std=c99', '-o', '/tmp/libfoo.so'); use NativeCall; sub f(CArray[int32] $a) is native('/tmp/libfoo.so') {*}; my @a := CArray[int32].new(0 xx 1000); my $before := now; for ^1_000 { f(@a) }; my $after := now; say $after - $before; 21:04
camelia 0.01092471 21:04
timotimo aaaaaaaah :) 21:05
chloekek camelia probably runs on a potato so we should also run the C code on the same machine.
timotimo one of those days you'll be able to get a camelia plushie that can run perl6 21:12
moritz got his first camelia plushie today. Thanks lizmat & woolfy! :D 21:17
pilne so, old lappy died, and for various reasons i'm again stuck on windows, and i'm a bit confused at the download options for rakudo presented to me 21:41
Elronnd pilne: rakudo.org/files
pilne it has 2019.03.1, but it seems 2019.07.1 is current? 21:42
timotimo rakudo star is a distribution of compiler + a collection of modules and docs and such
pilne errr not 03.1, just .03
Elronnd probably just not updated yet
timotimo it's a separate release
which will happen soon, hopefully
pilne so, since i have nothing on here yet, patience would be a virtue?
:D
given the fixes i read 21:43
timotimo it'd be enough to install the compiler-only thing
just gotta download your own zef to install modules
pilne i still feel so lost on windows compared to a linux, and timid almost, since i'm not sure i can fix things when i smeg them up 21:44
timotimo ha, i know that feeling 21:46
pilne i also noticed that the work on the jvm backend is "indeterminate" arrival, is the effort switching to use the truffle/graal framework? that would seem logical to me as someone who just reads about all this stuff too much 21:47
timotimo there is an effort to do that, yeah 21:48
but we have only few people who actually work on the jvm backend
pilne yeah, i'm not that interested per-say, i was just kinda hoping those that were were embracing the new (seemingly easier?) way to approach it
i had java shoved down my throat academically in the 1.2 era....
i still have nightmares 21:49
timotimo i really want a very performant way to get the filename/lineno where my current function was called 21:56
callframe.line doesn't give me the current line at the position the call was made, i think
and Backtrace.new.list.skip(1).head gives me what i want, but is excruciatingly slow 21:57
woolfy moritz++ Be happy with your Camelia! May the force of the stuffed butterfly guide you through clear coding! 22:26
timotimo cdn.discordapp.com/attachments/538...er_new.gif 23:28
admire my perlsixing, please
timotimo (a good portion of the niceness of the tool is Xliff's contributions) 23:45
vrurg timotimo++ 23:48
What is it gonna be?
timotimo depends what "it" you're refering to
the "art" is a spaceship that'd go into a vertical scrolling spacey shooty game 23:49
vrurg The universal question of life and everything... ;)
vrurg And the tool you're using? How are you going to use the perl code for drawing? 23:51
It's hard to ask right questions by seeing just a window in action. :)
timotimo it goes into the perl6 code that is the game
vrurg Now the thing you told me the other day makes sense... Thrilled to see the result! 23:53
timotimo oh, what thing was that? 23:54
SmokeMachine vrurg: would you mind to create a issue asking for the way to set the table at run time, please? 23:55
vrurg: and thank you for your PRs!
Kaiepi done my first real day of work for the networking grant, won't have anything to show for it until later this week though
SmokeMachine PRs 23:56