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.
00:00 lizmat joined 00:01 p6bannerbot sets mode: +v lizmat 00:02 nativecallable6 joined, bisectable6 joined, benchable6 joined 00:03 p6bannerbot sets mode: +v nativecallable6, p6bannerbot sets mode: +v bisectable6, p6bannerbot sets mode: +v benchable6 00:05 lizmat left 00:58 astj joined 00:59 p6bannerbot sets mode: +v astj 01:04 yoleaux joined, p6bannerbot sets mode: +v yoleaux 01:28 astj left 01:29 astj joined, p6bannerbot sets mode: +v astj 01:31 lorimer3 joined, pOe[ joined, pOe[ left 01:32 p6bannerbot sets mode: +v lorimer3 01:37 lorimer3 left
MasterDuke this is annoying. i got the first part of a new jvm bootstrap, but when i go to remove the old nqp::getstrfromname and build i keep getting `java.lang.RuntimeException: No such attribute '$!do' for this object in clone (gen/jvm/stage2/NQPCORE.setting:374) ...` 01:46
Geth nqp: 0003b32bdb | 陈梓立++ (committed using GitHub Web editor) | src/NQP/Grammar.nqp
whitespace
02:37
02:40 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci NQP build failed. 陈梓立 'whitespace' 02:40
travis-ci.org/perl6/nqp/builds/413872974 github.com/perl6/nqp/compare/59429...03b32bdbba
02:40 travis-ci left 03:19 frmus20 joined 03:20 p6bannerbot sets mode: +v frmus20 03:22 rkta joined 03:23 p6bannerbot sets mode: +v rkta
rkta Don't support freenode and their ICO scam, switch to a network that hasn't been co-opted by corporate interests. OFTC or efnet might be a good choice. Perhaps even matrix.org/ 03:23
03:23 rkta left 03:24 frmus20 left 04:14 Namarrgon3 joined 04:15 p6bannerbot sets mode: +v Namarrgon3 04:16 Namarrgon3 left 04:44 Selavi24 joined, p6bannerbot sets mode: +v Selavi24 04:45 Selavi24 left, skids joined 04:46 skids left 04:48 ktr joined 04:49 p6bannerbot sets mode: +v ktr 04:53 ktr left 04:59 blocked29 joined, p6bannerbot sets mode: +v blocked29 05:00 blocked29 left 05:17 brrt joined 05:18 p6bannerbot sets mode: +v brrt 05:43 diakopter left 05:45 yoleaux left, yoleaux joined 05:46 p6bannerbot sets mode: +v yoleaux 06:18 robertle joined 06:19 p6bannerbot sets mode: +v robertle 06:26 Kaypie joined, Kaiepi left, FROGGS__ joined 06:27 p6bannerbot sets mode: +v Kaypie, p6bannerbot sets mode: +v FROGGS__ 06:29 FROGGS_ left 06:33 NvpkD1y7Ez joined, NvpkD1y7Ez left 06:34 AlexDaniel joined 06:35 p6bannerbot sets mode: +v AlexDaniel 06:49 lizmat joined, p6bannerbot sets mode: +v lizmat
lizmat good *. #perl6-dev! 06:49
Files=1248, Tests=75965, 364 wallclock secs (16.09 usr 5.79 sys + 2587.15 cusr 226.74 csys = 2835.77 CPU) 06:50
that's quite a bit less than the last time I did this!
06:50 brrt left 07:12 brrt joined 07:13 p6bannerbot sets mode: +v brrt 07:21 Kaypie left
[Tux] 2.290, but I'll run it again later today when I'm not using the desktop 07:31
07:33 Kaiepi joined 07:34 p6bannerbot sets mode: +v Kaiepi 07:37 [TuxCM] left 07:38 FROGGS__ left 07:43 FROGGS joined, p6bannerbot sets mode: +v FROGGS 07:49 CIAvash[m] joined, p6bannerbot sets mode: +v CIAvash[m] 07:51 Ven` joined 07:52 p6bannerbot sets mode: +v Ven` 08:01 robertle left 08:08 brrt left 08:10 PufferBot left, Kaiepi left 08:11 Kaiepi joined, p6bannerbot sets mode: +v Kaiepi 08:12 Kaiepi left 08:13 Kaiepi joined, p6bannerbot sets mode: +v Kaiepi 08:24 Kaypie joined, Kaiepi left 08:25 p6bannerbot sets mode: +v Kaypie 08:34 Kaypie left 08:35 Kaypie joined, p6bannerbot sets mode: +v Kaypie 08:44 Kaypie is now known as Kaiepi 08:51 FROGGS left, FROGGS joined 08:52 p6bannerbot sets mode: +v FROGGS 08:53 FROGGS left, FROGGS joined 08:54 p6bannerbot sets mode: +v FROGGS 08:59 FROGGS left 09:00 FROGGS joined, p6bannerbot sets mode: +v FROGGS 09:05 FROGGS left, FROGGS joined 09:06 p6bannerbot sets mode: +v FROGGS 09:11 FROGGS left, FROGGS joined 09:12 p6bannerbot sets mode: +v FROGGS
lizmat jnthn: nowadays, is there a reason not to have infix:<~> *always* return a native str ? 09:13
09:14 FROGGS left
lizmat since we have a str ~ str candidate that is inlined, it would seem to me it makes sense for strings with a lot of things interpolated 09:18
jnthn Str ~ Str will be inlined by spesh also, surely. 09:22
lizmat yeah, but that will still create a new Str object for each ~ 09:25
right ? 09:26
jnthn That'd still be the case if you just change the return type :)
lizmat it does do a nqp::p6box_s on return
jnthn But actually spesh is in the middle of learning how to spot box/unbox pairs and eliminate the boxing where that's all that happens.
lizmat FWIW, always return str for the infix ~ candidates spectests clean 09:27
jnthn Yeah, but it's wrong
Design wise
lizmat not sure I follow 09:28
you mean, people would need to be able to override infix:<~> ? 09:29
jnthn We consistently have the return types of operators taking boxed inputs as giving boxed outputs. Introducing a discontinuity just because it might be a win that we'll have out of more general optimizations anyway seems odd. 09:30
lizmat the reason I'm looking into this, is trying to optimize nested infix:<~> calls (which are the result of interpolation) and try to turn them into a nqp::join on a list_s 09:31
that should speed up a common case very much 09:32
then I realized that maybe I didn't have to do that, if infix:<~> would always return str rather than Str:D
jnthn No, because str is still immutable, so you'd still have a lot of the costs that join might save 09:33
lizmat BTW, inspired by the cause of one of the speed increases of Perl 5.28: optimizing multiple concats into a specific op
I fugured we wouldn't need the specific op
jnthn I thought the original idea for doing this was making infix:<~> list associative, but I think doing so introduced other issues 09:34
lizmat well, there *is* a candidate for it, which takes a slurpy
which is a big slowdown, I think 09:35
but I don't get your point about immutability of str
I mean, under the hood in the end it all turns into nqp::concat 09:36
so why would we knowingly do all of the boxing ?
I understand your general point: this is about only infix:<~>
jnthn The boxing doesn't matter much in that we'll soon be able to optimize it out anyway 09:37
Of course, there's no reason we can't for now do this by using nqp::concat ops on the pieces and then boxing the final thing 09:38
(After checking we have the CORE.setting version of infix:<~> in scope) 09:39
lizmat yeah, obviously :-)
jnthn But if doing such a transformation anyway, it might be better to go straight for turning it into an nqp::join
lizmat actually, that was my plan 09:40
push to an nqp::list_s, and then join and box at the end
jnthn Because nqp::join can assemble a single result buffer and copy all the pieces in to it
09:40 brrt joined
jnthn But nqp::concat even on native things can't do that 09:40
lizmat ok, so this is the plan then: 09:41
1. drop the idea of infix:<~> returning str always
09:41 p6bannerbot sets mode: +v brrt
lizmat 2. look into optimizing nested nqp::concats of significant depth into nqp::push_s on a list_s with an nqp::join at the end 09:42
with the core infix:<~> in scope
Geth nqp: 261276cb00 | 陈梓立++ | t/nqp/019-file-ops.t
update test
09:45
09:45 robertle joined, weq8 joined
jnthn ++lizmat 09:45
09:46 p6bannerbot sets mode: +v robertle, p6bannerbot sets mode: +v weq8 09:47 weq8 left 09:51 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci NQP build failed. 陈梓立 'update test' 09:51
travis-ci.org/perl6/nqp/builds/413976331 github.com/perl6/nqp/compare/0003b...1276cb00ed
09:51 travis-ci left 10:01 pmurias joined, p6bannerbot sets mode: +v pmurias
lizmat jnthn: is there a reason that " $a" gets codegenned as "infix:<~>( " ", $a.Stringy )" instead of having MMD take care of stringification? 10:03
or is that some leftover from before MMD was fully functional ? 10:04
jnthn To make it easier for you to turn it into a join without having to worry about things MMD would take care of? :D
lizmat he
jnthn It's probably faster this way, though 10:05
lizmat but seriously, why ?
jnthn Oh, also
We had a fun bug once
my $i = 42; say "$i".WHAT # returned Int :P
evalable6 (Str)
jnthn I think the current factoring meant that bug just wouldn't happen by design. I suspect it's faster to do it this way because it avoids a redispatch and the callsite to .Stringy is potentially monomorphic rather than being a polymorphic one burried in the general coercing infix:<~> candidate. 10:07
lizmat well, I was thinking of adding Cool:D candidates that would directly call .Str
because that's also a common case
the path through Stringy nowadays typically takes 10% 10:08
for Cools
jnthn Measured through --profile, or timings? 10:09
(The profiler distorts very small inlines, thus the question)
lizmat through --profile
10:42 orb joined, p6bannerbot sets mode: +v orb 10:45 captain4221 joined, captain4221 left 10:46 orb left 10:47 mattcode joined, p6bannerbot sets mode: +v mattcode 10:48 mattcode left 11:22 ChickenSoup_23 joined 11:23 p6bannerbot sets mode: +v ChickenSoup_23, ChickenSoup_23 left 11:27 statisfiable6 joined, p6bannerbot sets mode: +v statisfiable6 11:29 Ven` left
|Tux| Rakudo version 2018.06-369-gfa73bb48d - MoarVM version 2018.06-395-g0c5f6e52e
csv-ip5xs0.958 - 0.977
csv-ip5xs-207.880 - 7.955
csv-parser24.064 - 24.399
csv-test-xs-200.437 - 0.439
test7.790 - 8.203
test-t2.184 - 2.218
test-t --race0.935 - 0.948
test-t-2038.395 - 38.856
test-t-20 --race12.565 - 12.669
11:30
11:49 astj left, astj joined 11:50 p6bannerbot sets mode: +v astj 11:51 AlexDaniel left 11:52 astj left, astj joined 11:53 p6bannerbot sets mode: +v astj 11:54 bigpresh24 joined, p6bannerbot sets mode: +v bigpresh24 11:55 bigpresh24 left 12:06 Ven` joined, p6bannerbot sets mode: +v Ven` 12:15 anataex joined 12:16 p6bannerbot sets mode: +v anataex 12:21 anataex left 12:23 robertle left
jnthn Umm...oh no 12:23
Can somebody give me a sanity check?
We have this:
method d(IO::Path:D: --> Bool:D) {
$.e 12:24
?? ?Rakudo::Internals.FILETEST-D($!abspath)
!! Failure.new(X::IO::DoesNotExist.new(:path($!abspath),:trying<d>))
}
Bool:D. Failure return type.
m: class C { method m(--> Bool:D) { Failure.new(X::AdHoc.new) } }; C.m 12:25
camelia Unexplained error
in block <unit> at <tmp> line 1
jnthn m: class C { method m(--> Bool:D) { Failure.new(X::AdHoc.new) } }; my $x = C.m
camelia ( no output )
jnthn I thought :D didn't yet through Failure and Nil?
m: class C { method m(--> Bool:D) { Nil } }; my $x = C.m
camelia ( no output )
jnthn m: class C { method m(--> Bool) { Nil } }; my $x = C.m
camelia ( no output )
lizmat is unsure 12:26
afk for a bit to look at the rain
jnthn I'll just retain current behavior for now 12:30
(Looking into the last spectest failures of my p6decontrv plugin)
12:32 pmurias left 12:35 pmurias joined 12:36 p6bannerbot sets mode: +v pmurias 12:37 j3nnn1 joined, p6bannerbot sets mode: +v j3nnn1 12:44 Zoffix joined, p6bannerbot sets mode: +v Zoffix
Zoffix jnthn: I thought Nil and Failure bypassed return typecheck entirely 12:44
jnthn: also, is your p6decontrv plugin "large" work? Like, I just fired off toaster. Should I kill it and wait for you to merge that work? 12:45
12:45 Kaiepi left, Kaypie joined
Geth rakudo/return-type-check-plugin: db96cab335 | (Jonathan Worthington)++ | src/Perl6/Optimizer.nqp
Discard p6decontrv when returning a known constant
12:45
rakudo/return-type-check-plugin: 09f5d0b68b | (Jonathan Worthington)++ | src/vm/moar/spesh-plugins.nqp
One identity sub shall suffice
rakudo/return-type-check-plugin: f8be2a2d64 | (Jonathan Worthington)++ | src/vm/moar/spesh-plugins.nqp
Enforce definiteness checks on return values
Zoffix (well, just Nil, I guess, since Failure is Nil)
12:46 p6bannerbot sets mode: +v Kaypie
jnthn Zoffix: Well, it's large in so far as return value type checks are widely used goes 12:46
Zoffix k, I'll wait for merge :)
jnthn On the other hand, it's also quite isolated (that is, I'm not doing code changes all over the place, just in one or two places)
So it's nothing like so risky as the Scalar changes :-)
I've got one spectest change I need to look at
*regression 12:47
"Type check failed for return value; expected num but got Bool (Bool::True)" 12:49
Huh, we ain't even meant to use this logic if it's a native return type...
12:53 diakopter joined, p6bannerbot sets mode: +v diakopter 13:14 brrt left, brrt joined 13:15 p6bannerbot sets mode: +v brrt
jnthn Hurrah, a happy spectest 13:27
timotimo \o/
Geth rakudo/return-type-check-plugin: bf9ab42e0f | (Jonathan Worthington)++ | 2 files
Pass type into the spesh type check plugin

Turns out that the static inliner likes to inline some things that use it.
13:30
timotimo oh, interesting
lizmat hmmm.. t/spec/MISC/misc-6.d.t flaps for me # Zoffix 13:34
Geth rakudo/master: 6 commits pushed by (Jonathan Worthington)++ 13:35
lizmat whee!
13:35 brrt left
jnthn Probably a good time to do some version bumps now too :) 13:35
grrr 13:38
Can NOT inline AT-KEY (6256) with bytecode size 440 into postcircumfix:<{ }> (2249): bytecode is too large to inline
I'm sure I tuned that to work out before :(
timotimo damn 13:39
jnthn oh, lemme make sure I've got that revert of the change to it...
timotimo oh, the AT-KEY-NO-CONTAINER or what it was
jnthn yeah
yay, that revert helped 13:41
timotimo hooray
jnthn With it reverted a hash reading benchmark takes 0.3758; the manual inline slowed it to 0.6178 :) 13:45
lizmat yeah... :-)
sorry about that one
jnthn No worries, glad I caught it going in 13:46
AT-POS also inlines quite nicely nowadays too
ASSIGN-POS doesn't
Maybe time for another crack at that 13:47
13:50 Kaypie left
lizmat jnthn: so, time to bump versions, or not ? 13:51
jnthn Yeah, can do :)
lizmat ok, will do in a mo (after my last spectest)
13:52 PufferBot joined, Kaiepi joined 13:53 p6bannerbot sets mode: +v PufferBot, p6bannerbot sets mode: +v Kaiepi
timotimo what was it before the recent round of optimifications? 13:56
jnthn Closer to the 0.6 or so 13:57
Geth rakudo: 3ae97e5f38 | (Elizabeth Mattijsen)++ | 3 files
Optimize interpolation

Before, all interpolation was codegenned with a call to "Stringy". This has several disadvantages:
  - it created a more opcodes (this patch makes core setting 25K smaller)
  - it wouldn't allow for better optimized infix:<~> candidates
  - it didn't allow custom infix:<~> to be seen (as all became Str)
... (13 more lines)
lizmat jnthn: I have one test failing in nqp: t/nqp/019-file-ops.t 14:02
14:02 AlexDaniel joined
lizmat You planned 111 tests but ran 112. # ring a bell ? 14:02
14:03 p6bannerbot sets mode: +v AlexDaniel
Geth nqp: b9c0bfcfcb | (Zoffix Znet)++ | t/nqp/019-file-ops.t
Revert "update test"

This reverts commit 261276cb00ed62526050d2328667032888ffaaed.
The commit is unexplained and makes the test suit fail. I don't immediatelly see why the failure occurs.
14:04
14:04 AlexDaniel left, AlexDaniel joined, card.freenode.net sets mode: +v AlexDaniel
14:04 p6bannerbot sets mode: +v AlexDaniel
14:06 timotimo left, AlexDaniel left, AlexDaniel joined, p6bannerbot sets mode: +v AlexDaniel
lizmat ok, that's solved then :-) 14:06
Geth nqp: d24856daf0 | (Zoffix Znet)++ | t/nqp/019-file-ops.t
Revert "Revert "update test""

This reverts commit b9c0bfcfcb043cd138e1a1d57233f90793a4914f.
  github.com/perl6/nqp/commit/261276...t-30020362
14:07
lizmat ah, it's not ?
Zoffix: que?
Geth nqp: c05a3120f8 | (Zoffix Znet)++ | t/nqp/019-file-ops.t
Fix plan

  github.com/perl6/nqp/commit/261276...t-30020362
nqp: e1929a4948 | (Elizabeth Mattijsen)++ | tools/build/MOAR_REVISION
Bump MoarVM for latest goodies
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...5-g0c5f6e5
14:08 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci NQP build canceled. Zoffix Znet 'Fix plan 14:08
travis-ci.org/perl6/nqp/builds/414077835 github.com/perl6/nqp/compare/d2485...5a3120f8f2
14:08 travis-ci left 14:09 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci NQP build failed. Zoffix Znet 'Revert "update test" 14:09
travis-ci.org/perl6/nqp/builds/414076313 github.com/perl6/nqp/compare/26127...c0bfcfcb04
14:09 travis-ci left 14:11 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci NQP build failed. Zoffix Znet 'Revert "Revert "update test"" 14:11
travis-ci.org/perl6/nqp/builds/414077657 github.com/perl6/nqp/compare/b9c0b...4856daf079
14:11 travis-ci left
Zoffix lizmat: yeah, it's solved. It was just a wrong plan after a recent change to that test file 14:13
(the travis failures are N#494) 14:14
synopsebot N#494 [open]: github.com/perl6/nqp/issues/494 Bootstrap for JVM backend
14:14 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci NQP build failed. Elizabeth Mattijsen 'Bump MoarVM for latest goodies' 14:14
travis-ci.org/perl6/nqp/builds/414078139 github.com/perl6/nqp/compare/c05a3...929a494815
14:14 travis-ci left 14:16 ExtraCrispy joined
lizmat that's the JVM build failing with "nqp::strfromname(~$/)"), no registered operation handler" 14:17
14:17 p6bannerbot sets mode: +v ExtraCrispy
Zoffix lizmat: which test flaps int/spec/MISC/misc-6.d.t ? I can't get any to flap 14:18
lizmat the "is native num initialized with 0e0" test
Zoffix 0_o 14:19
lizmat m: say 14051288 - 13956344 # reduction in .moarvm 14:20
camelia 94944
14:20 bluszcz1 joined
Zoffix lizmat: does this have any failures? gist.github.com/zoffixznet/82efbc2...087b457735 14:20
lizmat: I ran it with `prove -e ./perl6 ../z.p6` 14:21
14:21 bluszcz1 left
Zoffix All tests successful. 14:21
Files=1, Tests=100000,
Geth rakudo: a41c37c89f | (Elizabeth Mattijsen)++ | tools/build/NQP_REVISION
Bump NQP to get the latest goodies
¦ rakudo: version bump brought these changes: github.com/perl6/nqp/compare/2018....4-ge1929a4
lizmat Zoffix: that was ok for me as well 14:23
note: that was with the bumped MoarVm
notable6 lizmat, Noted!
lizmat oops
Zoffix I'm on master/master/master with 2018.06-376-g3ae97e5 built on MoarVM version 2018.06-395-g0c5f6e5
lizmat same here 14:24
[Tux]: looks like the latest bump will have a positive effect on test-t :-) 14:26
14:26 pmurias left 14:27 pmurias joined
lizmat test-t < 1.9 on my machine for the first time 14:27
Zoffix :o
14:27 p6bannerbot sets mode: +v pmurias
|Tux| it is running now … 14:27
Zoffix Yesterday, stage parse was 99s on this box, today it's 89. Dunno if it's just noise/less busy box, but might be a real improvement :) 14:28
diakopter O_O 14:30
Zoffix ?
diakopter that's fast
sometimes the highest-hanging fruit is heaviest 14:31
14:31 Cprossu11 joined
jnthn I saw a slight improvement :) 14:31
|Tux| 2.213 on first run
14:31 p6bannerbot sets mode: +v Cprossu11 14:32 Cprossu11 left 14:34 PufferBot left 14:35 Kaiepi left, Kaiepi joined 14:36 p6bannerbot sets mode: +v Kaiepi
|Tux| Rakudo version 2018.06-377-ga41c37c89 - MoarVM version 2018.06-395-g0c5f6e52e
csv-ip5xs0.950 - 0.988
csv-ip5xs-207.225 - 7.744
csv-parser22.602 - 22.667
csv-test-xs-200.485 - 0.504
test7.841 - 8.863
test-t2.133 - 2.213
test-t --race0.906 - 0.939
test-t-2037.417 - 39.629
test-t-20 --race11.905 - 12.101
14:37
2018-08-09 13:22:47 test-t 2.184
2018-08-07 19:22:21 test-t 2.178
2018-08-03 17:01:13 test-t 2.175
2018-08-07 16:28:38 test-t 2.159
2018-08-09 16:34:28 test-t 2.133
Zoffix
.oO( we need a new, more comprehensive bench )
14:39
14:40 Zoffix left
dogbert17 we need to get below 2 :-) 14:47
lizmat dogbert17: on my machine, test-t is now below 1.9 :-) 14:50
|Tux| my test box: Linux 4.4.140-62-default [openSUSE Leap 42.3] HP Z220CMT Xeon(R) CPU E3-1245 V2 @ 3.40GHz/3271(8 cores) x86_64 11888 Mb 14:51
lizmat 2.9GHz I7 with turbo boost up to 3.6GHz I believe 14:55
afk for a few hours& 14:56
dogbert17 lizmat: cool 14:59
15:01 Cprossu3 joined 15:02 p6bannerbot sets mode: +v Cprossu3
dogbert17 ZOFFLOP: /spec/S09-typed-arrays/native-int.t 15:05
valgrind doesn't like that file 15:06
==8553== Conditional jump or move depends on uninitialised value(s)
==8553== at 0x502B97A: MVM_validate_static_frame (validation.c:696) 15:07
15:07 Cprossu3 left
jnthn Studying some of the code we produce shows up quite a few little things for improvement... 15:16
|Tux| 2.129 15:18
15:20 Zoffix joined, p6bannerbot sets mode: +v Zoffix
Zoffix nm on toaster... Google keeps killing my VM after several minutes and I don't see an option to turn off pre-emptability without re-creating the VM from scratch, which I'm too lazy to do 15:20
jnthn CORE.setting compilation does also seem reliably a little faster for me, fwiw 15:21
48.273 is the lowest I remember seeing 15:22
hmpf, one of my code-gen improvements regressed my hash store benchmark... 15:24
15:26 Zoffix left
jnthn huh, or pulling latest did 15:26
oh yes, ASSIGN-KEY now fails to inline 15:27
Heh, 48.014 certainly is 15:34
(Not because of another improvement, just a lucky run) 15:35
wat, I just got 47.734 on my latest one o.O
15:37 timo joined, p6bannerbot sets mode: +v timo, timo is now known as timotimo
diakopter jnthn: mebbe that was VERY fortuitous cosmic rays optimizing your program for you 15:39
15:41 lizmat left
timotimo it just keeps getting faster and faster 15:44
Geth nqp: 2bb945df83 | (Jonathan Worthington)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp
Improve getattr/bindattr code gen quality

Recognize when we have a literal wrapped up in a QAST::Want, and emit a more efficient getattr_* instead of a const_s and getattrs_*.
15:49
jnthn Not quite sure who and what is to thank for it, but CORE.setting here is now under the 14 MB mark 15:52
timotimo \o/ 15:56
i expect all of this to also decrease memory usage during core setting compilation by a tiny amount 15:57
statisfiable6: core 15:58
statisfiable6 timotimo, OK! Working on it…
timotimo, gist.github.com/605db5c0b63cf1a56f...93e7dc56d3 16:00
timotimo 3ae97e5f38e85a5db76053ed2c7757c59a22f73d 14.00476 16:02
a41c37c89f45327c91c024b72ed1d59693cfa832 13.956392
16:07 Zoffix joined, p6bannerbot sets mode: +v Zoffix
Geth nqp: b23941d2ee | (Jonathan Worthington)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp
Often do a decont less in getattr/bindattr codegen

In the case that we have a QAST::WVal for the class handle, then we know that we don't need to generate one.
16:10
jnthn m: my @a; dd (@a = 42) 16:11
camelia Array @a = [42]
jnthn m: my @a; dd (@a[1] = 42)
camelia 42
jnthn m: my @a; (@a[1] = 42) = 101
camelia Cannot modify an immutable Int (42)
in block <unit> at <tmp> line 1
Geth rakudo: fd6164a106 | (Jonathan Worthington)++ | src/vm/moar/Perl6/Ops.nqp
Improve p6bindattrinvres code-gen quality

  * Generate simpler bindattr_o where possible instead of bindattrs_o
   and a const_s
  * Don't decont the class handle if it's a QAST::WVal type object
16:13
rakudo: 9a5c538fa2 | (Jonathan Worthington)++ | src/Perl6/World.nqp
Ensure Scalar type objects compiles to QAST::WVal

It previously would compile into a `getlex`. Amusingly enough, spesh did try and make the best of a bad situation by sticking in a guard so things like `nqp::create(Scalar)` and attribute lookups using `Scalar` would be lowered anyway, which is cute, but still wasteful.
rakudo: c60a347f61 | (Jonathan Worthington)++ | src/core/Hash.pm6
Further code shrinkage of Hash.ASSIGN-KEY

To really make sure it's getting reliably inlined.
16:14 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci NQP build failed. Jonathan Worthington 'Often do a decont less in getattr/bindattr codegen 16:14
travis-ci.org/perl6/nqp/builds/414136113 github.com/perl6/nqp/compare/2bb94...3941d2ee96
16:14 travis-ci left 16:34 Ven` left
Zoffix New blog post: "The 100 Day Plan: The Update on Perl 6.d Preparations": rakudo.party/post/The-100-Day-Plan...6-d-Update 16:48
16:54 AlexDaniel left
Ulti yay Im going to share a birthday with Perl 6.d 16:54
or at least Diwali this year 16:55
16:55 AlexDaniel joined, p6bannerbot sets mode: +v AlexDaniel
Ulti which is convenient since in the UK we will be setting the place on fire around that time anyway 16:55
diakopter <sideways laughter crying emoji> 16:57
16:58 Zoffix left 17:04 Zoffix joined, p6bannerbot sets mode: +v Zoffix
Zoffix Toast results for HEAD: aborted because zef failed to run "flattening of other hash reprs NYI." 17:04
actually, no it's the step after zef 17:05
Zoffix tries to golf
Actually, g2g ATM... Here's the tail of toaster session with the error: gist.github.com/zoffixznet/c0f9d9e...5d09f9c80b and toaster code is here: github.com/zoffixznet/perl6-Toaster 17:07
17:07 Zoffix left
Ulti m: say "\c[ROLLING ON THE FLOOR LAUGHING]" 17:08
camelia 🤣
Ulti naw
diakopter I think thats what you wanted :P
17:16 brrt joined 17:17 p6bannerbot sets mode: +v brrt 17:20 brrt left 17:22 jdv79_ is now known as jdv79 17:23 brrt joined, p6bannerbot sets mode: +v brrt 17:28 Zoffix joined, p6bannerbot sets mode: +v Zoffix
Zoffix Actually yeah, it is zef. I can repro by just cloning zef and running `perl6 -Ilib bin/zef info Test` 17:28
on 2018.06-377-ga41c37c built on MoarVM version 2018.06-395-g0c5f6e5
and the "flattening of other hash reprs NYI." crash is on " $!recommendation-manager.search(@identities, :$strict, |%fields);", but I'm failing to repro it outside the code 17:30
17:38 SakiiR joined 17:39 p6bannerbot sets mode: +v SakiiR 17:44 SakiiR left
Zoffix .tell jnthn FYI: R#2195 github.com/rakudo/rakudo/issues/2195 17:48
yoleaux Zoffix: I'll pass your message to jnthn.
synopsebot R#2195 [open]: github.com/rakudo/rakudo/issues/2195 [⚠ blocker ⚠] False positive throwage of "flattening of other hash reprs NYI"
17:48 Zoffix left 17:49 brrt left
Geth rakudo: 5559f4c99f | (Jonathan Worthington)++ | src/core/Array.pm6
Tune up Array.ASSIGN-POS

This gets the code size to be quite significantly smaller. It's not quite at the point where it will inline yet, but a great deal closer. There's still some suboptimality in the code produced after specialization, so this will need more attention. Even with these outstanding tasks, this is still a quite measurable speedup.
18:14
18:42 lizmat joined 18:43 p6bannerbot sets mode: +v lizmat
lizmat jnthn: from c60a347f615400b41b6d I gather that nowadays we don't want to do 2 getattrs, but preferably do a single one, bind to that and use the alias? 18:45
18:46 BlueShark6 joined, BlueShark6 left 19:29 e22 joined, e22 left 19:38 xerox1233 joined, Odd_ joined, xerox1233 left 19:39 p6bannerbot sets mode: +v Odd_, Odd_ left
jnthn lizmat: Yes. Sigilless vars (provided not closed over) just become a VM register and the "assignment" into them a `set` instruction 19:57
lizmat: Then the references to it are immediate (e.g. no lookup instruction)
lizmat ok, I think I know a few other places then that could use that change :-)
jnthn lizmat: Further to that, each getattr means a guard, and it's better to have less of those :) 19:58
lizmat gotcha
it used to be that having extra locals would be overhead
I guess that's no longer the case then :)
jnthn Well, it also used to be they were *not* locals, they were lexicals :) 20:00
lizmat ah, that... ok 20:01
argh, I just found out that sprintf/fmt use a grammar under the hood
which makes them really slow :-(
jnthn Well, it's fast if you keep a hash mapping format string into code that does the job, but yeah, if you parse it every time... :) 20:02
lizmat how would you keep that ? 20:03
diakopter sprintf/fmt used to be non-grammar based :o
lizmat jnthn: how can you *not* parse that every time ?
20:08 yawkat19 joined 20:09 p6bannerbot sets mode: +v yawkat19, yawkat19 left
jnthn lizmat: Parse it once, turn it into a closure tree (or compile it into QAST) that - given the arguments - applies the format 20:10
lizmat I'm afraid I don't follow :-( 20:11
jnthn lizmat: Compile formats into code that, keep a hash of format string to code, run the cdoe each time 20:18
lizmat ok, so you're suggesting I implement that in the core? Is that what you're saying ? 20:19
jnthn Well, it's probably an amount of work, but yes, it's probably the right direction to go 20:21
If we're parsing the string with a grammar every time, that ain't going to be so fast... 20:22
lizmat ok 20:29
gotcha
20:38 lizmat_ joined 20:39 p6bannerbot sets mode: +v lizmat_ 20:40 lizmat left
pmurias Dynamicaly created sprintf formats are super rare, right? 20:49
20:51 Stummi6 joined
timotimo i would expect that 20:52
20:52 p6bannerbot sets mode: +v Stummi6, Stummi6 left
jnthn I figure so. We can always put a size limit on the cache. 21:04
AlexDaniel Zoffix++ # v6.d work 21:06
21:16 pmurias left, timotimo left 21:23 Ambroisie joined, Ambroisie left 21:36 sparklefarkle joined, sparklefarkle left
Geth rakudo: 45df171ae5 | (Elizabeth Mattijsen)++ | 2 files
Move the Any ~ Any candidate to Str.pm6

And reduce a level of indirection in that case.
21:36
rakudo: 327cae7c93 | (Elizabeth Mattijsen)++ | src/core/Hash.pm6
Reduce the number of nqp::getattr calls

According to jnthn:
   colabti.org/irclogger/irclogger_log...08-09#l623
Reduces the .moarvm file by 760 bytes. All little things help :-)
lizmat_ jnthn: is nqp::getattr(self,List,'$!todo') also auto-magically vivifying ? 21:41
jnthn lizmat_: To something, maybe to Mu; I forget :) 21:46
21:46 lizmat_ is now known as lizmat 21:53 rory9 joined, rory9 left 21:55 entonian joined, p6bannerbot sets mode: +v entonian 21:56 entonian left 22:00 Kaiepi left 22:09 lizmat left 22:12 Kaiepi joined, p6bannerbot sets mode: +v Kaiepi 22:14 lizmat joined 22:15 p6bannerbot sets mode: +v lizmat
Geth rakudo/master: 7 commits pushed by (Elizabeth Mattijsen)++ 22:48
lizmat this shaves 1856 bytes from .moarvm file 22:50
22:53 timo joined, p6bannerbot sets mode: +v timo, timo is now known as timotimo 23:03 Shnaw18 joined 23:04 p6bannerbot sets mode: +v Shnaw18, Shnaw18 left
jnthn :) 23:06
23:09 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Reduction spree in set_subset' 23:09
travis-ci.org/rakudo/rakudo/builds/414293399 github.com/rakudo/rakudo/compare/3...a1536d57a6
23:09 travis-ci left
MasterDuke woohoo, and my parse time is the lowest it's been in a while. 72s 23:09
jnthn :) 23:10
23:17 EXCEPTS joined 23:18 p6bannerbot sets mode: +v EXCEPTS 23:19 EXCEPTS left
timotimo sweet 23:20
same here fwiw
23:27 greppable6 joined 23:28 p6bannerbot sets mode: +v greppable6 23:51 IntPtr13 joined, IntPtr13 left