Per-ship switch between 32-bit and 64-bit vere - #769
Open
mopfel-winrux wants to merge 1 commit into
Open
mopfel-winrux wants to merge 1 commit into
mopfel-winrux wants to merge 1 commit into
Conversation
The canary urbit image now ships both vere32 and vere64 of the same release. This lets a hosted ship opt into the 64-bit runtime (and back) without pulling a different image: - new per-pier `vere_bits` setting (defaults to 32); every start script takes `--vere-bits=32|64` and prepends /usr/local/vere/<bits> to PATH - new `migrate` boot status: replays to head with the current-width binary, then boots once with the target binary so vere migrates the snapshot in place - `vere-bits` websocket action that stops the ship cleanly, runs the migration, checks the exit code (reverting on failure), and restarts the ship if it was running - UI: "Vere Runtime" section with a 32/64 selector and confirmation modal, 64-BIT badge in the ship header - fix `dofa` typo that made the prep script a bash syntax error, and a malformed json tag on the websocket payload Value field Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KkS5szoJcM6ExZh9jAQTXP
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.
What
Lets a hosted ship opt into the 64-bit vere runtime, and back, from the ship page. Pairs with Native-Planet/urbit-docker
vere64-optin, which makes thecanaryimage ship bothvere32andvere64of the same release under/usr/local/vere/{32,64}/urbit(/bin/urbitstays 32-bit, so nothing changes for existing ships and the version server is untouched).Why
vere 5.0 (edge) migrates a pier's snapshot between loom widths automatically at boot: the 64-bit binary upgrades a 32-bit snapshot in place, and the 32-bit binary downgrades a 64-bit one if it fits in the 32-bit loom (16 GB cap). Since both binaries live in one image, the switch is "stop cleanly, boot once with the other binary" and needs no image pull.
How
vere_bitssetting (defaults to 32). Every start script (boot, prep, pack, meld, chop, rollchop, roll) takes--vere-bits=32|64and prepends the matching dir toPATH, so vere updates, prep, and chop keep working on either width.migrateboot status: the script reads the snapshot's real width fromimage.bin, replays to head with the current-width binary (a cross-width migration aborts on a stale snapshot), then boots once with the target binary.vere-bitswebsocket action, modelled on Chop:|exitthe ship, run the migrate container, check its exit code (revertvere_bitsand restart on the old width if it fails), then restart only if the ship was running.64-BITheader badge.--vere-bitsand--no-migratein the extra-args box.Also fixes two pre-existing issues found on the way: the prep script has had
dofainstead ofdosince v2.4.10 (bash syntax error, sourbit prepnever ran during vere updates), and theValuefield on the websocket payload had a malformed json tag that failedgo vet.Tested
go build,go vet, unit tests for docker/structs/config/defaults; UI builds; all embedded scripts passbash -n.~zodinside the new image: 32→64 migration, normal 64-bit boot via the real start script, unclean kill, then 64→32 migration (the replay-first step handled the stale snapshot).Notes
edgepace publishesvere32/vere64artifacts, so this is canary-only until Tlon promotes 5.0.🤖 Generated with Claude Code
https://claude.ai/code/session_01KkS5szoJcM6ExZh9jAQTXP