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:42 Ven`` joined 00:43 p6bannerbot sets mode: +v Ven`` 02:34 Ven`` left
AlexDaniel robertle: so what's the current situation? 03:42
04:54 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke, MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke, Ven`` joined 04:55 p6bannerbot sets mode: +v Ven`` 05:06 Ven`` left 06:20 lizmat left 06:23 MasterDuke left 06:28 llfourn left 06:36 llfourn joined 06:37 p6bannerbot sets mode: +v llfourn 06:43 llfourn left 06:46 lizmat joined, p6bannerbot sets mode: +v lizmat
|Tux| Rakudo version 2018.12-95-gafccc2c02 - MoarVM version 2018.12-13-g473324ee3
csv-ip5xs0.949 - 0.965
csv-ip5xs-206.929 - 7.224
csv-parser22.124 - 22.636
csv-test-xs-200.438 - 0.440
test7.746 - 8.002
test-t1.873 - 1.935
test-t --race0.846 - 0.851
test-t-2030.387 - 31.839
test-t-20 --race9.893 - 10.196
08:35
AlexDaniel samcv: I'm wondering… can we abuse atom-language-perl6 to render some basic POD6? D#167 10:11
synopsebot D#167 [open]: github.com/perl6/doc/issues/167 [external] GitHub Pod Parsing
lizmat Files=1264, Tests=87998, 373 wallclock secs (19.79 usr 6.16 sys + 2666.42 cusr 231.15 csys = 2923.52 CPU) 10:15
10:40 AlexDaniel left 10:41 AlexDaniel joined, p6bannerbot sets mode: +v AlexDaniel
Geth rakudo: c11e7e6bcd | (Elizabeth Mattijsen)++ | src/core/Rat.pm6
Streamline Rat == Rat, Rat == Int, Int == Rat

  - make Rat == Int / Int == Rat up to 15x faster
  - make Rat == Rat upto 4x faster
  - fixes Inf.Rat == 1/3 and 1/3 == Inf.Rat R#2578
  - use nqp ops instead of accessor methods
10:59
synopsebot R#2578 [open]: github.com/rakudo/rakudo/issues/2578 Inf.Rat == Rational bug
roast: 6feffac83c | (Elizabeth Mattijsen)++ | S32-num/rat.t
Add tests for R#2578
11:03
synopsebot R#2578 [open]: github.com/rakudo/rakudo/issues/2578 [testneeded] Inf.Rat == Rational bug
jnthn m: class C { has $!value; method m() { say $!value; my $value = 42; } } 11:43
camelia ( no output )
jnthn m: class C { has $!value; method m() { say $!value; my $value = $!value; } }
camelia ( no output )
Geth rakudo: 23663609a7 | (Jonathan Worthington)++ | src/Perl6/Actions.nqp
Fix missing redeclaration of bound outer error

The code `my $a = 42; { say $a; my ($a) }` would fail to give an error that `$a` cannot be redeclared because it is already bound. The error was correctly reported in the non-signature case of a declaration (e.g.
  `my $a = 42; { say $a; my $a }`). This makes sure it reports in both
cases, fixing #2570.
11:56
synopsebot RAKUDO#2570 [open]: github.com/rakudo/rakudo/issues/2570 Missing "is already bound to an outer symbol" compilation error when (re)declarations with list assignment are done
roast: dd1b3a8b3c | (Jonathan Worthington)++ | S02-names-vars/variables-and-packages.t
Test error for `my $a; { say $a; my ($a) }`

The existing test didn't cover the case where the illegal declaration of a symbol bound to an outer variable was located in a signature.
11:58
rakudo: 4fecb72a53 | (Elizabeth Mattijsen)++ | src/core/Rat.pm6
Streamline other Rat-Rat Rat-Int Int-Rat comparisons

  - for > >= < <= <=>
  - use nqp ops solely
  - add return signatures
  - about 1.4x as fast
  - left original code as comment for internal documentation
12:09
rakudo: e0cd1d9992 | (Elizabeth Mattijsen)++ | src/core/Rat.pm6
Add some more obvious Rat return types
12:32
rakudo: d195e14623 | (Elizabeth Mattijsen)++ | src/core/Rat.pm6
Streamline negating Rat / FatRat

  - instead of creating new object using .new
  - just clone the object and negate the numerator
  - makes it about 3x as fast
12:51
13:07 lucasb joined, p6bannerbot sets mode: +v lucasb
Geth rakudo/more-local-lowering: 11 commits pushed by (Jonathan Worthington)++
review: github.com/rakudo/rakudo/compare/9...3f929f05de
13:26
jnthn Just a rebase, so I can continue working on it with all the latest stuff 13:27
lizmat so what was the reason again for not upgrading Rats to FatRats automatically rather than making them Nums ? 13:34
lizmat just implemented that
the fallout in spectest is remarkably small, mostly specific tests to Num that now fail
timotimo memory exhaustion, performance degradation 13:35
lizmat is that it really?
we're touting Rats as one of the USP's of Perl 6, yet they silently downgrade to floats if we get out of precision 13:36
I think that is much more damaging than performance degradation
jnthn I think it was also that for the sorts of calculations you're likely to actually run into that in, chances are Num might have been a better choice anyway. 13:37
timotimo the first thing people will throw at our rats is probably adding reciprocals, which gets really bad really quickly :) 13:39
m: my $start = 0.0; for ^100_000 { $start += FatRat.new(1) / $_ } 13:40
camelia ( no output )
timotimo m: my $start = 0.0; for ^100_000 { $start += FatRat.new(1) / $_ }; say $start.perl
camelia FatRat.new(1, 0)
timotimo oh?
ah
m: my $start = 0.0; for ^100_000 + 1 { $start += FatRat.new(1) / $_ }; say $start.perl
camelia (timeout)
timotimo m: my $start = 0.0; for ^10_000 + 1 { $start += FatRat.new(1) / $_ }; say $start.perl
jnthn I'm pretty sure that isn't what the typical programmer is going to be doing. :P 13:41
camelia FatRat.new(597313034085775894957419063900720435075990271615035016466782973836978960833016759908348939758280349893584359200829987209579949248845718511404010106584326236570756261967912057051149825856817631553578794190662280234629951790018159277551900295…
timotimo m: my $start = 0.0; for ^1_000 + 1 { $start += FatRat.new(1) / $_ }; say $start.perl.chars
camelia 881
timotimo m: my $start = 0.0; for ^10_000 + 1 { $start += FatRat.new(1) / $_ }; say $start.perl.chars
camelia 8705
13:45 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke, MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke
Geth rakudo/more-local-lowering: 852a593d98 | (Jonathan Worthington)++ | t/packages/Test/Helpers/QAST.pm6
Use a fake nqp::op for mark start/end of test QAST

The variable approach won't work out now that we're lowering lexicals into locals, which loses their names.
13:51
jnthn Well, that gets me `make test` clean on that branch at least...
And 2 unhappy spectests 13:55
Hm, and 1 seems to be because of a tickled spesh bug 13:57
Ulti as someone who's worked in scientific programming can I gently suggest lizmat is right thinking on this 14:01
if a Rat can become a Num silently the value of it ever being a Rat is low
lizmat R#2580 for reference 14:02
synopsebot R#2580 [open]: github.com/rakudo/rakudo/issues/2580 [CONSENSUS] Why don't we upgrade Rats to FatRats instead of Nums ?
Ulti it should either have a hard exception raising edge to the use of a Rat or go into a pathologically bad use case for the Rat being fat
then Im like oh I need more RAM not oh why do I have a weird numeric bug?
added my $0.02 14:07
lizmat Ulti++ 14:08
AlexDaniel lizmat: so basically you're saying that FatRats should be the default? 14:09
lizmat no, I'm saying that as soon as an operation exceeds the Rat range on an operation, it becomes a FatRat, rather than a Num
MasterDuke that's sort of like saying FatRat is the default, Rat is just an optimization/implementation detail? 14:10
AlexDaniel yeah, I'm confused
lizmat well.. I guess you could argue it that way as well 14:11
AlexDaniel also, does it really become a Num? I thought just the denominator becomes a Num 14:12
lizmat except that 2/3 will still be a Rat
timotimo no the whole thing becomes a Num
lizmat it really because a Num
*becomes 14:13
AlexDaniel Ulti: you can have Rat typecheck whenever you want to ensure precision 14:17
m: my Rational $x = ([+] 1 XĂ· 1..99); dd $x
camelia Type check failed in assignment to $x; expected Rational but got Num (5.177377517639622e0)
in block <unit> at <tmp> line 1
AlexDaniel m: my Rational $x = ([+] 1.FatRat XĂ· 1..99); dd $x
camelia FatRat $x = FatRat.new(360968703235711654233892612988250163157207, 69720375229712477164533808935312303556800)
AlexDaniel m: my Rational $x = ([+] 1 XĂ· 1..9); dd $x
camelia Rat $x = <7129/2520>
AlexDaniel m: dd [/] 1..21 14:19
camelia 1.9572941063391263e-20
AlexDaniel wonders what's the golf for getting a Num
MasterDuke if Rat -> FatRat became the default, would it make sense (or be possible) to remove FatRat altogether?
just have Rat, with the implementation difference just be an optimization detail?
timotimo hmm, then we can't use native int in Rat at all 14:20
MasterDuke like how we only have Int, but there's the smallint/bigint distinction/optimization in the MoarVM code that works on Ints 14:21
lizmat my class Rat is Cool does Rational[Int, Int] { # timotimo
timotimo oh
because our uint is bad?
lizmat it's not using uint atm anyway
well... I guess
all of the internal logic assumes Int rather than int fwiw 14:22
timotimo mhm
lizmat so we'd not be losing any performance if we would just get rid of FatRat altogether :-)
AlexDaniel fwiw this change will have to be versioned (6.e)
timotimo i don't have the concentration and patience to spread "int" all over the QRegex/NFA.nqp file 14:23
lizmat timotimo: does it help ?
MasterDuke timotimo: i was just looking at those functions myself
timotimo at the moment it doesn't even run :)
lizmat otherwise I might have the determination at least
MasterDuke i notice a lot of `if $nfadebug`, where $nfadebug is just defined as `my $nfadebug` 14:24
timotimo i put the results of profiling into #moarvm, which shows that there's a bunch of BOOTNum being allocated
MasterDuke can those if's be optimized out? or should that be `my constant $nfadebug = 0`?
timotimo not like that at least
especially since nfadebug is supposed to be specified via an env var at run time 14:25
so constant is too early
lizmat MasterDuke timotimo perhaps the nfadebug stuff could be put into a source converter logic that would eradicate that code unless specifically wanted ?
AlexDaniel m: my $x = ([+] 1.FatRat XĂ· 1..9999); dd $x
lizmat ah, ok runtime
camelia FatRat $x = FatRat.new(597306931336728925987684846824054295562560760543405396200454739202668259285244563792071357505464405320823201953997922106513789282608343343607573013112635198827211877356253504659634305795875721780867536308742111512487140721579811…
timotimo i have a branch that makes nqp::atkey on nqp::getenvhash constant, which allows access to NFA_DEBUG run-time-constant and can throw out these checks 14:26
AlexDaniel heh I expected it to timeout…
timotimo it's fiddly, though
and it's also not so great that return values are always pushed through dentout
jnthn Hurrah, think I found a way to keep S02-names/caller.t passing with my lexical to local lowering branch :)
timotimo \o/
more lexical to local lowering is very appreciated
jnthn Will spectest while I go to langauge class; bbiab
timotimo viel spaĂź! 14:27
MasterDuke timotimo: $nfadeb is only set here `$nfadeb := nqp::existskey(nqp::getenvhash(),'NQP_NFA_DEB');`, does your branch help with nqp::existkey also? 14:28
timotimo oh, i think it does
however, once the result gets assigned somewhere, the benefit disappears
so "if $nfadeb" will have to be replaced with getenvhash + existskey everywhere
MasterDuke hm, commenting out all the `<something> if $nfadeb` lines in optimize, mergesubstates, mergesubrules, addedge, and addrule didn't seem to make anything faster 14:30
timotimo the calls themselves don't take much time
er, when nfadeb is turned off i mea 14:31
MasterDuke i thought there'd be a little change, but i guess no particular reason to spend much more time on $nfadeb 14:33
timotimo, lizmat: didn't you do some recent benchmarking of nqp::setelem? 14:34
lizmat not me I don't think 14:35
MasterDuke *nqp::setelems
timotimo i do believe it was you who at least told me it wasn't worth putting it into many more places
lizmat timotimo: ah, but that was not the result of *recent* benchmarking :-) 14:36
timotimo mhm
lizmat let me put it this way: it had a significant impact on the cases where it wouldn't matter
like pushing something less than ~ 5 times or so
MasterDuke ah, i see that nqp::setelems was using a variable and that variable was then checked if it was > 3, which made me wonder if it's usually less than 3 and we should get rid of the nqp::setelems 14:38
but i just turned on the nfa log and that value was actually never less than 3, and got as high as 21982 14:39
for this code: sub prefix:<n1>($) {42}; sub prefix:<n2>($) {42}; sub prefix:<n3>($) {42}; sub prefix:<n4>($) {42}; 14:40
timotimo ha
Geth rakudo: 92321beba7 | (Elizabeth Mattijsen)++ | src/core/Int.pm6
Make Int.Rat / Int.FatRat about 4x as fast

As the numerator is an Int anyway, and the denominator is always one in the case of an Int being coerced, we don't actually need any checks and can just directly create the object using nqp ops.
14:43
lizmat this specifically also makes the creation of Duration about 3x as fast 14:45
timotimo *nice*
lizmat well, if you create a Duration with an Int value, duh 14:47
timotimo right 14:49
MasterDuke timotimo: do you know which functions are allocating all those BOOTNums? 14:53
timotimo yes 14:54
gimme a minute for cro and its dependencies to recompile
oh
never mind that!
14:54 Ven`` joined 14:55 p6bannerbot sets mode: +v Ven``
timotimo MasterDuke: mergesubstates, optimize, isa (from nqpmo.nqp:1292), sanity_check (from lib/MAST/Nodes.nqp:577), capnames (NQPP6QRegex.nqp:1377) 14:58
MasterDuke currently, with some missing int's thrown in and a couple other pico-optimizations, i have increased the speed of my sample code by 0%
timotimo nice. 14:59
MasterDuke off to a roaring start in 2019 15:00
AlexDaniel doesn't mind that at all unless it's ≥ 0%
whoops flip that sign please 15:01
lizmat hehe
AlexDaniel should write tests for his messages before sending them
lizmat
.oO( testy messages )
japhb lizmat: *Why* does the Rat implementation not use native int denominators? 15:02
Or is that info lost to the depths of time?
lizmat probably a deficiency in parametric role application
# XXX: should be Rational[Int, uint] 15:03
japhb Ah
lizmat my class Rat is Cool does Rational[Int, Int] {
japhb wonders if that limitation is still there
lizmat m: role A[::T] { my T $a = 42; say $a }; class B does A[int8] { } 15:05
camelia 5===SORRY!5=== Error while compiling <tmp>
Could not instantiate role 'A':
Type check failed in assignment to $a; expected int8 but got Int (42)
at <tmp>:1
japhb That's not the bug I was expecting. 15:06
Geth rakudo: de933656bd | (Elizabeth Mattijsen)++ | src/core/Duration.pm6
Streamline Duration.new

  - make it a multi
  - makes Duration.new(Rat) about 4x as fast (most common case, I would say)
  - makes Duration.new(Mu) about 20% faster
15:07
lizmat japhb: yeah, maybe some progress was made, but it definitely is not there yet
in any case, all of the Rat internals assume bigints 15:08
to really work with that, we'd have to do quite some work
japhb I guess the other question is whether uint denominator was a premature optimization now that smallint exists 15:09
timotimo smallint only goes up to 32bits, though 15:14
lizmat japhb: what would using a smallint give us?
all native int ops are 64bit anyway (well, on a 64bit machine)
timotimo smallint is just a special case in storage of Int
MasterDuke oooo, may now have a very mildly noticeable speedup
timotimo MasterDuke: have you tried it with the benchmark i was using?
how long does your test code run? mine was like 15 seconds 15:15
MasterDuke timotimo: what were you using? i've just been trying with what i showed above
japhb lizmat: as timotimo says, on MoarVM our supposed bigint is sometimes optimized to a 32-bit int anyway.
MasterDuke hm, now i'm getting a segfault during the --profile-compile, can't check if BOOTNum allocations are down 15:16
timotimo github.com/muldis/Muldis_Object_No...tation.pm6
japhb Of course, it's not as efficient as a true native uint for all-native calculations, but I could imagine it may actually be better for mixed calculations with "true" bigints, because the mixed math is all occuring in the VM, not up at the Rakudo layer. 15:17
MasterDuke hm, works fine if i disable spesh, not sure how useful that will be though... 15:18
m: 773672 - 465217 # oh, still a reduction in BOOTNums 15:20
camelia WARNINGS for <tmp>:
Useless use of "-" in expression "773672 - 465217" in sink context (line 1)
MasterDuke m: say 773672 - 465217 # oh, still a reduction in BOOTNums
camelia 308455
MasterDuke timotimo: how do i test with that code? just clone and `perl6 -I . -M Muldis::Reference::Object_Notation -e ''`? 15:23
timotimo i literally use the file as the perl6 file to run
it shouldn't precompile, you see
is mergesubrule supposed to be allocating one hash per run? maybe we can get that down? 15:25
ah 15:26
well, when the first thing it does is clone %caller_seen, that's what you get i guess
MasterDuke timotimo: do you see that comment in optimize() about a small N^2 dup remover? maybe that's an opportunity? 15:27
timotimo maybe first measure how much time that part actually takes 15:29
so as not to improve something that takes like 0.1% of optimize time in total
MasterDuke crazy talk
timotimo: i'm on my laptop right now, so not the best benchmarking platform, but there might be a small (less than 1s) speedup on the muldis grammar 15:34
guess i should move my changes over to the desktop so i can spectest and do better benchmarking
timotimo you can, if you want to, send me the diff :) 15:35
MasterDuke timotimo: gist.github.com/MasterDuke17/add2c...899524a56a 15:36
15:39 Ven` joined, p6bannerbot sets mode: +v Ven` 15:40 Ven` left
MasterDuke spectests clean 15:55
timotimo i see numbers decrease 15:59
MasterDuke there are still about 400k BOOTNum allocations in mergesubstates. however, i think i've got all the spots that i can and the rest are from operations on arrays (e.g., `@a[2] + @b[3]`)
timotimo: time as well as allocations? 16:00
timotimo 8.185k, 8.911k, 4.598k, 4.296k, 1.686k, 883k
8.185k, 9.982k, 6.209k, 4.296k, 1.686k, 883k
Geth rakudo/more-local-lowering: 871b6f5462 | (Jonathan Worthington)++ | 2 files
Restore CALLER:: behavior on non-dynamic vars

We retain the lexical slot, but fill it with something that will always come out as non-dynamic in the PseudoStash check, thus restoring the behavior expected in the spectests. It'd be nice to be able to fully do away with this at some point, but that needs either a better mechanism or a spec change.
16:01
jnthn Hurrah, now a clean spectest on that branch :) 16:02
timotimo The profiled code ran for 17,053.35ms
The profiled code ran for 17,548.32ms
so yeah, half a second better (in profile mode)
MasterDuke so a definite improvement, but small 16:03
timotimo not entirely sure if it gets as much faster without profiling
408 gc runs vs 388 gc runs
MasterDuke timotimo: you weren't getting a segfault while profiling? 16:04
timotimo no
Geth rakudo/master: 14 commits pushed by (Jonathan Worthington)++
review: github.com/rakudo/rakudo/compare/d...36ca4dfae1
16:06
jnthn I've a bit more to do on the lowering front, but will make a new branch to explore that, meanwhile, the stuff I've done so far can get some more testing. 16:07
timotimo oooh
MasterDuke i'm seeing a definite speedup non-profiled, but it's pretty small. about 18.8s for the muldis grammar before my change, about 18.2s after 16:16
gotta afk for a while, but i'm going to commit what i have now since it spectested clean 16:17
timotimo measurements are pretty noisy on my machine, but a noticeable bit faster than yours are
MasterDuke still needs to get new equipment, those Zen 2s are looking pretty good 16:19
timotimo :)
Geth roast: 975188e6c3 | (Elizabeth Mattijsen)++ | S32-num/rat.t
Fix typo, spotted by Brad Gilbert++
16:23
nqp: 2c8b03a76b | (Daniel Green)++ | src/QRegex/NFA.nqp
Add some ints and other micro-opts to NFA code

Reduces BOOTNum allocations when compiling and makes compiling slightly faster.
AlexDaniel 64 cores, hmm. That's pretty cool 16:24
|Tux| Rakudo version 2018.12-116-gd836ca4df - MoarVM version 2018.12-13-g473324ee3
csv-ip5xs0.949 - 0.963
csv-ip5xs-207.071 - 7.090
csv-parser22.721 - 23.329
csv-test-xs-200.425 - 0.435
test6.987 - 7.670
test-t1.880 - 1.930
test-t --race0.833 - 0.844
test-t-2030.682 - 32.127
test-t-20 --race9.814 - 9.913
16:28
timotimo good: that's already post jnthn's code merges. bad: test-t looks kinda slow? 16:32
lizmat timotimo: not slower than the past days 16:33
jnthn I'd not expect anything massive immediately from what I just did; it's just the first part of the job, and the thing it most helps is giving PEA more to look at, and of course that's very much a MoarVM branch right now :) 16:34
timotimo OK
though i was hoping more regular old blocks could become inlined from all of this
jnthn timotimo: Seems I still need to do some more changes to convince that to happen :) 16:35
timotimo OK!
good work so far anyway :)
16:57 pmurias joined, p6bannerbot sets mode: +v pmurias
pmurias gist.github.com/pmurias/696c5a9278...395ecbde34 - a script to emit version of tests that run in precompilation mode (has still a few false fails) 16:58
16:58 pmurias left, pmurias joined, p6bannerbot sets mode: +v pmurias
pmurias I mean what do we want to do with the failures and how to we want to integrate the running of the tests? 16:59
jnthn pmurias: How faily is it? 17:03
pmurias jnthn: maybe like 20 real failing tests 17:06
jnthn Ah, that's not so many
pmurias I'll get rid of the false fails and count it properly
jnthn I guess "golf and file issues"
pmurias jnthn: it's mostly some super weird things
jnthn Maybe there's some common root causes
pmurias for a lot of them there are 17:07
like 5 set tests fail due to a similiar bug
jnthn I now have a prototype of lowering $_ to a local, which in turn lets `for ^10_000_000 { }` run a bunch faster (since spesh can see that the wasteful boxing operation of the unused $_ can go away). It causes epic amounts of failure, however...now to see why :) 17:09
17:10 Ven`` left
pmurias jnthn: hmm, do you think adding an extra "test under precompilation" target would be a good idea? 17:13
jnthn pmurias: Yeah, a makefile target for that sounds nice to have 17:14
pmurias jnthn: I'm think of maybe adding an extra option to the harness like we have --fudge 17:15
jnthn Hmm, could also work 17:16
17:26 lucasb left 17:32 pmurias left
jnthn grmbl, seems GitHub notifications are a bit delayed 17:41
Geth rakudo/lower-topic: f741374ca6 | (Jonathan Worthington)++ | src/Perl6/Optimizer.nqp
Allow lowering of direct lexical params too

Some cases of `$_` that we'll want to lower look like this. I'm not sure it will net anything else, but it tests clean, and will allow for easier bissection later if it does cause problems.
17:44
jnthn ah, it missed the first couple in that branch 17:46
Anyway, all groundwork; the change that causes all the trouble I'll keep locally and debug some more tomorrow. :) 17:47
17:49 DrForr joined
jnthn o/ 17:49
17:49 p6bannerbot sets mode: +v DrForr 17:54 pmurias_ joined, p6bannerbot sets mode: +v pmurias_
Geth rakudo: 29d7f70958 | (Elizabeth Mattijsen)++ | src/core/Rat.pm6
Streamline Rat +/- Rat, Int +/- Rat, Rat +/- Int

  - use nqp::getattr instead of accessors
  - make sure each attribute is only fetched once
  - makes these about 20% faster
17:59
dogbert11 ZOFFLOP: t/spec/S32-io/IO-Socket-Async.t and t/spec/MISC/bug-coverage-stress-6.d.t 18:10
MasterDuke jnthn: hm, looks like the branch you just merged to rakudo loses the optimization i just made to nqp. i.e., time went from ~18.8s before my change, down to ~18.2s after my changes, back up to ~18.8s after your merge 18:19
timotimo that's weird 18:24
MasterDuke timotimo: can you repro?
timotimo i mean the changes were pretty much all in nqp parts of the codebase?
like, before actual perl6 code runs?
measurements on my system are far too noisy to see clearly :| 18:25
MasterDuke it might be that the example code just shows some problem, not that his branch directly effects my changes 18:26
timotimo what does stagestats look like? 18:27
MasterDuke i forgot to look beforehand
timotimo good thing we have shareable ;)
MasterDuke but that won't have a rakudo with my changes and not jnthn's 18:28
timotimo ah
right
MasterDuke hm, but it should have a rakudo before and after jnthn's merge, which theoretically would show some difference even without my nqp changes 18:34
timotimo: btw, that deduping code gets called a ton of times, but the longest time it took to run was 0.377s, next longest was 0.01s, and it very quickly gets even shorter from there 18:38
for that muldis grammar code
timotimo mhm
18:42 pmurias_ left 18:52 pmurias_ joined, p6bannerbot sets mode: +v pmurias_
MasterDuke timotimo: i think i just got two extremes in the noise. i just looked at stage parse at rakudo HEAD and after reverting the merge commit and it looks pretty similar (within the noise) 19:22
timotimo: does this segfault for you? `p6 --profile-compile -e 'sub prefix:<n1>($) {42}; sub prefix:<n2>($) {42}; sub prefix:<n3>($) {42}; sub prefix:<n4>($) {42};'` 19:36
timotimo yeah it does 19:49
memory corruption, eh? 19:51
MasterDuke weird that it doesn't for the longer muldis grammar compile
timotimo it's trying to atpos_o on an object that's not actually a valid object 19:53
haha, valgrind makes it work 19:54
fun
MasterDuke yup, so does disabling spesh, but not jit 19:55
19:57 SqrtNegInf joined, p6bannerbot sets mode: +v SqrtNegInf
timotimo i'm trying MVM_GC_DEBUG ... and there it is! 20:01
20:04 MasterDuke left
timotimo MoarVM panic: Collectable 0x5c03a78 in a gen2 freelist accessed 20:05
is what i'm seeing
20:50 pmurias_ left 20:54 pmurias joined, p6bannerbot sets mode: +v pmurias 21:22 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke, MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke
MasterDuke timotimo: an easy fix? 21:22
timotimo i was rudely interrupted and distracted 21:23
dogbert11 by the cats :) 21:24
timotimo among other things ;)
21:29 ufobat joined 21:30 pmurias left, p6bannerbot sets mode: +v ufobat 21:32 pmurias joined, p6bannerbot sets mode: +v pmurias 21:37 llfourn joined
MasterDuke timotimo: as for getting rid of the remaining BOOTNums, i suspect converting nqp's default from float to int is required. if i get my branch rebased up to HEAD, think you'd be able to help troubleshooting? i got it to the point of building nqp and passing it's tests, but rakudo wouldn't build 21:37
21:37 p6bannerbot sets mode: +v llfourn
timotimo oof 21:38
it sounds like an intimidating project
MasterDuke well, i might just need a pointer to where to look for debugging the rakudo failure. IIRC i wasn't even sure how/where to look 21:39
timotimo i have a cat head in my hand 21:41
i need dasher again lol 21:43
MasterDuke fwiw, i think it'll take me a bit to rebase. it's been a while
timotimo mhm
MasterDuke and my free time has been drastically reduced. but i'm hoping to get a little time next week 21:44
timotimo i think he actually almost fell asleep with his head in my hand <3 21:46
MasterDuke my main distraction now likes to crawl all over me when i'm on the computer and ask to watch videos of babies and doggies 21:47
22:00 ufobat left
MasterDuke is there any good way to fix merge conflicts in the nqp bootstrap files? 22:12
[Coke] I think you have to regen them. 22:14
MasterDuke [Coke]: yeah, guess that makes sense 22:15
ugh, that dies with `This representation (VMArray) cannot unbox to a native string (for type NQPArray)`. back to debugging... 22:18
Geth rakudo: 6dad5caf3b | (Elizabeth Mattijsen)++ | src/core/Rat.pm6
Streamline Rat normalization

  - save 2 Scalar allocations per normalization
  - makes it about 15% faster
22:21
MasterDuke oh right, i also depended on a MoarVM branch...
Geth rakudo: daeb7f2634 | (Elizabeth Mattijsen)++ | 5 files
Remove accumulated trailing whitespace

No functional difference.
22:28
22:29 robertle left 22:54 Ven`` joined, p6bannerbot sets mode: +v Ven`` 23:03 pmurias left
Geth rakudo: 395d633db1 | (Elizabeth Mattijsen)++ | src/core/Rat.pm6
Streamline final stage of Rat normalization

  - use multi's to decide about Rat vs FatRat
  - makes the Rat case about 3% faster
  - makes the FatRat case about 2x as fast
23:22
lizmat and that concludes my hacking for today
good night, perl6-dev& 23:23
jnthn Nice! 23:31
lizmat++
timotimo can't wait for "remove accumulated trailing whitespace, no functional changes" to somehow end up the result of a bisect :D 23:42