03:11 Techcable left 03:12 Techcable joined 03:28 vrurg_ left 03:30 vrurg joined 04:47 ShimmerFairy left 05:05 sugarbeet left, sugarbeet joined 05:08 camelia left 06:22 disbot2 is now known as disbot 10:22 unicodable6 left
timo I've thought about having a little bit of storage after an object in the nursery a few times in the past; that would allow us to create new hashes with a minimum sized hash table immediately after it in the nursery and when it makes it out of the nursery we move that hash table to mi_malloc'ed storage. if the table doesn't make it out of the nursery, no malloc + free cycle is needed for it. this 10:24
requires a bit of a change to how we allocate things though because when allocating we just pass the STable and the size to use is taken from there. that's how MVM_gc_allocate_object does it
10:24 greppable6 left 10:25 bloatable6 left, bloatable6 joined, bloatable6__ joined
timo we don't have the problem described in that post where function calls use hashes, because our named arguments work by putting argument names in callsites; it's different when you flatten named arguments, but that's usually because you don't know the keys ahead of time 10:26
10:27 tellable6 left, tellable6 joined
timo I think the default value for a hash, as well as what comparison to use (object hashes vs string-keyed hashes) lives in the HOW in our case, so doesn't use up a pointer in the object itself 10:27
10:28 notable6 left, notable6 joined
lizmat I thought object hashes were identical to normal hashes at the VM level? 10:29
10:30 bloatable6 left
lizmat It's just that they carry Pairs as values (rather than just the value) 10:30
I don't think they have different HOWs?
10:30 bisectable6 left
lizmat I stand corrected 10:31
m: dd (my %h).HOW
evalable6 Cannot test a0a60ed3ce28e6e014bf287101a6d454e364aeaa (Commit exists, but an executable could not be built for it)
linkable6 (2026-08-21) github.com/rakudo/rakudo/commit/a0a60ed3ce Merge pull request #6577 from rakudo/release-2026.08
10:31 quotable6 left
lizmat meh 10:32
it's probably the reason we lost camelia as well :-(
10:33 sourceable6 left 10:35 releasable6 left
timo they have the same HOW type, but different HOW instances, because they are different types. other than that yes, they are the same on the VM level in moarvm, but not in ruby 10:36
10:36 linkable6 left, linkable6 joined
timo or I guess the difference is in the WHAT, not the HOW 10:37
interesting: we don't inline `!cursor_fail` into the `-e:1 (cuid: 3)` from MasterDuke's example code (the one with the `\s+(\d+)` regex) because it uses `return_i`. I think that shouldn't actually be a problem for inlining, but we may have to handle it specifically? 10:56
adding a double-devirtualization for VMArray for push_i and pop_i could help remove a little bit of overhead from jitted regex code 11:07
maybe there's even some value in making multi-pop and multi-push instructions (or syscalls) as long as the JIT can handle them properly as well 11:08
I think we don't have any ops yet that write to more than one register, so spesh may need changes in many places to not trip over that
12:17 rakkable left, rakkable joined
[Coke] c: a0a60ed3c 3.say 12:56
committable6 [Coke], ¦a0a60ed: «Cannot test this commit (Commit exists, but an executable could not be built for it)»
[Coke] c: a5c48846b310c4e79e785b473f32dc928776d47f e.say 12:58
committable6 [Coke], ¦a5c4884: «2.718281828459045␤»
[Coke] opened a ticket for that a0a6 bad build
13:16 timo left, timo joined 14:05 linkable6 left, benchable6 left, shareable6 left, evalable6 left, bloatable6__ left, committable6 left 14:08 notable6 left, tellable6 left, huggable6 left, nativecallable6 left 14:09 benchable6 joined, benchable6__ joined 14:11 quotable6 joined, sourceable6 joined, nativecallable6 joined 14:12 linkable6 joined, greppable6 joined, unicodable6 joined, greppable6__ joined 14:14 benchable6 left 14:16 greppable6 left 14:21 nine left, nine joined 14:53 ShimmerFairy joined, nativecallable6 left, quotable6 left, unicodable6 left, sourceable6 left, linkable6 left, benchable6__ left, greppable6__ left 14:56 greppable6 joined, coverable6 joined, greppable6__ joined, tellable6 joined, shareable6 joined, sourceable6 joined, unicodable6 joined, bisectable6 joined 14:57 benchable6 joined, committable6 joined, quotable6 joined, releasable6 joined 14:58 evalable6 joined, bloatable6 joined, linkable6 joined, nativecallable6 joined, notable6 joined, huggable6 joined 15:00 greppable6 left
timo github.com/microsoft/mimalloc/issues/1373 stumbled over some fascinating behaviour of mimalloc in combination with Transparent Huge Pages 18:20
TL;DR of the resolution: having no memory "free" (as in: completely unused) means the kernel has to actively move pages with content around if it wants to compact pages together into a huge page transparently, and apparently that blocks the process that does the memory access that leads to that work? 20:13
freeing up some memory on the rest of the system leads to a performance benefit from allowing mimalloc to use THP 20:14
(that's what I've configured my system to do: when a process uses madvise with the "allow THP" flag, it will try to coalesce pages into huge pages)
Geth MoarVM: MasterDuke17++ created pull request #2035:
Bump mimalloc to v3.5.0
21:42
[Coke] annoying that the one off "test on dragonfly" completes so much faster than the "standard" builds in CI 21:47
Geth MoarVM/main: 2c16915d50 | (Greg Donald)++ | 5 files
Add code coverage instrumentation filtering
21:48
MoarVM/main: fe50e5c704 | (Greg Donald)++ | src/moar.c
Drop env variable copying code.

Free instance->coverage_file_filters.
MoarVM/main: cf7bdf25b1 | MasterDuke17++ (committed using GitHub Web editor) | 5 files
Merge pull request #2018 from gdonald/coverage-file-filter

Add code coverage instrumentation filtering
[Coke] Can we get Changelog entries for those, thanks. 21:49
timo the "test on dragonfly bsd" seems to only be compilation? 23:07
oh, there it is, it does run the nqp test suite
I don't love that a good 2/3rd of the output is perl warning about not being able to set the desired locale ... 23:08
23:32 japhb left, japhb joined
[Coke] There was a PR for that and that note was made - if you really don't like it, he can fix it 23:43
github.com/MoarVM/MoarVM/pull/2027 23:44
timo it's not that bad, I don't have to look at it, and I don't think it influences the results any. it does make it pretty unlikely that anybody spots any interesting warnings in between though I guess?
[Coke] (or you can based on the notes there)
yup, cleaner is probably better, you're right 23:45
23:46 camelia joined