Download Latest Version 409k source code.tar.gz (3.9 MB)
Email in envelope

Get an email when there's a new version of Urbit

Home / 409k
Name Modified Size InfoDownloads / Week
Parent folder
409k source code.tar.gz 2025-12-10 3.9 MB
409k source code.zip 2025-12-10 4.5 MB
README.md 2025-12-10 5.2 kB
Totals: 3 Items   8.4 MB 0

%base hash (check with +vats %base, =verb %.y): 0v19.n4cpn.0d8d1.693uf.8anru.6fih8.o9cdo.rm1js.tuje0.os701.6kehr

Description

The network has constantly been under heavy load since soon after software distribution released. This is because when ship A pokes ship B the poke will keep retrying forever until ship B installs the agent being poked. This is true even if ship A has long since suspended or even nuked the agent!

409 ameliorates the issue by creating a system flow between ships A and B, effectively causing B to notify A when (if ever) he installs the agent. Until that time no more packets will be sent. It is worth noting that this is an important step for enabling directed messaging on the network as a default.

The release includes support for the quickboot brass pill that speeds up initial boot from minutes to seconds. We also enable the spin hint for ship performance monitoring, visit <your-ship>/~_~/spin to see it in action. 409 also enables stateful urwasm, building on the stateless urwasm capabilities shipped in 410.

Breaking changes

The gifts emitted from the remote scry %keen task have changed from a %tune to a %sage. Here are the old and new types:

:::hoon
+$  spar  [=ship =path]

:: old
[%tune spar roar=(unit roar)]

+$  roar  (tale:pki:jael (pair path (unit (cask))))
+$  oath  @  ::  signature
++  tale         ::  urbit-signed *
   |$  [typ]     ::  payload mold
     $:  dat=typ   ::  data
          syg=(map ship (pair life oath))  ::  signatures
     ==

:: new
[%sage =sage:mess]
++  mess
    =>  |%
        +$  auth  (each @uxJ @uxH) :: &+sig, |+hmac
        +$  gage  $@(~ page)
        +$  sage  (pair spar gage)
        --
    $%  [%page (trel spar auth @)]
            [%peek spar]
            [%poke (pair spar sage)]
    ==

The rarely used !@ (zappat) rune has its children's order changed. If the wing is present the second branch is now taken, if the wing is not present the first branch is taken.

The iris %request task will now honor the redirects count in the outbound-config. Previously the outbound-config was ignored. Note that bunt of outbound-config follows five redirects for the status codes 307, 303 or 301.

The +mure and +mute arms for untyped virtualization are now +mure:vi and +mute:vi respectively.

What's Changed

Full Changelog: https://github.com/urbit/urbit/compare/410k-6...409k

Source: README.md, updated 2025-12-10