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:07 reportable6 left 00:10 reportable6 joined 00:35 kjp left
timo that sounds like a good idea actually, yeah 00:47
02:18 sourceable6 left, bloatable6 left, notable6 left, bisectable6 left, benchable6 left, unicodable6 left, greppable6 left, squashable6 left, linkable6 left, statisfiable6 left, quotable6 left, shareable6 left, tellable6 left, evalable6 left, coverable6 left, nativecallable6 left, releasable6 left, reportable6 left, committable6 left 02:19 bisectable6 joined, greppable6 joined, quotable6 joined, notable6 joined 02:20 unicodable6 joined, coverable6 joined, shareable6 joined, reportable6 joined 03:19 bloatable6 joined, evalable6 joined, committable6 joined 03:20 statisfiable6 joined 03:21 linkable6 joined, sourceable6 joined 04:08 kjp joined 04:20 tellable6 joined, nativecallable6 joined, releasable6 joined, benchable6 joined 05:22 evalable6 left, committable6 left, tellable6 left, nativecallable6 left, greppable6 left, benchable6 left, bisectable6 left, statisfiable6 left, releasable6 left, notable6 left, sourceable6 left, linkable6 left, reportable6 left, bloatable6 left, shareable6 left, quotable6 left, unicodable6 left, coverable6 left 05:23 coverable6 joined, unicodable6 joined, bisectable6 joined 05:24 committable6 joined, quotable6 joined, sourceable6 joined 05:25 benchable6 joined, evalable6 joined, linkable6 joined, releasable6 joined 06:24 tellable6 joined 06:25 notable6 joined, nativecallable6 joined 06:57 bartolin left 06:59 bartolin joined 07:21 squashable6 joined
Geth MoarVM: MasterDuke17++ created pull request #1633:
Simplify MVM_string_utf8_encode_C_string
08:19
08:23 statisfiable6 joined 08:24 greppable6 joined 08:25 bloatable6 joined
timo i hope we're not using that function in performance-critical code tho :) 08:34
MasterDuke it's used in a few more places than i expected, but i don't think any are terribly performance critical in "usual" code 08:36
samcv: you might find github.com/dotnet/runtime/pull/63285 and/or github.com/smart-tool/smart interesting 08:40
timo: while you're here, any thoughts about my get-and-reset-profiling-data-with-a-syscall experiment? is the naive MVM_profile_end+MVM_profile_start just not even going to work for experimentation and i really need to implement a correct solution? 08:42
timo i'm also stumped why the profile_end would return an empty object, though i didn't look at the actual code yet 08:43
nine Is realloc actually slower than malloc + memcpy?
timo realloc should sometimes be able to just re-use the memory and not memcpy 08:44
when the allocated piece was already big enough to hold one more byte anyway
MasterDuke i'd suggest that unless the realloc is in fact quite a bit slower (which seems unlikely), it's still a logical simplification of the code 08:48
nine: btw, have you seen that there have been a couple recent CI fails in t/02-rakudo/reproducible-builds.t ? 08:49
timo we don't implement realloc ourselves, right? only in like the fsa and such?
MasterDuke correct 08:50
nine: think it would make sense to add something like `MVM_dump_backtrace(tc)` to the hash iterators in moarvm, compile nqp and rakudo, and see where they're being called from without being sorted afterwards? 08:59
nine definitely 09:01
09:08 reportable6 joined
Geth MoarVM: 99e0a715d9 | (Daniel Green)++ | src/strings/utf8.c
Simplify MVM_string_utf8_encode_C_string

By just reallocing the result of MVM_string_utf8_encode and sticking a NULL on the end of it instead of mallocing a new larger string and memcpying into it.
09:20
MoarVM: 76051fcf3c | MasterDuke17++ (committed using GitHub Web editor) | src/strings/utf8.c
Merge pull request #1633 from MasterDuke17/simplify_MVM_string_utf8_encode_C_string
09:25 shareable6 joined
MasterDuke while we're discussing PRs, any comments on github.com/MoarVM/MoarVM/pull/1632 ? 09:29
Geth MoarVM: f4b4692ae4 | (Daniel Green)++ | .gitmodules
Ignore untracked changes in the ryu submodule

This stops the `modified: 3rdparty/ryu (untracked content)` message from showing up in a `git status` in the MoarVM repo after it's built. An alternative would be to add `ryu/ds2.o` to 3rdparty/ryu/.gitignore, but that would require adding a commit to the submodule instead.
09:35
MoarVM: 39e9a6be0c | MasterDuke17++ (committed using GitHub Web editor) | .gitmodules
Merge pull request #1632 from MasterDuke17/ignore_untracked_changes_in_ryu_submodule
MasterDuke hm. i have 470 distinct `at <...>` lines for the nqp build and 535 for rakudo (but the build was killed before stage parse finished). i'm not sure how to tell which ones to look into 09:51
e.g., could github.com/rakudo/rakudo/blob/mast...#L710-L712 be problematic? 09:55
nine No, it just binds those keys in another hash 09:56
MasterDuke hm, this is the only fail i could quickly find in the CI logs, but maybe it's not actually a reproducibility problem? dev.azure.com/Rakudo/rakudo/_build...amp;l=2058 10:14
nine 2022-01-03T22:07:44.5816545Z ===SORRY!=== Error while compiling D:\a\1\rakudo/t/02-rakudo/reproducible-builds.t 10:24
That doesn't look like it's due to an actual reproducible build issue
MasterDuke unrelated, but github.com/rakudo/rakudo/blob/mast...akumod#L51 is using the deprecated `.status`
nine Why is .status deprecated in the first place? 10:25
MasterDuke yeah. i'm going to put this investigation on hold until/unless we see another real reproducibility fail
from the deprecation message `Please use exitcode and/or signal methods (status is to be removed in 2022.06) instead.` 10:26
10:27 frost left
nine But exitcode and signal do different things than status 10:27
MasterDuke github.com/rakudo/rakudo/pull/4442 10:28
github.com/rakudo/rakudo/issues/1366 and github.com/Raku/doc/issues/1710 10:29
looks like a question for moritz
nine None of that explains why it has to go. Only that it's not wanted.
MasterDuke istr something about not all platforms setting the right values, so you need to inspect the two parts manually depending on what os you're on? 10:32
10:37 frost joined
MasterDuke some relevant chat here colabti.org/irclogger/irclogger_lo...07-27#l103 10:39
12:04 reportable6 left, linkable6 left 12:05 linkable6 joined 12:06 reportable6 joined
MasterDuke oh interesting. i fired up my mimalloc branch again and everything built ok. i think it's because previously i had changed the runners to use the MVM_* functions instead of e.g., malloc directly. however, that really shouldn't be required to get the benefit of using mimalloc, so i'll probably just leave that for a potential future change 12:22
i guess the thing to do now is decide if i/we only want to use mimalloc if a probe in Configure for cmake succeeds 12:24
however, i just recently noticed github.com/microsoft/mimalloc#single-source which may mean we wouldn't need to depend upon cmake at all 12:25
12:41 linkable6 left
nine MasterDuke: oh, that sounds way better :) I guess mimalloc would then be just another part of libmoar.so 13:14
MasterDuke i assume that would increase the size of libmoar.so by the same amount as libmimalloc.a (234k), but the tradeoff seems worth it 13:16
now trying to figure out how to reconfigure the build to just build that single file 13:17
moon-child I'm pretty sure that's smaller than the unicode tables :P
MasterDuke heh 13:18
nine MasterDuke: I think all it needs is -I3rdparty/mimalloc/include -I3rdparty/mimalloc/src in CFLAGS and 3rdparty/mimalloc/src/static.c in the sources list for libmoar 13:20
MasterDuke i was wondering about that. it looks like for some of the other single file 3rdparty libs (e.g., tinymt) we do create .a's 13:21
oh, everything seems to be fine now 13:39
a downside however...mimalloc appears to not (yet) play nicely with valgrind 13:40
13:40 frost left
MasterDuke github.com/microsoft/mimalloc/issues/251 13:41
13:43 linkable6 joined 13:44 linkable6 left 13:45 linkable6 joined 13:46 Geth left, Geth joined 13:57 Geth left, Geth joined
MasterDuke hm. but now i get segfaults with --full-cleanup 14:00
14:01 Geth left, Geth joined 14:05 Geth left, Geth joined 14:10 Geth left, Geth joined
nine Can we disable mimalloc in valgrind builds? 14:13
MasterDuke well, it looks like someone is working on integrating mimalloc with valgrind's api
but yeah, i guess that could be a workaround for now 14:14
14:14 Geth left, Geth joined
MasterDuke but first i need to figure out why i'm getting these segfaults now 14:14
happening in MVM_gc_global_destruction 14:17
so far always seems to be here github.com/MoarVM/MoarVM/blob/mast...odel.c#L60 14:25
and the st looks ok. debug_name = 0x555555559c60 "BOOTStrArray" 14:26
but there's a warning printed before the segv: `mimalloc: warning: mi_free: pointer might not point to a valid heap region: 0x555555559c60`
hm. the other fields do have addresses that look more like this though `boolification_spec = 0x200004e0760` 14:29
looks like st->debug_name can be set by MVM_serialization_read_cstr, MVM_string_utf8_encode_C_string, and strdup 14:31
wonder if it's the strdup causing the problem, since i'm not using mimalloc to override the usual functions 14:32
ah-ha! they provide a `mi_strdup` 14:34
and now spectests are good 14:41
nine Does it change setting compilation times? 14:42
MasterDuke yes. doesn't seem to speed up a spectest as much now, but that might because only libmoar is using it, not everything when i LD_PRELOADed it 14:47
there have been some changes to moarvm and rakudo since i ran the numbers in github.com/MoarVM/MoarVM/issues/1623, but it looks like it's still about 1-1.5s faster at stage parse 14:49
without the change to convert the fsa to just forward on to the regular functions
nine: btw, do you happen to have any benchmarking code i could try like jnthnwrthngtn mentioned in his comment on that issue? 14:54
just tried with the sort-of-disable-fsa patch, times seem pretty much the same (i.e., mimalloc w/ normal fsa is same as mimalloc w/ disabled fsa)
so with this we could even rip out the fsa completely 14:55
nine MasterDuke: sorry, benchmark availability has long been a sore point for Rakudo 15:17
MasterDuke yeah. another long-standing project i contemplate occasionally is to get that daily moarvm bench back up 15:19
Geth MoarVM: MasterDuke17++ created pull request #1634:
Add mimalloc submodule
15:22
MasterDuke huh, `3rdparty\mimalloc\src\static.o:static.c:(.text+0x451d): undefined reference to `BCryptGenRandom'` 16:03
afk for a while, will have to see about that this evening 16:06
lizmat ok, this is weird: trying to get IO::Path!SET-SELF below inlining limit 16:18
with this signature: method !SET-SELF(str $path, IO::Spec $SPEC, Str:D $CWD)
the size is 340 bytes
with this signature: method !SET-SELF(str $path, $SPEC, $CWD) 16:19
the size is 446 bytes
how can the bytesize **increase** by removing constraints in the signature ? 16:20
nine That can only be answered by looking at the actual generated speshed bytecode 16:36
16:54 linkable6 left, linkable6 joined 16:57 Geth left, Geth joined
jnthnwrthngtn lizmat: When the type is not iterable, it emits smaller code because it assumes it will not need to defensively place it into a Scalar container 17:09
18:07 reportable6 left 20:10 reportable6 joined
japhb jnthnwrthngtn: Oh that is very valuable information. I had been avoiding putting types on super-frequently-called methods under the assumption that there was extra cost there ... but it sounds like I may have been preventing inlining. 20:17
20:35 [Coke] left 20:39 [Coke] joined 22:13 sena_kun left 22:15 sena_kun joined
MasterDuke ugh, now dealing with windows build problems again. guess it's soon going to be time to break out that vm of mine instead of waiting for ci jobs to run... 22:26
especially since there still doesn't seem to be a way to specify the jobs to start first (windows and jvm, since those take the longest) 22:27
ok, appeared to have solved the mingw bcrypt problem. now just `inst-rakudo.exe.o:main.c:(.text+0x84): undefined reference to `mi_free'` on windows (mingw and msvc) to fix 23:03
[Coke] MasterDuke++ 23:04
MasterDuke it will be nice to get back to projects that don't involve the build system 23:06
[Coke] :) 23:07
MasterDuke oh, this last one may actually be a pretty trivial fix, let's see... 23:10
github.com/rakudo/rakudo/commit/1b5c0b9516 23:15
now to wait a couple min to restart the CI jobs in the mimalloc PR and hope they pull in that rakudo commit
ah ha! 23:36
Nicholas: do you mind testing github.com/MoarVM/MoarVM/pull/1634 on some of the crazier systems you have access to? 23:37