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:05 [Coke] joined 04:33 unicodable6 left, evalable6 left, releasable6 left, benchable6 left, quotable6 left, notable6 left, bloatable6 left, squashable6 left, shareable6 left, greppable6 left, nativecallable6 left, coverable6 left, bisectable6 left, statisfiable6 left, sourceable6 left, committable6 left
Nicholas good *, #moarvm 06:17
07:19 AlexDaniel left, uzl[m] left, psydroid left, crystalfrost[m] left 07:24 AlexDaniel joined
lizmat Good * from NL as well 07:28
07:28 psydroid joined, uzl[m] joined, crystalfrost[m] joined
lizmat I think I found another race condition that can segfault, at an unexpected, yet rather hot place: 07:29
aka nqp::atkey(GLOBAL.WHO,$pkgname) and nqp::atkey(PROCESS.WHO,$pkgname)
spotted with: MoarVM oops: MVM_str_hash_fetch_nocheck called with a stale hashtable pointer
at SETTING::src/core.c/stubs.pm6:38
so it looks like we're going to need a lock on DYNAMIC :-( 07:30
or provide a threadsafe interface to fetching values from GLOBAL.WHO / PROCESS.WHO 07:31
meh... I guess this should be extended to all Stashes 08:29
and by consequence also to all ContainerDescriptors that initialize hash entries 08:36
08:46 MasterDuke left
lizmat jnthnwrthngtn nine ^^ 08:47
08:52 sena_kun left 08:53 sena_kun joined 10:07 sena_kun left 10:08 sena_kun joined
jnthnwrthngtn Well, we've already declared that one shouldn't expect Hash to be threadsafe, so I don't see it as *that* general a problem. Workflows invovling stashes arguably do need something. 10:11
lizmat like dynamic variables ? 10:14
m: dd PROCESS.WHO.^name 10:15
camelia "Stash"
lizmat but apparently when compiling 6.d setting, PROCESS.WHO is a BootHash 10:16
is that some kind of HLLization going on ?
using Stash.$!lock.protect on Stash.AT-KEY and using that in DYNAMIC fails with: Method 'AT-KEY' not found for invocant of class 'BOOTHash' 10:17
11:05 psydroid left, uzl[m] left, AlexDaniel left, crystalfrost[m] left
nine Huh....I thought we had already solved that DYNAMIC initialization problem 11:47
lizmat made it less likely, but still not 100% 11:56
it's very rare, only been able to make it crash that way once
nine Ah, that was INITIALIZE-DYNAMIC which we made thread safe 12:06
At least we are going to need that lock only when accessing dynamics that are registered in GLOBAL or PROCESS 12:08
lizmat FWIW, I found a small race condition in Stash.ASSIGN-KEY, but the fix breaks things, so going to look at it again after finishing the weekly
nine I wonder why getdynlex is marked :noinline. It is using the frame walker, so I figure it should be safe to inline. Maybe we just didn't remove the marker when switching the implementation to the frame walker? 12:10
lizmat inlining DYNAMIC would be a good win 12:11
jnthnwrthngtn nine: I think the situation was that it started looking one caller out, and to do that it wanted a ->caller to get the starting point 12:13
If that's no longer the case and it uses frame walker from the current location then it probably can be relaxed 12:14
lizmat fwiw, could someone explain why the body of src/Perl6/BOOTSTRAP/EXPORTHOW.nqp is run at each Rakudo startup ? 12:15
nine MVM_spesh_frame_walker_init(tc, &fw, cur_frame, 0); 12:22
return MVM_frame_getdynlex_with_frame_walker(tc, &fw, name);
lizmat: can you please test MoarVM's inlineable_getdynlex branch? 12:29
12:49 AlexDaniel joined 12:59 psydroid joined, uzl[m] joined, crystalfrost[m] joined 14:56 ggoebel left 15:00 ggoebel joined 16:08 MasterDuke joined
MasterDuke nine: on inlinable_getlexdyn i get `+++ Compiling   gen/moar/stage1/MASTOps.moarvm 16:10
Missing infixish operator precedence at line 1085, near " $value un"
   at gen/moar/stage2/NQPHLL.nqp:1059  (src/vm/moar/stage0/NQPHLL.moarvm:panic)
 from gen/moar/stage2/NQPHLL.nqp:1317  (src/vm/moar/stage0/NQPHLL.moarvm:EXPR)` when building nqp
lizmat and yet another Rakudo Weekly News hits the Net: rakudoweekly.blog/2022/03/28/2022-...admapping/ 16:52
17:28 sena_kun left 17:29 sena_kun joined
timo danluu.com/cgroup-throttling - interesting 17:30
for moarvm maybe mostly "make sure we're aware of cpu counts in container situations"; just today i stumbled upon a postgres that had been configured to use 16x as much ram as it has available, because assumedly the tuning tool saw only the host memory size, not what the container / cgroup had 17:47
17:51 sena_kun left 17:52 sena_kun joined
timo > The .NET runtime has had adaptive thread pool sizes for a decade, one of the many ways the .NET stack is more advanced than what we commonly see at trendy tech companies 19:42
lizmat timo: it is my understanding that MoarVM asks libuv about number of cores, and that libuv does the right thing wrt containers 20:10
timo that sounds very good already! 20:13
20:34 finanalyst joined 22:42 finanalyst left 23:40 raiph joined 23:41 raiph left