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.
MasterDuke timo: i noticed you had some comment about performance when using the iterator over strings. i don't remember what exact code i was looking at a little while ago (hopefully i have some work saved i can retrieve when my desktop gets set up soon), but there are a bunch of places where we could make a tradeoff of increased code size for better 01:38
performance
coincidentally i was looking at dotat.at/@/2022-06-27-tolower-swar.html (a blog post about doing tolower() fast), but our current implementation of lc uses the grapheme iterator 01:40
and then github.com/simdutf/simdutf hit HN yesterday or today. istr i looked at it (or its precursor) before, but whatever i looked at wasn't immediately obviously useful. but it looks like it's been expanded upon since i looked at it before, so maybe someone else could take a second look and re-evaluate 01:50
fwiw, during a compete build+install of rakudo, lc() is called 86,531 times on strings of <8 chars and storage type of MVM_STRING_GRAPHEME_8 02:06
hopefully in a week or so i'll be able to get back into moarvm/rakudo hacking a bit 02:27
Nicholas good *,* 06:22
timo good 08:18
i semi-randomly watched the "swiss tables" presentation again, the one from cppcon from the google engineer 08:22
timo our hash implementation doesn't use any intrinsics for sse and such? 08:32
Guest68 Hello everybody. I have been investigating a problem I have with rakudo on macOS: stackoverflow.com/questions/734149...u-2022-04. The problem is a commit to libuv. For Darwin fork()/exec() has been replaced with posix_spawn(). A side effect of this change is that posix_spawn() treats all descriptors, regardless if 08:34
opened or not with O_CLOEXEC, as if they had. This is the pull request: github.com/libuv/libuv/pull/3064. I think that moar/raku/nqp (?) did not adapt to this change. The process is spawned but the output is lost. While I am certain that properly fixing this issue is beyond my capabilities I'd still like to have a look. I'd appreciate if
you could point me at a source folder/file/function worth investigating.
Voldenet Guest68: I could be wrong because the Proc::Async (I believe that is the one used here as well) is sufficiently complex, but github.com/MoarVM/MoarVM/blob/4b2d...ops.c#L764 is the line that spawns the process I think 09:10
Guest68 Voldenet: Thank you very much, I'll have a look. 09:14
Guest68 Unfortunately I don't get anywhere. The program flow in spawn_setup() is always the same so the file descriptors are always setup the same way. It is interesting that the test only fails when it is wrapped in MAIN. 11:25
This will succeed: echo hi | ./dir/install/bin/raku -e 'for slurp() { shell <<echo ok>>; }'
this won't: echo hi | ./dir/install/bin/raku -e 'sub MAIN() { for slurp() { shell <<echo ok>>; } }'
Guest68 I have filed an issue at github: github.com/MoarVM/MoarVM/issues/1720. Thanks for your assistance! 15:45
timo isn't that how argfiles is supposed to work? 17:42
ah i misunderstood 17:55