Skip to content

vere64#970

Open
matthew-levan wants to merge 199 commits intodevelopfrom
ml/64
Open

vere64#970
matthew-levan wants to merge 199 commits intodevelopfrom
ml/64

Conversation

@matthew-levan
Copy link
Copy Markdown
Contributor

@matthew-levan matthew-levan commented Feb 23, 2026

Cribbed from #794.

This PR introduces 64-bit Vere. c3_w is now either 32 or 64 bit, depending on if it was compiled with -DVERE64 (on by default, or off with zig build -Dvere32).

The following work still needs to be done:

  • define final typedefs, update usages accordingly
  • every appearance of _tmp in pkg/noun (excluding pkg/noun/jets) (~800 locations)
    • trace.{c,h}
    • ship.{c,h}
    • nock.h
    • version.h
    • imprison.{c,h}
    • jets.{c,h}
    • allocate.{c,h}
    • retrieve.{c,h}
    • *_tests.c
  • every appearance of _tmp in pkg/noun/jets
  • look at diff of pre and post VERE64 compilation with -Wconversion flag. Investigate every instance.
  • run with llvm addr sanitizer, ubsan
  • audit every jet
  • migrations: bidirectional (use MSB of version tag to mark if vere64 or not? maybe also add metadata for pointer compression)
  • integrate Joe's page based allocator
  • new rsignal_setjmp/longjmp may have volatility problems (talk to Joe. maybe use atomics?)
  • pkg/vere/noun-tests is completely broken
    • ensure noun tests make sense/are worth having
  • every appearance of _tmp in any other subdirectory (~1000 locations)
  • c3_w_clz, ctz, pc occurrences (we should change current occurrences to _tmp as we did with u3r_word, etc and go through them
  • c3_etch_word, c3_sift_word occurrences (also change to _tmp)
  • make sure everything works (C tests and hoon tests included) still for vere32
  • revendor murmur3 with a size_t len
  • test really big nouns in ames/fine/mesa
  • the event log and other lmdb state should not need migration. we should double check lmdb.c, disk.c
  • there's a lot of bloq size related things in the jets that could be changed to greater than 32 for the 32 bit case
  • (mug .(eny 0, now 0)) equality test for fakezods booted in 32-bit and 64-bit modes
  • mug-verified automated migration tests in ci

dozreg-toplud and others added 16 commits March 31, 2026 17:24
`va` stuff appears to be error-prone and hard to debug when it comes to
vere64 rewrite. One missing cast is enough to cause input argument
corruption.

This PR changes most of our variadic functions to functions that take an
array and a `c3_z` length + a variadic macro wrapper.

I target vere64 because the change mostly concerns that branch, to make
@matthew-levan life simpler when it comes to merges.
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.

4 participants