Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_logs/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
Set by AlexDaniel on 12 June 2018.
00:24 stmuk_ joined 00:25 stmuk left 01:51 stmuk joined 01:53 stmuk_ left 01:57 committable6 joined, ChanServ sets mode: +v committable6 02:16 a3f_ joined, bartolin_ joined 02:17 literal_ joined, klapperl_ joined 02:19 timo joined, benchable6 left, statisfiable6 left, bisectable6 left, nativecallable6 left, greppable6 left, releasable6 left, jdv79 left, scovit left, krunen left, awwaiid left, btyler joined, a3f left, gfldex left, moritz left, literal left, klapperl left, btyler_ left, Brock joined, krunen_ joined 02:20 krunen_ is now known as krunen, scovit joined, btyler left, b2gills joined, lizmat left 02:22 jdv79 joined 02:23 btyler joined, moritz joined 02:24 gfldex joined 02:47 literal_ is now known as literal 02:57 bisectable6 joined, greppable6 joined, statisfiable6 joined 04:11 yoleaux joined 04:54 ufobat_ joined, brrt joined 05:05 stmuk left, stmuk_ joined 05:27 benchable6 joined 05:46 stmuk joined 05:49 stmuk_ left
[Tux] Hmmm 06:34
Rakudo version 2018.06-140-g68ed6f2d8 - MoarVM version 2018.06-141-gcae4731e2
csv-ip5xs1.009 - 1.016
csv-ip5xs-209.024 - 9.066
csv-parser25.700 - 31.313
csv-test-xs-200.454 - 0.455
test9.399 - 9.535
test-t2.504 - 2.531
test-t --race1.047 - 1.064
test-t-2044.322 - 44.464
test-t-20 --race15.615 - 16.675
06:34 go|dfish left
06:41 go|dfish joined 07:27 lizmat joined
lizmat Files=1242, Tests=76404, 326 wallclock secs (15.52 usr 5.21 sys + 2272.74 cusr 226.07 csys = 2519.54 CPU) 07:27
08:22 Kaiepi joined 08:35 [TuxCM] joined 08:36 Ven` joined 09:02 brrt left 09:05 Ven` left 09:15 Ven` joined
Geth rakudo: 4ef8433aa2 | (Elizabeth Mattijsen)++ | src/core/Junction.pm6
Fix thinko in swapping junction in Junction ~ Junction

As spotted in
   stackoverflow.com/questions/512548...ping-sides
Since the joining is done from the left, we shouldn't swap the eigenstates as well. Feels that there should be a better solution, but I cannot think of it now.
Fixes R#2042
09:51
synopsebot R#2042 [open]: github.com/rakudo/rakudo/issues/2042 Double junction arguments swapping sides
roast: 8cfdd2f814 | (Elizabeth Mattijsen)++ | S03-junctions/misc.t
Add tests for R#2042
10:02
synopsebot R#2042 [open]: github.com/rakudo/rakudo/issues/2042 Double junction arguments swapping sides
10:14 MasterDuke left
lizmat m: my $a := { say "foo" }; $a.sink # should this or shouldn't this work? re R#2040 10:29
camelia ( no output )
synopsebot R#2040 [open]: github.com/rakudo/rakudo/issues/2040 no warning for Callable in sink context
jnthn Seems to work fine to me (that is, does nothing)
If you're looking to add the warning, that'd be a compiler one 10:30
m: 2
camelia WARNINGS for <tmp>:
Useless use of constant integer 2 in sink context (line 1)
jnthn Same place that comes from
lizmat ok
lizmat has been living under the misapprehension that bare blocks got executed because they were sunk 10:31
10:31 erterzeruetu joined
lizmat but I guess that's only conceptually so 10:31
10:33 erterzeruetu left
lizmat jnthn: sadly, no backtrace for that worry :-( 10:38
10:39 releasable6 joined
lizmat I guess it's in the optimizer 10:40
jnthn Believe so
Backtrace would be quite useless to users since it'd point to compiler internals. :P 10:41
lizmat I meant: also with --ll-exception
10:58 Zoffix joined
Zoffix New blog post: "Cancellation of Perl 6 Constants and Rationals Grant": blogs.perl.org/users/zoffix_znet/20...grant.html 11:05
Ven` Zoffix++ 11:06
It's sad that won't happen, but recognizing it is still a good thing... 11:07
Zoffix :)
Ven` Zoffix: the quizlet thing you mentioned in a tweet, is it similar to a SRS app? 11:10
I've been interested in getting a programming deck for some languages but was never sure how to approach it
Zoffix Ven`: dunno what SRS app is. Here's one of the decks for the Quizlet: quizlet.com/79497572/my-first-fren...ash-cards/ there are several options for studying the words, including matching games. And if you go to "Learn" module quizlet.com/79497572/learn there are options (bottom left) for selecting what type of exercises you get shown. So I select "multiple choice" and 11:22
"written questions", where you have to type the answer, spelling it correctly. So it starts showing you the words, until you get them all right. And it has an algo for training you the words that you mess up, like switching to multiple choice if you mess up spelling to many times, or comming back a bit later to the words you messed up. In 1 months I went from 0 French to being good enough to go to "Level
2", and I can largely thank this "learn" quizlet thing... And I was thinking the same type of concept can be applied to learning Perl 6 language and instead of matching French to English, you'd be matching, say, methods to the args they take or something :)
11:23 Ven` left
stephane_ putain, merde alors, c'est pas de la daube :) 11:25
Zoffix ZofBot: Je suit Napoleon! 11:27
lizmat suis? 11:33
Zoffix hehe yeah :) 11:36
Zoffix climbs back down to "Level 1" French :P
11:36 Zoffix left
stephane_ learn to swear and you can fake being french :) 11:37
lizmat soif
stephane_ If you want parisain slang from 50 years ago, there is the very funny www.amazon.fr/m%C3%A9thode-%C3%A0-...225300104X that aped foreign language methods 11:40
* parisian
Problem with slang is it changes very fast. But putain, merde and con are keepers. I will shut with French slang when I will see more Perl 6 ones :) 11:42
lizmat m: my constant &merde = &warn; merde "mille sabords" 11:43
camelia mille sabords
in block <unit> at <tmp> line 1
stephane_ lizmat, Capitaine Haddock language is its onwl linguistic field. fr.wikipedia.org/wiki/Vocabulaire_...ne_Haddock 11:45
lizmat stephane_: which is where I got "mille sabords" from :-) 11:46
stephane_ * own
11:49 pmurias joined 11:56 brrt joined, Ven` joined 12:07 AlexDaniel left 12:17 llfourn joined
Geth rakudo: jkramer++ created pull request #2043:
Allow directories as destinations for IO::Path.copy/move.
12:35
scovit jkramer: what about link and symlink, GNU coreutils allows for a directory target also for them 12:47
12:48 benjikun joined 12:49 benjikun2 left
jkramer scovit: You mean linking to directories/creating links in directories? Or copying/moving links? 12:54
The ticket didn't say anything about that, I just implemented what was asked for in github.com/rakudo/rakudo/issues/1453 :) 12:55
scovit jkramer I meant what if I what to create a link to file in a target directory?
it seems to me in the same spirit as your patch 12:56
jkramer Oh you meant the routines link/symlink
scovit lep
s/l/y/
jkramer Yeah true, might add that there too. But I think I'll wait for feedback about the implementation in the PR for a bit before going on so I don't have to re-do/change it all if my code is BS :) 12:59
scovit Right, don't know what others think. On top of that, GNU ln have a single argument "signature" where target is implicitly "."; but I am not sure Perl6 aims to the same level of DWIMmy
jkramer Hmm probably not, I think guessing '.' as destination by default would be a bit weird and might be a pitfall. 13:01
I mean it's relatively obvious what you mean if you use a directory as destination, but if you omit it altogether that should cause an error IMO. 13:02
scovit yes I would agree, default to '.' is far more obvious in a shell than in a scripting language (and not sure Perl 6 is a scripting language either) 13:04
jkramer Yup, in a shell the current directory is something the user is usually aware of. In coding (any language except shell scripting maybe) not so much. 13:05
scovit regarding your patch, python accepts directory as a destination, java doesn't 13:08
I am a bit surprised about python: I am going to say something bizarre, but I thought that that language was created and pushed by persons that get paid by "line of code" 13:11
in that case adding directories as destinations does not fit the philosophy since it saves a line of code
timo will probably have to be $*CWD instead of "." in order to work properly 13:12
13:48 Kaiepi left, Kaiepi joined 14:03 skids joined 14:31 Kaiepi left 14:32 Kaiepi joined 14:47 [TuxCM] left
Geth rakudo: 6c62be6244 | (Elizabeth Mattijsen)++ | src/Perl6/Optimizer.nqp
DRY: Add "in sink context" only once
14:49
15:19 brrt left 15:28 pmurias left, pmurias joined
Geth rakudo: d6c0539507 | (Elizabeth Mattijsen)++ | src/Perl6/Optimizer.nqp
Warn on definition of anonymous sub in sink context

Also make sure strings are surrounded by quotes for similar "foo" message.
In response to R#2040.
15:31
synopsebot R#2040 [open]: github.com/rakudo/rakudo/issues/2040 no warning for Callable in sink context
jkramer Where would I find the implementation of +<? 15:34
timo s: &infix:['+<'], \(1,2) 15:35
SourceBaby timo, Sauce is at github.com/rakudo/rakudo/blob/6c62...t.pm6#L430
timo there it is
jkramer Nice, thanks! 15:36
timo the actual implementation lives inside moarvm
at least for the moarvm backend
jkramer And how would I go about finding that? :) 15:38
timo look in interp.c
jkramer Got it, thanks 15:40
timo there's additional implementations for the JIT, but that's probably not interesting for you right now? 15:42
jkramer Probably not, just digging into some issue I found interesting and wanted to look at the implementation github.com/rakudo/rakudo/issues/1707 15:43
timo ah, interesting 15:45
jkramer Turns out that x +< -y == x for all y that are multiples of 64
15:45 j3nnn1 joined
jkramer And since apparently this is an i64 in moar I thought there might be some rotating going on instead of shifting 15:45
timo maybe it's undefined behaviour or something 15:46
jkramer Hmm I think that's too deep into the guts for me right now, I'll just leave a comment for whoever is going to debug this :) 15:55
16:00 brrt joined 16:09 [TuxCM] joined
samcv releasable6: status 16:31
releasable6 samcv, Next release in ā‰ˆ11 days and ā‰ˆ2 hours. 3 blockers. 0 out of 143 commits logged
samcv, Details: gist.github.com/5ef9c489a851403b9a...6099396b9a
16:39 robertle left 16:46 travis-ci joined
travis-ci Rakudo build failed. Elizabeth Mattijsen 'Warn on definition of anonymous sub in sink context 16:46
travis-ci.org/rakudo/rakudo/builds/402269807 github.com/rakudo/rakudo/compare/6...c0539507d5
16:46 travis-ci left
buggable [travis build above] ā˜  All failures are due to: failed make test (6 failures). Across all jobs, only t/05-messages/10-warnings.t test file failed. 16:46
Geth rakudo: 08a54212ec | (Elizabeth Mattijsen)++ | src/Perl6/Optimizer.nqp
Restore check that was accidentally removed
17:02
17:02 Kaiepi left, Kaiepi joined
Geth nqp/truffle: 0daebf15ba | (Paweł Murias)++ | 7 files
[truffle] Add a --target=bytecode to write the TAST in a binary form instead of running it

Add nqp::runtrufflebytecode('bytecodefile.truffle6') to run it
17:10
17:12 brrt left
Geth nqp/truffle: d842cdce13 | (Paweł Murias)++ | 3 files
[truffle] Prefix file with our bytecode with a magic string
17:34
17:40 benjikun2 joined 17:41 Ven` left 17:42 benjikun left 18:02 travis-ci joined
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Restore check that was accidentally removed' 18:02
travis-ci.org/rakudo/rakudo/builds/402310442 github.com/rakudo/rakudo/compare/d...a54212ec7f
18:02 travis-ci left 18:03 AlexDaniel joined 18:37 Kaiepi left 18:39 Kaiepi joined 19:21 timo is now known as timotimo
[Tux] lizmat, yt? 19:26
19:31 pmurias left 19:36 pmurias joined
[Tux] Q: a class' method sink is executed when the result is not STORE'd (void context). Can I do something similar with a method or a sub? 19:41
$a = foo(42); vs foo(42) of $a = $o.foo(42) vs $o.foo(42); 19:42
19:45 buggable joined, ChanServ sets mode: +v buggable
geekosaur only if the value (first) or object (second) has a sink method 19:47
[Tux] I cannot assing a SINK phaser to a method or a sub? 19:48
samcv m: say (44032,4520).chrs eq 44033.chr 19:49
camelia True
timotimo sinking is about values, not about functions 19:51
19:52 Zoffix joined
Zoffix buggable: speed 19:52
buggable Zoffix, ā–ƒā–„ā–‚ā–‚ā–ƒā–„ā–„ā–‚ā–ƒā–„ā–ƒā–…ā–‚ā–ā–‚ā–ƒā–„ā–…ā–ā–ƒā†‘ā†‘ā–ƒā–…ā–‚ā–ƒā–‡ā–„ā–ƒā–…ā–ƒā–ƒā–ˆā–ˆā–„ā–ƒā–„ā–…ā–„ā–‡ā–†ā–„ā–…ā–„ā–„ā–„ā–ƒā–„ā–†ā–ˆ dates: 2018-06-16ā€“2018-07-10; range: 13.407sā€“18.073s; speed: 10% slower (widths: 9/3)
Zoffix Weird the bot says we got slower, eh?
[Tux] we did, at least that is what I saw today 19:53
Zoffix buggable: speed 1000 19:54
stupid robot 19:55
[Tux] tux.nl/Talks/CSV6/speed4.html#horizontal 19:57
afk 19:58
Zoffix Looks like even tho it got slower based on that period, it's still in the around the same mean value that it was at for the past few months. 19:59
And at the start of june it got faster, and now slower again 20:00
.oO( we need a more comprehensive bench :) )
20:00 Zoffix left 20:11 Kaiepi left, Kaiepi joined 20:13 Kaiepi left, Kaiepi joined
samcv should be bumping unicode version very shortly 20:15
yeah a more comprehensive bench would be good
i made this almost 40% faster though gist.github.com/samcv/9a65a586ea21...4aaaab55de 20:16
from 2.0 to about 1.3 secs
(tests binding a million keys in a hash, then deleting every other key, then adding those deleted ones back 20:17
well actually i think i got it backwards. and it doesn't quite do that, but regardless
python does it in 0.56 seconds gist.github.com/bad6b9ccc8c2facac0...b4c7285421 20:21
i think i'll add all language versions to the same gist 20:22
Geth nqp/truffle: 100d712756 | (Paweł Murias)++ | src/vm/jvm/runtime/org/perl6/nqp/truffle/TruffleCompiler.java
[truffle] Remove unneeded imports
20:28
nqp/truffle: 8759193a8a | (Paweł Murias)++ | 2 files
[truffle] Rename NQPStmts to NQPStmtsNode
nqp/truffle: e45afbf8a8 | (Paweł Murias)++ | 6 files
[truffle] Migrate bytecode running code to a separate class

This is preparation for packing up the bytecode runner without the old JVM backend with SubstrateVM
samcv ah well nqp takes 5.0 seconds. but well i still sped things up by about 40% even though i messed up the script so as not to do everything i had thought 20:31
DrForr Informal poll: Is it more reasonable to search for libraries just on /lib, /usr/ucb/lib &c rather than relying on 'uname -a'? The former is probably more robust, but slower on startup. 20:37
20:39 brrt joined
lizmat what information are you trying to glean from uname -a ? 20:49
DrForr Well, it's actually not useful as I realized while typing in the main channel because users can upgrade their libreadline package independently of the installation, so searching a list of directory paths seems the only sensible way to find the current readline library. 20:52
21:02 skids left
timotimo samcv: fun, it uses nums internally for something 21:28
but still, it's mostly GC bound 21:33
samcv timotimo: yeah. i made it much faster by making the HASH_ITER thing faster. but i think it's maybe because it has to do every single element in the hash 21:38
which takes a long time
timotimo i'm trying to figure out what it uses smart_numify for
samcv timotimo: that's only using like 0.24% self and 0.695% inclusive though 21:39
timotimo it shouldn't be using floating point math for anything :) 21:40
samcv ah
but it doesn't seem to be calling any other functions realy from MVMHash_gc_mark 21:41
that i can see at least
timotimo that makes sense to me
gc_mark functions put a bunch of stuff into the work queue and return to the work loop
samcv i think i ran it on -Og and still didn't see anything show up
hm 21:42
timotimo worklist_add is most probably inlined, or even a macro
yup, it's a macro
samcv yeah macro
timotimo there's a slow path for when the worklist needs to be grown
21:48 pmurias left 21:50 pmurias joined
timotimo thanks to your code, btw, i added some pieces to the profiler's allocation logger 21:52
coerce_ns and coerce_is and smrt_strify were missing
21:54 MasterDuke joined
samcv timotimo: oh hm. i didn't know things had to be added? 22:03
timotimo neither did i 22:06
MasterDuke pmurias: how difficult do you think adding for loops to the truffle backend will be? 22:10
timotimo but i did a --profile and saw it showed barely any allocations
when in fact it stringifies a lot of ints
pmurias MasterDuke: if we turn the optimizer on for loops are optimized into while loops 22:28
MasterDuke: also it seems that Truffle has speciall support to have the loops run faster: www.graalvm.org/truffle/javadoc/co...pNode.html 22:29
MasterDuke: a for loop shouldn't be super difficult, it should be like a regular loop with some fiddling to pass in an argument to the block 22:31
22:36 benji__ joined, pmurias left 22:37 pmurias joined 22:38 pmurias left 22:39 benjikun2 left
MasterDuke pmurias: hm, maybe i'm missing something. i don't think any type of loop is supported right now, correct? 22:42
timotimo: how did you do the adding? is there a way to figure out if anything else needs to be added? 22:43
timotimo there's a big switch/case in profiler/instrument.c that has all instructions in them that can allocate 22:44
MasterDuke ah 22:46
Geth nqp/truffle: 4 commits pushed by Unknown++ 22:52
6.d-prep: c800e850b9 | (Zoffix Znet)++ (committed using GitHub Web editor) | TODO/README.md
Add note about sticking [v6.d REVIEW] into review commits
22:54
6.d-prep: 620b41e051 | (Zoffix Znet)++ (committed using GitHub Web editor) | TODO/README.md
Fix wording
22:55
roast: 7992cf1316 | (Zoffix Znet)++ | S32-hash/exists-adverb.t
[v6.d REVIEW] Test actual return value in multi dim :exists

Instead of only its type.
Orig: github.com/perl6/roast/commit/e0d318a7d
22:57
23:00 brrt left
MasterDuke samcv: i think a good grant proposal could crafted around automated benchmarking added to travis and appveyor. e.g., a collection of benchmarks like github.com/japhb/perl6-bench + [TuxCM]'s + Ulti's + rindolf's 23:01
Geth roast: d75a21b990 | (Zoffix Znet)++ | S03-metaops/reverse.t
[v6.d REVIEW] Use more robust R, tests

Test actual data structure instead of its stringified version.
Orig: github.com/perl6/roast/commit/be9417e12
23:02
japhb MasterDuke, samcv: There's no reason perl6-bench couldn't easily absorb the others. The one thing that would be a useful would be a standard step for generating/downloading large data sets, for things that want to test against e.g. a hundred megs of JSON files. 23:11
Other than that, it was already designed to be expanded over time. 23:12
Mind you, it probably has some functionality and defaults that we'd want to tune these days -- compatibility with pre-Christmas Perl 6 implementations is probably not really useful anymore, for instance.
I welcome PRs and/or co-maintainers. 23:13
Geth roast: f8d30729c2 | (Zoffix Znet)++ | S02-types/bool.t
[v6.d REVIEW] Improve Bool numification tests

  - Remove duplicate tests
  - Use proper test routines that test type and value
Orig: github.com/perl6/roast/commit/df6530715
23:14
MasterDuke japhb: it's on my list of things i'd like to work on, but all the standard disclaimers apply (limited time, etc) 23:18
japhb Sure! I'm happy to answer questions if you have any. More contributors ~~ Goodness. 23:19
timotimo i feel kind of a little bad for not touching perl6-bench in years 23:20
japhb Not like I've done a ton of work on it during that time ... we all have our @time-conflicts 23:22
Geth roast: 894a56c87b | (Zoffix Znet)++ | S32-exceptions/misc.t
[v6.d REVIEW] Fix up X::Bind throwage tests

  - Remove duplicate tests
  - Stuff the tests into eval; a sufficiently smart compiler can
   detect those errors at compile time
23:25
roast: 78ef7fc08b | (Zoffix Znet)++ | S02-types/bool.t
Fix wrong plan
23:43 lizmat left
DrForr Updated Readline to automatically walk directories. It won't do it recursively yet, I'll add that later. 23:44