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) |
08:30 | ||
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
|