[ANNOUNCE] urbit-v1.3

39 views
Skip to first unread message

joe bryan

unread,
Apr 1, 2021, 9:31:14 PM4/1/21
to urbit-dev
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

~master-morzod
Reply all
Reply to author
Forward
0 new messages