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:02 reportable6 left 00:04 reportable6 joined 01:16 greppable6 left, releasable6 left, statisfiable6 left, coverable6 left, squashable6 left, linkable6 left, evalable6 left, quotable6 left, reportable6 left, bisectable6 left, committable6 left, shareable6 left, notable6 left, unicodable6 left, tellable6 left, nativecallable6 left, benchable6 left, sourceable6 left, bloatable6 left, releasable6 joined, shareable6 joined, bisectable6 joined, tellable6 joined 01:17 coverable6 joined, greppable6 joined, evalable6 joined, reportable6 joined, squashable6 joined, sourceable6 joined 01:18 quotable6 joined, linkable6 joined, benchable6 joined, committable6 joined, unicodable6 joined 01:19 nativecallable6 joined, notable6 joined, statisfiable6 joined, bloatable6 joined 02:19 bisectable6 left, linkable6 left, greppable6 left, statisfiable6 left, evalable6 left, releasable6 left, notable6 left, unicodable6 left, benchable6 left, sourceable6 left, tellable6 left, bloatable6 left, reportable6 left, squashable6 left, coverable6 left, quotable6 left, committable6 left, nativecallable6 left, shareable6 left, squashable6 joined, benchable6 joined, bloatable6 joined 02:20 statisfiable6 joined, reportable6 joined, releasable6 joined, greppable6 joined, sourceable6 joined, nativecallable6 joined, committable6 joined 02:21 bisectable6 joined, tellable6 joined, quotable6 joined, notable6 joined 02:22 unicodable6 joined, shareable6 joined, evalable6 joined, coverable6 joined, linkable6 joined 04:08 coverable6 left, releasable6 left, evalable6 left, notable6 left, reportable6 left, quotable6 left, shareable6 left, tellable6 left, bloatable6 left, committable6 left, greppable6 left, statisfiable6 left, unicodable6 left, squashable6 left, benchable6 left, nativecallable6 left, bisectable6 left, linkable6 left, sourceable6 left, nativecallable6 joined 04:09 quotable6 joined, benchable6 joined, shareable6 joined, notable6 joined, committable6 joined, statisfiable6 joined, reportable6 joined 04:10 unicodable6 joined, tellable6 joined, releasable6 joined, greppable6 joined, bloatable6 joined, sourceable6 joined, linkable6 joined, coverable6 joined, evalable6 joined 04:11 bisectable6 joined, squashable6 joined 06:02 reportable6 left 06:04 reportable6 joined 07:27 patrickb joined
patrickb o/ 08:54
Does anyone know off hand what the minimum Windows version we depend on is?
09:10 brrt joined
jnthnwrthngtn patrickb: As a lower bound, the one libuv supports, which is Windows 8 per github.com/libuv/libuv/blob/v1.x/S...ATFORMS.md 09:23
patrickb Thanks! 09:38
jnthnwrthngtn fwiw, I'm currently working through getting Rakudo building with new-disp used for the various dispatches (so far, call and callmethod ops) 09:44
Currently considering replacing object boolification with the dispatch mechanism also 09:46
Which will make things more uniform in at least spesh
lizmat feels ok to me fwiw 09:47
jnthnwrthngtn More generally I think all of MVM_coerce_istrue, MVM_coerce_smart_stringify, MVM_coerce_smart_numify, and MVM_coerce_smart_intify could disappear 09:49
But about the boolification, currently we have ops for if_o, unless_o, istrue, and isfalse. 09:52
And spesh already rewrites the first two to use the latter two and if_i/unless_i because it makes analysis easier
So they only help bytecode side a little 09:53
.oO( RISC wins again... )
Uh, bytecode *size*
Anyway, think I'll divert to clean this lot up today given it's the current CORE.setting compilation blocker 09:54
10:27 patrickb left
brrt ohai 10:50
jnthnwrthngtn o/ brrt 11:12
brrt what's the thing that's currently broken? 11:17
11:38 patrickb joined 12:02 reportable6 left 12:05 reportable6 joined
jnthnwrthngtn brrt: `if $a-raku-object {}` compiles into unless_o, which goes through the current dispatch mechanism, which doesn't end well because we end up invoking a proto method compiled for the new dispatch mechanism. 12:09
And the best way to fix this seems to be to 1) generate istrue + if_i/unless_i sequences instead, which spesh actually already does today anyway, and b) compile istrue into a `dispatch` instruction that delegates to the language method call dispatcher 12:10
s/b)/2)/ :) 12:11
brrt ah, I see 12:24
so it's a new-disp problem
jnthnwrthngtn Not so much problem as just the current thing that needs doing to get us fully moved over to new-disp 12:26
13:13 brrt left 13:22 patrickb left 13:24 patrickb joined
Geth MoarVM/new-disp: 7313b9e79b | (Jonathan Worthington)++ | 6 files
Implement boolification using the dispatcher

This will replace all(if_o, unless_o, istrue, isfalse) after an NQP rebootstrap. The primary motivation is to have the method call form of boolification use the new dispatcher, however this will also make things simpler in spesh, since it will be just another dispatch op rather than needing special handling of the various object boolifying operations as happens today.
14:36
jnthnwrthngtn We now get 20,000 lines or so into compiling CORE.setting with new-disp. The next thing to fix up is that the chain compilation doesn't spit out a dispatch op, but the legacy invoke op 15:16
Now somewhere past 40,000 lines and the next problem is that I didn't teach the new-disp multi-dispatcher about native refs... 15:46
[Coke] fell down the wet front steps yesterday, and is definitely feeling old-mannish today. Ow. 16:15
jnthnwrthngtn Ouch. :( 16:20
[Coke] jnthnwrthngtn++
(er, for the new disp work, not the condolences, though I appreciate those!) 16:21
jnthnwrthngtn Hope not too much damage done
[Coke] jnthnwrthngtn: I cannot remember the last time I swore so loudly!
I am still sore. I am pretty sure nothing's broken, though, which I am grateful for.
jdv my brother in law slipped on dry gravel the other day and landed on his back and he's just 30 16:31
his knee was a problem the next few days 16:34
16:45 Voldenet left 16:50 Voldenet joined
Geth MoarVM/new-disp: 70e22d8f9d | (Jonathan Worthington)++ | 3 files
Avoid freeing the arg identity maps

They can be referenced from deep in the callstack. Instead, assume we will usually only need one of a certain size, and if we ever need more then create a full-size one. Free one or both only at exit time. Also use a define instead of a magic number in various places.
17:24
jnthnwrthngtn Well, curious. We now make it through CORE.setting stage parse and into optimize, then memory usage goes wild. Guess that'll be the next thing to figure out. 17:29
Well, looking at the time...not right now :) bbl 17:31
18:03 reportable6 left, reportable6 joined
[Coke] jdv: I wish I was only 30-old! 20:15
got a big one coming up this year.
jnthnwrthngtn: nice progress, though. good work
20:27 patrickb left
Geth MoarVM/new-disp: 9a6ac14fd0 | (Jonathan Worthington)++ | src/core/instance.h
Fix an overflow causing runaway allocations
21:22
21:25 Kaiepi left 21:26 Kaiepi joined 21:39 Altai-man joined 21:41 Altai-man left
Geth MoarVM/new-disp: 0463adde28 | (Jonathan Worthington)++ | src/core/callstack.c
Make oversize callstack record error informativer
21:42
jnthnwrthngtn Alright, yay. We now make it through the Rakudo build with new-disp. 21:43
japhb \o/ 21:44
jnthnwrthngtn `make test` even passes some sanity tests; `use Test` not working out fails the rest. That's certainly not for today, but getting to this point wasn't so bad as I feard.
japhb Go jnthnwrthngtn go!
OOC, when do you get another new-disp day? 21:45
jnthnwrthngtn It's also glacial because spesh doesn't understand how to optimize dispatch any non-trivial dispatch program yet
japhb Define "glacial" -- like orders of magnitude slower? Or like 2-4x?
jnthnwrthngtn ~2x
It's doing no inlining or specialization linking 21:46
japhb 2x worse without spesh or inlining actually seems pretty promising
jnthnwrthngtn It does manage some amount of spesh/JIT, but it's probably a bit off in its assessments of things too
japhb Ah, makes sense
jnthnwrthngtn No inlining has rather more than the cost of just missing the inlining too 21:47
japhb ... because of inability to optimize surrounding a call? 21:48
jnthnwrthngtn Well, to see things that cross the call boundary, for example if we inline a call we can see what it does and toss any checks against the type of the return value it produces in some cases, for example. Or allocations become possible to analyze because they don't escape. 21:50
Anyway, I should get further on being correct before I go after being faster. :)
21:51 Kaipi joined
jnthnwrthngtn Probably will continue with this on Monday; not all day, but hopefully a few hours. 21:52
21:52 Kaiepi left
jnthnwrthngtn In theory should get 2+ days worth of time in on it; Friday might be a bit of a lost day depending how I feel after dose 2... 21:52
(2+ days from next week, I mean)
japhb Ah, finally getting second vaccine dose? Yeah, you've got about a 50-50 chance of being knocked over. :-/ 22:03
jnthnwrthngtn The first time was some fatigue and a sore arm as effects of the vaccination itself, but I'm really anxious about getting any kind of injection of anything, which is at least as exhausting. 22:15
japhb Yeah, I can understand that. 22:18
22:25 japhb left 22:31 japhb joined