Skip to content
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
merged 44 commits into from
Jun 20, 2023
Merged

Release vere-v2.10 to soon #463

merged 44 commits into from
Jun 20, 2023

Conversation

pkova
Copy link
Collaborator

@pkova pkova commented Jun 20, 2023

No description provided.

joemfb and others added 30 commits February 13, 2023 08:38
Co-authored-by: Jake Miller <jraydermiller@gmail.com>
sigilante and others added 14 commits June 14, 2023 14:12
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.
@pkova pkova requested a review from a team as a code owner June 20, 2023 18:40
@pkova pkova merged commit 73f335f into release Jun 20, 2023
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.

6 participants