-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release vere-v2.10 to soon #463
Merged
Conversation
This file contains 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
ported from urbit/urbit#6108
This reverts commit 47ba262.
Co-authored-by: Jake Miller <jraydermiller@gmail.com>
This PR is the simplest available fix for #451.
Resolves #456. Written live for a tutorial with @belisarius222
This PR ports urbit/urbit#6159, fixing a performance problem that plagued previous porting attempts. Fixes #157, supersedes #210 and #413. The poor performance observed in #210 and elsewhere was not due to any issue matching or dispatching jets. It coincided with the switch from hoon %140 to %139, but only incidentally. It was caused by a change to the `+solid` pill generator, which inadvertently broke the structural sharing in the lifecycle sequence (see https://github.com/urbit/urbit/pull/5989/files#diff-2f8df9d079ccb58c0a9a9c46f2f7dbd943dabaa21ba658c839de757bbac999f1L108-L116). The problem was unnoticed because, in normal (ie, king/serf) boot and replay, events are sent over IPC in batches, which had the side effect of recovering the necessary structural sharing. This new replay implementation does not involve IPC, but instead reads and computes events synchronously, in a single process. The issue did not arise until ships booted from pills created with the updated generator were replayed using this new implementation, and that happened to coincide with the release of hoon %139. The absence of structural shared lead to jets being registered with one copy of the kernel, but dispatched from a separate copy, resulting in absurdly expensive equality comparisons. Since both copies were already allocated on the home-road, unification could not be performed. And since the problem manifested during the initial phase (lifecycle sequence) of the boot process, `|meld` could not be used. This PR includes a trivial hack to work around such event logs: the lifecycle sequence is read in an inner road, jammed, and then cue'd, thus recovering structural sharing before any nock computation, jet registration, &c. The solid pill generator should also be fixed, but workarounds will still be needed to account for existing piers. Longer-term, home-road unification should clearly be explored to avoid such fragility.
These are the vere changes that accompany urbit/urbit#6669, see that for a description.
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.