Merge pull request #915 from urbit/single-home

single-home arvo
This commit is contained in:
Joe Bryan 2018-12-06 19:22:56 -05:00 committed by GitHub
commit 7283353bce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 354 additions and 208 deletions

View File

@ -1 +1 @@
https://ci-piers.urbit.org/zod-ab9780105496cd2e35de2a523c4f4a55a70b42ca.tgz https://ci-piers.urbit.org/zod-6a1f32bb1984fa9329c072de09ba67b212c8dbed.tgz

View File

@ -1 +1 @@
cfca39542f64c9dbdd45468a4ae96e602d6be989 65ce838b26f64311e73410512d83898b081873db

View File

@ -3,7 +3,7 @@
:: :: :: :: :: ::
/? 310 :: version /? 310 :: version
/- sole, hall /- sole, hall
[. sole] /+ pill
:: :: :: :: :: ::
:::: :: :: :::: :: ::
:: :: :: :: :: ::
@ -13,8 +13,8 @@
$: hoc/(map bone session) :: consoles $: hoc/(map bone session) :: consoles
== :: == ::
++ session :: ++ session ::
$: say/sole-share :: console state $: say/sole-share:sole :: console state
mud/(unit (sole-dialog @ud)) :: console dialog mud/(unit (sole-dialog:sole @ud)) :: console dialog
== :: == ::
:: :: :: :: :: ::
:::: :: :: :::: :: ::
@ -155,55 +155,23 @@
=+ way=?:(zus (welp top /sys/[nam]) (welp top /sys/vane/[nam])) =+ way=?:(zus (welp top /sys/[nam]) (welp top /sys/vane/[nam]))
=+ fil=.^(@ %cx (welp way /hoon)) =+ fil=.^(@ %cx (welp way /hoon))
[%flog /reload [%veer ?:(=('z' tip) %$ tip) way fil]] [%flog /reload [%veer ?:(=('z' tip) %$ tip) way fil]]
:: +poke-reset: send %vega to reboot kernel
:: ::
++ poke-reset :: reset system :: And reinstall %zuse and the vanes.
|= hood-reset =< abet :: Trigger with |reset.
%- emil
%- flop ^- (list card)
=+ top=`path`/(scot %p our)/home/(scot %da now)/sys
:- [%flog /reset %vega (weld top /hoon) (weld top /arvo)]
%+ turn
^- (list {p/@tas q/path})
:~ [%$ /zuse]
[%a /vane/ames]
[%b /vane/behn]
[%c /vane/clay]
[%d /vane/dill]
[%e /vane/eyre]
[%f /vane/ford]
[%g /vane/gall]
[%j /vane/jael]
==
|= {p/@tas q/path}
=+ way=`path`(welp top q)
=+ txt=.^(@ %cx (welp way /hoon))
[%flog /reset %veer p way txt]
:: ::
++ poke-meset :: reset system (new) ++ poke-reset
|= hood-reset =< abet |= hood-reset
%- emil =< abet
%- flop ^- (list card) %- emil %- flop
=+ top=`path`/(scot %p our)/home/(scot %da now)/sys ^- (list card)
=+ hun=.^(@ %cx (welp top /hoon/hoon)) =/ top=path /(scot %p our)/home/(scot %da now)/sys
=+ arv=.^(@ %cx (welp top /arvo/hoon)) =/ hun .^(@ %cx (welp top /hoon/hoon))
:- [%flog /reset [%velo `@t`hun `@t`arv]] =/ arv .^(@ %cx (welp top /arvo/hoon))
:- =+ way=(weld top `path`/zuse) :- [%flog /reset [%vega `@t`hun `@t`arv]]
[%flog /reset %veer %$ way .^(@ %cx (welp way /hoon))]
%+ turn %+ turn
^- (list {p/@tas q/@tas}) (module-ova:pill top)
:~ [%a %ames] |=(a=[wire flog:dill] [%flog a])
[%b %behn]
[%c %clay]
[%d %dill]
[%e %eyre]
[%f %ford]
[%g %gall]
[%j %jael]
==
|= {p/@tas q/@tas}
=+ way=`path`(welp top /vane/[q])
=+ txt=.^(@ %cx (welp way /hoon))
[%flog /reset %veer p way txt]
:: ::
++ poke-verb :: toggle verbose ++ poke-verb :: toggle verbose
|= ~ =< abet |= ~ =< abet

View File

@ -7,7 +7,7 @@
:: ::
++ module-ova ++ module-ova
|= sys=path |= sys=path
^- (list ovum) ^- (list [wire [%veer term path cord]])
%+ turn %+ turn
^- (list (pair term path)) ^- (list (pair term path))
:~ :: sys/zuse: standard library :~ :: sys/zuse: standard library
@ -39,7 +39,6 @@
[%j /vane/jael] [%j /vane/jael]
== ==
|= [=term =path] |= [=term =path]
^- ovum
=/ pax (weld sys path) =/ pax (weld sys path)
=/ txt .^(@ %cx (weld pax /hoon)) =/ txt .^(@ %cx (weld pax /hoon))
[[%vane path] [%veer term pax txt]] [[%vane path] [%veer term pax txt]]

View File

@ -1,14 +1,21 @@
:::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::: :::::: Postface :::::: :::::: :::::: Postface ::::::
:::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
~> %slog.[0 leaf+"arvo-boot"]
=< |= {now/@da ovo/*}
^- *
~> %slog.[0 leaf+"arvo-event"]
.(+> +:(poke now ovo))
~> %slog.[0 leaf+"%arvo-assembly"] ~> %slog.[0 leaf+"%arvo-assembly"]
=- ~> %slog.[0 leaf+"%arvo-assembled"] =- ~> %slog.[0 leaf+"%arvo-assembled"]
- -
=< ::
:: Arvo formal interface
::
:: this lifecycle wrapper makes the arvo door (multi-armed core)
:: look like a gate (function or single-armed core), to fit
:: urbit's formal lifecycle function. a practical interpreter
:: can ignore it.
::
|= [now=@da ovo=*]
^- *
~> %slog.[0 leaf+"arvo-event"]
.(+> +:(poke now ovo))
:::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::: :::::: volume 3, Arvo models and skeleton :::::: :::::: :::::: volume 3, Arvo models and skeleton ::::::
:::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
@ -125,7 +132,7 @@
?.(&(?=(@ a) ((sane %tas) a)) %$ a) ?.(&(?=(@ a) ((sane %tas) a)) %$ a)
:: ::
++ vent :: vane core ++ vent :: vane core
|= [lal=@tas vil=vile bud=vase =vane] |= [who=ship lal=@tas vil=vile bud=vase =vane]
~% %vent +>+ ~ ~% %vent +>+ ~
|% |%
++ ruck :: update vase ++ ruck :: update vase
@ -164,7 +171,7 @@
:: reset cache and add in vane activation entry :: reset cache and add in vane activation entry
:: ::
=^ rig worm.vane =^ rig worm.vane
(~(slym wa *worm) vase.vane *[@da @ slyd]) (~(slym wa *worm) vase.vane *[@p @da @ slyd])
:: cache the access of the %scry arm :: cache the access of the %scry arm
:: ::
=^ fun worm.vane (~(slap wa worm.vane) rig [%limb %scry]) =^ fun worm.vane (~(slap wa worm.vane) rig [%limb %scry])
@ -177,7 +184,7 @@
|= {now/@da eny/@ ski/slyd} |= {now/@da eny/@ ski/slyd}
=^ rig worm.vane =^ rig worm.vane
~| [%failed-vane-activation-for lal] ~| [%failed-vane-activation-for lal]
(~(slym wa worm.vane) vase.vane +<) :: activate vane (~(slym wa worm.vane) vase.vane [who +<]) :: activate vane
~% %wink +>+> ~ ~% %wink +>+> ~
|% |%
++ slid ++ slid
@ -343,7 +350,7 @@
^- vase ^- vase
?: &(=(-.q.vase.vane -.q.sev) =(+>.q.vase.vane +>.q.sev)) ?: &(=(-.q.vase.vane -.q.sev) =(+>.q.vase.vane +>.q.sev))
vase.vane :: unchanged, use old vase.vane :: unchanged, use old
sev(+<.q [*@da *@ =>(~ |~(* ~))]) :: clear to stop leak sev(+<.q [*@p *@da *@ =>(~ |~(* ~))]) :: clear to stop leak
:: ::
++ swim ++ swim
~/ %swim ~/ %swim
@ -381,13 +388,19 @@
-- --
:: ::
++ vint :: create vane ++ vint :: create vane
|= {lal/@tas vil/vile bud/vase pax/path txt/@ta} :: |= $: who=ship
lal=@tas
vil=vile
bud=vase
pax=path
txt=@ta
==
=- ?:(?=(%| -.res) ((slog p.res) ~) (some p.res)) =- ?:(?=(%| -.res) ((slog p.res) ~) (some p.res))
^= res %- mule |. ^= res %- mule |.
~| [%failed-vint lal] ~| [%failed-vint lal]
=+ gen=(rain pax txt) =+ gen=(rain pax txt)
~& [%vane-parsed `@p`(mug gen)] ~& [%vane-parsed `@p`(mug gen)]
=+ pro=(vent lal vil bud [(slym (slap bud gen) bud) *worm]) =+ pro=(vent who lal vil bud [(slym (slap bud gen) bud) *worm])
~& [%vane-compiled `@p`(mug pro)] ~& [%vane-compiled `@p`(mug pro)]
prime:pro prime:pro
:: ::
@ -402,7 +415,7 @@
== ==
:: ::
++ is :: operate in time ++ is :: operate in time
|= {vil/vile eny/@ bud/vase vanes=(list [label=@tas =vane])} |= [who=ship vil=vile eny=@ bud=vase vanes=(list [label=@tas =vane])]
|_ now/@da |_ now/@da
++ beck ++ beck
^- slyd ^- slyd
@ -415,7 +428,7 @@
?~ vanes ~ ?~ vanes ~
?. =(lal label.i.vanes) $(vanes t.vanes) ?. =(lal label.i.vanes) $(vanes t.vanes)
~| [%failed-scry ron bed] ~| [%failed-scry ron bed]
%- scry:(wink:(vent lal vil bud vane.i.vanes) now (shax now) ..^$) %- scry:(wink:(vent who lal vil bud vane.i.vanes) now (shax now) ..^$)
[fur ren bed] [fur ren bed]
:: ::
++ dink :: vase by char ++ dink :: vase by char
@ -454,7 +467,7 @@
++ race :: take ++ race :: take
|= {org/@tas lal/@tas pux/(unit wire) hen/duct hil/mill =vane} |= {org/@tas lal/@tas pux/(unit wire) hen/duct hil/mill =vane}
^- [p=(list move) q=_vane] ^- [p=(list move) q=_vane]
=+ ven=(vent lal vil bud vane) =+ ven=(vent who lal vil bud vane)
~| [%failed-take lal] ~| [%failed-take lal]
=+ win=(wink:ven now (shax now) beck) =+ win=(wink:ven now (shax now) beck)
(swim:win org pux hen hil) (swim:win org pux hen hil)
@ -513,157 +526,324 @@
$(ova (weld p.nyx ova), mor (weld q.nyx t.mor)) $(ova (weld p.nyx ova), mor (weld q.nyx t.mor))
-- --
-- --
=+ pit=`vase`!>(.) :: =< :: Arvo larval stage
=+ bud=pit :: becomes tang ::
:: =+ vil=(viol p.bud) :: cached reflexives :: The true Arvo kernel knows who it is. It should not *maybe*
=+ vil=(viol p.bud) :: cached reflexives :: have an identity, nor should it contain multitudes. This outer
=| $: lac/? :: laconic bit :: kernel exists to accumulate identity, entropy, and the
eny/@ :: entropy :: standard library. Upon having done so, it upgrades itself into
:: the true Arvo kernel. Subsequent upgrades will fall through
:: the larval stage directly into the actual kernel.
::
:: For convenience, this larval stage also supports hoon compilation
:: with +wish and vane installation with the %veer event.
::
=/ pit=vase !>(..is)
=| $: :: who: our identity once we know it
:: eny: entropy once we learn it
:: bod: %zuse once we receive it
::
who=(unit ship)
eny=(unit @)
bod=(unit vase)
==
:: larval Arvo structural interface
::
|%
++ come ^come :: 22
++ load ^load :: 46
++ peek |=(* ~) :: 47
::
++ poke |= * :: 10
^- [(list ovum) *]
=> .(+< ((hard ,[now=@da ovo=ovum]) +<))
^- [(list ovum) *]
=. +>.$
?+ -.q.ovo
:: ignore unrecognized
::
~& [%larval-ignore p.ovo -.q.ovo]
+>.$
:: install %zuse or vane
::
%veer
^+ +>.$
:: use the maximum comet if we don't know who we are yet
::
=/ our
?^ who
u.who
=/ fip=ship (dec (bex 128))
~>(%slog.[0 leaf+"arvo: larval identity {(scow %p fip)}"] fip)
=. ..veer (veer our now q.ovo)
+>.$(bod ?^(bod bod `bud.^poke))
:: add entropy
::
%wack
^+ +>.$
?> ?=(@ q.q.ovo)
+>.$(eny `q.q.ovo)
:: become who you were born to be
::
%whom
^+ +>.$
?> ?=(@ q.q.ovo)
+>.$(who `q.q.ovo)
==
:: upgrade once we've accumulated identity, entropy, and %zuse
::
?. &(?=(^ who) ?=(^ eny) ?=(^ bod))
[~ +>.$]
~> %slog.[0 leaf+"arvo: metamorphosis"]
=/ nyf
(turn vanes.^poke |=([label=@tas =vane] [label vase.vane]))
(load u.who now u.eny ova=~ u.bod nyf)
::
++ wish |= txt=* :: 4
?> ?=(@ txt)
q:(slap ?~(bod pit u.bod) (ream txt))
--
::
:: persistent arvo state
::
=/ pit=vase !>(..is) ::
=/ vil=vile (viol p.pit) :: cached reflexives
=| $: lac=? :: laconic bit
eny=@ :: entropy
our=ship :: identity
bud=vase :: %zuse
vanes=(list [label=@tas =vane]) :: modules vanes=(list [label=@tas =vane]) :: modules
== :: == ::
=< |% =< :: Arvo structural interface
++ come |= {@ (list ovum) pone} :: 22 ::
|%
++ come |= {@ @ @ (list ovum) vise pone} :: 22
^- {(list ovum) _+>} ^- {(list ovum) _+>}
~& %hoon-come ~& %hoon-come
=^ rey +>+ (^come +<) =^ rey +>+ (^come +<)
[rey +>.$] [rey +>.$]
++ load |= {@ (list ovum) pane} :: 46 ::
++ load |= {@ @ @ (list ovum) vase pane} :: 46
^- {(list ovum) _+>} ^- {(list ovum) _+>}
~& %hoon-load ~& %hoon-load
=^ rey +>+ (^load +<) =^ rey +>+ (^load +<)
[rey +>.$] [rey +>.$]
::
++ peek |=(* (^peek ((hard {@da path}) +<))) :: 47 ++ peek |=(* (^peek ((hard {@da path}) +<))) :: 47
::
++ poke |= * :: 10 ++ poke |= * :: 10
^- {(list ovum) *} ^- [(list ovum) *]
=> .(+< ((hard {now/@da ovo/ovum}) +<)) => .(+< ((hard ,[now=@da ovo=ovum]) +<))
?: =(%verb -.q.ovo) =^ ova +>+.$ (^poke now ovo)
[~ +>.$(lac !lac)] |- ^- [(list ovum) *]
?: ?=($veer -.q.ovo)
[~ +>.$(+ (veer now q.ovo))]
=^ ova +>+ (^poke now ovo)
|- ^- {(list ovum) *}
?~ ova ?~ ova
[~ +>.^$] [~ +>.^$]
?: ?=($verb -.q.i.ova) :: upgrade the kernel
$(ova t.ova, lac !lac) ::
?: ?=($veer -.q.i.ova) ?: ?=(%vega -.q.i.ova)
$(ova t.ova, +>+.^$ (veer now q.i.ova))
?: ?=($vega -.q.i.ova)
%+ fall %+ fall
(vega now t.ova (path +<.q.i.ova) (path +>.q.i.ova)) (vega now t.ova ({@ @} +.q.i.ova))
[~ +>.^$] [~ +>.^$]
?: ?=($mass -.q.i.ova) :: iterate over effects, handling those on arvo proper
=+ avo=$(ova t.ova) :: and passing the rest through as output
:_ +.avo ::
:_ -.avo =^ vov +>+.^$ (feck now i.ova)
%= i.ova ?~ vov
q.q $(ova t.ova)
:- %userspace =/ avo $(ova t.ova)
:- %| [[+.vov -.avo] +.avo]
:~ hoon+`pit ::
zuse+`bud
:: hoon-cache+`p.niz
q.q.i.ova
dot+`.
==
==
=+(avo=$(ova t.ova) [[i.ova -.avo] +.avo])
++ wish |=(* (^wish ((hard @ta) +<))) :: 4 ++ wish |=(* (^wish ((hard @ta) +<))) :: 4
-- --
:: Arvo implementation core
::
|% |%
++ come :: load incompatible ++ come :: load incompatible
|= {yen/@ ova/(list ovum) nyf/pone} |= [who=ship now=@da yen=@ ova=(list ovum) dub=vise nyf=pone]
^+ [ova +>] ^+ [ova +>]
(load yen ova (turn nyf |=({a/@tas b/vise} [a (slim b)]))) =/ fyn (turn nyf |=([a=@tas b=vise] [a (slim b)]))
(load who now yen ova (slim dub) fyn)
:: ::
++ load :: load compatible ++ load :: load compatible
|= {yen/@ ova/(list ovum) nyf/pane} |= [who=ship now=@da yen=@ ova=(list ovum) dub=vase nyf=pane]
^+ [ova +>] ^+ [ova +>]
=: eny yen =: our who
eny yen
bud dub
vanes (turn nyf |=({a/@tas b/vise} [a [b *worm]])) vanes (turn nyf |=({a/@tas b/vise} [a [b *worm]]))
== ==
|- ^+ [ova +>.^$] |- ^- [(list ovum) _+>.^$]
?~ ova ?~ ova
[~ +>.^$] [~ +>.^$]
?: ?=($verb -.q.i.ova) :: iterate over effects, handling those on arvo proper
$(ova t.ova, lac !lac) :: and passing the rest through as output
?: ?=($veer -.q.i.ova) ::
$(ova t.ova, +>.^$ (veer *@da q.i.ova)) :: In practice, the pending effects after an upgrade
=+(avo=$(ova t.ova) [[i.ova -.avo] +.avo]) :: are the %veer moves to install %zuse and the vanes.
::
=^ vov +>.^$ (feck now i.ova)
?~ vov
$(ova t.ova)
=/ avo $(ova t.ova)
[[+.vov -.avo] +.avo]
:: ::
++ peek :: external inspect ++ peek :: external inspect
|= {now/@da hap/path} |= {now/@da hap/path}
^- (unit) ^- (unit)
?~ hap [~ hoon-version] ?~ hap [~ hoon-version]
=+ rob=((sloy ~(beck (is vil eny bud vanes) now)) [151 %noun] hap) =+ rob=((sloy ~(beck (is our vil eny bud vanes) now)) [151 %noun] hap)
?~ rob ~ ?~ rob ~
?~ u.rob ~ ?~ u.rob ~
[~ u.u.rob] [~ u.u.rob]
:: ::
++ poke :: external apply ++ poke :: external apply
|= {now/@da ovo/ovum} |= [now=@da ovo=ovum]
=. eny (mix eny (shaz now)) =. eny (mix eny (shaz now))
:: ~& [%poke -.q.ovo] ^- [(list ovum) _+>.$]
^- {(list ovum) _+>} ::
:: These external events are actually effects on arvo proper.
:: They can also be produced as the effects of other events.
:: In either case, they fall through here to be handled
:: after the fact in +feck.
::
?: ?=(?(%veer %verb %wack) -.q.ovo)
[[ovo ~] +>.$]
::
=^ zef vanes =^ zef vanes
(~(hurl (is vil eny bud vanes) now) lac ovo) (~(hurl (is our vil eny bud vanes) now) lac ovo)
[zef +>.$] [zef +>.$]
:: :: +feck: handle an arvo effect
++ veke :: build new kernel
|= {now/@da hap/path zup/path}
^- *
=- ?:(?=(%& -.res) p.res ((slog p.res) ~))
^= res %- mule |.
=/ pax (weld hap /hoon)
=/ wax (weld zup /hoon)
~& [%vega-start-hoon hap]
=/ src ((hard @t) (need (peek now cx+pax)))
=/ arv ((hard @t) (need (peek now cx+wax)))
:: construct =>(hoon =>(+7 arvo))
::
=/ gen=hoon
:+ %tsbn (rain hap src)
:+ %tsld (rain zup arv)
[%$ 7]
~& %vega-parsed
=/ fol q:(~(mint ut %noun) %noun gen)
~& %vega-compiled
:: evaluate :fol to produce the Arvo gate,
:: then produce the Arvo core at +7
::
.*(0 [%7 fol %0 7])
:: ::
++ feck
|= [now=@da ovo=ovum]
^- [(unit ovum) _+>.$]
?+ -.q.ovo
:: pass through unrecognized effect
::
[[~ ovo] +>.$]
:: toggle event verbose event printfs
::
%verb
[~ +>.$(lac !lac)]
:: install %zuse or vane
::
%veer
[~ (veer our now q.ovo)]
:: add data to memory profile
::
%mass
=. q.q.ovo
:- %userspace
:- %|
:~ hoon+`pit
zuse+`bud
:: hoon-cache+`p.niz
q.q.ovo
dot+`.
==
[[~ ovo] +>.$]
:: add entropy
::
%wack
?> ?=(@ q.q.ovo)
=. eny (mix eny (shaz q.q.ovo))
[~ +>.$]
==
::
++ vega :: reboot kernel ++ vega :: reboot kernel
|= {now/@da ova/(list ovum) hap/path zup/path} |= $: :: now: current date
^- (unit {p/(list ovum) q/*}) :: ova: actions to process after reboot
:: hun: hoon.hoon source
:: arv: arvo.hoon source
::
now=@da
ova=(list ovum)
hun=@t
van=@t
==
^- (unit (pair (list ovum) *))
:: virtualize; dump error if we fail
::
=- ?:(?=(%| -.res) ((slog p.res) ~) `p.res) =- ?:(?=(%| -.res) ((slog p.res) ~) `p.res)
^= res %- mule |. ^= res %- mule |.
=/ ken (veke now hap zup) :: produce a new kernel and an effect list
~& [%vega-kernel `@ux`(mug ken)] ::
^- (pair (list ovum) *)
:: compile the hoon.hoon source with the current compiler
::
=/ raw
~& [%hoon-compile `@p`(mug hun)]
(ride %noun hun)
:: activate the new compiler gate, producing +ride
::
=/ cop .*(0 +.raw)
:: find the hoon version number of the new kernel
::
=/ nex =/ nex
:: call +peek at +47 (@ .*(cop q:(~(mint ut p.raw) %noun [%limb %hoon-version])))
?> |(=(nex hoon-version) =(+(nex) hoon-version))
:: if we're upgrading language versions, recompile the compiler
::
:: hot: raw compiler formula
::
=> ?: =(nex hoon-version)
[hot=`*`raw .]
~& [%hoon-compile-upgrade nex]
=/ hot
.*(cop [%9 2 %10 [6 %1 [%noun hun]] %0 1])
.(cop .*(0 +.hot))
:: extract the hoon core from the outer gate (+ride)
::
=/ hoc .*(cop [%0 7])
:: compute the type of the hoon.hoon core
::
=/ hyp
-:.*(cop [%9 2 %10 [6 %1 [-.hot '+>']] %0 1])
:: compile arvo
::
=/ rav
~& [%arvo-compile `@p`(mug hyp) `@p`(mug van)]
.*(cop [%9 2 %10 [6 %1 [hyp van]] %0 1])
:: activate arvo, and extract the arvo core from the outer gate
::
=/ voc .*(hoc [%7 +.rav %0 7])
:: entry gate: ++load for the normal case, ++come for upgrade
::
=/ gat
=/ arm ?:(=(nex hoon-version) 'load' 'come')
:: compute the type of the arvo.hoon core
:: ::
%- need =/ vip -:.*(cop [%9 2 %10 [6 %1 [-.rav '+>']] %0 1])
%- (hard (unit @)) :: compute the formula for the upgrade gate
.*(ken [%9 2 %10 [6 %1 now ~] [%9 47 %0 1]]) ::
~& [%vega-compiled hoon-version nex] =/ fol +:.*(cop [%9 2 %10 [6 %1 [vip arm]] %0 1])
?> (lte nex hoon-version) :: produce the upgrade gate
:: entropy, pending effects, vanes ::
.*(voc fol)
:: upgrade gate sample
:: ::
=/ sam =/ sam
:+ eny ova :* our
(turn vanes |=([label=@tas =vane] [label vase.vane])) now
:: +load at +46 or +come at +22 eny
ova
bud
(turn vanes |=([label=@tas =vane] [label vase.vane]))
==
:: call into the new kernel
:: ::
=/ axe ?:(=(nex hoon-version) 46 22)
=/ out =/ out
.*(ken [%9 2 %10 [6 %1 sam] [%9 axe %0 1]]) .*(gat [%9 2 %10 [6 %1 sam] %0 1])
:: add a reset notification to the pending effects :: tack a reset notification onto the product
:: ::
[[[~ %vega hap] ((list ovum) -.out)] +.out] [[[/ %vega ~] ((list ovum) -.out)] +.out]
:: +veer: install %zuse or a vane
:: ::
++ veer :: install vane/tang :: Identity is in the sample so the larval stage
|= {now/@da fav/curd} :: can use this as well.
::
++ veer
|= [who=ship now=@da fav=curd]
=> .(fav ((hard {$veer lal/@ta pax/path txt/@t}) fav)) => .(fav ((hard {$veer lal/@ta pax/path txt/@t}) fav))
=- ?:(?=(%| -.res) ((slog p.res) +>.$) p.res) =- ?:(?=(%| -.res) ((slog p.res) +>.$) p.res)
^= res %- mule |. ^= res %- mule |.
@ -677,21 +857,21 @@
|- ^+ vanes |- ^+ vanes
?~ vanes ?~ vanes
~& [%vane `@tas`lal.fav pax.fav `@p`(mug txt.fav)] ~& [%vane `@tas`lal.fav pax.fav `@p`(mug txt.fav)]
=+ vin=(vint lal.fav vil bud pax.fav txt.fav) =+ vin=(vint who lal.fav vil bud pax.fav txt.fav)
?~ vin ?~ vin
vanes vanes
[[lal.fav vane:u.vin] vanes] [[lal.fav vane:u.vin] vanes]
?. =(lal.fav label.i.vanes) ?. =(lal.fav label.i.vanes)
[i.vanes $(vanes t.vanes)] [i.vanes $(vanes t.vanes)]
~& [%vane `@tas`lal.fav pax.fav `@p`(mug txt.fav)] ~& [%vane `@tas`lal.fav pax.fav `@p`(mug txt.fav)]
:_ t.vanes :_ t.vanes
:- label.i.vanes :- label.i.vanes
~| [%failed-vane-activation now lal.fav] ~| [%failed-vane-activation now lal.fav]
vane:(ruck:(vent lal.fav vil bud [vase.vane.i.vanes *worm]) pax.fav txt.fav) vane:(ruck:(vent who lal.fav vil bud [vase.vane.i.vanes *worm]) pax.fav txt.fav)
== ==
:: ::
++ wish :: external compute ++ wish :: external compute
|= txt/@ |= txt/@
q:(slap bud (ream txt)) q:(slap bud (ream txt))
-- --

View File

@ -1221,7 +1221,7 @@
:: ::
=| $: fox=fort :: kernel state =| $: fox=fort :: kernel state
== :: == ::
|= [now=@da eny=@ ski=sley] :: current invocation |= [our=ship now=@da eny=@uvJ ski=sley] :: current invocation
^? :: opaque core ^? :: opaque core
=< =<
|% :: vane interface |% :: vane interface

View File

@ -147,7 +147,7 @@
. == . ==
=| coke :: persistent state =| coke :: persistent state
=* state - :: =* state - ::
|= {now/@da eny/@ ski/sley} :: current invocation |= [our=ship now=@da eny=@uvJ ski=sley] :: current invocation
^? ^?
|% :: poke+peek pattern |% :: poke+peek pattern
++ call :: handle request ++ call :: handle request

View File

@ -3698,7 +3698,7 @@
$: $1 :: vane version $: $1 :: vane version
ruf/raft :: revision tree ruf/raft :: revision tree
== :: == ::
|= {now/@da eny/@ ski/sley} :: activate |= [our=ship now=@da eny=@uvJ ski=sley] :: current invocation
^? :: opaque core ^? :: opaque core
|% :: |% ::
++ call :: handle request ++ call :: handle request

View File

@ -53,8 +53,7 @@
{$init p/ship} :: {$init p/ship} ::
{$text p/tape} :: {$text p/tape} ::
{$veer p/@ta q/path r/@t} :: install vane {$veer p/@ta q/path r/@t} :: install vane
{$vega p/path q/path} :: reboot by path {$vega p/@t q/@t} :: reboot by path
{$velo p/@t q/@t} :: reboot by path
{$verb $~} :: verbose mode {$verb $~} :: verbose mode
== :: == ::
++ note-eyre :: ++ note-eyre ::
@ -136,7 +135,7 @@
:::::::: :: dill tiles :::::::: :: dill tiles
-- --
=| all/axle =| all/axle
|= {now/@da eny/@ ski/sley} :: current invocation |= [our=ship now=@da eny=@uvJ ski=sley] :: current invocation
=> |% => |%
++ as :: per cause ++ as :: per cause
=| moz/(list move) =| moz/(list move)
@ -162,7 +161,6 @@
$heft heft $heft heft
$veer (dump kyz) $veer (dump kyz)
$vega (dump kyz) $vega (dump kyz)
$velo (dump kyz)
$verb (dump kyz) $verb (dump kyz)
== ==
:: ::

View File

@ -2247,7 +2247,7 @@
. == . ==
=| bolo =| bolo
=* bol - =* bol -
|= {now/@da eny/@ ski/sley} :: activate |= [our=ship now=@da eny=@uvJ ski=sley] :: current invocation
^? :: opaque core ^? :: opaque core
|% :: |% ::
++ call :: handle request ++ call :: handle request

View File

@ -6070,9 +6070,10 @@
:: begin with a default +axle as a blank slate :: begin with a default +axle as a blank slate
:: ::
=| ax=axle =| ax=axle
:: a vane is activated with current date, entropy, and a namespace function :: a vane is activated with identity, the current date, entropy,
:: and a namespace function
:: ::
|= [now=@da eny=@ scry-gate=sley] |= [our=ship now=@da eny=@uvJ scry-gate=sley]
:: allow jets to be registered within this core :: allow jets to be registered within this core
:: ::
~% %ford ..is ~ ~% %ford ..is ~

View File

@ -97,9 +97,10 @@
:::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
. == . ==
=| all/axle :: all vane state =| all/axle :: all vane state
|= $: now/@da :: urban time |= $: our=ship :: identity
eny/@uvJ :: entropy now=@da :: urban time
ska/sley :: activate eny=@uvJ :: entropy
ska=sley :: activate
== :: opaque core == :: opaque core
~% %gall-top ..is ~ ~% %gall-top ..is ~
|% :::::::::::::::::::::::::::::::::::::::::::::::::::::: state machine |% :::::::::::::::::::::::::::::::::::::::::::::::::::::: state machine

View File

@ -607,8 +607,8 @@
$: :: now: current time $: :: now: current time
:: eny: unique entropy :: eny: unique entropy
:: ::
now/@da now=@da
eny/@e eny=@uvJ
== ==
:: all vane state :: all vane state
:: ::
@ -2180,13 +2180,15 @@
:: ::
=| lex/state =| lex/state
|= $: :: |= $: ::
:: our: identity
:: now: current time :: now: current time
:: eny: unique entropy :: eny: unique entropy
:: ski: namespace resolver :: ski: namespace resolver
:: ::
now/@da our=ship
eny/@e now=@da
ski/sley eny=@uvJ
ski=sley
== ==
|% |%
:: :: ++call :: :: ++call

View File

@ -913,8 +913,7 @@
{$mass p/mass} :: memory usage {$mass p/mass} :: memory usage
{$send p/lane:ames q/@} :: transmit packet {$send p/lane:ames q/@} :: transmit packet
{$veer p/@ta q/path r/@t} :: install vane {$veer p/@ta q/path r/@t} :: install vane
{$vega p/path q/path} :: old reboot {$vega p/@t q/@t} :: reboot
{$velo p/@t q/@t} :: reboot
{$verb ~} :: verbose mode {$verb ~} :: verbose mode
== :: == ::
++ task :: in request ->$ ++ task :: in request ->$
@ -934,8 +933,7 @@
{$talk p/tank} :: {$talk p/tank} ::
{$text p/tape} :: {$text p/tape} ::
{$veer p/@ta q/path r/@t} :: install vane {$veer p/@ta q/path r/@t} :: install vane
{$vega p/path q/path} :: old reboot {$vega p/@t q/@t} :: reboot
{$velo p/@t q/@t} :: reboot
{$verb ~} :: verbose mode {$verb ~} :: verbose mode
== :: == ::
-- ::able -- ::able
@ -995,8 +993,7 @@
{$heft ~} :: {$heft ~} ::
{$text p/tape} :: {$text p/tape} ::
{$veer p/@ta q/path r/@t} :: install vane {$veer p/@ta q/path r/@t} :: install vane
{$vega p/path q/path} :: old reboot {$vega p/@t q/@t} :: reboot
{$velo p/@t q/@t} :: reboot
{$verb ~} :: verbose mode {$verb ~} :: verbose mode
== :: == ::
-- ::dill -- ::dill
@ -1019,8 +1016,7 @@
[%thou p=httr] :: raw http response [%thou p=httr] :: raw http response
[%thus p=@ud q=(unit hiss)] :: http request+cancel [%thus p=@ud q=(unit hiss)] :: http request+cancel
[%veer p=@ta q=path r=@t] :: drop-through [%veer p=@ta q=path r=@t] :: drop-through
[%vega p=path q=path] :: drop-through [%vega p=@t q=@t] :: drop-through
[%velo p=@t q=@t] :: drop-through
== :: == ::
+= task :: in request ->$ += task :: in request ->$
$% [%born p=(list host)] :: new unix process $% [%born p=(list host)] :: new unix process

View File

@ -33,7 +33,7 @@
== ==
^- [tang _ames-gate] ^- [tang _ames-gate]
:: ::
=/ ames (ames-gate now=now eny=`@e`0xdead.beef scry=*sley) =/ ames (ames-gate our=~zod now=now eny=`@`0xdead.beef scry=*sley)
:: ::
=^ moves ames-gate =^ moves ames-gate
%- call:ames call-args %- call:ames call-args

View File

@ -463,7 +463,7 @@
== ==
^- [tang _clay-gate] ^- [tang _clay-gate]
:: ::
=/ clay-core (clay-gate now=now eny=0xdead.beef scry=scry) =/ clay-core (clay-gate our=~zod now=now eny=`@`0xdead.beef scry=scry)
:: ::
=^ moves clay-gate (call:clay-core call-args) =^ moves clay-gate (call:clay-core call-args)
:: ::
@ -484,7 +484,7 @@
== ==
^- [tang _clay-gate] ^- [tang _clay-gate]
:: ::
=/ clay-core (clay-gate now=now eny=0xdead.beef scry=scry) =/ clay-core (clay-gate our=~zod now=now eny=`@`0xdead.beef scry=scry)
:: ::
=^ moves clay-gate (call:clay-core call-args) =^ moves clay-gate (call:clay-core call-args)
:: ::
@ -502,7 +502,7 @@
== ==
^- [tang _clay-gate] ^- [tang _clay-gate]
:: ::
=/ clay-core (clay-gate now=now eny=0xdead.beef scry=scry) =/ clay-core (clay-gate our=~zod now=now eny=`@`0xdead.beef scry=scry)
:: ::
=^ moves clay-gate (take:clay-core take-args) =^ moves clay-gate (take:clay-core take-args)
:: ::
@ -523,7 +523,7 @@
== ==
^- [tang _clay-gate] ^- [tang _clay-gate]
:: ::
=/ clay-core (clay-gate now=now eny=0xdead.beef scry=scry) =/ clay-core (clay-gate our=~zod now=now eny=`@`0xdead.beef scry=scry)
:: ::
=^ moves clay-gate (take:clay-core take-args) =^ moves clay-gate (take:clay-core take-args)
:: ::

View File

@ -14,6 +14,7 @@
:: ::
=/ test-pit=vase !>(..zuse) =/ test-pit=vase !>(..zuse)
=/ ford-gate (ford-vane test-pit) =/ ford-gate (ford-vane test-pit)
~! +6.ford-gate
:: ::
|% |%
++ test-tear ^- tang ++ test-tear ^- tang
@ -7260,7 +7261,7 @@
== ==
^- [tang _ford-gate] ^- [tang _ford-gate]
:: ::
=/ ford (ford-gate now=now eny=0xdead.beef scry=scry) =/ ford (ford-gate our=~zod now=now eny=`@`0xdead.beef scry=scry)
:: ::
=^ moves ford-gate =^ moves ford-gate
%- call:ford call-args %- call:ford call-args
@ -7281,7 +7282,7 @@
== ==
^- [tang _ford-gate] ^- [tang _ford-gate]
:: ::
=/ ford (ford-gate now=now eny=0xdead.beef scry=scry) =/ ford (ford-gate our=~zod now=now eny=`@`0xdead.beef scry=scry)
:: ::
=^ moves ford-gate =^ moves ford-gate
%- take:ford take-args %- take:ford take-args
@ -7306,7 +7307,7 @@
== ==
^- [tang _ford-gate] ^- [tang _ford-gate]
:: ::
=/ ford (ford-gate now=now eny=0xdead.beef scry=scry) =/ ford (ford-gate our=~zod now=now eny=`@`0xdead.beef scry=scry)
:: ::
=^ moves ford-gate =^ moves ford-gate
%- call:ford call-args %- call:ford call-args
@ -7325,7 +7326,7 @@
== ==
^- [tang _ford-gate] ^- [tang _ford-gate]
:: ::
=/ ford (ford-gate now=now eny=0xdead.beef scry=scry) =/ ford (ford-gate our=~zod now=now eny=`@`0xdead.beef scry=scry)
:: ::
=^ moves ford-gate =^ moves ford-gate
%- take:ford take-args %- take:ford take-args

View File

@ -89,7 +89,7 @@
== ==
^- [tang _jael-gate] ^- [tang _jael-gate]
:: ::
=/ jael (jael-gate now=now eny=`@e`0xdead.beef scry=*sley) =/ jael (jael-gate our=~zod now=now eny=`@`0xdead.beef scry=*sley)
:: ::
=^ moves jael-gate =^ moves jael-gate
%- call:jael call-args %- call:jael call-args
@ -109,7 +109,7 @@
== ==
^- [tang _jael-gate] ^- [tang _jael-gate]
:: ::
=/ jael (jael-gate now=now eny=`@e`0xdead.beef scry=*sley) =/ jael (jael-gate our=~zod now=now eny=`@`0xdead.beef scry=*sley)
:: ::
=^ moves jael-gate =^ moves jael-gate
%- call:jael call-args %- call:jael call-args
@ -126,7 +126,7 @@
== ==
^- [tang _jael-gate] ^- [tang _jael-gate]
:: ::
=/ jael (jael-gate now=now eny=`@e`0xdead.beef scry=*sley) =/ jael (jael-gate our=~zod now=now eny=`@`0xdead.beef scry=*sley)
:: ::
=^ moves jael-gate =^ moves jael-gate
%- take:jael take-args %- take:jael take-args
@ -146,7 +146,7 @@
== ==
^- [tang _jael-gate] ^- [tang _jael-gate]
:: ::
=/ jael (jael-gate now=now eny=`@e`0xdead.beef scry=*sley) =/ jael (jael-gate our=~zod now=now eny=`@`0xdead.beef scry=*sley)
:: ::
=^ moves jael-gate =^ moves jael-gate
%- take:jael take-args %- take:jael take-args