»ö« 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 | ||
00:13
pamplemousse left
00:18
sena_kun left
00:20
st_elmo joined
|
|||
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 | |
00:23
epony left
00:30
[particle] left
00:31
mowcat left
00:33
netrino left,
mowcat joined
00:40
[particle] joined
|
|||
irced | non-@rray positional | 00:53 | |
01:12
aborazmeh left
01:26
melezhik joined
|
|||
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 | |
01:28
Actualey` joined
|
|||
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 | ||
01:49
melezhik left
|
|||
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 | ||
02:02
epony joined
02:04
Manifest0 left
02:05
Manifest0 joined
|
|||
irced | melezhik: don't forget that parameters themselves are immutable by default | 02:07 | |
03:00
kent\n joined
03:07
kent\n left,
kent\n joined
03:09
epony left
03:16
epony joined,
jlinahan joined
03:32
goatshagger joined
03:34
goatshagger left
03:38
jlinahan left
04:03
kaare__ joined,
mowcat left
05:03
evalable6 left,
notable6 left
05:04
evalable6 joined
05:06
notable6 joined
05:44
robertle left
06:13
irced left
|
|||
Geth | doc/master: 5 commits pushed by threadless-screw++, (Juan Julián Merelo Guervós)++ | 06:16 | |
06:18
jmerelo joined
|
|||
Geth | ¦ doc: JJ assigned to antoniogamiz Issue Standardize search categories github.com/perl6/doc/issues/1410 | 06:25 | |
06:40
domidumont joined
06:51
rindolf joined
|
|||
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 | |
06:56
ravenousmoose_ joined
|
|||
jmerelo | CFP in the London Perl Workshop is open: blogs.perl.org/users/lpw/2019/07/lo...-2019.html | 06:57 | |
06:59
ravenousmoose left
07:02
chloekek joined
07:17
llfourn left
|
|||
AlexDaniel | r: say 42 | 07:18 | |
perlbot | AlexDaniel: 42 | 07:19 | |
07:19
cpan-p6 left
|
|||
camelia | 42 | 07:19 | |
(timeout) |
|||
07:19
cpan-p6 joined,
cpan-p6 left,
cpan-p6 joined
|
|||
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. |
|||
07:26
patrickb joined
07:28
robertle joined
|
|||
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. | ||
07:53
dakkar joined
08:02
dolmen joined,
zakharyas joined
08:04
nadim_ joined
08:15
reach_satori_ left
08:29
nadim_ left
|
|||
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 | ||
08:39
Actualey` left
|
|||
jmerelo | AlexDaniel: you can still help with _some_ :-) | 08:39 | |
08:39
Actualeyes left
|
|||
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 | ||
08:41
Actualeyes joined
|
|||
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 | |
09:02
reach_satori_ joined
|
|||
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 | |||
09:22
zakharyas left,
pat_js joined
09:25
irdr joined
|
|||
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 | ||
09:29
AlexDaniel` joined
|
|||
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... | ||
09:37
Black_Ribbon left
|
|||
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? | |||
09:40
Matthew[m] joined,
EuAndreh[m] joined,
lance_w[m] joined,
sergiotarxz[m] joined,
TravisRt2botio[m joined,
rba[m] joined,
Guest7247 joined,
mack[m] joined,
Garland_g[m] joined,
Seance[m] joined,
Demos[m] joined,
folex joined,
matiaslina joined,
unclechu joined
|
|||
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 | ||
09:52
Geth joined
|
|||
AlexDaniel | maybe we need both rendered and non-rendered links? | 09:54 | |
09:58
demanuel joined
10:10
nightfrog joined
|
|||
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/ | ||
10:20
jmerelo left
10:27
pat_js left
10:37
dolmen left
|
|||
Geth | whateverable: 3bde2a3ba5 | (Aleks-Daniel Jakimenko-Aleksejev)++ | xbin/Benchable.p6 Commit latest Benchable usability fixes |
10:43 | |
10:45
sena_kun joined
|
|||
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 | |
10:49
nativecallable6 left,
unicodable6 left,
statisfiable6 left,
releasable6 left,
squashable6 left,
undersightable6 left,
coverable6 left,
committable6 left,
evalable6 left,
quotable6 left,
bloatable6 left,
shareable6 left,
bisectable6 left,
benchable6 left,
greppable6 left,
reportable6 left,
notable6 left
10:54
dpk left
10:55
dpk joined
10:59
rindolf left
|
|||
timotimo | here's hoping the new rakudo version treats them well :) | 11:02 | |
11:04
rindolf joined
|
|||
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 | |
11:15
Cabanossi left
|
|||
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 | |
11:36
ChoHag joined
|
|||
AlexDaniel | dpk: great! Thank you very much | 11:37 | |
11:37
someuser joined,
someuser left
|
|||
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 | |
11:42
[Sno] joined
|
|||
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 | ||
11:47
lucasb joined
|
|||
AlexDaniel | otherwise it's just an old config it seems | 11:50 | |
11:50
dolmen joined
11:55
bisectable6 joined
|
|||
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 | ||
11:59
bisectable6 left
12:00
khisanth_ left,
statisfiable6 joined,
robertle left,
notable6 joined
12:01
committable6 joined,
bloatable6 joined,
squashable6 joined,
ChanServ sets mode: +v squashable6,
reportable6 joined
|
|||
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 |
|||
12:01
evalable6 joined,
undersightable6 joined,
ChanServ sets mode: +v undersightable6
12:02
bisectable6 joined,
ChanServ sets mode: +v bisectable6,
releasable6 joined,
ChanServ sets mode: +v releasable6,
quotable6 joined,
ChanServ sets mode: +v quotable6,
shareable6 joined,
robertle joined
|
|||
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 | |||
12:03
nativecallable6 joined
|
|||
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”? :) | ||
12:04
benchable6 joined,
ChanServ sets mode: +v benchable6
|
|||
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) | ||
12:04
unicodable6 joined,
ChanServ sets mode: +v unicodable6,
greppable6 joined,
coverable6 joined,
ChanServ sets mode: +v coverable6
|
|||
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 | |
12:07
Cabanossi joined
|
|||
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 | |
12:09
dolmen left
|
|||
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 | ||
12:13
khisanth_ joined
12:15
dolmen joined
12:21
pat_js joined
12:22
ChoHag left
12:40
pamplemousse joined,
xinming_ joined
12:43
ChoHag joined,
xinming left
12:48
robertle left
|
|||
Geth | doc/master: 4 commits pushed by Coke++ | 12:48 | |
12:52
satori__ joined
12:54
robertle joined
12:55
reach_satori_ left
12:57
sena_kun left
13:04
reach_satori_ joined,
st_elmo left
|
|||
AlexDaniel | weekly: goodbye, yoleaux! colabti.org/irclogger/irclogger_lo...07-29#l367 (whateverable replacement is coming soon) | 13:05 | |
notable6 | AlexDaniel, Noted! (weekly) | ||
13:07
satori__ left
13:09
reach_satori_ left
13:17
pat_js left
13:20
nightfrog left,
nightfrog joined
13:23
Cabanossi left
13:25
Cabanossi joined
13:27
scimon joined,
pat_js joined
|
|||
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? | |||
13:42
zakharyas joined
|
|||
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 | |
14:00
woolfy joined
14:01
domidumont left
|
|||
chloekek | AlexDaniel: thanks | 14:02 | |
14:19
zakharyas1 joined
14:20
zakharyas left
|
|||
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 | |
14:30
pat_js left
14:32
ChoHag left
14:33
Guest7247 is now known as tyil[m],
tyil[m] is now known as Guest48765
14:39
pat_js joined,
pamplemousse left
14:54
tokomer joined
15:16
pamplemousse joined
15:24
chloekek left
15:26
robertle left
15:35
zakharyas1 left,
patrickb left
15:36
Black_Ribbon joined
15:38
domidumont joined
15:40
nightfrog left,
nightfro` joined,
pat_js left,
nightfro` is now known as nightfrog
15:45
MilkmanDan left
15:47
MilkmanDan joined
15:55
[Sno] left
15:58
pamplemousse left
|
|||
cpan-p6 | New module released to CPAN! Gnome::GObject (0.13.14) by 03MARTIMM | 15:59 | |
16:03
Sgeo_ joined
16:05
Sgeo__ left
16:11
dolmen left
16:14
demanuel left
16:23
pamplemousse joined
16:27
dolmen joined
16:30
Sgeo__ joined,
scimon left
16:32
Sgeo_ left
16:33
robertle joined
16:35
mowcat joined
16:37
dolmen left
16:40
dakkar left
16:41
jmerelo joined
|
|||
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 | ||
16:49
nightfrog left
16:50
nepugia joined,
nightfrog joined
17:00
nightfrog left,
nightfrog joined
17:01
nepugia left
17:06
jmerelo left
17:15
dolmen joined
17:19
rindolf left
17:25
wildtrees joined
17:27
wildtrees left
17:28
wildtrees joined
17:33
dolmen left
17:35
wildtrees left
17:36
wildtrees joined
17:40
demanuel joined
17:42
Sgeo_ joined
17:45
Sgeo__ left
17:54
molaf joined
18:00
reportable6 left,
reportable6 joined,
ChanServ sets mode: +v reportable6
18:04
natrys joined
18:11
tokomer left
|
|||
lizmat | and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2019/07/29/...sed-again/ | 18:15 | |
18:15
nightfrog left
18:20
nightfrog joined
18:30
cpan-p6 left,
cpan-p6 joined,
cpan-p6 left,
cpan-p6 joined
|
|||
cpan-p6 | New module released to CPAN! Gnome::Gdk3 (0.14.6) by 03MARTIMM | 18:37 | |
18:37
chloekek joined
18:49
domidumont left
18:54
mowcat left
19:04
[Sno] joined
19:06
pamplemousse left
|
|||
vrurg | No more .ask for a while...? | 19:16 | |
19:19
wildtrees left
|
|||
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 | |
19:27
rindolf joined
|
|||
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 | ||
19:29
pamplemousse joined
|
|||
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 | |
19:33
pamplemousse left
19:34
cpage_ joined
|
|||
chloekek | p6: enum Foo <Foo Bar>; Foo::Foo.perl.say; Foo::Bar.perl.say | 19:35 | |
19:35
evalable6 left
|
|||
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 | ||
19:37
cpage_ is now known as cpage
|
|||
SmokeMachine | vrurg: www.irccloud.com/pastebin/vyYJ8B0U/ | 19:37 | |
19:37
evalable6 joined
|
|||
chloekek | vrurg: is that a bug? | 19:38 | |
ugexe | no | ||
m: class Foo::Bar { }; say GLOBAL::Foo; | 19:39 | ||
19:39
evalable6 left
|
|||
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. :) | ||
19:44
evalable6 joined,
ChanServ sets mode: +v evalable6
|
|||
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 | |
19:45
evalable6 left
|
|||
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 | ||
19:49
epony left,
evalable6 joined,
ChanServ sets mode: +v evalable6
|
|||
ugexe | m: enum Foo::Bar <Foo Bar Baz>; say Bar === Foo::Bar::Bar | 19:50 | |
19:50
evalable6 left
|
|||
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. | ||
19:53
evalable6 joined
|
|||
chloekek | Would be nice if there's a way to disable that. | 19:53 | |
19:53
Sgeo__ joined
19:57
Sgeo_ left,
robertle left
|
|||
chloekek | p6: enum foo ('bar', 'baz'); bar.say | 19:59 | |
19:59
evalable6 left
|
|||
camelia | bar | 19:59 | |
chloekek | Oh well. :) | 20:02 | |
20:04
evalable6 joined,
ayerhart left
20:05
molaf left
|
|||
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>;” | |||
20:11
pecastro joined
|
|||
cpan-p6 | New module released to CPAN! Gnome::Gtk3 (0.17.9) by 03MARTIMM | 20:12 | |
20:12
sena_kun joined
|
|||
sena_kun | m: my int @a; for ^1000 { @a[$_] += @a[($_ + 3) % 1000] }; say INIT now - now; | 20:13 | |
20:13
evalable6 left
|
|||
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 | |
20:14
rindolf left,
epony joined
|
|||
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 | |||
20:17
evalable6 joined
20:18
reach_satori_ joined
|
|||
timotimo | my perl6 search column in tweetdeck didn't pick up a tweet like that recently | 20:18 | |
20:19
rindolf joined
|
|||
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 | |
20:20
evalable6 left
|
|||
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 | ||
20:21
rindolf left
|
|||
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 |
||
20:22
rindolf joined
|
|||
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 | ||
20:24
evalable6 joined
|
|||
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 | |
20:30
evalable6 left
|
|||
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… |
||
20:33
evalable6 joined,
ChanServ sets mode: +v evalable6
|
|||
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 | |||
20:37
reach_satori_ left
|
|||
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 | |
20:37
evalable6 left
|
|||
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 | ||
20:38
wildtrees joined
20:40
evalable6 joined,
ChanServ sets mode: +v evalable6
|
|||
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 | |
20:43
evalable6 left
|
|||
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". | ||
20:47
evalable6 joined,
ChanServ sets mode: +v evalable6
|
|||
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 | ||
20:50
evalable6 left
|
|||
camelia | 5.988024 | 20:50 | |
20:51
evalable6 joined
|
|||
sena_kun | m: 0.167 / 0.003 | 20:51 | |
20:51
evalable6 left
|
|||
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. | ||
20:55
evalable6 joined,
ChanServ sets mode: +v evalable6
|
|||
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 | |
20:56
evalable6 left
|
|||
camelia | 0.02008364 | 20:56 | |
21:00
evalable6 joined,
ChanServ sets mode: +v evalable6
21:03
molaf joined
|
|||
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 | |
21:04
evalable6 left
|
|||
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. | ||
21:09
evalable6 joined
|
|||
timotimo | one of those days you'll be able to get a camelia plushie that can run perl6 | 21:12 | |
21:14
dolmen joined
|
|||
moritz got his first camelia plushie today. Thanks lizmat & woolfy! :D | 21:17 | ||
21:20
pamplemousse joined
21:22
[particle]1 joined
21:23
Cabanossi left
21:24
[particle] left
21:27
[particle] joined
21:29
[particle]1 left,
pilne joined
21:38
Cabanossi joined
21:39
wildtrees left
|
|||
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 | ||
21:52
Sgeo_ joined
21:55
Sgeo__ left
|
|||
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 | ||
21:59
chloekek left
22:07
dolmen left
22:09
nepugia joined
|
|||
woolfy | moritz++ Be happy with your Camelia! May the force of the stuffed butterfly guide you through clear coding! | 22:26 | |
22:28
natrys left
22:29
nepugia left
22:43
rindolf left
22:50
nepugia joined
23:06
lucasb left
23:17
MilkmanDan left
23:21
Sgeo__ joined
23:24
pamplemousse left,
MilkmanDan joined,
pamplemousse joined,
Sgeo_ left
23:26
Manifest0 left,
Sgeo joined
23:27
Manifest0 joined
|
|||
timotimo | cdn.discordapp.com/attachments/538...er_new.gif | 23:28 | |
admire my perlsixing, please | |||
23:29
Sgeo__ left
23:31
pecastro left
23:32
nepugia is now known as nephele
23:35
dolmen joined
23:36
MilkmanDan left
23:40
dolmen left
|
|||
timotimo | (a good portion of the niceness of the tool is Xliff's contributions) | 23:45 | |
23:48
|oLa|1 joined
|
|||
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... ;) | ||
23:50
MilkmanDan joined
|
|||
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 | |
23:56
holyghost left,
holyghost joined
23:59
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|