Merge branch 'develop' into fix-host-scry

This commit is contained in:
Josh Lehman 2023-02-03 07:50:27 -08:00 committed by GitHub
commit 3ec1172c5b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 188 additions and 77 deletions

10
.github/ISSUE_TEMPLATE/blank-issue.md vendored Normal file
View File

@ -0,0 +1,10 @@
---
name: Blank Issue
about: Other
title: ''
labels: ''
assignees: ''
---

View File

@ -1,8 +1,8 @@
blank_issues_enabled: true blank_issues_enabled: true
contact_links: contact_links:
- name: Submit a Landscape issue - name: Submit a Landscape issue
url: https://github.com/urbit/landscape/issues/new/choose url: https://github.com/tloncorp/landscape-apps/issues/new/choose
about: Issues with Landscape (Tlon's flagship client) should be filed at urbit/landscape. This includes groups, chats, collections, notebooks, and more. about: Issues with Landscape should be filed at tloncorp/landscape-apps. This includes Groups, Talk, and Landscape proper.
- name: urbit-dev mailing list - name: urbit-dev mailing list
url: https://groups.google.com/a/urbit.org/g/dev url: https://groups.google.com/a/urbit.org/g/dev
about: Developer questions and discussions also take place on the urbit-dev mailing list. about: Developer questions and discussions also take place on the urbit-dev mailing list.

View File

@ -119,3 +119,40 @@ following command:
``` ```
git push origin <tagname> git push origin <tagname>
``` ```
## Releases
- [ ] Create a pull request from the relevant release branch to `master`.
- [ ] ssh into `~zod`
- [ ] Check to ensure that nobody else is ssh'd into `~zod`, by running `screen -ls` and verifying no sessions are attached.
- [ ] Attach to the screen session using `screen -x`
- [ ] Install the contents of the `%kids` desk on `~marnec-dozzod-marzod` into our `%base`: `|merge %base ~marnec-dozzod-marzod %kids, =gem %only-that`
- [ ] Check that `~zod` has updated to the latest release. For a Kelvin release, you can run `zuse` in the Dojo. Each non-Kelvin release might its own way of checking whether the update has completed, possibly through checking the `%cz` hash of the `%base` desk matches the hash on `~marnec-dozzod-marzod` by comparing the outputs of `+vat %base` on both ships.
- [ ] Merge `~zod`'s `%base` desk into its `%kids` desk to distribute the new code to the network: `|merge %kids our %base, =gem %only-that`
- [ ] Before exiting the screen session on `~zod`, make sure the screen session is not left in copy mode for a long period of time, since that will disrupt `~zod`'s operation.
### Release Communications
- [ ] Tag the commit that went onto the live network as a release, using GitHub's "Releases" interface. See the "Tagging" section of this document for details.
- [ ] Email the urbit-dev mailing list with an "[ANNOUNCE]" prefix in the email subject. See previous release emails for reference.
- [ ] Tweet from the `@zodisok` Twitter account linking to the GitHub release.
- [ ] Post links to the release in the Urbit Community Development channel and a channel in the UF public group.
### Post-Release Git Cleanup
- [ ] Merge `master` back into `develop`.
- [ ] Cut a new release branch from `develop`. The branch should have the format `release/urbit-os-vX.XX`
### Post-Release Checks
- [ ] Check that `~marzod` and other distribution stars are receiving the update by running `|ames-sift ~zod` and `|ames-verb %rcv %ges`. You should see lots of packets from `~zod`. Once you have confirmed packets are flowing, run `|ames-sift` and `|ames-verb` with no arguments to reset the verbosity state.
- [ ] Check that planets are receiving the update. They should start updating within an hour or so.
- [ ] Monitor the Urbit Community Help channel, UF public group channels, and Twitter to make
### Post-Release Artifacts
After waiting at least 24 hours after the release to the network, make and distribute a pill.
- [ ] Find a ship on the network (for now, use `~halbex-palheb`, which runs the UF public group) whose sources for `%base` and the standard app desks are mainline, not devstream.
- [ ] Ensure the `%cz` hashes of all desks match those on the distribution ships.
- [ ] Make a pill by running `.multi-vX-XX/pill +solid %base %garden %webterm %landscape %groups %talk` (replacing `X-XX` with the appropriate version numbers, in this and later steps).
- [ ] Boot a fakezod off that pill to make sure the pill is viable.
- [ ] Upload the pill to `bootstrap.urbit.org` using the Google Cloud SDK by running: `gsutil cp /path/to/pier/.urb/put/multi-vX-XX.pill gs://bootstrap.urbit.org/urbit-vX.XX.pill` -- note that it should be `vX.XX`, not `vX-XX` as in the original pill filename.
- [ ] Boot a ship with the latest binary and check that it downloads the pill from `https://bootstrap.urbit.org/urbit-vX.XX.pill` where you just uploaded it.

View File

@ -6,9 +6,15 @@
:- %tang :- %tang
%- flop ^- tang %- flop ^- tang
=/ pax=path /(scot %p p.bec)/[desk]/(scot %da now) =/ pax=path /(scot %p p.bec)/[desk]/(scot %da now)
=+ .^([lal=@tas num=@ud] cx+(weld pax /sys/kelvin)) =/ welt=(list [@tas @ud])
=+ .^(=waft:clay cx+(weld pax /sys/kelvin))
%+ sort ~(tap in (waft-to-wefts:clay waft))
|= [a=weft b=weft]
?: =(lal.a lal.b)
(lte num.a num.b)
(lte lal.a lal.b)
:~ '/sys/kelvin:' :~ '/sys/kelvin:'
leaf/"[{<lal>} {<num>}]" (sell !>(welt))
'/desk/bill:' '/desk/bill:'
(sell !>(.^((list dude:gall) cx+(weld pax /desk/bill)))) (sell !>(.^((list dude:gall) cx+(weld pax /desk/bill))))
== ==

View File

@ -436,7 +436,7 @@
+$ address @uxaddress +$ address @uxaddress
:: $verb: verbosity flag for ames :: $verb: verbosity flag for ames
:: ::
+$ verb ?(%snd %rcv %odd %msg %ges %for %rot) +$ verb ?(%snd %rcv %odd %msg %ges %for %rot %kay)
:: $blob: raw atom to or from unix, representing a packet :: $blob: raw atom to or from unix, representing a packet
:: ::
+$ blob @uxblob +$ blob @uxblob
@ -886,6 +886,17 @@
+$ norm (axal ?) :: tombstone policy +$ norm (axal ?) :: tombstone policy
+$ open $-(path vase) :: get prelude +$ open $-(path vase) :: get prelude
+$ page ^page :: export for compat +$ page ^page :: export for compat
+$ pour :: ford build w/content
$% [%file =path]
[%nave =mark]
[%dais =mark]
[%cast =mars]
[%tube =mars]
:: leafs
::
[%vale =path =lobe]
[%arch =path =(map path lobe)]
==
+$ rang :: repository +$ rang :: repository
$: hut=(map tako yaki) :: changes $: hut=(map tako yaki) :: changes
lat=(map lobe page) :: data lat=(map lobe page) :: data
@ -920,6 +931,13 @@
+$ rule [mod=?(%black %white) who=(set whom)] :: node permission +$ rule [mod=?(%black %white) who=(set whom)] :: node permission
+$ rump [p=care q=case r=@tas s=path] :: relative path +$ rump [p=care q=case r=@tas s=path] :: relative path
+$ saba [p=ship q=@tas r=moar s=dome] :: patch+merge +$ saba [p=ship q=@tas r=moar s=dome] :: patch+merge
+$ soak :: ford result
$% [%cage =cage]
[%vase =vase]
[%arch dir=(map @ta vase)]
[%dais =dais]
[%tube =tube]
==
+$ soba (list [p=path q=miso]) :: delta +$ soba (list [p=path q=miso]) :: delta
+$ suba (list [p=path q=misu]) :: delta +$ suba (list [p=path q=misu]) :: delta
+$ tako @uvI :: yaki ref +$ tako @uvI :: yaki ref
@ -1059,6 +1077,31 @@
%^ cat 7 (sham [%yaki (roll p add) q t]) %^ cat 7 (sham [%yaki (roll p add) q t])
(sham [%tako (roll p add) q t]) (sham [%tako (roll p add) q t])
[p q has t] [p q has t]
::
:: $leak: ford cache key
::
:: This includes all build inputs, including transitive dependencies,
:: recursively.
::
+$ leak
$~ [*pour ~]
$: =pour
deps=(set leak)
==
::
:: $flow: global ford cache
::
:: Refcount includes references from other items in the cache, and
:: from spills in each desk
::
:: This is optimized for minimizing the number of rebuilds, and given
:: that, minimizing the amount of memory used. It is relatively slow
:: to lookup, because generating a cache key can be fairly slow (for
:: files, it requires parsing; for tubes, it even requires building
:: the marks).
::
+$ flow (map leak [refs=@ud =soak])
::
:: $pile: preprocessed hoon source file :: $pile: preprocessed hoon source file
:: ::
:: /- sur-file :: surface imports from /sur :: /- sur-file :: surface imports from /sur

View File

@ -102,6 +102,7 @@
ges=`?`%.n :: congestion control ges=`?`%.n :: congestion control
for=`?`%.n :: packet forwarding for=`?`%.n :: packet forwarding
rot=`?`%.n :: routing attempts rot=`?`%.n :: routing attempts
kay=`?`%.n :: is ok/not responding
== ==
=> =>
~% %ames ..part ~ ~% %ames ..part ~
@ -121,14 +122,14 @@
:: +qos-update-text: notice text for if connection state changes :: +qos-update-text: notice text for if connection state changes
:: ::
++ qos-update-text ++ qos-update-text
|= [=ship old=qos new=qos] |= [=ship old=qos new=qos k=? ships=(set ship)]
^- (unit tape) ^- (unit tape)
:: ::
?+ [-.old -.new] ~ ?+ [-.old -.new] ~
[%unborn %live] `"; {(scow %p ship)} is your neighbor" [%unborn %live] `"; {(scow %p ship)} is your neighbor"
[%dead %live] `"; {(scow %p ship)} is ok" [%dead %live] ((trace k ship ships |.("is ok")) ~)
[%live %dead] `"; {(scow %p ship)} not responding still trying" [%live %dead] ((trace k ship ships |.("not responding still trying")) ~)
[%unborn %dead] `"; {(scow %p ship)} not responding still trying" [%unborn %dead] ((trace k ship ships |.("not responding still trying")) ~)
[%live %unborn] `"; {(scow %p ship)} has sunk" [%live %unborn] `"; {(scow %p ship)} has sunk"
[%dead %unborn] `"; {(scow %p ship)} has sunk" [%dead %unborn] `"; {(scow %p ship)} has sunk"
== ==
@ -627,7 +628,7 @@
=unix=duct =unix=duct
=life =life
crypto-core=acru:ames crypto-core=acru:ames
=bug bug=bug-9
== ==
:: ::
+$ ship-state-4 ship-state-5 +$ ship-state-4 ship-state-5
@ -656,7 +657,7 @@
=unix=duct =unix=duct
=life =life
crypto-core=acru:ames crypto-core=acru:ames
=bug bug=bug-9
== ==
:: ::
+$ ship-state-6 +$ ship-state-6
@ -685,7 +686,7 @@
=unix=duct =unix=duct
=life =life
crypto-core=acru:ames crypto-core=acru:ames
=bug bug=bug-9
== ==
:: ::
+$ ames-state-8 +$ ames-state-8
@ -693,11 +694,25 @@
=unix=duct =unix=duct
=life =life
crypto-core=acru:ames crypto-core=acru:ames
=bug bug=bug-9
corks=(set wire) corks=(set wire)
== ==
:: ::
+$ bug-9
$: veb=_[`?`%.n `?`%.n `?`%.n `?`%.n `?`%.n `?`%.n `?`%.n]
ships=(set ship)
==
::
+$ ames-state-9
$: peers=(map ship ship-state)
=unix=duct
=life
crypto-core=acru:ames
bug=bug-9
corks=(set wire)
snub=(set ship)
==
::
:: $bug: debug printing configuration :: $bug: debug printing configuration
:: ::
:: veb: verbosity toggles :: veb: verbosity toggles
@ -860,7 +875,8 @@
[%6 ames-state-6] [%6 ames-state-6]
[%7 ames-state-7] [%7 ames-state-7]
[%8 ames-state-8] [%8 ames-state-8]
[%9 ^ames-state] [%9 ames-state-9]
[%10 ^ames-state]
== ==
:: ::
|= [now=@da eny=@ rof=roof] |= [now=@da eny=@ rof=roof]
@ -983,7 +999,7 @@
:: lifecycle arms; mostly pass-throughs to the contained adult ames :: lifecycle arms; mostly pass-throughs to the contained adult ames
:: ::
++ scry scry:adult-core ++ scry scry:adult-core
++ stay [%9 %larva queued-events ames-state.adult-gate] ++ stay [%10 %larva queued-events ames-state.adult-gate]
++ load ++ load
|= $= old |= $= old
$% $: %4 $% $: %4
@ -1022,6 +1038,13 @@
[%adult state=ames-state-8] [%adult state=ames-state-8]
== == == ==
$: %9 $: %9
$% $: %larva
events=(qeu queued-event)
state=ames-state-9
==
[%adult state=ames-state-9]
== ==
$: %10
$% $: %larva $% $: %larva
events=(qeu queued-event) events=(qeu queued-event)
state=_ames-state.adult-gate state=_ames-state.adult-gate
@ -1076,12 +1099,22 @@
=. queued-events events.old =. queued-events events.old
larval-gate larval-gate
:: ::
[%9 %adult *] (load:adult-core %9 state.old) [%9 %adult *]
=. cached-state `[%9 state.old]
~> %slog.0^leaf/"ames: larva reload"
larval-gate
:: ::
[%9 %larva *] [%9 %larva *]
~> %slog.0^leaf/"ames: larva: load"
=. queued-events events.old
larval-gate
::
[%10 %adult *] (load:adult-core %10 state.old)
::
[%10 %larva *]
~> %slog.1^leaf/"ames: larva: load" ~> %slog.1^leaf/"ames: larva: load"
=. queued-events events.old =. queued-events events.old
=. adult-gate (load:adult-core %9 state.old) =. adult-gate (load:adult-core %10 state.old)
larval-gate larval-gate
:: ::
== ==
@ -1102,7 +1135,9 @@
8+(state-7-to-8:load:adult-core +.u.cached-state) 8+(state-7-to-8:load:adult-core +.u.cached-state)
=? u.cached-state ?=(%8 -.u.cached-state) =? u.cached-state ?=(%8 -.u.cached-state)
9+(state-8-to-9:load:adult-core +.u.cached-state) 9+(state-8-to-9:load:adult-core +.u.cached-state)
?> ?=(%9 -.u.cached-state) =? u.cached-state ?=(%9 -.u.cached-state)
10+(state-9-to-10:load:adult-core +.u.cached-state)
?> ?=(%10 -.u.cached-state)
=. ames-state.adult-gate +.u.cached-state =. ames-state.adult-gate +.u.cached-state
[moz larval-core(cached-state ~)] [moz larval-core(cached-state ~)]
-- --
@ -1178,15 +1213,15 @@
[moves ames-gate] [moves ames-gate]
:: +stay: extract state before reload :: +stay: extract state before reload
:: ::
++ stay [%9 %adult ames-state] ++ stay [%10 %adult ames-state]
:: +load: load in old state after reload :: +load: load in old state after reload
:: ::
++ load ++ load
=< |= $= old-state =< |= $= old-state
$% [%9 ^ames-state] $% [%10 ^ames-state]
== ==
^+ ames-gate ^+ ames-gate
?> ?=(%9 -.old-state) ?> ?=(%10 -.old-state)
ames-gate(ames-state +.old-state) ames-gate(ames-state +.old-state)
:: ::
|% |%
@ -1260,7 +1295,7 @@
== ==
++ state-8-to-9 ++ state-8-to-9
|= ames-state=ames-state-8 |= ames-state=ames-state-8
^- ^^ames-state ^- ames-state-9
:* peers.ames-state :* peers.ames-state
unix-duct.ames-state unix-duct.ames-state
life.ames-state life.ames-state
@ -1269,6 +1304,19 @@
corks.ames-state corks.ames-state
*(set ship) *(set ship)
== ==
++ state-9-to-10
|= ames-state=ames-state-9
^- ^^ames-state
:* peers.ames-state
unix-duct.ames-state
life.ames-state
crypto-core.ames-state
%= bug.ames-state
veb [&1 &2 &3 &4 &5 &6 |6 %.n]:veb.bug.ames-state
==
corks.ames-state
snub.ames-state
==
-- --
:: +scry: dereference namespace :: +scry: dereference namespace
:: ::
@ -1507,6 +1555,7 @@
%ges acc(ges %.y) %ges acc(ges %.y)
%for acc(for %.y) %for acc(for %.y)
%rot acc(rot %.y) %rot acc(rot %.y)
%kay acc(kay %.y)
== ==
event-core event-core
:: +on-prod: re-send a packet per flow to each of .ships :: +on-prod: re-send a packet per flow to each of .ships
@ -2016,7 +2065,9 @@
=. +.peer-state +:*^peer-state =. +.peer-state +:*^peer-state
:: print change to quality of service, if any :: print change to quality of service, if any
:: ::
=/ text=(unit tape) (qos-update-text ship old-qos qos.peer-state) =/ text=(unit tape)
%^ qos-update-text ship old-qos
[qos.peer-state kay.veb ships.bug.ames-state]
:: ::
=? event-core ?=(^ text) =? event-core ?=(^ text)
(emit duct %pass /qos %d %flog %text u.text) (emit duct %pass /qos %d %flog %text u.text)
@ -2421,7 +2472,10 @@
=^ old-qos qos.peer-state [qos.peer-state new-qos] =^ old-qos qos.peer-state [qos.peer-state new-qos]
:: if no update worth reporting, we're done :: if no update worth reporting, we're done
:: ::
?~ text=(qos-update-text her.channel old-qos new-qos) =/ text
%^ qos-update-text her.channel old-qos
[new-qos kay.veb ships.bug.ames-state]
?~ text
peer-core peer-core
:: print message :: print message
:: ::

View File

@ -191,19 +191,6 @@
[%1 peg=(unit page)] [%1 peg=(unit page)]
== ==
:: ::
:: Global ford cache
::
:: Refcount includes references from other items in the cache, and
:: from spills in each desk
::
:: This is optimized for minimizing the number of rebuilds, and given
:: that, minimizing the amount of memory used. It is relatively slow
:: to lookup, because generating a cache key can be fairly slow (for
:: files, it requires parsing; for tubes, it even requires building
:: the marks).
::
+$ flow (map leak [refs=@ud =soak])
::
:: Per-desk ford cache :: Per-desk ford cache
:: ::
:: Spill is the set of "roots" we have into the global ford cache. :: Spill is the set of "roots" we have into the global ford cache.
@ -228,41 +215,6 @@
[%arch =path] [%arch =path]
== ==
:: ::
:: Ford build with content.
::
+$ pour
$% [%file =path]
[%nave =mark]
[%dais =mark]
[%cast =mars]
[%tube =mars]
:: leafs
::
[%vale =path =lobe]
[%arch =path =(map path lobe)]
==
::
:: Ford result.
::
+$ soak
$% [%cage =cage]
[%vase =vase]
[%arch dir=(map @ta vase)]
[%dais =dais]
[%tube =tube]
==
::
:: Ford cache key
::
:: This includes all build inputs, including transitive dependencies,
:: recursively.
::
+$ leak
$~ [*pour ~]
$: =pour
deps=(set leak)
==
::
:: New desk data. :: New desk data.
:: ::
:: Sent to other ships to update them about a particular desk. :: Sent to other ships to update them about a particular desk.
@ -5662,6 +5614,7 @@
%sweep ``[%sweep !>(sweep)] %sweep ``[%sweep !>(sweep)]
%rang ``[%rang !>(ran.ruf)] %rang ``[%rang !>(ran.ruf)]
%tomb ``[%flag !>((tomb t.path))] %tomb ``[%flag !>((tomb t.path))]
%flow ``[%flow !>(fad.ruf)]
%domes domes %domes domes
%tire ``[%tire !>(tore:(lu now rof *duct ruf))] %tire ``[%tire !>(tore:(lu now rof *duct ruf))]
%tyre ``[%tyre !>(tyr.ruf)] %tyre ``[%tyre !>(tyr.ruf)]

View File

@ -58,15 +58,15 @@ export const showBlit = (term: Terminal, blit: Blit) => {
export const showSlog = (term: Terminal, slog: string) => { export const showSlog = (term: Terminal, slog: string) => {
// set scroll region to exclude the bottom line, // set scroll region to exclude the bottom line,
// scroll up one line, // move cursor to bottom left of the scroll region,
// move cursor to start of the newly created whitespace, // print a newline to move everything up a line,
// set text to grey, // set text to grey,
// print the slog, // print the slog,
// restore color, scroll region, and cursor. // restore color, scroll region, and cursor.
// //
term.write(csi('r', 1, term.rows - 1) term.write(csi('r', 1, term.rows - 1)
+ csi('S', 1)
+ csi('H', term.rows - 1, 1) + csi('H', term.rows - 1, 1)
+ '\n'
+ csi('m', 90) + csi('m', 90)
+ slog + slog
+ csi('m', 0) + csi('m', 0)

View File

@ -24,6 +24,14 @@
++ test-hint-xray ++ test-hint-xray
~> %xray.[1 leaf+"test-hint-xray ~"] ~> %xray.[1 leaf+"test-hint-xray ~"]
~ ~
:: test that these memory-report hints
:: are safe to run or ignore
++ test-hilt-meme
~> %meme
~
++ test-hint-meme
~> %meme.[1 leaf+"test-hint-meme ~"]
~
:: test that the hilt bout hint :: test that the hilt bout hint
:: is safe to run or ignore :: is safe to run or ignore
++ test-hilt-bout ++ test-hilt-bout