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:08
reportable6 left
00:25
frost joined
00:37
frost left
00:49
Kaiepi joined
00:50
frost joined
00:54
Kaiepi left
01:04
linkable6 left
01:08
reportable6 joined
01:18
frost left
02:04
frost joined
02:29
frost left
02:37
frost joined
02:50
frost left
02:54
frost joined
03:24
frost left
03:41
Kaiepi joined
04:29
shinto joined
05:06
linkable6 joined
05:26
shinto left
06:07
reportable6 left
06:09
reportable6 joined
|
|||
nine | vrurg: two chained method calls requires resumption in new-disp. There are examples starting at github.com/Raku/nqp/blob/master/t/...tch.t#L341 | 07:14 | |
Nicholas | good *, * | 07:15 | |
07:36
frost joined
08:02
frost left
08:09
Kaiepi left,
[Coke] left,
japhb left,
sena_kun left,
MasterDuke left
08:10
TempIRCLogger__ joined
08:11
RakuIRCLogger left,
RakuIRCLogger joined
08:12
TempIRCLogger left
08:14
TempIRCLogger__ left
08:20
TempIRCLogger joined,
Kaiepi joined,
[Coke] joined,
japhb joined,
sena_kun joined,
Techcable joined,
MasterDuke joined,
camelia joined,
nine joined,
Geth joined,
bartolin joined,
leedo joined,
ugexe joined,
moon-child joined,
SmokeMachine joined,
nebuchadnezzar joined,
leont joined,
jnthnwrthngtn joined,
rba joined
08:23
RakuIRCLogger left,
RakuIRCLogger joined
08:27
RakuIRCLogger left,
RakuIRCLogger joined
08:53
frost joined
09:49
frost left
11:00
frost joined
11:25
frost left
11:41
Altai-man joined
11:43
Altai-man left
11:55
Altai-man joined
12:08
reportable6 left
12:09
reportable6 joined
|
|||
Geth | MoarVM/submodule-default-shallow-clone: 6ad88ac6af | (Nicholas Clark)++ | .gitmodules Change .gitmodules to default submodules to a shallow clone. The git documentation implies that this is the "right" way to do this, but as best I can tell from experimenting this *only* affects `git clone --recursive` `git clone` followed by `git submodule update --init --recommend-shallow` ... (6 more lines) |
12:15 | |
MoarVM/submodule-default-shallow-clone: 6f749f3ac0 | (Nicholas Clark)++ | tools/update-submodules.pl Run `git submodule --quiet update --depth 1` if git is new enough. This reduces .git by about 32M at little cost, as most folks aren't looking at submodule history. If you need the history, it's easy to get back with: git submodule foreach git fetch --unshallow |
|||
lizmat | nine: now that new-disp has landed, would it make sense to re-investigate the "in process" pre-compilation work ? | 12:41 | |
jnthnwrthngtn | I'm not sure how far new-disp would help with that, tbh | 12:59 | |
Trying to do it as part of the new RakuAST-baesd compiler frontend might be more fruitful | 13:00 | ||
lizmat | the thing is: I was thinking on how to solve "default auth / ver / api" for loading modules without specific ver / auth / api | 13:04 | |
and thought: well, a dynamic variable keeping the default ver/auth/api info might just do the trick | |||
until I realized: meh, separate processes | |||
nine | Well the method cache was one large source of problems. That's gone now. | 13:19 | |
lizmat | right! | 13:25 | |
Geth | MoarVM: 2883ba7547 | (Stefan Seifert)++ | src/spesh/deopt.c Fix possible access to fromspace after deopt materialization We stored the newly allocated objects we create during materialization in an array, for future reference so we could store the same objects into multiple target registers if required. Allocating these objects however could trigger a GC run which then missed the pointers in the materialized array. This would then lead to such outdated pointers getting written to frame registers. ... (7 more lines) |
13:26 | |
MoarVM: 3ef0c229d2 | niner++ (committed using GitHub Web editor) | src/spesh/deopt.c Merge pull request #1630 from MoarVM/fix_gc_issue_in_materialization Fix possible access to fromspace after deopt materialization |
|||
vrurg | nine: I thought of resumption, but it requires initiation on the callee side. That's not possible in case of .ACCEPTS.Bool. Not to mention if there be any performance gain at all then. | 14:22 | |
jnthnwrthngtn | vrurg: Have the dispatch program evaluate to calling something that in turn calls the two methods? I figure something so small as to do two method calls will neatly inline if it's hot | 14:24 | |
vrurg | jnthnwrthngtn: thanks, that's was my next question, actually. :) | 14:25 | |
Though would there be a way to inline explicitly, without delegating to a frame, that'd be even better. But it seems there is no way to compile a non-block root QAST node anyway. | 14:29 | ||
jnthnwrthngtn | No, frames (QAST::Block) are the smallest unit you can give to the VM to execute | 14:38 | |
Given inlining is *already* really complex, I don't think we want to have to support two kinds of it :-) | 14:39 | ||
Geth | MoarVM/submodule-default-shallow-clone: 0c45973a58 | (Nicholas Clark)++ | 2 files Run `git submodule --quiet update --depth 1` if git is new enough. This reduces .git by about 32M at little cost, as most folks aren't looking at submodule history. If you need the history, it's easy to get back with: git submodule foreach git fetch --unshallow |
14:54 | |
15:15
Altai-man left
|
|||
vrurg | Does existence of a lexical $_ in a frame affects its inlinability? | 16:10 | |
lizmat | doesn't every frame have a $_ ? | ||
and ergo, the answer is no? | 16:11 | ||
vrurg | On many occasions it is lowered to a local. | 16:12 | |
I wonder what if it stays lexical. | |||
vrurg is considering if it worth replacing locallifetime op with a dispatch delegating to a block. | 16:13 | ||
afk for a couple of hours. | 16:15 | ||
jnthnwrthngtn | No, lexicals don't prevent MoarVM from doing inlining. Lowering to locals makes some other optimizations possible. | 16:20 | |
But inlining isn't blocked by it | |||
locallifetime is a code-gen hint; I don't think it should introduce a scope | |||
s/scope/blcok/ | 16:21 | ||
It should have no semantic effects, it just allows for better register re-use | |||
Geth | MoarVM/fix_unsigned_for_merge: 6 commits pushed by (Stefan Seifert)++
|
17:50 | |
18:08
reportable6 left
18:09
reportable6 joined
|
|||
lizmat | and yet another Rakudo Weekly News hits the Net: rakudoweekly.blog/2022/01/10/2022-...-perching/ | 18:46 | |
nine | What a busy week in the Core. lizmat++ for the write up! | 18:50 | |
lizmat | well, actually 2 weeks :-) | 18:56 | |
sena_kun | lizmat++ | 18:58 | |
19:12
linkable6 left,
evalable6 left
20:13
linkable6 joined,
evalable6 joined
|
|||
MasterDuke | m: sub a(|c(Int $b, Str $c? = "bar")) { b(|c) }; sub b(*@v) { .say for @v }; a(1, "bc"); a(2) # any way to get "bar" to be printed the second time a() is called? or is that just not possible? | 21:13 | |
camelia | 1 bc 2 |
||
21:16
Guest1244 joined
|
|||
jnthnwrthngtn | MasterDuke: Not possible; c is the original incoming argument capture, which you unpack; unpacking the capture does not, however, mutate it | 21:19 | |
MasterDuke | could that be a warning or error? | 21:25 | |
jnthnwrthngtn | No | 21:29 | |
Well, it could be, but given it might be exactly what was wanted, it shouldn't be | |||
MasterDuke | m: sub a(|c(Int $b, Str $c? = "bar")) { my $z = (|c).Array; $z.push($c) if c.elems == 1; b(|$z) }; sub b(*@v) { .say for @v }; a(1, "bc"); a(2) # yeah, this works as a workaround, maybe a warning is a little aggresive | 21:30 | |
camelia | 1 bc 2 bar |
||
jnthnwrthngtn | Why the capture in the first place? | 21:44 | |
I mean, I'd just write sub a(Int $b, Str $c = "bar" { b($b, $c) } | 21:45 | ||
uh, with the ) that I missed | |||
MasterDuke | the request was to not have to repeat the list of arguments | 21:46 | |
the capture+subsignature made it so you could constrain the parameters, but not have to repeat them when passing them on | 21:47 | ||
21:58
Guest1244 left
23:34
CaCode joined
|