Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_log/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
Set by Zoffix on 27 July 2018.
Geth rakudo/normalized-ZDRs: 6d70346cbf | (Zoffix Znet)++ | src/core/Rational.pm6
Check for ZDRs in .floor/.ceiling

This way we generate a good error message instead of relying on
  `div` doing that for us with a normalized numerator
Also fixes .floor `fail`ing, but `.ceiling` `die`ing due to an extra operation. Now we constistently `fail`
00:07
roast/normalized-ZDRs: 17761c2e48 | (Zoffix Znet)++ | S32-num/rat.t
Spec Rational.floor/.ceiling fail for ZDRs

Rakudo fix: github.com/rakudo/rakudo/commit/6d70346cbf
00:08
rakudo/normalized-ZDRs: c5a2eb81f0 | (Zoffix Znet)++ | src/core/Rat.pm6
Make `==` with Rationals up to 1.55x as fast
00:09
Zoffix ZOFFLOP: t/spec/S17-promise/lock-async-stress2.t 00:20
That's R#2261
synopsebot R#2261 [open]: github.com/rakudo/rakudo/issues/2261 [ASYNC] Crashes in t/spec/S17-promise/lock-async-stress2.t
Geth rakudo/normalized-ZDRs: 97e8413b4f | (Zoffix Znet)++ | src/core/Rat.pm6
Make Rational `===` Rational 2.47x as fast

We now normalize all the Rationals, so we can simplify things
00:21
Geth rakudo: zoffixznet++ created pull request #2314:
Normalize ZDRs
00:31
rakudo/master: 9 commits pushed by (Zoffix Znet)++
roast: zoffixznet++ created pull request #475:
Normalize ZDRs
roast/master: 5 commits pushed by (Zoffix Znet)++
6.d-prep: 11266ec8c8 | (Zoffix Znet)++ | 2 files
Make ZDR normalization as completed

POV: github.com/rakudo/rakudo/pull/2314 Propspec: github.com/perl6/roast/pull/475 Docs: github.com/perl6/doc/pull/2327
00:33
[Tux] Rakudo version 2018.09-24-g75cf8be72 - MoarVM version 2018.09
csv-ip5xs0.907 - 0.945
csv-ip5xs-207.178 - 7.639
csv-parser24.272 - 24.797
csv-test-xs-200.427 - 0.435
test8.887 - 8.956
test-t2.107 - 2.123
test-t --race0.911 - 0.917
test-t-2037.446 - 37.890
test-t-20 --race11.798 - 12.311
06:45
yeah, disappointing numbers. I'll run a second one later today over ssh when not working on the box
lizmat Files=1254, Tests=76151, 338 wallclock secs (15.81 usr 5.37 sys + 2375.57 cusr 221.43 csys = 2618.18 CPU) 08:23
lizmat notable6: weekly 11:46
notable6 lizmat, 6 notes: gist.github.com/6971560dee95933cab...391ca4f94b
lizmat reportable: 2018-09-10T00:00:00Z 2018-09-17T00:00:00Z 12:12
reportable6 lizmat, OK, working on it! This may take up to 40 seconds
lizmat reportable: 2018-09-17T00:00:00Z 2018-09-24T00:00:00Z 12:13
I guess reportable6 only does one at at time
reportable6 lizmat, OK, working on it! This may take up to 40 seconds
lizmat, gist.github.com/1aa8c212c09739d7f5...d5f5a54562
lizmat, gist.github.com/f36ec025ec52f11b2b...06784fb42c 12:14
lizmat notable6: weekly reset
notable6 lizmat, Moved existing notes to “weekly_2018-09-24T12:14:26Z”
Geth 6.d-prep: 824e24a000 | (Christopher Bottoms)++ (committed using GitHub Web editor) | TODO/COMPLETED/completed-FEATURES.md
(minor) fixed link path
12:27
AlexDaniel lizmat: 2018-09-17T00:00:00Z 2018-09-24T00:00:00Z 12:33
oops
wrong bot :)
reportable6: 2018-09-17T00:00:00Z 2018-09-24T00:00:00Z
reportable6 AlexDaniel, OK, working on it! This may take up to 40 seconds
lizmat AlexDaniel: thanks, but I just it myself :-)
AlexDaniel lizmat: yes, but I deleted the spam 12:34
reportable6 AlexDaniel, gist.github.com/16d41d838a90999b13...67a8de3089
lizmat ah? ok
AlexDaniel yeah, there was one spammy RT ticket
lizmat I see
ok
AlexDaniel lizmat++
lizmat and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2018/09/24/...-than-two/ 13:07
cognominal-p6 yea 13:10
jnthn-nomsg ooh, earlier than usual today :) 13:12
lizmat yeah, have some other stuff to do the rest of the day 13:13
|Tux| Rakudo version 2018.09-24-g75cf8be72 - MoarVM version 2018.09
csv-ip5xs0.913 - 0.953
csv-ip5xs-207.249 - 7.343
csv-parser22.126 - 22.394
csv-test-xs-200.421 - 0.430
test8.475 - 8.502
test-t1.997 - 2.040
test-t --race0.875 - 0.886
test-t-2035.176 - 35.956
test-t-20 --race11.704 - 11.737
13:58
timotimo sweet, there's another sub-2 time 13:59
|Tux| it shows the noise-window of actively working on the desktop and doing it remote as nothing changed in between these two timings 14:00
Geth nqp: bc5099ddce | (Elizabeth Mattijsen)++ | tools/build/MOAR_REVISION
Bump Moar for *many* changes
14:33
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...9-gdeba2e1
Geth rakudo: 43919c6b84 | (Elizabeth Mattijsen)++ | tools/build/NQP_REVISION
Bump NQP for latest (big) batch of MoarVM goodies
14:45
rakudo: version bump brought these changes: github.com/perl6/nqp/compare/2018....1-gbc5099d
2bdf2b35a1 | (Elizabeth Mattijsen)++ | src/core/List.pm6

Add a candidate for LIST.STORE(:$initialize!), which does not interfere with the normal use of List.STORE that is used for ($a,$b,$c) = 1,2,3
lizmat my test-t timing dropped from 1.821 to 1.632 14:46
1.581 14:47
1.542
m; say 1.821 / 1542
m: say 1.821 / 1.542
camelia 1.180934
lizmat so about 18% faster :-) 14:48
[Tux] : ^^
jnthn-nomsg That's quite nice :)
lizmat and that's without the escape analysis bits, right ?
FWIW, I don't really see a change with --race: I guess we're running into the warmup limits there 14:49
jnthn-nomsg Yeah, pea is at a very early stage and still in a branch :) 14:50
dogbert2 wasn't there some postrelease-opts in Rakudo as well? 14:51
lizmat post-release-2018.08 is the latest I saw
dogbert2 aha 14:52
what about fixes like github.com/rakudo/rakudo/commit/5f...6432b610a8 are they already merged? 14:54
lizmat yeah, that one was already in master afak 14:55
afaik
dogbert2 cool 14:56
Zoffix ZOFFLOP: t/spec/S12-class/stubs.t (SEGV during last test) 15:48
ZOFVM: Files=1310, Tests=153194, 166 wallclock secs (27.58 usr 3.75 sys + 3624.71 cusr 160.92 csys = 3816.96 CPU) 15:54
AlexDaniel Zoffix: segvs are rare, no? Maybe file a ticket right away 16:12
Zoffix Rare? Most of ZOFFLOPs are SEGV I think 16:14
Zoffix is too lazy to file 16:15
AlexDaniel I should run spectest more often :)
or stress even 16:16
pmurias nqp-truffle just started being able to load a (partial) NQP setting using the ModuleLoader (rather then have in concated on in string form) :), got to clean it up and cut it up into commits 16:32
dogbert17 AlexDaniel: perhaps you could to a toaster run in order to give the new opts a workout 16:36
*do 16:37
Zoffix Cue in reels of "crazy emoji operators" discussions in 3... 2... 1... 16:46
In Perl 6 6.d you're now able to harness the Power of The Atom! Thread-safe atomic operations on a new atomicint type! marketing.perl6.org/id/1537803105/pdf_digital
timotimo we'll still want to figure out the thing where if you put a variant selector on the atom symbol it won't be recognized 16:47
Zoffix
.oO( make variant selector offer different features :P )
16:48
Geth rakudo: b537ce2e5a | (Elizabeth Mattijsen)++ | 2 files
Allow for initializations of "is List" attributes

This commit makes it possible to assign to attributes marked as "is List", so that you can create Listy attributes that are immutable.
   class A {
   has @.foo is List
... (6 more lines)
17:35
lizmat dinner&
AlexDaniel dogbert17: anyone can do that
I'm running out of GCE credit :D 17:37
but my next generation toaster should run at a fraction of cpu time, I just need to finish it 17:38
the issue with it currently is that whateverable blocks on the release path whenever it runs anything
so I can't parallelize it, but it's trivial to fix
AlexDaniel in fact I should've fixed it earlier because Quotable already does this: github.com/perl6/whateverable/blob...p6#L35-L60 17:39
AlexDaniel so it tests on HEAD, HEAD^, HEAD^^, etc. in parallel so that it's not locked :D 17:39
also once we get code from JSON::Fast into rakudo it will help both toasters 17:40
as a lot of it is spent on zef doing json parsing, as far as I can see 17:41
s/release path/build path/g
tony-o same here, not enough log history in my irc 18:05
travis-ci Rakudo build errored. Elizabeth Mattijsen 'Allow for initializations of "is List" attributes 18:12
travis-ci.org/rakudo/rakudo/builds/432583987 github.com/rakudo/rakudo/compare/2...37ce2e5ac3
buggable [travis build above] ✓ All failures are due to: timeout (1 failure). 18:12
Geth nqp/truffle: 09448ffc7f | (Paweł Murias)++ | 19 files
[truffle] Load a NQP setting properly using a ModuleLoader
18:33
nqp/truffle: 76652d25b7 | (Paweł Murias)++ | 6 files
[truffle] Remove a bunch of debugging print statements
nqp/truffle: 7ec3a18ab7 | (Paweł Murias)++ | src/vm/jvm/runtime/org/perl6/nqp/truffle/nodes/expression/NQPElemsNode.java
[truffle] Support nqp::elems on hashes
Geth nqp: dec8bd79b4 | (Elizabeth Mattijsen)++ | tools/build/MOAR_REVISION
Bump MoarVM to get fork-safety patches
18:55
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...3-gdb11d5f
Geth nqp/truffle: b2677b52b0 | (Paweł Murias)++ | nqp-truffle.nqp
[truffle] Load our truffle setting from java when using nqp-truffle
19:13
nqp/truffle: 782330a4fd | (Paweł Murias)++ | src/vm/jvm/bin/run_tests.pl
[truffle] Run passing test 11
nqp/truffle: d696271314 | (Paweł Murias)++ | src/vm/jvm/runtime/org/perl6/nqp/truffle/NQPScopeWithFrame.java
[truffle] Remove null checks for something that is never a null now
19:19
nqp/truffle: 651bb3a1b1 | (Paweł Murias)++ | src/vm/jvm/runtime/org/perl6/nqp/truffle/NQPScopeWithFrame.java
Revert "[truffle] Remove null checks for something that is never a null now"

Doesn't really pass :(
This reverts commit d696271314b8a145cef68040dc26abed225b5198.
jdv79 c: 2018.06,2018.06,2018.06,HEAD,HEAD,HEAD gist.github.com/AlexDaniel/7102bb2...2a41ea121f 19:21
committable6 jdv79, gist.github.com/a691ea56320d97ec53...41123f9dc5
Geth rakudo: 02fbbc0c02 | (Elizabeth Mattijsen)++ | tools/build/NQP_REVISION
Bump NQP to get Moar's fork-safety patches
19:26
¦ rakudo: version bump brought these changes: github.com/perl6/nqp/compare/2018....2-gdec8bd7
brrt oh,yay, thanks lizmat++ 19:28
now I can actually implement the fork() opcode as well
lizmat also on JVM ? :-) 19:36
pmurias lizmat: I don't think calling the fork() systemcall is a good idea on the js/jvm/truffle backends :/ 19:56
lizmat neither
I guess that will be MoarVM / POSIX only
Geth nqp/truffle: 09439dd8d1 | (Paweł Murias)++ | src/vm/jvm/bin/run_tests.pl
Revert "[truffle] Run passing test 11"

This reverts commit 782330a4fd34b0f4a7f3454bf2393700146cb527.
19:59
nqp/truffle: 0049539e41 | (Paweł Murias)++ | src/vm/jvm/runtime/org/perl6/nqp/truffle/NQPScopeWithFrame.java
Revert "Revert "[truffle] Remove null checks for something that is never a null now""

This reverts commit 651bb3a1b1ffb273ba345ae55f734941206586f7.
nqp/truffle: 2badb7fa02 | (Paweł Murias)++ | src/vm/jvm/Truffle.nqp
[truffle] Refactor QAST::Var compilation
Geth rakudo: 2dd02751da | (Elizabeth Mattijsen)++ | src/Perl6/Optimizer.nqp
Make "for ^10 .reverse" just as fast as "for ^10"

Literal ranges in for loops are heavily optimized. However, looping over a reverted Range was only optimized at the Range.reverse method level. This commit statically optimizes "for ^10 .reverse" in the same way as "for ^10". This makes it about 6x faster.
20:09
lizmat inspired by stackoverflow.com/questions/524839...nting-down 20:12
Geth rakudo: 645eeb52dd | (Elizabeth Mattijsen)++ | src/Perl6/Optimizer.nqp
A slightly more correct handling of ^10 .reverse

We should first check for the .reverse, *the* check for nqp::stmts
20:33
lizmat *then (bloody n on my keyboard)
Zoffix lizmat: I thought we couldn't optimize methodcalls in static optimizer like that because we don't know if they'd be modified by runtime? 20:40
timotimo: is that right? They're latebound something something
lizmat Zoffix: in this case, this is about a *literal* ^10 20:41
that would mean overriding prefix:<^>
I think we're pretty safe in this case 20:42
Zoffix lizmat: but how do you know .reverse on a Range object does sub_i stuff?
lizmat because it is a "^10" thing
Zoffix doesn't follow
lizmat ^10 normally is a Range 20:43
but in the context of "for ^10" it never becomes a Range object because the opt rewrites the optree
Zoffix lizmat: but does that mean we can optimize a ton of other stuff. I mean `42.cos` is also on a literal, for example 20:44
timotimo depends on what we want monkey-patchers to get
lizmat well, if that "42" is a unmixed-in Int, then I would say yes
timotimo but to be fair, cos 42 could also be "unsafe" if someone went and changed Int early enough 20:45
lizmat I mean: in Perl 5 you can change "undef" to 42
and that messes up a *lot* :-)
lizmat FWIW, if consensus says that the reverse opt shouldn't happen, then I'm fine with that too 20:46
Zoffix How about this: we optimize all we can until someone complains and brights forth a real-life useful usecase for when it's useful to have `42.cos` on mutated Int, and then we stick all these opts under some pragma/trait or something?
s/brights/brings/; 20:47
lizmat sounds like a plan to me
timotimo "use soft" is a thing iirc 20:48
TimToady yes, the compiler is allowed to make assumptions in the absence of declarations before CHECK time 20:50
Geth nqp/truffle: 2ba515521e | (Paweł Murias)++ | nqp-truffle.nqp
[truffle] Make nqp-truffle.nqp set module-path too
20:52
nqp/truffle: 08367fe4d6 | (Paweł Murias)++ | 12 files
[truffle] Teach the DSL about FrameSlot contextSlot arguments and get rid of a bunch of boilerplate
lizmat perhaps it is safer to actually perform this optimization on "10 ... 1" 20:53
and tell people to use that ?
timotimo it'd be cool to also optimize ones with a custom "step" 20:54
pmurias lizmat: that is safer
lizmat that would make 10 ... 1 about 75x faster :-) 20:55
Zoffix \o/ 20:56
lizmat ok, will look at that tomorrow and revert the .reverse opt 20:56
pmurias lizmat: the reverse opt should happen, but it feels like something should be done at runtime or else filthy monkey patchers will get into trouble if they augument Int
timotimo it's not really possible to do that optimization at run time
diakopter patch those filthy monkeys!
Zoffix lizmat: but shouldn't we keep the .reverse opt, based on what we discussed above?
timotimo apart from inlining all parts of the iterator and the body
Zoffix The monkey patchers will have to use a pragma if they want to throw away those opts 20:57
lizmat ok, then I'll keep the .reverse opt
pmurias timotimo: it's possible I just need to get the truffle backend working so we can do it ;)
timotimo :) 20:58
pmurias Zoffix: re real-life useful usecase, monkey patching builtin types in general is super doubious 21:02
Geth ¦ rakudo: zoffixznet self-assigned Core dump when dividing some Rats with denominator 2**30 by -2 github.com/rakudo/rakudo/issues/2280 22:40