[00:06] *** reportable6 left [00:08] *** reportable6 joined [00:11] unless i hear any objections i'll merge my two prs in the next day or two [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 [03:19] *** tellable6 left [03:19] *** committable6 left [03:19] *** bisectable6 left [03:19] *** squashable6 left [03:19] *** nativecallable6 left [03:19] *** linkable6 left [03:19] *** unicodable6 left [03:19] *** statisfiable6 left [03:19] *** evalable6 left [03:19] *** benchable6 left [03:19] *** bloatable6 left [03:19] *** greppable6 left [03:19] *** sourceable6 left [03:19] *** coverable6 left [03:19] *** quotable6 left [03:19] *** notable6 left [03:19] *** releasable6 left [03:19] *** shareable6 left [03:20] *** linkable6 joined [03:20] *** tellable6 joined [03:20] *** reportable6 joined [03:20] *** shareable6 joined [03:20] *** quotable6 joined [03:20] *** sourceable6 joined [03:20] *** benchable6 joined [03:20] *** nativecallable6 joined [03:20] *** squashable6 joined [03:20] *** bisectable6 joined [03:21] *** statisfiable6 joined [03:21] *** bloatable6 joined [03:21] *** notable6 joined [03:22] *** committable6 joined [03:22] *** coverable6 joined [03:22] *** evalable6 joined [03:22] *** unicodable6 joined [03:22] *** greppable6 joined [03:23] *** releasable6 joined [03:46] *** [Coke]_ joined [03:48] *** [Coke]__ left [04:01] 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? [04:02] off to sleep, but i'll check back tomorrow evening [04:48] *** linkable6 left [04:48] *** evalable6 left [04:48] *** linkable6 joined [04:51] *** evalable6 joined [05:12] Pretty sure it wouldn't be if $c is a Slip ... [05:51] *** evalable6 left [05:51] *** evalable6 joined [06:06] *** reportable6 left [06:08] *** reportable6 joined [07:18] *** vrurg_ joined [07:18] *** vrurg left [08:12] *** sena_kun joined [08:23] *** vrurg_ left [08:23] *** vrurg joined [08:29] MasterDuke: that optimization looks dangerous. I wouldn't risk it. You know what's not dangerous? Working on RakuAST! :D :D [08:30] .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 [10:15] 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 [10:41] *** 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 [15:01] *** discord-raku-bot joined [15:14] 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:16] be careful not to break ($a, $b) = ($b, $a) in the process [15:16] *** Kaipei is now known as Kaiepi [15:21] 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:58] *** rypervenche left [16:00] *** [Coke]__ joined [16:03] *** [Coke] left [16:07] *** [Coke]__ is now known as [Coke] [16:21] *** harrow left [16:21] *** ilogger2 left [16:21] *** camelia left [16:21] *** bartolin_ left [16:21] *** jnthn left [16:21] *** leont left [16:21] *** leedo_ left [16:21] *** mst left [16:21] *** kjp left [16:21] *** coleman left [16:21] *** gfldex left [16:22] *** harrow joined [16:22] *** ilogger2 joined [16:22] *** camelia joined [16:22] *** mst joined [16:22] *** kjp joined [16:22] *** coleman joined [16:22] *** leedo_ joined [16:22] *** leont joined [16:22] *** jnthn joined [16:22] *** bartolin_ joined [16:22] *** gfldex joined [16:23] *** [Coke] joined [16:23] *** discord-raku-bot joined [16:23] *** vrurg joined [16:23] *** reportable6 joined [16:23] *** linkable6 joined [16:23] *** evalable6 joined [16:23] *** squashable6 joined [16:23] *** Altai-man joined [16:23] *** releasable6 joined [16:23] *** greppable6 joined [16:23] *** unicodable6 joined [16:23] *** coverable6 joined [16:23] *** committable6 joined [16:23] *** notable6 joined [16:23] *** bloatable6 joined [16:23] *** statisfiable6 joined [16:23] *** bisectable6 joined [16:23] *** nativecallable6 joined [16:23] *** benchable6 joined [16:23] *** sourceable6 joined [16:23] *** quotable6 joined [16:23] *** shareable6 joined [16:23] *** tellable6 joined [16:23] *** epony joined [16:23] *** dogbert17 joined [16:23] *** Kaiepi joined [16:23] *** MasterDuke joined [16:24] *** samcv joined [16:24] *** nine joined [16:24] *** japhb joined [16:24] *** Geth joined [16:24] *** RakuIRCLogger joined [16:24] *** nebuchadnezzar joined [16:24] *** psydroid joined [16:24] *** AlexDaniel joined [16:24] *** Techcable joined [16:24] *** lizmat joined [16:24] *** patrickb joined [16:24] *** timo joined [16:24] *** jjatria joined [16:24] *** JRaspass joined [16:24] *** Voldenet joined [16:24] *** Nicholas joined [16:24] *** SmokeMachine joined [16:24] *** jdv joined [16:24] *** tbrowder joined [16:24] *** 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 [20:34] *** 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 [23:35] 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:37] 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:38] 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:43] 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:55] 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:58] *** epony left