Skip to content

Conversation

@ghost
Copy link

@ghost ghost commented Apr 4, 2025

This PR introduces 64-bit Vere. The principle changes involved have to do with the introduction of a new type, c3_n, which is 32 bit or 64 bit depending on if it was compiled with -DVERE64.

The following work still needs to be done:

  • every appearance of _tmp in pkg/noun (~800 locations)
  • 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
  • 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
  • PMA integration (easy in vere64, vere32 requires more involved work)
  • 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 events.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

I will make this more granular and regularly update this as involved collaborators complete things.

@matthew-levan matthew-levan self-assigned this Apr 4, 2025
@barter-simsum
Copy link
Collaborator

majority of changes in hashtable and trace. misc changes elsewhere. majority of remaining _tmp usage to convert to 32/64-bit limited to jets

@barter-simsum
Copy link
Collaborator

recommend concurrent or after completion of _tmp conversions to run zig build with -Wconversion clang opt. There are likely many violations prior to VERE64, so compare the diff between output before/after VERE64 changes and inspect those specific occurences

pkova added a commit that referenced this pull request May 23, 2025
These issues came up while testing #812 under Asan and Ubsan. The +bex
jet had already been partially fixed in #764. There are many more of
these undefined left shifts in the codebase. Those should be
systematically rectified, maybe as part of #794.
@matthew-levan matthew-levan changed the base branch from develop to next/kelvin/409 June 17, 2025 15:44
@matthew-levan matthew-levan mentioned this pull request Jul 1, 2025
32 tasks
Base automatically changed from next/kelvin/409 to develop September 24, 2025 19:21
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.

2 participants