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 that's...unexpected 01:42
and my windows vm doesn't want to start up, yay
oh, coincidentally i have a virtualbox and virtualbox kernel module update just now. maybe i'll restart in a bit and see if that fixes anything 01:44
ugexe i think i found one clue in that node is explicitly prefixing paths with \\?\ 03:06
MasterDuke oh, so it does have some explicit handling of windows? that's sort of annoying that we can't just punt everything to libuv 03:08
ugexe yeah, i guess libuv just removed the max_path limitation but didn't provide automatically handling 03:13
github.com/nodejs/node/blob/0597f1...#L622-L651 03:18
MasterDuke ugh 03:19
ugexe yeah
[Coke] sneaky 03:22
MasterDuke where do we want to do that? moarvm/nqp/rakudo?
ugexe well the old code kind of handled that stuff 03:24
github.com/MoarVM/MoarVM/pull/1745...96eL96-L97
and we know that the old code did create the directory, so I suspect it is doing the right thing with \\?. Maybe its worth copying the logic to add that prefix. As for why it errors in other ways, I suspect that similar prefix is needed for other parts of the logic like calls to uv_fs_lstat and whatnot for them to detect the file 03:25
as for where the toNamespacedPath would ideally live... if you want moarvm to be able to work inside long paths on windows (like someone installs it to a long path) then that would probably be ideal. but looking at the nodejs function it calls that win32.resolve(...) which is rakudo IO::Path logic. so i dunno lol 03:27
i think just adding a function to prefix paths with \\? if its not a relative path could be the easiest way though 03:28
MasterDuke hm. i thought i could get rid of most of the `#ifdef _WIN32` stuff, but maybe i should just do the minimal change of only changing the actual function that does the work from non-libuv to libuv 03:29
well, don't think i have to focus to try any changes tonight, but thanks for doing the research, i'll give the PR a workover later 03:30
ugexe you might be able to contain all the #ifdef win32 stuff in a single function that is a no-op outside of windows 03:32
github.com/libuv/libuv/blob/7fd7e8...2705-L2721 - this looks to be how libuv does it in the one spot it needs to 03:49
worth grepping for LONG_PATH_PREFIX in that same file 03:51
Geth MoarVM: b2fc656826 | (Daniel Green)++ | CREDITS
Add myself to the credits
04:44
Nemokosch is there a reason why github.com/MoarVM/MoarVM/pull/1724 (and the strongly related github.com/Raku/nqp/pull/781/files) can't be merged? 10:08
lizmat I wouldn't know, pinged jnthn for a review 10:14
MasterDuke timo1, nine: wow, there's something wrong with the profiler and uints. `raku --profile=int_loop.html -e 'my int $sum = 0; for ^1_000_000 -> int $i { $sum += $i }; say now - INIT now; say $sum;'` completes just fine and creates an ~500k profile. changing the two `int`s to `uint`s causes a segfault. if i reduce the loop iterations down to 10_000 it 18:56
completes, but creates a 1.8mb profile
MasterDuke ah, but i think it's a simple fix 19:02
lizmat MasterDuke: do you see a reason not to merge github.com/MoarVM/MoarVM/pull/1724 >? 19:05
MasterDuke not really. nine approved it, it looks relatively simple. we can always revert if need be 19:07
lizmat ok, then I'll merge it
Geth MoarVM: 6adfc376cb | (Ben Davies)++ (committed using GitHub Web editor) | 3 files
Fix nqp::objprimunsigned handling of unsigned or sized integers (#1724)

This would compare the boxed_primitive flag against MVM_STORAGE_SPEC_BP_INT before returning the is_unsigned flag, but this excludes the other sizes of int, as well as uint altogether. Give this the same check as nqp::objprimbits; encourage stringy types to default to zero themselves.
MasterDuke nine: we don't need a `getlex_nu`? 21:37