Welcome to the main channel on the development of MoarVM, a virtual machine for NQP and Rakudo (moarvm.org). This channel is being logged for historical purposes.
Set by lizmat on 24 May 2021.
00:06 reportable6 left 00:08 reportable6 joined
MasterDuke unless i hear any objections i'll merge my two prs in the next day or two 00:11
00:32 [Coke]___ joined 00:34 [Coke] left 02:09 [Coke] joined 02:11 [Coke]___ left 02:16 [Coke]__ joined 02:18 [Coke] left 03:19 reportable6 left, tellable6 left, committable6 left, bisectable6 left, squashable6 left, nativecallable6 left, linkable6 left, unicodable6 left, statisfiable6 left, evalable6 left, benchable6 left, bloatable6 left, greppable6 left, sourceable6 left, coverable6 left, quotable6 left, notable6 left, releasable6 left, shareable6 left 03:20 linkable6 joined, tellable6 joined, reportable6 joined, shareable6 joined, quotable6 joined, sourceable6 joined, benchable6 joined, nativecallable6 joined, squashable6 joined, bisectable6 joined 03:21 statisfiable6 joined, bloatable6 joined, notable6 joined 03:22 committable6 joined, coverable6 joined, evalable6 joined, unicodable6 joined, greppable6 joined 03:23 releasable6 joined 03:46 [Coke]_ joined 03:48 [Coke]__ left
MasterDuke i have a WIP patch to rakudo's static optimizer that rewrites `($a, $b) = ($c, $d);` into `$a = $c; $b = $d;`. it takes `MVM_SPESH_BLOCKING=1 raku -e 'my $a = 1; my $b = 2; for ^1_000_000 { ($a, $b) = ($_, $_ + 1) }; say "a = $a, b = $b"; say now - INIT now'` from ~0.8s down to ~0.3s. however, there are currently almost no restrictions on when it 04:01
kicks in (i haven't even tried a spectest yet). anyone have a suggestion on when we know this transformation is safe?
off to sleep, but i'll check back tomorrow evening 04:02
04:48 linkable6 left, evalable6 left, linkable6 joined 04:51 evalable6 joined
japhb Pretty sure it wouldn't be if $c is a Slip ... 05:12
05:51 evalable6 left, evalable6 joined 06:06 reportable6 left 06:08 reportable6 joined 07:18 vrurg_ joined, vrurg left 08:12 sena_kun joined 08:23 vrurg_ left, vrurg joined
nine MasterDuke: that optimization looks dangerous. I wouldn't risk it. You know what's not dangerous? Working on RakuAST! :D :D 08:29
.oO(One of these days, someone will do it, just to shut up my obnoxious advertising)
09:18 Altai-man joined 09:19 sena_kun left 09:39 squashable6 left 09:41 squashable6 joined
jnthn I think the optimization is pretty safe if you can see that the Scalar, since it creation, has only been assigned to, not rebound. 10:15
'cus in that case you know that it's a Scalar container and that the Scalar nature of it will beat any contained Slip, etc.
10:41 evalable6 left, linkable6 left 10:42 evalable6 joined 10:44 linkable6 joined 12:07 reportable6 left 12:08 reportable6 joined 13:07 vrurg left 13:08 vrurg joined 13:10 frost left 14:26 [Coke]_ is now known as [Coke] 15:01 discord-raku-bot left, discord-raku-bot joined
Kaipei MasterDuke, list assignments like those are ridiculously slow via List. if you can pull that without breaking lazy tails via `my ($, +/*/**)`, that'd be neat 15:14
be careful not to break ($a, $b) = ($b, $a) in the process 15:16
15:16 Kaipei is now known as Kaiepi
Kaiepi albeit risky, there is a subset of assignments that that would apply to that the optimizer could better figure out than List on its own 15:21
15:58 rypervenche left 16:00 [Coke]__ joined 16:03 [Coke] left 16:07 [Coke]__ is now known as [Coke] 16:21 harrow left, ilogger2 left, camelia left, bartolin_ left, jnthn left, leont left, leedo_ left, mst left, kjp left, coleman left, gfldex left 16:22 harrow joined, ilogger2 joined, camelia joined, mst joined, kjp joined, coleman joined, leedo_ joined, leont joined, jnthn joined, bartolin_ joined, gfldex joined 16:23 [Coke] joined, discord-raku-bot joined, vrurg joined, reportable6 joined, linkable6 joined, evalable6 joined, squashable6 joined, Altai-man joined, releasable6 joined, greppable6 joined, unicodable6 joined, coverable6 joined, committable6 joined, notable6 joined, bloatable6 joined, statisfiable6 joined, bisectable6 joined, nativecallable6 joined, benchable6 joined, sourceable6 joined, quotable6 joined, shareable6 joined, tellable6 joined, epony joined, dogbert17 joined, Kaiepi joined, MasterDuke joined 16:24 samcv joined, nine joined, japhb joined, Geth joined, RakuIRCLogger joined, nebuchadnezzar joined, psydroid joined, AlexDaniel joined, Techcable joined, lizmat joined, patrickb joined, timo joined, jjatria joined, JRaspass joined, Voldenet joined, Nicholas joined, SmokeMachine joined, jdv joined, tbrowder joined, rba joined 16:25 vrurg left 16:26 vrurg joined 17:29 coleman left 17:44 coleman joined 17:51 Altai-man left 18:07 reportable6 left 18:08 reportable6 joined 18:12 sena_kun joined 18:57 sena_kun left 18:59 sena_kun joined 20:34 linkable6 left, evalable6 left 20:36 linkable6 joined 20:37 evalable6 joined 20:40 sena_kun left 20:52 sena_kun joined 20:54 sena_kun left
MasterDuke nine: heh, i do intent to work on rakuast, but this was quick to implement...well, this POC was, i suspect a real implementation might be a bit longer though... 23:35
jnthn: thanks, good to know. however, that particular restriction is not one i've implemented before, and i don't see anything that jumps out at me in the rest of the optimizer code. any pointers to where something like that has been done before? 23:37
Kaiepi: yeah, that was what i was originally testing with and saw that it did in fact break with what i have now. that's why i'm trying to figure out when it's safe to do 23:38
jnthn: also, i currently have to have `self.visit_op_children($op);` before i build the new QAST, or i get something like `assign requires a concrete object (got a Rakudo::Internals::LoweredAwayLexical type object instead)` 23:43
oh, btw, making it a p6assign instead of regular assign dropped it down to ~0.05, about the same as writing the two assignments manually 23:55
23:58 epony left