'ob', a core that implemented a permutation cipher for planet-sized
atoms, contained a critical bug that allowed multiple inputs to encipher
to the same output. This created collisions between some planet-sized
@p values.
The rewritten version corrects this bug, and also rewrites +ob to more
clearly match both 1) the paper that the algorithm comes from, and 2)
the parallel implementation in urbit-ob that has gone through an
exhaustive test.
This also adjusts two calls to 'ob' elsewhere in hoon.hoon such that
they match the updated core.
Added support to `lens-command` for outputting a pill. We want this so that we can create (solid and brass) pills from `urb.py`.
This also adds an optimized base64 encoding routine. The previous version of base64 stack overflowed on large inputs, and a tail-recursive version took hours to encode 5mb of data. This one uses the `ripn` jet and only takes a second or two.
* hotfix:
ensures $~ defaults nest in the actual structure
behn: ignore duplicate %wait requests (#1043)
restores +able:dill comment margin
renames kernel upgrade initialization event from %vega to %lyra
refactors arvo's +spam:is, which sends a move to every vane
refactors effect iteration in arvo +poke
updates arvo/vanes to send/receive %vega kernel upgrade notification
build tank outside of |.
While jetting +sort (urbit/urbit#1088), I made it do only a single
pass to separate the list around a pivot instead of using two. Do
this in the hoon code, too.
+slav calls +slaw with %da and %ta in several places across multiple
vanes. This refactors the date parsing code into its own arm so it
can be called from +slaw.
+slay is a giant, recursive, slow parser combinator. +slaw is called
on every beam handling. In actual usage, we can special case based
on the passed in type and use a much smaller parser.