Skip to content

Releases: urbit/urbit

411k-rc5

12 Mar 13:30
32b854e
Compare
Choose a tag to compare
411k-rc5 Pre-release
Pre-release

%base hash (check with +vat %base): 0v4.4r8a7.jt8e9.rhrjb.3pinr.oi4o9.06nbf.9fasn.tmf8s.0ur6v.uc2vk

Description

During pre-release testing of 411k-rc4 a regression was found in the -keen thread where pressing backspace to cancel the thread would not actually cancel the %keen request in ames. This release candidate contains #6931 to fix the bug.

What's Changed

Full Changelog: 411k-rc4...411k-rc5

411k-rc4

23 Feb 11:08
af16c5e
Compare
Choose a tag to compare
411k-rc4 Pre-release
Pre-release

%base hash (check with +vat %base): 0v1a.n599d.je4qf.lj1mp.cu7h4.634aj.0mfoi.mg36j.fumm1.h9crn.pud1u

Description

During pre-release testing of 411k-rc3 we discovered a problem with |moon-breach for moons with many subscribers. The root cause of this issue is somewhere in the sort jet, but this release candidate includes #6921 that elides the sorting for remote subscriber ducts in jael.

What's Changed

Full Changelog: 411k-rc3...411k-rc4

411k-rc3

14 Feb 18:10
315fe21
Compare
Choose a tag to compare
411k-rc3 Pre-release
Pre-release

%base hash (check with +vat %base): 0v9.tkr3p.baong.darml.udvm7.occ6f.25t7b.k4qaf.atrvd.m29vk.0k1lp

Description

During pre-release testing of 411k-rc2 we discovered that some older gall and ames migrations were broken. This meant that upgrading to 411k would fail if you were upgrading from an older urbit-os version. This release candidate contains #6906 to fix the issue.

What's Changed

Full Changelog: 411k-rc2...411k-rc3

411k-rc2

02 Feb 17:05
6f436ab
Compare
Choose a tag to compare
411k-rc2 Pre-release
Pre-release

Description

During pre-release testing of 411k-rc1 a few bugs were discovered with ames and gall state migrations. This release candidate addresses the problems encountered in these migrations.

What's Changed

Full Changelog: 411k-rc1...411k-rc2

411k-rc1

31 Jan 11:15
f7a126e
Compare
Choose a tag to compare
411k-rc1 Pre-release
Pre-release

Description

During pre-release testing of 411k-rc0 a number of bugs were discovered with encrypted remote scry. #6890 fixes these bugs.

What's Changed

  • gall: separate put:of-grow to put-tend and put-grow by @pkova in #6890

Full Changelog: 411k-rc0...411k-rc1

411k-rc0

19 Dec 18:05
13b495b
Compare
Choose a tag to compare
411k-rc0 Pre-release
Pre-release

Description

The highlights of 411 will be the following:

  • Encrypted remote scry, both two-party and multiparty versions.
  • Informal pings, significantly lessening the load on galaxies. Most ships will still ping their galaxies every 25 seconds but now these pings don't go to disk. The pings previously prevented galaxies serving more than a few thousand ships without workarounds.
  • Epoch system. Every subsequent vere version creates its own epoch of the event log, making jet mismatches less of a hassle. The urbit chop command also actually deletes the event log now instead of making a backup.
  • Persistent Nock Caching allows us to cache any computation. We are starting slow with this one to get a better idea of the memory usage, but this will allow us to eventually cache everything from initial boot to most of the Ford build system.
  • MDNS local routing. Ships on the local network or the same machine can leverage Bonjour on macOS and Avahi on Linux to automatically find each other. This helps connectivity in scenarios where the router does not do NAT hairpinning and will probably be the preferred method of establishing connections for hosting providers in the future.

Encrypted remote scry guide

The ames %chum task is the two-party encrypted remote scry task. The task has the exact same interface as the ames %keen. Here is an example of fetching sys.kelvin from ~zod from inside a gall agent:

[%pass /your-wire %arvo %a %chum ~zod /c/x/1/kids/sys/kelvin]

The multiparty encrypted scry is slightly more complicated. First, the publisher creates a named security context with the %germ:

 [%pass /your-wire %germ /your/security/context]

Then the publisher publishes some data to the security context using %tend:

 [%pass /your-wire %tend /your/security/context /hello/this/is/path %noun 'hello this is data']

Finally the publishing agent has to implement a scry handler for the security context:

++  on-peek
  |=  =path
  ^-  (unit (unit cage))
  ?.  ?=([%c %your %security %context @ ~] path)  
    ``[%noun !>(%.n)]
  =/  =ship  (slav %p i.t.t.t.t.path)
  ?:  =(~dinleb-rambep ship)  :: your whitelist logic here
    ``[%noun !>(%.y)]
  ``[%noun !>(%.n)]

Now the client can use the gall %keen to request data from /your/security/context, as long as he has the permissions:

[%pass /your-wire %keen %.y ~sampel-palnet /g/x/1/your-agent//1/your/security/context/hello/this/is/path]

Migration guide

This is rc0, do not run this on important ships. Use fake ships or disposable moons.

First, grab the relevant binary for your platform:

https://bootstrap.urbit.org/vere/next/kelvin/411/v3.0-a250df7/vere-v3.0-a250df7-linux-aarch64
https://bootstrap.urbit.org/vere/next/kelvin/411/v3.0-a250df7/vere-v3.0-a250df7-linux-x86_64
https://bootstrap.urbit.org/vere/next/kelvin/411/v3.0-a250df7/vere-v3.0-a250df7-macos-aarch64
https://bootstrap.urbit.org/vere/next/kelvin/411/v3.0-a250df7/vere-v3.0-a250df7-macos-x86_64

Then grab the 411k-rc0.pill from https://urbit-foundation.s3.us-east-2.amazonaws.com/411k-rc0.pill

The pill contains %base and %landscape. Use the binary with the -B command-line flag to boot up a fake ship or a moon to migrate your application. Read the breaking changes below for guidance.

Breaking changes

  • The signature of the ames %keen task has changed from [%keen spar] to [%keen sec=(unit [idx=@ key=@]) spar]. Most applications will want to change to using the gall %keen [%keen secret=? spar:ames], or alternatively the two-party encrypted %chum.
    • Note that the keen function in /lib/strandio has been updated and your application requires no changes if you were using that.
  • We discovered a bug breaking referential transparency in certain scenarios of remote scrying into gall. A fix has been deployed, but we also decided to version the namespace to mitigate these kinds of issues in the future. When upgrading to 411, all gall remote scry paths will be migrated to the new versioning scheme. See #6852 for details.
  • The map function rut:by does not exist anymore, use the equivalent urn:by.

What's Changed

New Contributors

Full Changelog: 412k-3...411k-rc0

412k-3

17 Nov 18:10
f0ae78d
Compare
Choose a tag to compare

%base hash (check with +vat %base): 0vi.049bd.s4tqn.sg193.ivivi.b85uj.qe1k6.tpe5u.c7t0a.eqq2b.fqinv

Today a bug with remote scry was discovered that breaks referential transparency in the following scenario:

A user %cull:s all revisions of a path. The next %grow on the path will overwrite the revision that used to be the latest. For example, if the latest revision of the path /foo was 5 containing the cord 'hello', doing a [%cull ud+5 /foo] followed by [%grow /foo atom+'OH NO'] would result in scrying for revision 5 to return the cord 'OH NO'.

Another off-by-one error was also discovered in the %cull task, causing %cull to remove one more revision of the data that was requested. For example, doing [%cull ud+4 /foo] in the example above would also cull revision 5 of the path.

Thanks to ~rivmud-fabwen for posting a detailed reproduction on ~dister-dozzod-lapdeg/battery-payload.

This hotfix release fixes both of these bugs.

What's Changed

Full Changelog: 412k-2...412k-3

412k-2

08 Nov 14:55
f7d4984
Compare
Choose a tag to compare

%base hash (check with +vat %base): 0v1r.2i1cd.gcvve.4o41u.qjn4p.vkk0s.i5ahg.lmsh4.is8kq.6msg5.f0ph3

The week before assembly a bug was discovered which affects connectivity between ships belonging to the same sponsorship chain. More specifically, the conditions for triggering the connectivity issues were the following:

  1. Two ships belonging to the same sponsorship chain try to communicate. Most commonly this was seen with stars and planets or moons and planets. Note that direct communication between galaxies and their children were unaffected.
  2. One of the ships was behind a NAT.
  3. The parent was either a new ship or had breached/changed sponsors recently.

If these conditions were met these ships could not communicate. This hotfix release fixes the bug. Note that this issue may have been responsible for the mysterious "moon connectivity issues".

What's Changed

  • ames: do not ignore our peer-state by @pkova in #6838

Full Changelog: 412k-1...412k-2

412k-1

03 Oct 16:52
10db04b
Compare
Choose a tag to compare

%base hash (check with +vat %base): 0vo.pba41.2bp3a.6as26.52dvo.hsg8e.o25sv.geiia.3pkp0.s0tkm.c8d64

Description

412k-1 is a small bugfix release fixing long-standing issues that didn't quite make it to 412k. This release fixes the following:

  1. Some Urbit apps set cookies. This would sometimes confuse %eyre because it also uses cookies for storing login state, leading to users randomly getting logged out.
  2. Remote scrying for a desk that includes commits that are unreachable from the latest commit would fail and fall back to %ames. One such desk is the %base desk and every desk created from %base using |merge.
  3. It is possible to include the clay blob store in the pill when building a pill with +solid =prime %.y. This clay blob store was missing content from commits unreachable from the latest commit.
  4. The -runtime-version thread would sometimes incorrectly report the runtime as being out of date.

What's Changed

  • eyre: allow header-list to contain multiple cookies by @pkova in #6799
  • clay: return all takos in /cs/bloc scry by @pkova in #6808
  • clay: iterate over all aeons in +read-at-tako by @pkova in #6807
  • runtime-version: parse current version properly by @pkova in #6809

Full Changelog: 412k...412k-1

412k

26 Sep 20:02
3c3ade3
Compare
Choose a tag to compare

%base hash (check with +vat %base): 0v13.tbu2r.fs2u6.scm7e.thi9h.j6shh.9tflb.2adq8.ojaps.r1rc5.ne2u7

%zuse 412
%lull 323
%arvo 237
%hoon 139

Description

The major features of the kelvin 412 release are the following:

  1. The %lick vane which allows gall agents to open a IPC communication port to earth. In pre-release testing this vane has been used to control IOT devices and building a snake game. The %lick vane is documented here: https://developers.urbit.org/reference/arvo/lick/lick.
  2. The open %eyre. Eyre grants temporary guest identities in the form of comets to all unauthenticated requests. This allows a significantly wider range of interaction for Urbit applications on the clearweb since anybody can %poke and %watch without tedious HTTP API implementation work.
  3. EAuth. Eyre now allows people to log in with their own identities on HTTP endpoints served by any ship. A common use case for this functionality would be a comments section on a blog served to the clearweb. For details, see the mirage proposal here: https://gist.github.com/Fang-/41ed84b2a6dd96ca67c6a5dbda1fd35d

Urbit ships will now ignore incoming remote %pokes to nonexistent, suspended or nuked agents. Ships were previously maintaining an unbounded queue of incoming %pokes to dead agents, presenting a potential DDOS vector. Local pokes will still be queued as usual.

The release also includes a preview of dead flow consolidation. Ships can turn it on from the dojo or webterm with the command:

|pass [%a %stir %dead]

It also includes local provenance, paving the way for future userspace permissioning work. This infrastructure allows us to say things like "only the local agent %foo is allowed to poke me" in the future.

App migration guide

See the guide here: https://gist.github.com/pkova/6ddc65aa2ca192d0efa8667a36bac177

What's Changed

New Contributors

Full Changelog: urbit-os-v2.142-hotfix2...412k