Arvo 420 K
Vere 1.3
This release includes a high priority fix for a bug in MacOS builds.
Other platforms are unaffected.
Additionally, it brings performance improvements to u3 (the nock runtime),
and fixes some small bugs in urbit-king (the i/o process) and vere
(the other i/o process).
- LMDB syncing on MacOS
Urbit uses the LMDB embedded database to store its event log.
LMDB is a fast, small, durable, and safe database, highly regarded
and used by many projects. However, it does not make special
accommodations for the unusual file-syncing semantics of MacOS.
In some circumstances, MacOS (and therefore LMDB) may report that
a transaction has been synced to disk, but then be missing the data
(and therefore corrupted) after a kernel crash (or maybe loss of power).
(This is the issue of `fsync()` vs `fcntl(F_FULLFSYNC)`.)
We've patched LMDB to use the more reliable mechanism on MacOS.
Both urbit and urbit-king were affected.
We've been using LMDB for a couple years, many of us on MacOS.
Until recently, we have not had (or heard of) any issues. But
a handful of pilots (3 or 4) have reported crashes on startup,
and we have found their event logs to be corrupted. We've
added a command to help diagnose this issue:
urbit db-info path-to-pier
This prints various statics about the event log, and warns if it
discovers a mismatch between the size of the file and the size
implied by the database metadata.
- u3 changes
This release adds jets for the planet un/scrambler, accelerating
print and parsing of @p around 40x. It also includes minor
improvements to the atom comparison gates (+gth, +lth, &c).
Additionally there are fixes to the nock bytecode compilation
(opcode %9 with axis 1), and corrections to jet mismatches
with the same atom comparison gates. These were all long-tail
correctness issues -- none of them were ever encountered in practice.
- urbit-king changes
This release plugs a space leak in urbit-king, and requests more
file descriptors from the OS, fixing an issue where the http
server could hang.
It also fixes a precision bug in construction of urbit timestamps,
which false implied the existence of a "femtosecond clock" in urbit-king.
- vere changes
This release adds the ability to bind the http server to a specific
ip address (via the `-b` argument), and fixes a longstanding bug
in %clay/unix sync (wherein changes that failed to |commit were
ignored by subsequent commits).
Contributions:
Joe Bryan (24):
test: check that nock 9 with axis 1 is handled correctly
test: move nock tests
u3: correctly handle nock %9 with axis 1 in bytecode compilation
build: patch lmdb to use F_FULLFSYNC on darwin
u3: adds u3_lmdb_stat() for printing env info
vere: adds `urbit db-info path/to/pier` command
vere: print db info on restart with -v
build: simply patch application lmdb nix overlay
Merge pull request #4615 from urbit/jb/darwin-fsync
u3: reallocate hot jet state before gc in meld and cram
u3: adds jet and tests for +fein:ob
u3: adds jet and tests for +fynd:ob
u3: adds jet dashboard entries for +fein:ob and +fynd:ob
u3: refactors +fein/+fynd jets and adds comments
test: adds comment documenting disabled fein/fynd roundtrip
u3: normalize style in atom comparison jets
u3: adds bitwidth shortcircuit to atom comparison jets
u3: tweak jet dashboard testing (remove assert and printf)
u3: corrects jet mismatch in atom comparison gates
Merge pull request #4703 from urbit/jb/atom-cmp-shortcircuit
Merge pull request #4078 from urbit/m/commitment
Merge pull request #4692 from urbit/jb/jet-fein-fynd
Merge branch 'master' into release/next-vere
urbit: bumps version to 1.3
fang (1):
vere: only compare to clay when committing files
pilfer-pandex (19):
king: fix insidious space leak in IPC.hs
king: fix moronic space leak in http client
king: commit seppuku when server is out of fds
king: missing changes in Main, plus setrlimit for fds
king: remove the 'hardware femtosecond clock'
king: remove the 'hardware femtosecond clock'
king: joe had good suggestions re time precision
king: address joe on fds/seppuku
hs: remove lmdb-static; just use lmdb
Merge branch 'master' into release/next-vere
Merge pull request #4558 from urbit/pp/fix-leaks
Merge pull request #4625 from urbit/pp/femtosecond
hs: modify hs/default.nix accordingly
Merge branch 'release/next-vere' into pp/lmdb
hs: dunno, try this
hs: it seems I misread bren, again
Merge pull request #4616 from urbit/pp/vegeta
Merge pull request #4640 from urbit/pp/lmdb
Merge pull request #4516 from ryjm/fix-king-scry
pkova (1):
vere: add -b to specify http server bind ip
ryjm (2):
king: fix textAsTa
king: textAsTa -> textAsT