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.
01:03 ZzZombo joined, p6bannerbot sets mode: +v ZzZombo 05:07 MasterDuke left
lizmat Files=1255, Tests=76358, 347 wallclock secs (15.69 usr 5.68 sys + 2441.71 cusr 226.99 csys = 2690.07 CPU) 08:51
restarted the failing Travis build, and now it's green 09:03
so it was a flapper :-( 09:04
Geth rakudo: 6208c266ae | (Elizabeth Mattijsen)++ | src/core/Hyper.pm6
Rename private method

It handles iterators, not iterables.
09:52
nine Does Travis build MoarVM HEAD or what's in MOAR_REVISION? If the latter than a bump might fix a lot of flappers 09:58
lizmat not sure... 09:59
nine /home/travis/perl5/perlbrew/perls/5.14/bin/perl Configure.pl --prefix=/home/travis/build/rakudo/rakudo/install --backends=moar --make-install --git-protocol=https --gen-moar --moar-option=--cc=gcc-6 10:00
os it's MOAR_REVISION
lizmat so I guess I'll bump Moar and NQP, or will you ? 10:01
nine on it
Geth nqp: 6882fe62e4 | (Stefan Seifert)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp
Fix compilation of conditionals not actually coercing condition to full width

The code created a coercion register but never actually wrote to it. I can only assume that register re-use led to a useful value ending up in $coerce-reg by accident. This is supported by the experimental allocation of a dummy register which breaks NQP's build.
Unfortunately .coerce will release the source register unconditionally so we cannot just use the condition's result_reg as We do need that later for coercion to the conditional's result type.
10:04
nqp: 08c0de3310 | (Stefan Seifert)++ | tools/build/MOAR_REVISION
Bump MoarVM version to get the fix for uninitialized values
10:05
Ā¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...g1bf132125
rakudo: 9ac581bc4a | (Stefan Seifert)++ | tools/build/NQP_REVISION
Bump NQP version to get the fix for uninitialized values on MoarVM
rakudo: version bump brought these changes: github.com/perl6/nqp/compare/2018....g08c0de331
9221c08dac | (Elizabeth Mattijsen)++ | src/core/Hyper.pm6
lizmat I'm doing some timing on hyper ops, but the timings are all over the place :-( 10:30
nine Yeah, measuring multi threaded performance is terrible with the OS scheduler and the CPU's thermal management and SMT making it completely non-deterministic. All you can do is statistical analysis of preferrably 1000s of runs. 10:34
lizmat well, that's it: hyper ops aren't multi-threaded just yet anyway
nine Then the same still applies, just a bit less so :) 10:35
lizmat yeah, but going from 750 msecs to 1150 msecs back to 800 msecs within a few seconds 10:36
nine That's pretty short runs in any case
lizmat I guess... :-) 10:37
nine I've found the profiler to be much better at giving reliable information. Even with the total runtime fluctuating, the timing of individual calls did much less so 10:38
Geth rakudo: c03e71d574 | (Elizabeth Mattijsen)++ | src/core/Hyper.pm6
Make sure intermediates are Lists

So they don't get created with containers, which saves a lot of allocations and makes Asssociative related hyper ops about 30% faster.
10:57
11:01 pmurias joined, p6bannerbot sets mode: +v pmurias
pmurias nine: did you see by PR github.com/MoarVM/MoarVM/pull/994? 11:01
nine pmurias: yes, it's next on my list 11:02
pmurias: ah, yes, my mistake is clear now :) Actually, I think we can even simplify that. A user of nqp::serializetobuffer will not expect the data to be stored in tc->serialized anyway as the only user of that is the old MAST backend which is going away. 11:15
So we can just move the if (type) block up before the if (tc->compiling_scs && MVM_repr_elems(tc, tc->compiling_scs) &&
MVM_repr_at_pos_o(tc, tc->compiling_scs, 0) == (MVMObject *)writer->root.sc)
pmurias: so what's the connection between the JS backend and MoarVM? I was under the impression that none of my changes should affect other backends. 11:27
pmurias nine: the JS backends cross compiles itself using MoarVM 11:34
nine: I don't keep a pre-compiled bootstrapped JS backend around
nine ooh
pmurias nine: paste.debian.net/1051284/ - t/serialization/01-basic.t with a nqp::serializetobuffer test added at the end 11:36
nine: feel free to fix nqp::serializetobuffer how it's best, rather then we go through the silly code-review dance ;) 11:37
11:50 eater left 11:54 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build failed. Stefan Seifert 'Bump NQP version to get the fix for uninitialized values on MoarVM' 11:54
travis-ci.org/rakudo/rakudo/builds/453516618 github.com/rakudo/rakudo/compare/6...c581bc4ad4
11:54 travis-ci left
buggable [travis build above] ā˜  Did not recognize some failures. Check results manually. 11:54
lizmat restarted the failing job 11:56
Geth rakudo: 11cb4facf0 | (Elizabeth Mattijsen)++ | src/core/DateTime.pm6
Make basic argument checking on DateTime.later a lot faster

Improves performance of DateTime.later with about 15%, mostly because of a lot less allocations.
12:01
lizmat *fewer 12:03
timotimo fever allocations 12:05
nine less allocating? ;) 12:22
timotimo allocantation
lizmat it's either a "lot fewer allocations" or "lot less allocating" grammarly speaking 12:24
Geth nqp: 19653bf341 | (Stefan Seifert)++ | t/serialization/01-basic.t
Basic test for nqp::serializetobuf

Written by pmurias++
12:25
rakudo: b6292fe9ca | (Elizabeth Mattijsen)++ | src/core/DateTime.pm6
Make creation of DateTime a bit faster

Before, that used to be the best way. Apparently not so anymore. Makes
  .later about 5% faster.
12:41
lizmat I think there's a lot of relatively low hanging optimizing fruit hanging in DateTime still
12:42 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci NQP build failed. Stefan Seifert 'Basic test for nqp::serializetobuf 12:42
travis-ci.org/perl6/nqp/builds/453547762 github.com/perl6/nqp/compare/08c0d...653bf34129
12:42 travis-ci left
Geth rakudo: 0fa6988cd0 | (Elizabeth Mattijsen)++ | src/core/metaops.pm6
list of iterators can be a list
12:54
rakudo: 08fac0452f | (Elizabeth Mattijsen)++ | src/core/Date.pm6
Make basic argument checking on DateTime.later a lot faster

Improves performance of Date.later with about 30%, mostly because of a lot less allocations.
13:09
SmokeMachine .tell jnthn Iā€™m sorry, I know that was a long time ago... but had you thought about this? colabti.org/irclogger/irclogger_lo...-11-29#l94 13:17
yoleaux SmokeMachine: I'll pass your message to jnthn.
timotimo this is about github.com/FCO/rakudo/commit/6b18c...3d16aecef3 13:21
right?
the default reduce sub you have there seems rather wasteful performance-wise 13:22
Geth rakudo: 98d07cf6f9 | (Elizabeth Mattijsen)++ | src/core/Date.pm6
Make cloning a Date faster

Use nqp::ifnull instead of existskey ?? atkey !! attribute combo. Makes Date.later about 15% faster, and probably other Date operations as well.
timotimo but other than that at first glance it looks like an interesting addition
SmokeMachine timotimo: yes, about something like that, not necessarily that code... 13:23
timotimo: Iā€™ll try to make it better... but I think that would be a good think have the possibility to use that.. 13:25
^10 .classify: * %%2, :reduce{$^a + $^b} 13:28
timotimo: would a `agg.push: value` be better, or how would the default reduce sub be better? 13:30
Or should I use nqp? 13:33
13:35 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Make basic argument checking on DateTime.later a lot faster 13:35
travis-ci.org/rakudo/rakudo/builds/453542401 github.com/rakudo/rakudo/compare/c...cb4facf094
13:35 travis-ci left
lizmat I guess this is good news: twitter.com/alteholzDD/status/1061...4397501440 13:36
Geth rakudo: bf3575cca3 | (Elizabeth Mattijsen)++ | src/core/CompUnit/Repository/FileSystem.pm6
Bind constant list rather than assigning

Makes initialization a bit faster and with fewer allocations.
13:48
rakudo: 18ded174e5 | (Elizabeth Mattijsen)++ | 3 files
Make some initializations as Lists rather than Arrays

Because they are immutable in further usage, so this saves on creating containers and de-containerizing when accessing.
13:57 ufobat joined 13:58 p6bannerbot sets mode: +v ufobat 14:07 eater joined 14:08 p6bannerbot sets mode: +v eater
pmurias nine: I'll add the nqp::serializetobuf to the JVM backend 14:10
we don't have fudges for NQP so I think that's the best way to make it pass on the JVM 14:11
lizmat ++pmurias 14:13
14:28 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Make creation of DateTime a bit faster 14:28
travis-ci.org/rakudo/rakudo/builds/453551322 github.com/rakudo/rakudo/compare/1...292fe9caa2
14:28 travis-ci left
Geth rakudo: b463746daf | (Elizabeth Mattijsen)++ | 2 files
Replace foo === Type with nqp::eqaddr(foo.WHAT,Type)

Which is *much* faster that === on account of not having to call a sub, not having to wrap the result into a Bool, so a lot less allocating. Makes Date.later about 30% faster, and other Date / DateTime related things probably also significantly faster.
14:32
nqp: 846b8fcf23 | (Paweł Murias)++ | 3 files
[jvm] Implement nqp::serializetobuf
14:38
star/master: 13 commits pushed by (Steve Mynott)++
review: github.com/rakudo/star/compare/cd6...81f6d578c4
14:55
14:55 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci NQP build failed. Paweł Murias '[jvm] Implement nqp::serializetobuf' 14:55
travis-ci.org/perl6/nqp/builds/453579932 github.com/perl6/nqp/compare/19653...6b8fcf2348
14:55 travis-ci left
stmuk_ suffers the sense of imminent dread associated with starting a long ignored windows VM and trying a build on it 15:10
15:19 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Make cloning a Date faster 15:19
travis-ci.org/rakudo/rakudo/builds/453560583 github.com/rakudo/rakudo/compare/0...d07cf6f9c2
15:19 travis-ci left
SqrtNegInf Good news first, issue GH#2480 is fixed, lizmat++ 16:15
synopsebot GH#2480 [open]: github.com/rakudo/rakudo/issues/2480 [testneeded] Array built with hyper operations becomes immutable
16:16 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build failed. Elizabeth Mattijsen 'Replace foo === Type with nqp::eqaddr(foo.WHAT,Type) 16:16
travis-ci.org/rakudo/rakudo/builds/453578513 github.com/rakudo/rakudo/compare/1...63746daf51
16:16 travis-ci left
buggable [travis build above] ā˜  Did not recognize some failures. Check results manually. 16:16
lizmat restarted the one failing job 16:17
SqrtNegInf But several more programs having problems, slip and hyper operations interacting to create another 'immutable value' problem, opened a new issue
github.com/rakudo/rakudo/issues/2482
lizmat SqrtNegInf: will look after dinner for sure
bisectable6: old=2018.10 say |<1 2> Ā»xxĀ» 2 16:19
bisectable6 lizmat, Bisecting by exit code (old=2018.10 new=b463746). Old exit code: 0
lizmat, bisect log: gist.github.com/9aff8826b2a1b4a198...11e671aeec 16:20
lizmat, (2018-11-10) github.com/rakudo/rakudo/commit/1a...cbc8ed2ad9
Geth rakudo: bf3eb8ec9c | (Elizabeth Mattijsen)++ | src/core/DateTime.pm6
Make cloning a DateTime faster

Use nqp::ifnull instead of existskey ?? atkey !! attribute combo.
16:25
rakudo: a11d599f4b | (Elizabeth Mattijsen)++ | src/core/Date.pm6
Make Date.succ/pred and Date Ā± N about 3x as fast (usually)

This should make iterating over a range of Dates or a loop with ++$date about 3x as fast. Optimization based on the observation that if only the date value can change, we just need to clone the object and update the day value. Complicating factor could be the daycount attribute that also needs updating if it is set. If anything apart the day needs to change, then it will fallback to the old logic, creating a new object using the daycount attribute.
lizmat argh: s/date/day
17:21 dct joined, p6bannerbot sets mode: +v dct 17:29 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Make Date.succ/pred and Date Ā± N about 3x as fast (usually) 17:29
travis-ci.org/rakudo/rakudo/builds/453610980 github.com/rakudo/rakudo/compare/b...1d599f4b88
17:30 travis-ci left
Geth rakudo: lizmat self-assigned Slip and hyper operations interact to cause immutable values github.com/rakudo/rakudo/issues/2482
78f642039f | (Elizabeth Mattijsen)++ | src/core/Hyper.pm6

Anything else will have to go through Foo.new(...), which may involve a slowdown for Array's. But I intend to give these special handling anyway, so that should be ok for now. Fixes R#2842.
18:16
lizmat hmmm.. seems I did *not* spectest that one and borked 1..N >>+>> 42 18:31
working on that
19:03 lizmat left 19:04 lizmat joined, p6bannerbot sets mode: +v lizmat
Geth star: 15147954a0 | (Steve Mynott)++ | tools/star/release-guide.pod
claim credit and pass buck
19:11
19:12 stmuk_ left
Geth rakudo: 63ae9dcc5d | (Elizabeth Mattijsen)++ | src/core/Hyper.pm6
Check if a class can .STORE before .newing it

This fixes the issue caused the last commit with (1..42) >>+>> 666.
19:19
lizmat stmuk++ # doing Rakudo Star distributions in the past, and hopefully in the future despite recent events 19:20
moritz: twitter.com/steve_mynott/status/10...1866937345 19:22
moritz lizmat: retweeted 19:27
stmuk++
lizmat moritz++
dogbert11 meh: This representation (P6num) cannot unbox to a native int (for type BOOTNum) 19:36
at /home/dogbert/repos/rakudo/install/bin/../share/nqp/lib/MAST/Nodes.nqp:65 (/home/dogbert/repos/rakudo/install/share/nqp/lib/MASTNodes.moarvm:write_uint32)
timotimo dogbert11: can you give us the caller of that? 19:50
20:32 cog joined, p6bannerbot sets mode: +v cog
dogbert11 timotimo: I get it sometimes when running t/spec/S15-nfg/emoji-test.t on my 32 bit system. It happens before any tests in that file are run. 20:51
timotimo that makes sense, since MASTNodes is used in the compiler
dogbert11 here's a gist with more output: gist.github.com/dogbert17/f57316a4...e1e3b9f465 20:52
timotimo MASTNodes.nqp lives in moarvm's repo and is auto-generated by update_ops.p6 20:55
would be interesting to find out where exactly a num is added into the %labels hash 20:56
could be line 853
there's a + there, maybe turn it into an add_i
could you try that change and see if it helps?
Kaiepi why doesn't SocketHandle in the jvm use SocketChannel instead of ByteChannel 20:57
this makes it impossible for me to implement getsockopt/setsockopt on the jvm
timotimo as long as your changes pass spectests, and maybe also behave sensible apart from that, i'm sure you can change that? 20:58
Kaiepi i'll think about it 20:59
dogbert11 timotimo: where is MASTNodes.nqp loacated
timotimo moarvm's lib folder has a MAST folder
Kaiepi i guess i'll just stub getsockopt/setsockopt on the jvm for now 21:00
it's almost done, but i gotta wait for the async .native-descriptors pullreq to get merged before this can since i depend on getting the raw socket of async server connections 21:01
btw can someone review that pullreq? 21:02
dogbert11 timotimo: $pos := $pos + $offset; -> nqp::add_i($pos, $offset); is that the correct syntax?
or is it $pos := nqp::add_i($pos, $offset); 21:03
timotimo yes
oh
yes, it still needs the bind
21:03 pmurias left 21:04 pmurias joined, p6bannerbot sets mode: +v pmurias
dogbert11 ok, will change and rebuild MoarVM 21:04
timotimo i think just "make install" would do it
though i'm not sure
dogbert11 I'll do that as well 21:05
no improvement I'm afraid 21:09
timotimo can you put a debug note("foo") in there to see if the code actually gets hit? and another in a place that definitely runs (for example the one that explodes) to see if your code changes actually reach the process?
dogbert11 ok 21:10
timotimo i mean there's always also moar-remote ... 21:15
dogbert11 do I have to rebuild rakudo as well? 21:16
timotimo oh 21:17
yeah
actually
not 100% sure, but i think so
dogbert11 hmm, no effect, I can't see anything being written out. I'm obviously doing something wrong 21:23
timotimo hm, so it didn't reach that 21:24
perhaps nuke the install folder
and after running "make install" in moar check if perhaps the MAST/Nodes.nqp file was regenerated without your changes before installation
dogbert11 tricky stuff :) 21:25
Geth rakudo: fa5215b61b | (Elizabeth Mattijsen)++ | src/core/Hyper.pm6
Make sure immutable structures also work with Associatives

  - such as: dd (a => 42, b => 666).Map >>+>> 2 # Map.new((:a(44),:b(668)))
  - alas, we need customized Associative handling for QuantHashes
   - .STORE expects Pairs for QuantHashes
21:29
dogbert11 rebuilding rakudo and now my screen is filled with 'foo' 21:37
timotimo ah, success 21:38
dogbert11 in a sense at least. The test file passed once and printed a lot of foo's in the beginning. the second time it crashed before any foo was written 21:40
timotimo where exactly does the foo live?
i mean, there's also an accessor to the labels hash so outside code can directly meddle with it and accidentally store a num instead of an int 21:41
like, in theory you could output a backtrace whenever the labels hash gets pulled out
dogbert11 the foo is printed on the line before the one changed to add_i 21:44
timotimo AFK 21:48
22:21 pmurias left
gfldex lizmat: thanks for the DateTime speed up :) 22:41
21589 processed in 2.9981314s with 7200.818471281177 stations/s
that used to be ~6800 /s
22:41 dct left 22:42 dct joined, p6bannerbot sets mode: +v dct 22:49 dct left 22:50 cog left