Conversation
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.
Resolves #
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.