Skip to content

urbit-v1.0

Choose a tag to compare

@philipcmonk philipcmonk released this 08 Dec 19:53
· 12701 commits to master since this release
11fb87a
Arvo 420 K
Vere 1.0

This release has been made available to the network through a network-wide
breach (hard-fork). For details on how to upgrade, see urbit.org/breach.

This release brings many new features and improvements across the entirety of
Urbit's stack. This includes changes to:
- Arvo, the operating system proper,
- userspace, where Urbit OS and other apps live,
- the serf, `urbit-worker`, aka the Nock runtime,
- the C king, `urbit`, aka Vere,
- the build system used for the serf and kings.

Note that the Haskell king (`urbit-king`, aka King Haskell), has been excluded
from this release due to timing and compatibility constraints around the
breach. It will receive its own follow-up release in the near future.

----

Arvo 420 K (the operating system)

- Formalized Kelvin versions

Kelvin versions throughout the stack have been formalized. The versions
included in this release are as follows:
Zuse: 420 K
Lull: 330 K
Arvo: 240 K
Hoon: 140 K
Nock:   4 K

- Versio negotiation

Arvo and the runtime will now do Kelvin-version negotation. This mechanism is
the primary driver behind the breach, and is what will let us avoid breaching
for disruptive upgrades in the future.
Whenever an urbit is started, the runtime must inject a `%wyrd` event,
declaring its own version and the Arvo Kelvins down to which it provides
support for. Arvo stores these versions, reports runtime downgrades, and checks
for compatibility prior to updating itself.

- Arvo reform

Made a number of other changes to Arvo, with an eye towards future
compatibility:
  - Arvo now manages a minimal filesystem of its own to keep track of the
    kernel's source code. In addition to decoupling Arvo upgrades from Clay,
    this removes the strict need for using up-to-date pills during development.
  - Further reimplemented the way Arvo upgrades itself, to allow upgrading
    within one move, and make Arvo-only upgrades statically-typed.
  - Added support for full-width vane identifiers, where previously only
    single-character vane abbreviations were supported. This lets Arvo support
    over 26 vanes.
  - Now require the runtime to route events to their intended target vane
    explicitly.
  - Separated external from internal events.
  - Simplified namespace reads at the latest timestamp.

- New Ames packet format

Revised the Ames packet format to be easier to parse and be a little bit more
compact. The new "flat" format does not require `+jam` and `+cue` to interact
with its metadata, simplifying packet relay and other stateless operations.

- Experimental support for deleting apps

Gall can now delete or suspend running agents. This breaks a long-standing
invariant, and so should be considered experimental. `|fade %app` deletes an
agent, killing all its subscriptions and removing its state. `|doze %app`
suspends an agent, keeping its subscriptions and state, but queueing instead of
processing incoming events, and no longer requires the agent to compile.
`|doze %app %wake` resumes a suspended agent.

- Split `/sys/zuse` into `/sys/lull` (kernel-wide structures) and `/sys/zuse`
(kernel stdlib).

- Moved `+dawn` out of zuse, into `/lib/vere`. This let us move nearly all
Ethereum and Azimuth logic out of zuse as well. Their functionality can now
be found in `/lib`. The ivory pill is now built from these libraries.

- Changed the `+mug` algorithm to no longer directly XOR the head and tail mugs
of cells.

- Allowed tanks to be plain cords. Removed unused printing logic and `\/`-
windowing for wide values.

- Restructured interfaces to bitwise operations (`+rsh`, `+end`, `+rep` etc.)
to improve consistency and ergonomics.

- Added support for 24-bit colors in the command line protocol.

- Removed various legacy functionality and structures. No longer supports old
type syntax (ie `{a/@ b/type}`), removed all references to deprecated symbol
pronouncables, removed legacy vane tasks, cleaned up all remaining usage of
reverse-order file paths, and more.

----

Userspace

- When starting threads from dojo (using `-thread args` syntax), they now get
called with a vase containing a `unit` of the tuple of the passed arguments,
rather than a `list` of arguments.

- Updated aqua to manage Azimuth state internally, rather than depending on an
external thread.

- Improved performance of channel.js in setup scenarios by batching together
subscription requests.

- Improved utilities for Bitcoin key derivation.

- Fixed various bugs throughout the Landscape stack. Notably, leaving and
getting kicked from groups manages the relevant data appropriately, groups can
no longer lose their only administrator, and notifications get marked as read
more consistently.

----

Nock runtime (`urbit-worker`)

- `ur`, stand-alone noun allocator

The runtime gains a second noun allocator: `ur`. Unlike the existing allocator
(`u3`), `ur` is a hash-consing allocator, backed by C's `malloc`. This means
it is not subject to various limitations that the existing allocator suffers
from due to implementation details. It lets us work outside the space of an
urbit's working memory, to implement the new `|meld` functionality, portable
snapshots, and faster versions of jam & cue.

- `|meld`, global state deduplication

Previously, `|pack` would let you initiate memory compaction, deduplicating
all of your urbit's persistent state to ensure minimal memory usage. But this
would fail if you did not have enough available memory to complete the
process. `|meld` reimplements this using `ur` (discussed above). It copies
your urbit's state out of its memory, deduplicates it, and replaces your
urbit's memory with the result, avoiding the failure case that `|pack` used
hit.
In addition to `|meld` in dojo, you may also invoke this on a ship that is
not running using `urbit-worker meld path/to/pier`.
(Note that this may use a lot of system memory, and so might be slow or not
complete at all on machines with little RAM.)

- Portable snapshots

You can now create and boot from portable snapshots of your urbit's persistent
state. For example, `urbit -n 200 path/to/pier` will replay up to event `200`,
then write the resulting state to `path/to/pier/.urb/roc/200.jam`. To then
boot from the created snapshot, `urbit -r 200 path/to/pier`. These options
can be combined to perform granular event log replay.
Their functionality is also available directly through `urbit-worker`, as
`urbit-worker cram path/to/pier` and `urbit-worker queu path/to/pier`
respectively.

- New, faster jam/cue (de/serialization) implementations

By using `ur`, we can write new implementations for noun de/serialization
that are anywhere from 2x to 10x faster than the existing ones, depending
on various details.
Since jamming and cueing is done all throughout the runtime for inter-process
communication and other serialization needs, this is a broad-impact
performance improvement.

- Many new and improved jets

Additional `list`, `set` and `map` operations have been jetted. Many existing
jets have been rewritten to be tail-recursive and only allocate the minimum
necessary cells ("tail-recursion-modulo-cons").

- Added a dynamic hint protocol to the bytecode interpreter, whereby additional
hints can be whitelisted for compilation and implemented via before/after
callbacks.

- Atom construction has been refactored throughout the runtime to avoid
unnecessary or oversized heap allocations.

----

Vere 1.0 (`urbit`)

- `ames.c` packet filtering and stateless forwarding

Previously, every incoming packet would get passed into `ames.hoon` (and,
subsequently, the event log) for processing. The changes here add a
pre-processing stop to `ames.c`'s packet handling, reducing the amount of
work that goes into `ames.hoon` proper. Specifically, we do two things:

First, if we detect we won't be able to do anything useful with the packet
(for example, it has an Ames protocol version we are not aware of, the hash
is invalid, or it's generally unreadable), we simply drop it.

Secondly, if we detect the packet isn't for us, but meant to be forwarded,
and we *can* forward it correctly, we do so synchronously. This lets the
packet avoid the event loop, which improves performance and reduces event
log growth for ships doing forwarding.

- Added an SSE endpoint, only accessible using cookie-authenticated requests,
for viewing the slogs (debug printfs) on a ship. `http://your-ship/~_~/slog`

- `term.c`, the console driver, now supports output with explicit style,
rather than depending on `dill.hoon` to insert ANSI escape codes.

- Added command line options for reading data out of a pier without running it.

- Improved event loop performance by removing unnecessary serialization.

- Improved crash handling. The king no longer crashes when the serf does.

- Added version identifiers to the checkpoint, event log, and other artifacts.

----

Build system

- All Nix derivations have been rewritten. They should be more maintainable and
have better caching behavior. They forego cross-compilation in favor of
native `x86_64-linux` and `x86_64-darwin` builds, paving the way for upcoming
`AArch64` support.

- Migrated from a Stack-only toolchain to `Haskell.nix`, to simplify static
compilation and ensure reproducible builds. Now uses GHC 8.8.4.

- Migrated from Travis CI to Github Actions, speeding up CI checks.
https://github.com/urbit/urbit/actions

- Release tarballs now contain proper statically compiled King Haskell binaries.
n

Contributions:

Brendan Hay (1):
      Merge pull request #4024 from urbit/bh/disable-pr-upload

Elliot Glaysher (37):
      jets: Add +slaw jet which parses %ud and %tas.
      jets: Start jetting +ob.
      jets: jet +fen:ob
      jets: add the direct atom optimization to +mod
      jets: Implement most of +ob, minus the toplevel concealments.
      jets: Rest of +ob that we're going to jet, and make +po callable.
      jets: hand rolled c parser for (slaw %p ...)
      jets: implement partial %da parser.
      jets: finish the %da parser and test it.
      jets: (scow %ud ...) is jetted, along with its +scot equivalent.
      jets: implement +fein:ob for the @p printer.
      jets: implement (scow %p ...) for all ship types.
      jets: first pass as (scow %da ...)
      jets: start trying to clean up memory leaks.
      jets: Rebuild pills, the enabled jets here now don't leak memory.
      jets: remove +ob and add hooks for +fein and +fynd
      jets: jet +scot %uv and %uw.
      jets: cleanups.
      jets: further cleanups.
      jets: patch minimization.
      jets: use u3a for strings instead.
      jets: fail -> exit
      jets: return u3_none in a lot of error cases.
      jets: hook %ob, then %fein/%fynd
      jets: more cleanups from review.
      jets: most review comments addressed
      jet: final cleanup
      jets: final cleanup
      jets: add empty hashes
      Merge remote-tracking branch 'origin/release/next-vere' into scot-jets
      Merge pull request #2853 from urbit/scot-jets
      Merge pull request #2899 from urbit/eg/repn-hookup
      Merge remote-tracking branch 'origin/release/next-vere' into eg/map-jets
      Merge pull request #2895 from urbit/eg/map-jets
      jets: fix broken jets so ~marzod can boot.
      Merge pull request #2916 from urbit/eg/fix-jets
      king: port the new lmdb event log changes.

Fang (1):
      hoon: remove ^%

Isaac Visintainer (5):
      Merge branch 'ixv/data-migration' into philip/testnet
      Merge branch 'ixv/data-migration' into philip/testnet
      Merge branch 'na-release/candidate' into philip/testnet
      Merge branch 'ixv/data-migration' into philip/testnet
      vere: make import flow not use base64 encoding

Jake Miller (1):
      lens: clear state on %cancel

Jared Tobin (1):
      Merge pull request #2350 from frodwith/jt/minkleton

Joe Bryan (277):
      Revert "Remove non-shipping code."
      arvo: updates neo, builds with +glass
      arvo: adds +deep, prototype arvo filesystem engine
      Revert "Revert "u3: clear cached mugs on cell edit""
      hoon: switches +mink %hunk from tank to (untyped) path
      hoon: switches %hunk to scry sample
      hoon: refactors stack-trace production in +mook
      hoon: refactors nock %6 in +mink
      hoon: refactors nock %11 in +mink
      hoon: refactors +edit and +frag in +mink
      hoon: adds +mole and +mure -- unitary virtualization
      hoon: modernizes virtualization style
      pill: updates solid
      hoon: switches +soft to use +mole
      Merge pull request #2898 from urbit/jb/edit-mugs-redux
      pill: solid and ivory
      hoon: clean up +mook comments
      Merge pull request #2900 from urbit/jb/minkleton-tweaks
      Merge branch 'na-release/next-vere' into jt/minkleton
      gall: cleans up blocked-scry handling in %gall virtualization
      test: adds trivial unit tests for nock 6 invariants
      u3: fixes bug in nock 6 compilation (increment uninitialized)
      Merge pull request #2285 from urbit/jt/minkleton
      Merge branch 'master' into na-release/next-vere
      pill: updates all
      hoon: use +dvr instead of +div/+mod in |co helpers
      hoon: use +pow instead of handrolled loop in +ox-co:co
      hoon: refactors +ro-co:co, modernizing syntax
      hoon: comments, modernizes syntax for all +**-co gates
      hoon: refactors +r-co:co, modernizing syntax
      hoon: comments, modernizes syntax for all +*-co:co gates
      hoon: refactors @da/@dr coin printing
      hoon: updates @p rendering to avoid intermediate right-shifts
      hoon: modernizes syntax in the rest of |co
      Merge branch 'release/next-sys' into jb/co-norm
      pill: solid
      Merge branch 'release/next-vere' into na-release/next-vere
      pill: all
      u3: re-enables fixed +apt:in/+apt:by jets
      arvo: reforms state and upgrade structures
      pill: solid
      arvo: moves arvo state management into |le
      pill: solid
      vere: switches (mostly) to new event/effect routing
      serf: switches to new new crud
      arvo: disables old event/effect routing regime
      vere: fixes crash on bailing bail
      arvo: refines arvo internal ($waif) and external ($wasp) effects
      arvo: adds (no-op) version negotiation
      pill: solid
      Merge remote-tracking branch 'upstream/re-neo' into jb/wyrd
      Merge branch 'release/next-vere' into na-release/next-vere
      Merge branch 'master' into na-release/next-vere
      Merge pull request #3943 from jfranklin9000/release/next-sys
      pill: solid
      Merge branch 'na-release/next-vere' into na-release/runes
      pill: solid
      Merge branch 'release/next-vere' into na-release/next-vere
      Merge branch 'release/next-vere' into na-release/runes
      u3: moves _n_swap() next to other stack ops
      u3: adds dynamic hint bytecodes and implementation
      u3: refactors dynamic hint bytecodes, documents protocol
      Merge branch 'release/next-vere' into na-release/next-vere
      hoon: removes utf32 hacks and \/ windowing from |re
      hoon: removes $plum from $tank
      hoon: refactors |re for clarity
      hoon: moves $plum and +plume to userspace
      hoon: moves $xray into userspace
      hoon: moves xray traversals to userspace
      hoon: modernizes $tank and surrounding declarations
      hoon: moves $json and styled-text molds back to %zuse
      zuse: removes obselete structures $ares, $coop, and $disc
      zuse: modernizes syntax of top-level structures
      hoon: adds $cord to $tank
      nix: trims trailing whitespace from solid pill builder
      pill: solid
      Merge branch 'na-release/next-vere' into jb/co-norm
      pill: solid
      Merge branch 'release/next-vere' into na-release/next-vere
      u3: fix accidental neologism in comments
      Merge pull request #3979 from urbit/jb/dynamic-hints
      arvo: filesystem
      pill: all
      vere: implements initial kelvin negotiation with %wyrd/%wend
      vere: simulate successful negotation (temporary, pending arvo)
      arvo: moves (placeholder) kelvin to an arm
      Merge branch 'na-release/next-vere' into na-release/secp
      Merge branches 'na-release/secp', 'na-release/runes' and 'jb/co-norm' into na-release/next-vere
      pill: all
      zuse: change to ropsten
      Merge branch 'na-release/candidate' into jb/no-wrap-tank
      pill: all
      Merge pull request #3991 from urbit/jb/no-wrap-tank
      hoon: WIP remove fab:ut
      u3: WIP removes fab:ut
      arvo: refines version negotation, requires filesystem to molt
      vere: send %wyrd during boot
      arvo: moves |de out of +node, renames +node to +axal
      vere: adds version to lmdb meta table, removes unnecessary jam
      vere: implements lmdb event log format
      vere: removes u3A->sen references from i/o drivers
      u3: removes obsolete members from u3_arvo
      u3: adds version number to checkpoint patch files
      u3: revises "rock" format, tags jet registrations
      u3: WIP adds a version to the checkpoint / persistent state
      hoon: updates +muk to truncate seed and removes spurious assertion
      u3: updates +muk to truncate seed and removes spurious assertion
      Merge branch 'na-release/candidate' into jb/wyrd
      pill: solid/ivory
      arvo: scry reform
      vere: scry reform
      pill: solid
      arvo: only allow a single %whom
      arvo: require both hoon and arvo in initial larval filesystem
      arvo: remove old-style event routing
      arvo: fix hoon source reference in +boot re-compilation
      arvo: improves faces in vane install/upgrade
      arvo: moves tasks to top-level, restructures state
      arvo: adds some more explicit stack frames
      arvo: removes neo-arvo and obsolete pill generators
      pill: solid
      hoon: adds new +mug (as +gum)
      u3: adds new +mug (as u3r_gum_*)
      pill: brass
      hoon: switches to new +mug
      arvo: temporary, build +brass out of /not-sys
      u3: switches to new +mug
      Revert "arvo: temporary, build +brass out of /not-sys"
      pill: all
      ur: updates +mug
      Merge branch 'jb/re-mug-pre' into jb/candidate
      pill: brass
      arvo: temporary, removes initial kernel source from +brass
      pill: brass
      Merge branch 'jb/re-mug' into jb/candidate
      Revert "arvo: temporary, removes initial kernel source from +brass"
      pill: all
      u3: removes .fab from |ut hooks
      Merge branch 'm/remove-ketcen' into m/modern-hoon
      pill: all
      Merge branch 'philip/fade' into m/vane-unversion
      Merge branch 'philip/clay-version' into m/modern-hoon
      Merge branch 'm/vane-unversion' into m/modern-hoon
      Merge branches 'm/remove-ketcen' and 'm/modern-hoon' into na-release/candidate
      hood: fix obsolete syntax introduced in merge
      pill: all
      hoon: adds $step for bloq-sized atom offsets
      hoon: adds $bite for atom slice specifiers
      hoon: updates +rep and +rip to take a $bite
      u3: updates +rep and +rip jets to take a $bite
      hoon: removes +repn and +ripn
      u3: removes +repn and +ripn
      pill: solid/ivory
      hoon: adds +sew, inverse of +cut
      hoon: adds atom map gates +run and +rut
      hoon: (and %zuse) use +run and +rut where appropriate
      pill: solid
      hoon: adds +new-end, switches all +end call sites
      hoon: adds +new-lsh, switches all +lsh call sites
      hoon: adds +new-rsh, switches all +rsh call sites
      u3: adds +new-end, +new-lsh, and +new-rsh jet interfaces
      pill: solid/ivory
      hoon: removes +end, +lsh, and +rsh
      u3: updates +end, +lsh, and +rsh jet interfaces
      hoon: renames +new-end, +new-lsh, +new-rsh
      pill: solid/ivory
      u3: removes +new-end, +new-lsh, and +new-rsh jet declarations
      hoon: updates +fil to bloq-truncate the repeated atom
      hoon: updates +rap comment, removes jet-match hack
      pill: solid
      Merge pull request #4060 from urbit/jb/bite-atom
      Merge pull request #4051 from urbit/ted/ames-flat-revised
      Merge branch 'na-release/candidate' into jb/atom-gates
      ames: updates +end, +lsh, and +rsh call sites
      ames: use +rep to assemble message fragments
      pill: all
      Merge branch 'release/next-vere' into na-release/candidate
      Merge pull request #4049 from urbit/jb/atom-gates
      clay: %pass's %home commits to arvo as %what, unconditionally
      arvo: removes %lyra and %veer
      arvo: updates %dill to %pass %verb/%whey, removes %give to arvo
      arvo: removes $curd, moves $card and $ovum to top level
      arvo: adds %lull, vane structures
      arvo: fills out scry interface
      clay: scry kernel source out of arvo for reef short-circuit
      pill: solid
      Merge pull request #4072 from urbit/jb/moar-what
      Merge pull request #4036 from urbit/m/listless-generators
      u3: disable +scot and +scow jets
      Merge branch 'release/next-vere' into na-release/candidate
      u3: fixes checkpoint version enforcement, refactors u3m_pave() et al
      Merge pull request #4027 from urbit/eg/hs-vere-versions
      u3: adds comments to explain unusual u3v_arvo/u3v_home requirements
      Merge branch 'jb/vere-versions' into jb/vere-versions-merge
      vere: replaces obsolete references to u3v_numb and u3A->sen
      Merge pull request #4076 from urbit/jb/de-scot
      hoon: fixes logic bug in date printer (truncation)
      aqua: fixes obsolete atom api calls missed in merge
      ci: updates herb call to -test, matching new invocation
      Merge pull request #4084 from urbit/jb/breach-bugs
      u3: fixes bug in manual trace "printing" (w/out +mook)
      hoon: adds +swat: deferred +slap
      hoon: use +mole to virtualize +cue in |so
      arvo: refactors internal module compilation
      zuse: moves |dawn to lib/vere, rewrites +ivory
      arvo: removes +is and all references to it
      arvo: persist vanes by full name, not abbreviation
      pill: solid/ivory
      hoon: moves |wa and $worm to arvo
      arvo: fixes vane-abbreviation handling in +peek:le
      arvo: removes +sloy-light, updates call sites (%clay, %dill)
      %eyre: avoid +sloy when scrying for +code
      ford: gone
      arvo: updates vane interface
      zuse: removes en/de-beam (now in arvo)
      %zuse: remove vestigial parts of legacy %init system
      vere: remove (no-op) handler for obsolete %init effect
      arvo: completes scry reform
      arvo: adds %wyrd event validation (disabled)
      pill: solid/ivory
      vere: fix printing of cord tanks (re-distinguish from serf stderr
      arvo: removes +slix, moves +slid and +slur
      arvo: remove $hoof
      hoon: avoid "fund: in/by" jet printfs by tweaking +map/+set/+qeu
      arvo: pill reform
      vere: pill reform
      arvo: interface
      u3: arvo interface
      pill: all
      vere: increment event timestamps by ~s0..0001 in queuing loops
      arvo: time advances
      Merge pull request #4088 from urbit/philip/testnet
      Merge branch 'na-release/candidate' into jb/motion
      arvo: removes $monk
      vere: fixes typo in version negotation message
      arvo: reform of the scry reform
      aqua: build again (still broken)
      arvo: full vane names in $sign
      zuse: remove %crud from vane-task
      pill: solid
      Merge branch 'm/rezuse' into jb/motion-merge
      Merge branch 'na-release/candidate' into jb/motion-merge
      Merge branch 'jb/motion' into jb/motion-merge
      pill: solid/ivory
      vere: corrects error handling in pill parsing
      tests: fixes vane tests
      clay: build %zuse against %lull
      %lull: in fact
      arvo: moves formal interface gate to the end
      vere: improves error handling in pill download
      chat-hook: fixes typo in $sign migration
      u3: removes duplicate jet registrations
      chat-hook: fix build with ^? in lib/migrate
      arvo: cleans up upgrade implemenation
      u3: adds %140 jet declarations
      arvo: kelvins
      pill: properly serialize %md files
      hoon: removes obsolete compiler hooks
      hoon: removes +ride printfs
      u3: removes obsolete jet declarations
      vere: updates hardcoded kelvins
      pill: all
      Merge pull request #4098 from urbit/philip/compile
      arvo: delete unused source
      hoon: restrict trap subject in +swat
      vere: to 1.0
      Merge branch 'na-release/candidate' into jb/vere-versions
      Merge pull request #3981 from urbit/jb/vere-versions
      arvo: restores previous +load compilation
      Merge branch 'na-release/candidate' into jb/motion
      pill: solid/ivory
      arvo: enables %wyrd kelvin stack sanity check
      build: removes urbit-king from the release tarball
      zuse: moves lib/base64
      ames: remove "larva: drain" printf (too noisy)
      vere: fixes %flog printing
      Merge pull request #4099 from urbit/philip/moons

John Franklin (2):
      hoon: bscl to bccl, etc
      pill: solid.pill

Liam Fitzgerald (9):
      channel.js: queue interactions
      interface: subscribe to rest of global state quicker
      channel.js: debounce subscribes
      glob: update to 0v5.c8agf.rjdcu.6p4ea.umc9e.5olmv
      pull-hook: do not crash on dangling sync
      pull-hook: backstop crashed kick handler
      interface: bump indigo
      channel.js: address L review
      pull-hook: L review

Logan Allen (8):
      arvo: remove unused app files, libraries, and imports
      Merge pull request #4065 from urbit/la/candidate
      observe-hook: add %group-on-remove-member thread
      pull-hook: fix handle-kick printouts
      pull-hook: fix +end
      pull-hook: convert list of paths to single path
      pull-hook: make wires more stable identifiers based on resource
      Merge pull request #4094 from urbit/la/wire-stability-pull-hook

Matilde Park (26):
      publish: add 'cancel' button to edit form
      Merge pull request #4045 from urbit/lf/indigo-bump-redo
      chat: add leading sig when copying patp
      chat: mobile input uses textarea
      chat: even padding on daybreak
      groups: prevent admins from banning themselves
      groups: prevent demoting yourself if only admin
      groups: add margin to mobile invite popover
      profile: amend mobile 'back' link size
      profile: add icons, sidebar bg matches others
      groups: fix sharing contacts with avatars
      profile: nickname and avatar surfaced
      Merge branch 'release/next-userspace' into lf/eyre-perf-improvment
      Merge pull request #3914 from urbit/lf/eyre-perf-improvment
      Merge pull request #4066 from urbit/mp/landscape/qa-12-1
      interface: bump indigo-react 1.2.5 -> 1.2.15
      Merge pull request #4069 from tylershuster/logindigo
      Merge pull request #4071 from urbit/la/observe
      Merge pull request #4030 from urbit/lf/mule-hooks
      Merge branch 'na-release/candidate' into release/next-userspace
      Merge pull request #4074 from urbit/release/next-userspace
      landscape: remove ~2020.12 breach banner
      Merge pull request #4079 from urbit/mp/landscape/breach-debanner
      leap: position notification dot relatively
      Merge pull request #4080 from urbit/la/fix-pull
      Merge pull request #4082 from urbit/mp/leap/relative-dot

Paul Driver (24):
      hoon: add +mino, a new virtual nock interpreter
      jet +mino, allow one invalid branch in nock 6
      hoon: add staging redirections for mook, mock.
      hoon: update pills before moving mink callers
      hoon: moko does not crash
      hoon, vere: move all mock and mook callers to moku/moko.
      hoon: pills contain no references to toon/tone/mook/mock/mink
      vere: remove mink jet
      hoon, vere: copy mino, etc. back to old names
      hoon: pills refer to old names (mink etc), temp names remain
      hoon: expunge temporary names (mino, tono, etc)
      vere: restore calls to old names (mook)
      hoon: pills expunged of temporary names
      vere: remove mino jet
      hoon: style issue in +mook
      hoon: remove unused +mush
      hoon: use constant hint pass-thru for +mink
      zuse: add refactored secp core (unjetted)
      update solid pill
      zuse: make it clear where the secp jet should make explicit size checks
      vere: wire up jets for new secp
      hoon: ensure lib/bip32 is working with new secp, remove old secp
      fix secp test (new-secp staging name is gone)
      update solid pill

Philip Monk (33):
      gall: fade initial commit
      gall: add %doze-style fade
      gall: add nonce to agent wires
      gall: refresh clay subscription on fade
      pill: change to ropsten
      gall: rename fading styles
      clay: cleanup protocol versions
      gall: add version to over-the-wire protocol
      jael: add version numbers
      Merge remote-tracking branch 'origin/na-release/candidate' into m/flagday-keyfile
      glob: update to 0v5.u5b0i.2ks0m.6ipcp.djea4.16n1h
      Merge remote-tracking branch 'origin/philip/testnet-master' into philip/testnet
      Merge remote-tracking branch 'origin/na-release/candidate' into philip/testnet
      Revert "zuse: change to ropsten"
      pill: mainnet
      version: strip trailing newline
      lens: don't de-base64
      Merge remote-tracking branch 'origin/ixv/import-no-b64' into philip/testnet
      vere: compile
      pill: update
      Merge remote-tracking branch 'origin/philip/testnet-master' into philip/testnet
      glob: update to 0v6.cmrce.5ass7.5gfqi.7c8cg.mdo7n
      Merge remote-tracking branch 'origin/la/fix-pull' into philip/testnet
      jael: don't signal breach if first hearing of ship
      Merge remote-tracking branch 'origin/na-release/candidate' into philip/testnet
      jael: cleanup per review
      ames: don't crash on forward-lane scry
      Merge pull request #4087 from urbit/philip/testnet-pr
      gaze: update for eth-watcher batch resuls
      jael: deconstruct wires accurately
      Merge remote-tracking branch 'origin/master' into jb/motion
      glob: update to 0v2.u8gnq.ipqi1.eksfl.qtd8n.0d56e
      ames: be quiet

Ted Blackman (5):
      ames: flat packet format
      aqua/ph: fix comet test
      pill: solid
      pill: update ivory pill
      tests: fix ames tests

Tyler Brown Cifu Shuster (1):
      eyre: translate login to indigo

crides (1):
      hoon, dill: Add 24-bit true color

fang (50):
      arvo: unflop the spur in scry
      hoon: add +snip and +rear
      zuse, clay, various: unflop the spur in beams
      zuse: make octs value @ again
      pill: update
      hoon: patch up +ax callsites
      Merge pull request #3994 from urbit/m/scry-spur
      Merge pull request #2990 from yosoyubik/decompress-point
      vanes: remove old load types and logic
      arvo: allow %$ care in +sloy
      hoon: remove += and +- arm syntax
      various: move away from $constant type syntax
      hoon: remove $constant type syntax
      various: move away from face/type syntax
      hoon: remove face/type syntax
      various: move away from {type} syntax
      hoon: remove {type} syntax
      hoon: remove deprecated character parsers
      group: remove unused library
      test: don't panic after building non-/tests files
      test: only build .hoon files
      ted: update threads that had fallen into disrepair
      tests: update vane tests for new scry gate
      pill: all
      various: touch up improperly rewritten comments
      ames: remove old state versions & conversions
      dojo: correct mark conversion scry path
      Merge pull request #4052 from urbit/m/unflop-conversion
      various: start threads with unit of tuple args
      Merge branch '24bit-colors' into m/klr-24
      webterm: update mar and js to support 24-bit color
      vere: support 24-bit %klr colors
      kh: support 24-bit %klr colors
      vere: avoid +scot call for color value rendering
      webterm: improve line-spacing in certain browsers
      kh: use Word8 for Tint true color values
      Merge pull request #4055 from urbit/m/klr-24
      ted: update straggler threads for vase unit change
      Merge pull request #4077 from urbit/m/listless-threads-2--the-unraveling
      various: ethereum, azimuth, json-rpc out of zuse
      Merge branch 'jb/motion' into m/de-thereum
      lib/vere: hard-copy minimal necessary dependencies
      ivory: pretend to handle imports
      zuse: lift moves out of +able
      ivory: fix +swel implementation
      vere: stream atom tanks in correct format
      vere: clean up flog callback, enable streaming
      vere: call webslog callback from flog directly
      Merge branch 'jb/motion' into m/webslog-cords
      Merge pull request #4100 from urbit/m/webslog-cords

yosoyubik (3):
      bip32: adds network type option for xpub/priv
      bip32: adds network option for bitcoin addresses
      tests: checks bip32 for xpub/xprv/pif/address