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
|