Skip to content

Release vere-v4.4 to soon#1018

Merged
pkova merged 155 commits into
releasefrom
develop
May 20, 2026
Merged

Release vere-v4.4 to soon#1018
pkova merged 155 commits into
releasefrom
develop

Conversation

@pkova

@pkova pkova commented May 20, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

midden-fabler and others added 30 commits August 29, 2025 10:03
Conn protocol closes the channel as soon as an EOF is received
from a read request. This is at odds with a typical usage of conn,
where separate programs are used to send a command and receive a result.

We modify this behavior by calling moat `bal_f` only on genuine read errors.
Furthermore, in conn.c we close the channel after processing the effect
if we detect that the read end of the pipe has closed.
Almost entirely cargo-culted from adf3c65, with the addition of the
kelvin changes in mars.c.

No actual jet changes yet, but we could imagine updating the +loot
jet to drop the always-empty doccords (see urbit/urbit#7252).
As part of urbit/urbit#7252 the signature of +loot changes to drop the
doccords on cores entirely. Here, we take out a u3t call to match that,
making sure to keep a copy of the old jet around for pre-135 jets.
As part of urbit/urbit#7252 the signature of +loot changes to drop the
doccords on cores entirely. Here, we take out a u3t call to match that,
making sure to keep a copy of the old jet around for pre-135 jets.

I put the old version of the jet in the `jets/136` folder, and make all
old `tree.c` files refer to that version of the jet instead. Open to
discussion on the pattern/approach here. On the upside, old jet code
contained within the respective `jets/[version]`. On the downside,
annoying to have to change the older jet definitions to point at
`myjet_123` instead.
pkova and others added 28 commits April 29, 2026 18:23
Persistent memoization should only happen in kernelspace or when scrying
is disabled. Currently there is no way to check the former so we use the
latter condition.

Ford persistent caching should also check that scrying is disabled. Note
that this PR depends on urbit/urbit#7343,
without it building would take forever.
Made an Ackermann benchmark about 10% faster
Adds arguments to `u3_meld_all` to control whether we free the
persistent memoization buckets.

Adds `memo-drop` and `ford-drop` CLI arguments to free the buckets (they
are retained by default).

Added argument parsing to `%meld` task: if an argument is a pair of
loobeans then they are passed, otherwise fall back to not freeing the
buckets.

NB: On automeld we free the persistent memo bucket but not the ford
caches. Thoughts?
This PR fixes a bug in hashtable trimming (introduced while refactoring
in 98bcfaa). The wrong sentinel value
was returned for a missing key in an intermediate node (`c3n` instead of
`u3_none`), making it appear incorrectly that a value had been trimmed
and causing the hashtable entry-count to be wrongly decremented. This
was effectively a space leak in the capped-cache variants of our HAMTs
(ie, the persistent memoization cache), corrected only by melding.
This PR adds (again) a `%drop` hint to discard ford caches. This time
the caches are discarded at the late-most time, when we are returning
from the top-level wrapper.
Adds a global variable that tracks the road depth at which the ford
cache was freed.

In top-level wrapper set it to zero (might be set to non-zero value by
^C-ing during kernel upgrade).

On `%drop` set it to current road depth and free current Ford table.

On leaving the road check if the caches are old by comparing the
variable against current road depth, freeing the caches if they are old.
Note the comment on the operation order.
`readdir` writes a _variably sized_ struct dirent into the out parameter for
some godforsaken reason. This can sometimes be smaller than the full struct
dirent we're expecting here, causing sporadic segfaults in CI for the tlon-apps
repo. This is why `readdir_r` was deprecated in glibc 2.24 back in 2016.
We print the live messages in mesa.c nowadays.
We store a four byte length in u3t_sstack_push but we read a single byte when
popping.
@pkova pkova requested a review from a team as a code owner May 20, 2026 12:18
@pkova pkova merged commit 7b4c9b1 into release May 20, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants