00:16 guifa2 joined, guifa2 left, guifa2 joined 00:26 guifa2 left 01:21 sena_kun joined 01:22 Altai-man_ left 02:26 squashable6 left 02:30 bloatable6 joined, sourceable6 joined 02:32 bloatable6 left, statisfiable6 joined, committable6 joined, quotable6 joined, greppable6 joined, releasable6 joined, unicodable6 joined, notable6 joined, evalable6 joined, nativecallable6 joined, tellable6 joined, benchable6 joined, reportable6 joined, greppable6 left 02:33 reportable6 left, linkable6 joined, reportable6 joined, committable6 left, bloatable6 joined, squashable6 joined, coverable6 joined, greppable6 joined 02:34 committable6 joined, shareable6 joined 03:13 pamplemousse left 03:19 Altai-man_ joined 03:22 sena_kun left
AlexDaniel Altai-man_: ta-daaaa github.com/Raku/whateverable/commi...t-38762052 04:41
weekly: Xliff++ improved Blin output to make the release work easier/more awesome. This motivated AlexDaniel to awesomify it even more. But improvements to the release tooling didn't stop there, Whateverable can now run code and bisect on commits of any branch (not just master), meaning that it's now easier to try features that are not merged yet and also significantly easier to test release branches. 04:49
notable6 AlexDaniel, Noted! (weekly)
AlexDaniel weekly: in case anybody is interested, here is how future Blin tickets will look like: gist.github.com/Altai-man/3eee8d3c...778575c623 04:51
notable6 AlexDaniel, Noted! (weekly)
05:13 sourceable6 left, committable6 left, squashable6 left, bloatable6 left, reportable6 left, notable6 left, coverable6 left, greppable6 left, statisfiable6 left, quotable6 left, releasable6 left, unicodable6 left, evalable6 left, nativecallable6 left, tellable6 left, benchable6 left, linkable6 left, shareable6 left 05:20 sena_kun joined
moritz hoelzro: ping me when you are availble. In general, my evenings (around 18-20h UTC) would be good, but I could arrange other times as well 05:20
05:22 Altai-man_ left 05:23 shareable6 joined, coverable6 joined 05:24 committable6 joined, notable6 joined, quotable6 joined
AlexDaniel c: awesome-malformed-loops say 42 05:24
committable6 AlexDaniel, ¦awesome-malformed-loops: «Cannot find this revision (did you mean “HEAD”?)»
05:24 sourceable6 joined
AlexDaniel oh 05:24
05:24 bisectable6 joined 05:25 reportable6 joined, releasable6 joined, bloatable6 joined, statisfiable6 joined, benchable6 joined, nativecallable6 joined 05:26 squashable6 joined, linkable6 joined
AlexDaniel c: awesome-malformed-loops say 42 05:34
committable6 AlexDaniel, ¦awesome-malformed-loops: «Cannot find this revision (did you mean “HEAD”?)»
AlexDaniel -_- 05:35
third time's a charm 06:01
c: awesome-malformed-loops say 42
committable6 AlexDaniel, ¦awesome-malformed-loops: «42␤»
AlexDaniel \o/
c: rakublast say 42
committable6 AlexDaniel, ¦rakublast: «Cannot find this revision (did you mean “rakuast”?)»
AlexDaniel c: rakuast say 42
committable6 AlexDaniel, ¦rakuast: «Cannot test this commit (Commit exists, but an executable could not be built for it)»
AlexDaniel jnthn: ↑ I think you need bumps or something 06:02
c: no_p5_warnings no warnings :p5; say "foo" . "bar" 06:15
committable6: say 42 06:16
committable6 AlexDaniel, Seems like you forgot to specify a revision (will use “v6.c” instead of “say”)
AlexDaniel hmmm
yeah I just need to figure out why that happens 06:17
committable6 AlexDaniel, ¦v6.c (42 commits): «42␤»
AlexDaniel committable6: no_p5_warnings say 42
committable6 AlexDaniel, ¦no_p5_warnings: «No build for this commit» 06:20
AlexDaniel, ¦no_p5_warnings: «No build for this commit» 06:22
06:31 committable6 left 06:32 shareable6 left, bisectable6 left, shareable6 joined 06:34 bisectable6 joined, committable6 joined
AlexDaniel committable6: no_p5_warnings say 42 06:37
committable6 AlexDaniel, ¦no_p5_warnings: «No build for this commit»
AlexDaniel ok, much faster now :)
07:19 Altai-man_ joined 07:22 sena_kun left 07:24 MasterDuke joined 08:56 MoniAlvarez joined 08:59 MoniAlvarez left, guifa2 joined 09:20 sena_kun joined 09:22 Altai-man_ left
lizmat Files=1306, Tests=111242, 214 wallclock secs (28.81 usr 8.34 sys + 3005.21 cusr 274.20 csys = 3316.56 CPU) 10:25
so, no change with timing from 2 days ago, so the uninlining of the nextdispatcher stuff does not affect spectest visibly 10:27
which, of course, makes sense, as it almost never gets hot enough
jnthn Indeed; we've generally observed that spectest tends to only see the costs of optimizations rather than the benefits of them (as so is a kind of good way of seeing how well we've got our optimization thresholds set) 10:28
lizmat which also implies that generally cron jobs and such won't see much effect either 10:29
but long running server processes might
jnthn Depends what the cron job does. 10:30
Also what you count as "long running"
timotimo above liek 5 seconds of running the same code paths you'll already have been benefitting i think
probably already after 2
lizmat hmmm.. I should start thinking about porting Sys::RunAlone :-)
jnthn 5 seconds sounds much too much, if you've a small number of hot paths 10:31
timotimo right
jnthn I mean, microbenchmarks that run for well under a second benefit heavily
I'd expect one-liners that are doing a decent number of iterations would too
10:41 guifa2 left 10:42 guifa2 joined
nine To put things into perspective, with the performance regression we're not at about the same level as in the beginning of 2018: tux.nl/Talks/CSV6/images/test-t-75.png 10:50
s/not/now/ 10:52
[Tux] Rakudo version 2020.02.1-356-g561076437 - MoarVM version 2020.02.1-153-g9bb7a1850
csv-ip5xs1.129 - 1.150
csv-ip5xs-2010.654 - 10.703
csv-parser25.278 - 25.755
csv-test-xs-200.389 - 0.454
test7.899 - 7.967
test-t2.666 - 2.688
test-t --race1.098 - 1.115
test-t-2045.995 - 46.850
test-t-20 --race13.373 - 13.519
11:05
11:19 Altai-man_ joined 11:22 sena_kun left 11:51 pamplemousse joined
samcv bisectable6, spurt "test", "\c[woman]\c[man]\c[cat]"; my $fh = open "test", :read; $fh.readchars(1); $fh.tell.say 12:09
bisectable6 samcv, Bisecting by output (old=2015.12 new=5610764) because on both starting points the exit code is 1
samcv, bisect log: gist.github.com/4a9cb8c8738339a84a...70495c5f67 12:10
samcv, (2017-01-22) github.com/rakudo/rakudo/commit/58...923d2004e7
samcv bisectable6, spurt "/tmp/test123", "\c[woman]\c[man]\c[cat]"; my $fh = open "/tmp/test123", :read; $fh.readchars(1); $fh.tell.say 12:11
bisectable6 samcv, Bisecting by exit code (old=2015.12 new=5610764). Old exit code: 1
samcv, bisect log: gist.github.com/4e7b95338d35087105...5b10eb4d81
samcv, (2017-01-25) github.com/rakudo/rakudo/commit/3a...ab2489ece2
samcv 6c: spurt "/tmp/test123", "👩👨🐈"; my $fh = open "/tmp/test123", :read; $fh.readchars(1); $fh.tell.say 12:12
commitable: spurt "/tmp/test123", "👩👨🐈"; my $fh = open "/tmp/test123", :read; $fh.readchars(1); $fh.tell.say
committable6 samcv, ¦spurt: «Cannot find this revision (did you mean “Cluj”?)» 12:13
samcv, gist.github.com/fc2a9bcd4d147f45f0...e3e819e167
samcv commitable: 6c: spurt "/tmp/test123", "👩👨🐈"; my $fh = open "/tmp/test123", :read; $fh.readchars(1); $fh.tell.say
committable6 samcv, ¦6c:: «Cannot find this revision (did you mean “v6.c”?)»
samcv commitable: v6c: spurt "/tmp/test123", "👩👨🐈"; my $fh = open "/tmp/test123", :read; $fh.readchars(1); $fh.tell.say
committable6 samcv, ¦v6c:: «Cannot find this revision (did you mean “v6.c”?)»
samcv commitable: v6.c: spurt "/tmp/test123", "👩👨🐈"; my $fh = open "/tmp/test123", :read; $fh.readchars(1); $fh.tell.say
committable6 samcv, ¦v6.c:: «Cannot find this revision (did you mean “v6.c”?)»
samcv commitable: v6.c spurt "/tmp/test123", "👩👨🐈"; my $fh = open "/tmp/test123", :read; $fh.readchars(1); $fh.tell.say
committable6 samcv, gist.github.com/58adef746f8972bdeb...99f607254d
samcv commitable: v6.c spurt "/tmp/test123", "👩👨🐈"; my $fh = open "/tmp/test123", :read; $fh.readchars(1); $fh.tell.say; $fh.readchars(1); $fh.tell.say 12:15
committable6 samcv, gist.github.com/a0d552137e39e63433...df766e1ef6
samcv bisectable6, spurt "/tmp/test123", "👩👨🐈"; my $fh = open "/tmp/test123", :read; $fh.readchars(1); $fh.tell.say; $fh.readchars(1); $fh.tell.say 12:25
bisectable6 samcv, Bisecting by output (old=2015.12 new=5610764) because on both starting points the exit code is 0
samcv, bisect log: gist.github.com/7949208ef31fa42ab2...29113132c7 12:26
samcv, (2017-01-02) github.com/rakudo/rakudo/commit/7c...50246afcf0
samcv bisectable6, spurt "/tmp/test123", "👩👨🐈"; my $fh = open "/tmp/test123", :read; say $fh.readchars(1); $fh.tell.say; say $fh.readchars(1); $fh.tell.say 12:28
bisectable6 samcv, Bisecting by output (old=2015.12 new=5610764) because on both starting points the exit code is 0 12:29
samcv, bisect log: gist.github.com/5af72de8667b4ad3bf...1bd236aa2f
samcv, (2017-01-02) github.com/rakudo/rakudo/commit/7c...50246afcf0
13:01 SashaRose joined 13:04 SashaRose left
lizmat notable6: weekly 13:13
notable6 lizmat, 4 notes: gist.github.com/ebc8a7354545b21f69...9a3183cb3c 13:14
dogbert11 fwiw, some programs will take more than twice the time they used to
lizmat yeah :-( 13:18
Geth rakudo/hyper_codegen: 617a5dc7de | (Timo Paulssen)++ | src/Perl6/Optimizer.nqp
first sketch of code-gen for hyper op formulas in optimizer
13:20
rakudo/hyper_codegen: ebabecb151 | (Timo Paulssen)++ | src/Perl6/Optimizer.nqp
more hyperoptimizer, rewrite, add env var to turn on
timotimo lizmat: wanna write anything about this? or would it be a little too early? :D
13:20 sena_kun joined
lizmat timotimo: I'm already writing plenty :-) 13:21
timotimo OK, if the weekly is already big, that's fantastic :D
lizmat would love to see something about this work in the weekly though
but maybe next week, when it's merged ?
timotimo i admire your optimism :) :)
13:22 Altai-man_ left
timotimo i mean, if it stays activate-able via an env var, it could be okay to merge it earlier 13:23
or perhaps even something a bit different. like "use experimental :hyperhyper"
lizmat so what do you think you'd be breaking ?
timotimo currently it'll accept code that without this optimizer will throw an exception 13:24
of course i didn't write down the exact example 13:25
13:25 Altai-man_ joined
timotimo there we go 13:27
m: my int @a = ^100_000; my int @b = ^100_000; my int @c = ^100_000; my int @d = ^100_000; my int @result = ^100_000; my $now = now; for ^5 { @result = @a >>+<< @b >>+<< @c >>+<< @d>>.sin; Nil }; say now - $now;
camelia This type cannot unbox to a native integer: P6opaque, Num
in block <unit> at <tmp> line 1
13:28 sena_kun left
lizmat do you think that error is correct or a bug ? 13:28
timotimo the result of adding @d>>.sin onto the other int values is a num, and storing that into the int @result array is wrong
lizmat ok, so the error is correct. And how would your change work then? silently truncate to int ? 13:31
timotimo yeah, that's what it does
actually, it's quite possible that this will turn into a compile-time error if i make it asplode
lizmat m: my int $a; my num $b = 42e666; $a = $b; dd $a # I guess that's the reason ? 13:32
camelia -9223372036854775808
timotimo i'm not entirely sure, but i think it could be from how QAST with a :returns(int) will generate a coercion 13:33
it should already be annotating the addition to return num, and the storing-into-result thing should be annotated with int
lizmat re 6fd2939ae4ddfff973a647e15 do we have confirmation that problems on Windows have been fixed by this ? 13:38
linkable6 (2020-04-25) github.com/MoarVM/MoarVM/commit/6fd2939ae4 Try to fix issues by marking takenextdispatcher :noinline
MasterDuke windows was the jitting of takenextdispatcherfor, not the inlining 13:39
lizmat which got fixed by nine 13:40
MasterDuke yep 13:41
lizmat so wouldn't that imply that we could enable the inlining of takenextdispatcher again "
?
9bb7a185071e6c8cd43806f0
linkable6 (2020-04-26) github.com/MoarVM/MoarVM/commit/9bb7a18507 Merge pull request #1271 from ddlws/utf8-c8
MasterDuke no, that fixes a different problem
github.com/rakudo/rakudo/issues/3569 13:42
lizmat notable6: weekly reset 13:59
notable6 lizmat, Moved existing notes to “weekly_2020-04-27T13:59:56Z”
lizmat and another Rakudo Weekly News hits the Net: rakudoweekly.blog/2020/04/27/2020-...g-cleanup/ 15:02
timotimo committable6: hyper_codegen my int @a = ^100_000; my int @b = ^100_000; my int @c = ^100_000; my int @d = ^100_000; my int @result = ^100_000; my $now = now; for ^500 { @result = @a >>+<< @b >>+<< @c >>+<< @d>>.sin; Nil }; say now - $now; 15:15
committable6 timotimo, ¦hyper_codegen: «Cannot test this commit (Commit exists, but an executable could not be built for it)»
lizmat timotimo: thinking about this some more, I think the current behaviour should be considered a bug 15:16
m: my int $a; my num $b = 42.666e0; $a = $b; say $a # because this is the correct behaviour,. silently truncating when using natives 15:17
camelia 42
15:21 sena_kun joined
timotimo in that case i won't have to change my code :D 15:21
15:22 Altai-man_ left 15:44 pamplemousse left 16:26 sena_kun left, guifa2 left, dogbert11 left, krunen left, synthmeat left, TreyHarris left 16:28 synthmeat joined 16:31 sena_kun joined, guifa2 joined, dogbert11 joined 16:32 krunen joined, TreyHarris joined
AlexDaniel timotimo: is hyper_codegen branch buildable? 17:03
shareable6: hyper_codegen
shareable6 AlexDaniel, and I oop! Backtrace: gist.github.com/bac7ad3135839e3215...a7ab03df55
AlexDaniel right 17:04
17:05 shareable6 left 17:09 shareable6 joined
AlexDaniel shareable6: hyper_codegen 17:09
shareable6 AlexDaniel, whateverable.6lang.org/hyper_codegen
AlexDaniel ooooooh… I think it's my mistake 17:10
“Unknown option: gen-moar --gen-nqp --backends”
timotimo whoops :) 17:13
not doing the splits
AlexDaniel I told myself multiple times not to touch build.p6 17:16
this was definitely not required: 13bcd27a745 17:17
alright, linkable, we need to talk. 17:18
13bcd27a7450ef9b
linkable6 (2020-04-27) github.com/Raku/whateverable/commit/13bcd27a74 Use <> in build.p6
17:19 Altai-man_ joined
AlexDaniel committable6: hyper_codegen my int @a = ^100_000; my int @b = ^100_000; my int @c = ^100_000; my int @d = ^100_000; my int @result = ^100_000; my $now = now; for ^500 { @result = @a >>+<< @b >>+<< @c >>+<< @d>>.sin; Nil }; say now - $now; 17:20
committable6 AlexDaniel, ¦hyper_codegen: «This type cannot unbox to a native integer: P6opaque, Num␤ in block <unit> at /tmp/LLrbP2toQD line 1␤␤ «exit code = 1»»
AlexDaniel timotimo: ↑ it works now! \o/
thanks for testing it :)
committable6: master,hyper_codegen my int @a = ^100_000; my int @b = ^100_000; my int @c = ^100_000; my int @d = ^100_000; my int @result = ^100_000; my $now = now; for ^500 { @result = @a >>+<< @b >>+<< @c >>+<< @d>>.sin; Nil }; say now - $now;
committable6 AlexDaniel, ¦master,hyper_codegen: «This type cannot unbox to a native integer: P6opaque, Num␤ in block <unit> at /tmp/B9XV4XyuQx line 1␤␤ «exit code = 1»»
timotimo oh, of course 17:24
needs to have an env var set
committable can do that, right?
AlexDaniel timotimo: %*ENV<foo> = ‘bar’; run <perl6 -e>, 「my int @a = ^100_000; my int @b = ^100_000; my int @c = ^100_000; my int @d = ^100_000; my int @result = ^100_000; my $now = now; for ^500 { @result = @a >>+<< @b >>+<< @c >>+<< @d>>.sin; Nil }; say now - $now;」
timotimo committable6: master,hyper_codegen RAKUDO_OPTIMIZER_HYPER=1 my int @a = ^100_000; my int @b = ^100_000; my int @c = ^100_000; my int @d = ^100_000; my int @result = ^100_000; my $now = now; for ^500 { @result = @a >>+<< @b >>+<< @c >>+<< @d>>.sin; Nil }; say now - $now;
committable6 timotimo, gist.github.com/c5381f26c718e549f8...e444a9b440 17:25
AlexDaniel committable6: master,hyper_codegen %*ENV<RAKUDO_OPTIMIZER_HYPER>=1; run <perl6 -e>, 「my int @a = ^100_000; my int @b = ^100_000; my int @c = ^100_000; my int @d = ^100_000; my int @result = ^100_000; my $now = now; for ^500 { @result = @a >>+<< @b >>+<< @c >>+<< @d>>.sin; Nil }; say now - $now;」 17:26
17:26 krunen left, TreyHarris left, sena_kun left, guifa2 left, dogbert11 left
committable6 AlexDaniel, gist.github.com/c66af3893388153660...a0c970bf00 17:26
17:29 ccamel left, krunen joined, TreyHarris joined, guifa2 joined, dogbert11 joined
AlexDaniel timotimo: people do need env vars, command line args, deflapping, etc. sometimes, but lately I'm thinking that just learning how to use `run` is the most universal solution 17:30
timotimo buh :o
committable6: master my int @a = ^100_000; my int @b = ^100_000; my int @c = ^100_000; my int @d = ^100_000; my int @result = ^100_000; my $now = now; for ^10 { @result = @a >>+<< @b >>+<< @c >>+<< @d>>.sin; Nil }; say now - $now; 17:31
committable6 timotimo, ¦master: «This type cannot unbox to a native integer: P6opaque, Num␤ in block <unit> at /tmp/aRjbb4RxsZ line 1␤␤ «exit code = 1»»
timotimo right
committable6: master my int @a = ^100_000; my int @b = ^100_000; my int @c = ^100_000; my int @d = ^100_000; my num @result = (^100_000)>>.Num; my $now = now; for ^10 { @result = @a >>+<< @b >>+<< @c >>+<< @d>>.sin; Nil }; say now - $now;
committable6 timotimo, ¦master: «9.5214294␤» 17:32
timotimo compare the speed
2.815 for 500 runs vs 9.52 for 10 runs
AlexDaniel :o 17:33
lizmat m: say (50 * 9.52) / 2.815
camelia 169.094139
lizmat not bad
AlexDaniel > At first glance, you're right. But if you take a closer look, from a purely pragmatic perspective, there are now at least two coexisting ecosystems in two different languages, peacefully sailing along. 17:35
\o/
17:42 MasterDuke left, camelCaser joined 17:48 ccamel joined 17:49 camelCaser left
lizmat yeah, sometimes HN comments surprise me as well :-) 17:51
vrurg Altai-man_: I have replied in a comment. 17:52
Altai-man_ vrurg, thanks! Can you specify the bug, we can mark it as a blocker, I guess. 17:54
vrurg Altai-man_: nah, it's not a blocker because the same behavior is observed on 2020.02 17:55
and possibly 2020.01, but let me make sure first.
Altai-man_ vrurg, if we can't pave a path to the release by reverting, I'd call it a release precondition, if not blocker. 17:56
AlexDaniel just because there was a release with a bug doesn't necessarily mean that it's ok to do more releases with the same bug :) 17:59
Altai-man_ AlexDaniel, do you mean dispatch bug or? I am not really fond of the idea of making a release with performance drop, because that'd be a bug itself. 18:01
vrurg Altai-man_: let's give it all another two-three days. I'm trying to think something out.
Altai-man_ vrurg, thanks! I'll ping you closer to May then unless you ping me earlier.
vrurg Altai-man_: aha. The problem occupies my brains permanently. 18:02
AlexDaniel Altai-man_: no I meant whatever you were talking about right now :) 18:06
Altai-man_: as for the performance drop, yeah, please don't :) 18:07
Altai-man_ AlexDaniel, well, sequence I have on mind is: 1)wait for the bug vrurg's considering to be a blocker for his project to be fixed; 2)revert dispatching; 3)release. So I am not seeing where we can do another release with the old bug. I mean, dispatch bugs - yes, but we're between a rock and a hard place anyway. 18:08
18:10 MasterDuke joined
samcv AlexDaniel, does bisectable6 have the ability to also bisect moarvm too or no? 19:08
AlexDaniel samcv: not yet :(
samcv fair. i will just compile it myself 19:09
AlexDaniel I don't think it's fair x) it's just something that needs to be done
I attempted it once and I have a good idea on how it should work, but it just needs wörk
samcv no problem. i may not bisect, just because it didn't work properly ever. (readchars on a file handle, and having .tell give the correct result). but if it would be convient might be interesting. there's the OS level file handle. then moarvm decoder which can cache characters, and read ahead. then there's the rakudo level decoder which also reads ahead and caches characters. and all levels have their own "position" they are at for the abstraction. 19:12
so i guess i shouldn't be super suprised it doesn't work perfectly :)
19:20 sena_kun joined 19:22 Altai-man_ left
hoelzro moritz: hmm, that's going to be a little tricky. I think we may need to do this more async - I'm going to drop some instructions in a gist or something, and then you can ask me questions and I'll answer them when I can 19:51
19:56 Kaiepi left 19:58 Kaiepi joined 20:04 guifa2 left
moritz hoelzro: sure, works for me 20:24
20:49 guifa2 joined 20:56 guifa2 left 21:12 patrickb joined
patrickb o/ 21:13
Assuming we'd like to automatically precompile scripts, where could / should we put the precompiled file? 21:14
It seems wrong to put it into share/perl6/site/precomp as the executable itself may well not be installed. 21:16
The only alternative I could come up with was to put it next to the script itself. 21:17
That's similar to what python does with its pyc files. But littering user folder was something we tried to actively avoid by introducing the .precomp folders. 21:18
21:19 Altai-man_ joined 21:22 sena_kun left
patrickb Thinking about this a bit more. Another alternative would be to put it in the `home` CU::Repo. Filling that up with all sorts of script precomps might actually be ok. 21:41
Different question: IIUC a compiler ID is factored into every precomp unit. If so then precomp units can't be shared across different rakudo versions. So when installing a newer rakudo version all precomps have to be recompiled. Am I correct with that assumption? 21:45
samcv patrickb, that sounds right to me 21:46
patrickb samcv: Thanks for the confirmation. 22:04
patrickb is off to bed
22:04 patrickb left 23:12 Altai-man_ left