mirror of
https://github.com/urbit/shrub.git
synced 2025-01-05 19:46:50 +03:00
commit
7283353bce
@ -1 +1 @@
|
||||
https://ci-piers.urbit.org/zod-ab9780105496cd2e35de2a523c4f4a55a70b42ca.tgz
|
||||
https://ci-piers.urbit.org/zod-6a1f32bb1984fa9329c072de09ba67b212c8dbed.tgz
|
||||
|
@ -1 +1 @@
|
||||
cfca39542f64c9dbdd45468a4ae96e602d6be989
|
||||
65ce838b26f64311e73410512d83898b081873db
|
||||
|
@ -3,7 +3,7 @@
|
||||
:: :: ::
|
||||
/? 310 :: version
|
||||
/- sole, hall
|
||||
[. sole]
|
||||
/+ pill
|
||||
:: :: ::
|
||||
:::: :: ::
|
||||
:: :: ::
|
||||
@ -13,8 +13,8 @@
|
||||
$: hoc/(map bone session) :: consoles
|
||||
== ::
|
||||
++ session ::
|
||||
$: say/sole-share :: console state
|
||||
mud/(unit (sole-dialog @ud)) :: console dialog
|
||||
$: say/sole-share:sole :: console state
|
||||
mud/(unit (sole-dialog:sole @ud)) :: console dialog
|
||||
== ::
|
||||
:: :: ::
|
||||
:::: :: ::
|
||||
@ -155,55 +155,23 @@
|
||||
=+ way=?:(zus (welp top /sys/[nam]) (welp top /sys/vane/[nam]))
|
||||
=+ fil=.^(@ %cx (welp way /hoon))
|
||||
[%flog /reload [%veer ?:(=('z' tip) %$ tip) way fil]]
|
||||
:: +poke-reset: send %vega to reboot kernel
|
||||
::
|
||||
++ poke-reset :: reset system
|
||||
|= hood-reset =< abet
|
||||
%- 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]
|
||||
:: And reinstall %zuse and the vanes.
|
||||
:: Trigger with |reset.
|
||||
::
|
||||
++ poke-meset :: reset system (new)
|
||||
|= hood-reset =< abet
|
||||
%- emil
|
||||
%- flop ^- (list card)
|
||||
=+ top=`path`/(scot %p our)/home/(scot %da now)/sys
|
||||
=+ hun=.^(@ %cx (welp top /hoon/hoon))
|
||||
=+ arv=.^(@ %cx (welp top /arvo/hoon))
|
||||
:- [%flog /reset [%velo `@t`hun `@t`arv]]
|
||||
:- =+ way=(weld top `path`/zuse)
|
||||
[%flog /reset %veer %$ way .^(@ %cx (welp way /hoon))]
|
||||
++ poke-reset
|
||||
|= hood-reset
|
||||
=< abet
|
||||
%- emil %- flop
|
||||
^- (list card)
|
||||
=/ top=path /(scot %p our)/home/(scot %da now)/sys
|
||||
=/ hun .^(@ %cx (welp top /hoon/hoon))
|
||||
=/ arv .^(@ %cx (welp top /arvo/hoon))
|
||||
:- [%flog /reset [%vega `@t`hun `@t`arv]]
|
||||
%+ turn
|
||||
^- (list {p/@tas q/@tas})
|
||||
:~ [%a %ames]
|
||||
[%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]
|
||||
(module-ova:pill top)
|
||||
|=(a=[wire flog:dill] [%flog a])
|
||||
::
|
||||
++ poke-verb :: toggle verbose
|
||||
|= ~ =< abet
|
||||
|
@ -7,7 +7,7 @@
|
||||
::
|
||||
++ module-ova
|
||||
|= sys=path
|
||||
^- (list ovum)
|
||||
^- (list [wire [%veer term path cord]])
|
||||
%+ turn
|
||||
^- (list (pair term path))
|
||||
:~ :: sys/zuse: standard library
|
||||
@ -39,7 +39,6 @@
|
||||
[%j /vane/jael]
|
||||
==
|
||||
|= [=term =path]
|
||||
^- ovum
|
||||
=/ pax (weld sys path)
|
||||
=/ txt .^(@ %cx (weld pax /hoon))
|
||||
[[%vane path] [%veer term pax txt]]
|
||||
|
412
sys/arvo.hoon
412
sys/arvo.hoon
@ -1,14 +1,21 @@
|
||||
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
:::::: :::::: 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-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 ::::::
|
||||
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
@ -125,7 +132,7 @@
|
||||
?.(&(?=(@ a) ((sane %tas) a)) %$ a)
|
||||
::
|
||||
++ vent :: vane core
|
||||
|= [lal=@tas vil=vile bud=vase =vane]
|
||||
|= [who=ship lal=@tas vil=vile bud=vase =vane]
|
||||
~% %vent +>+ ~
|
||||
|%
|
||||
++ ruck :: update vase
|
||||
@ -164,7 +171,7 @@
|
||||
:: reset cache and add in vane activation entry
|
||||
::
|
||||
=^ 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
|
||||
::
|
||||
=^ fun worm.vane (~(slap wa worm.vane) rig [%limb %scry])
|
||||
@ -177,7 +184,7 @@
|
||||
|= {now/@da eny/@ ski/slyd}
|
||||
=^ rig worm.vane
|
||||
~| [%failed-vane-activation-for lal]
|
||||
(~(slym wa worm.vane) vase.vane +<) :: activate vane
|
||||
(~(slym wa worm.vane) vase.vane [who +<]) :: activate vane
|
||||
~% %wink +>+> ~
|
||||
|%
|
||||
++ slid
|
||||
@ -343,7 +350,7 @@
|
||||
^- vase
|
||||
?: &(=(-.q.vase.vane -.q.sev) =(+>.q.vase.vane +>.q.sev))
|
||||
vase.vane :: unchanged, use old
|
||||
sev(+<.q [*@da *@ =>(~ |~(* ~))]) :: clear to stop leak
|
||||
sev(+<.q [*@p *@da *@ =>(~ |~(* ~))]) :: clear to stop leak
|
||||
::
|
||||
++ swim
|
||||
~/ %swim
|
||||
@ -381,13 +388,19 @@
|
||||
--
|
||||
::
|
||||
++ 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 %- mule |.
|
||||
~| [%failed-vint lal]
|
||||
=+ gen=(rain pax txt)
|
||||
~& [%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)]
|
||||
prime:pro
|
||||
::
|
||||
@ -402,7 +415,7 @@
|
||||
==
|
||||
::
|
||||
++ 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
|
||||
++ beck
|
||||
^- slyd
|
||||
@ -415,7 +428,7 @@
|
||||
?~ vanes ~
|
||||
?. =(lal label.i.vanes) $(vanes t.vanes)
|
||||
~| [%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]
|
||||
::
|
||||
++ dink :: vase by char
|
||||
@ -454,7 +467,7 @@
|
||||
++ race :: take
|
||||
|= {org/@tas lal/@tas pux/(unit wire) hen/duct hil/mill =vane}
|
||||
^- [p=(list move) q=_vane]
|
||||
=+ ven=(vent lal vil bud vane)
|
||||
=+ ven=(vent who lal vil bud vane)
|
||||
~| [%failed-take lal]
|
||||
=+ win=(wink:ven now (shax now) beck)
|
||||
(swim:win org pux hen hil)
|
||||
@ -513,157 +526,324 @@
|
||||
$(ova (weld p.nyx ova), mor (weld q.nyx t.mor))
|
||||
--
|
||||
--
|
||||
=+ pit=`vase`!>(.) ::
|
||||
=+ bud=pit :: becomes tang
|
||||
:: =+ vil=(viol p.bud) :: cached reflexives
|
||||
=+ vil=(viol p.bud) :: cached reflexives
|
||||
=| $: lac/? :: laconic bit
|
||||
eny/@ :: entropy
|
||||
=< :: Arvo larval stage
|
||||
::
|
||||
:: The true Arvo kernel knows who it is. It should not *maybe*
|
||||
:: have an identity, nor should it contain multitudes. This outer
|
||||
:: kernel exists to accumulate identity, entropy, and the
|
||||
:: 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
|
||||
== ::
|
||||
=< |%
|
||||
++ come |= {@ (list ovum) pone} :: 22
|
||||
=< :: Arvo structural interface
|
||||
::
|
||||
|%
|
||||
++ come |= {@ @ @ (list ovum) vise pone} :: 22
|
||||
^- {(list ovum) _+>}
|
||||
~& %hoon-come
|
||||
=^ rey +>+ (^come +<)
|
||||
[rey +>.$]
|
||||
++ load |= {@ (list ovum) pane} :: 46
|
||||
::
|
||||
++ load |= {@ @ @ (list ovum) vase pane} :: 46
|
||||
^- {(list ovum) _+>}
|
||||
~& %hoon-load
|
||||
=^ rey +>+ (^load +<)
|
||||
[rey +>.$]
|
||||
::
|
||||
++ peek |=(* (^peek ((hard {@da path}) +<))) :: 47
|
||||
::
|
||||
++ poke |= * :: 10
|
||||
^- {(list ovum) *}
|
||||
=> .(+< ((hard {now/@da ovo/ovum}) +<))
|
||||
?: =(%verb -.q.ovo)
|
||||
[~ +>.$(lac !lac)]
|
||||
?: ?=($veer -.q.ovo)
|
||||
[~ +>.$(+ (veer now q.ovo))]
|
||||
=^ ova +>+ (^poke now ovo)
|
||||
|- ^- {(list ovum) *}
|
||||
^- [(list ovum) *]
|
||||
=> .(+< ((hard ,[now=@da ovo=ovum]) +<))
|
||||
=^ ova +>+.$ (^poke now ovo)
|
||||
|- ^- [(list ovum) *]
|
||||
?~ ova
|
||||
[~ +>.^$]
|
||||
?: ?=($verb -.q.i.ova)
|
||||
$(ova t.ova, lac !lac)
|
||||
?: ?=($veer -.q.i.ova)
|
||||
$(ova t.ova, +>+.^$ (veer now q.i.ova))
|
||||
?: ?=($vega -.q.i.ova)
|
||||
:: upgrade the kernel
|
||||
::
|
||||
?: ?=(%vega -.q.i.ova)
|
||||
%+ fall
|
||||
(vega now t.ova (path +<.q.i.ova) (path +>.q.i.ova))
|
||||
(vega now t.ova ({@ @} +.q.i.ova))
|
||||
[~ +>.^$]
|
||||
?: ?=($mass -.q.i.ova)
|
||||
=+ avo=$(ova t.ova)
|
||||
:_ +.avo
|
||||
:_ -.avo
|
||||
%= i.ova
|
||||
q.q
|
||||
:- %userspace
|
||||
:- %|
|
||||
:~ hoon+`pit
|
||||
zuse+`bud
|
||||
:: hoon-cache+`p.niz
|
||||
q.q.i.ova
|
||||
dot+`.
|
||||
==
|
||||
==
|
||||
=+(avo=$(ova t.ova) [[i.ova -.avo] +.avo])
|
||||
:: iterate over effects, handling those on arvo proper
|
||||
:: and passing the rest through as output
|
||||
::
|
||||
=^ vov +>+.^$ (feck now i.ova)
|
||||
?~ vov
|
||||
$(ova t.ova)
|
||||
=/ avo $(ova t.ova)
|
||||
[[+.vov -.avo] +.avo]
|
||||
::
|
||||
++ wish |=(* (^wish ((hard @ta) +<))) :: 4
|
||||
--
|
||||
:: Arvo implementation core
|
||||
::
|
||||
|%
|
||||
++ come :: load incompatible
|
||||
|= {yen/@ ova/(list ovum) nyf/pone}
|
||||
|= [who=ship now=@da yen=@ ova=(list ovum) dub=vise nyf=pone]
|
||||
^+ [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
|
||||
|= {yen/@ ova/(list ovum) nyf/pane}
|
||||
|= [who=ship now=@da yen=@ ova=(list ovum) dub=vase nyf=pane]
|
||||
^+ [ova +>]
|
||||
=: eny yen
|
||||
=: our who
|
||||
eny yen
|
||||
bud dub
|
||||
vanes (turn nyf |=({a/@tas b/vise} [a [b *worm]]))
|
||||
==
|
||||
|- ^+ [ova +>.^$]
|
||||
|- ^- [(list ovum) _+>.^$]
|
||||
?~ ova
|
||||
[~ +>.^$]
|
||||
?: ?=($verb -.q.i.ova)
|
||||
$(ova t.ova, lac !lac)
|
||||
?: ?=($veer -.q.i.ova)
|
||||
$(ova t.ova, +>.^$ (veer *@da q.i.ova))
|
||||
=+(avo=$(ova t.ova) [[i.ova -.avo] +.avo])
|
||||
:: iterate over effects, handling those on arvo proper
|
||||
:: and passing the rest through as output
|
||||
::
|
||||
:: In practice, the pending effects after an upgrade
|
||||
:: 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
|
||||
|= {now/@da hap/path}
|
||||
^- (unit)
|
||||
?~ 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 ~
|
||||
?~ u.rob ~
|
||||
[~ u.u.rob]
|
||||
::
|
||||
++ poke :: external apply
|
||||
|= {now/@da ovo/ovum}
|
||||
|= [now=@da ovo=ovum]
|
||||
=. 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
|
||||
(~(hurl (is vil eny bud vanes) now) lac ovo)
|
||||
(~(hurl (is our vil eny bud vanes) now) lac ovo)
|
||||
[zef +>.$]
|
||||
::
|
||||
++ 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: handle an arvo effect
|
||||
::
|
||||
++ 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
|
||||
|= {now/@da ova/(list ovum) hap/path zup/path}
|
||||
^- (unit {p/(list ovum) q/*})
|
||||
|= $: :: now: current date
|
||||
:: 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 %- mule |.
|
||||
=/ ken (veke now hap zup)
|
||||
~& [%vega-kernel `@ux`(mug ken)]
|
||||
:: produce a new kernel and an effect list
|
||||
::
|
||||
^- (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
|
||||
:: 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
|
||||
%- (hard (unit @))
|
||||
.*(ken [%9 2 %10 [6 %1 now ~] [%9 47 %0 1]])
|
||||
~& [%vega-compiled hoon-version nex]
|
||||
?> (lte nex hoon-version)
|
||||
:: entropy, pending effects, vanes
|
||||
=/ vip -:.*(cop [%9 2 %10 [6 %1 [-.rav '+>']] %0 1])
|
||||
:: compute the formula for the upgrade gate
|
||||
::
|
||||
=/ fol +:.*(cop [%9 2 %10 [6 %1 [vip arm]] %0 1])
|
||||
:: produce the upgrade gate
|
||||
::
|
||||
.*(voc fol)
|
||||
:: upgrade gate sample
|
||||
::
|
||||
=/ sam
|
||||
:+ eny ova
|
||||
(turn vanes |=([label=@tas =vane] [label vase.vane]))
|
||||
:: +load at +46 or +come at +22
|
||||
:* our
|
||||
now
|
||||
eny
|
||||
ova
|
||||
bud
|
||||
(turn vanes |=([label=@tas =vane] [label vase.vane]))
|
||||
==
|
||||
:: call into the new kernel
|
||||
::
|
||||
=/ axe ?:(=(nex hoon-version) 46 22)
|
||||
=/ out
|
||||
.*(ken [%9 2 %10 [6 %1 sam] [%9 axe %0 1]])
|
||||
:: add a reset notification to the pending effects
|
||||
.*(gat [%9 2 %10 [6 %1 sam] %0 1])
|
||||
:: 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
|
||||
|= {now/@da fav/curd}
|
||||
:: Identity is in the sample so the larval stage
|
||||
:: can use this as well.
|
||||
::
|
||||
++ veer
|
||||
|= [who=ship now=@da fav=curd]
|
||||
=> .(fav ((hard {$veer lal/@ta pax/path txt/@t}) fav))
|
||||
=- ?:(?=(%| -.res) ((slog p.res) +>.$) p.res)
|
||||
^= res %- mule |.
|
||||
@ -677,21 +857,21 @@
|
||||
|- ^+ vanes
|
||||
?~ vanes
|
||||
~& [%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
|
||||
vanes
|
||||
[[lal.fav vane:u.vin] vanes]
|
||||
?. =(lal.fav label.i.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
|
||||
:- label.i.vanes
|
||||
~| [%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
|
||||
|= txt/@
|
||||
|= txt/@
|
||||
q:(slap bud (ream txt))
|
||||
--
|
||||
|
||||
|
@ -1221,7 +1221,7 @@
|
||||
::
|
||||
=| $: fox=fort :: kernel state
|
||||
== ::
|
||||
|= [now=@da eny=@ ski=sley] :: current invocation
|
||||
|= [our=ship now=@da eny=@uvJ ski=sley] :: current invocation
|
||||
^? :: opaque core
|
||||
=<
|
||||
|% :: vane interface
|
||||
|
@ -147,7 +147,7 @@
|
||||
. ==
|
||||
=| coke :: persistent state
|
||||
=* state - ::
|
||||
|= {now/@da eny/@ ski/sley} :: current invocation
|
||||
|= [our=ship now=@da eny=@uvJ ski=sley] :: current invocation
|
||||
^?
|
||||
|% :: poke+peek pattern
|
||||
++ call :: handle request
|
||||
|
@ -3698,7 +3698,7 @@
|
||||
$: $1 :: vane version
|
||||
ruf/raft :: revision tree
|
||||
== ::
|
||||
|= {now/@da eny/@ ski/sley} :: activate
|
||||
|= [our=ship now=@da eny=@uvJ ski=sley] :: current invocation
|
||||
^? :: opaque core
|
||||
|% ::
|
||||
++ call :: handle request
|
||||
|
@ -53,8 +53,7 @@
|
||||
{$init p/ship} ::
|
||||
{$text p/tape} ::
|
||||
{$veer p/@ta q/path r/@t} :: install vane
|
||||
{$vega p/path q/path} :: reboot by path
|
||||
{$velo p/@t q/@t} :: reboot by path
|
||||
{$vega p/@t q/@t} :: reboot by path
|
||||
{$verb $~} :: verbose mode
|
||||
== ::
|
||||
++ note-eyre ::
|
||||
@ -136,7 +135,7 @@
|
||||
:::::::: :: dill tiles
|
||||
--
|
||||
=| all/axle
|
||||
|= {now/@da eny/@ ski/sley} :: current invocation
|
||||
|= [our=ship now=@da eny=@uvJ ski=sley] :: current invocation
|
||||
=> |%
|
||||
++ as :: per cause
|
||||
=| moz/(list move)
|
||||
@ -162,7 +161,6 @@
|
||||
$heft heft
|
||||
$veer (dump kyz)
|
||||
$vega (dump kyz)
|
||||
$velo (dump kyz)
|
||||
$verb (dump kyz)
|
||||
==
|
||||
::
|
||||
|
@ -2247,7 +2247,7 @@
|
||||
. ==
|
||||
=| bolo
|
||||
=* bol -
|
||||
|= {now/@da eny/@ ski/sley} :: activate
|
||||
|= [our=ship now=@da eny=@uvJ ski=sley] :: current invocation
|
||||
^? :: opaque core
|
||||
|% ::
|
||||
++ call :: handle request
|
||||
|
@ -6070,9 +6070,10 @@
|
||||
:: begin with a default +axle as a blank slate
|
||||
::
|
||||
=| 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
|
||||
::
|
||||
~% %ford ..is ~
|
||||
|
@ -97,9 +97,10 @@
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
. ==
|
||||
=| all/axle :: all vane state
|
||||
|= $: now/@da :: urban time
|
||||
eny/@uvJ :: entropy
|
||||
ska/sley :: activate
|
||||
|= $: our=ship :: identity
|
||||
now=@da :: urban time
|
||||
eny=@uvJ :: entropy
|
||||
ska=sley :: activate
|
||||
== :: opaque core
|
||||
~% %gall-top ..is ~
|
||||
|% :::::::::::::::::::::::::::::::::::::::::::::::::::::: state machine
|
||||
|
@ -607,8 +607,8 @@
|
||||
$: :: now: current time
|
||||
:: eny: unique entropy
|
||||
::
|
||||
now/@da
|
||||
eny/@e
|
||||
now=@da
|
||||
eny=@uvJ
|
||||
==
|
||||
:: all vane state
|
||||
::
|
||||
@ -2180,13 +2180,15 @@
|
||||
::
|
||||
=| lex/state
|
||||
|= $: ::
|
||||
:: our: identity
|
||||
:: now: current time
|
||||
:: eny: unique entropy
|
||||
:: ski: namespace resolver
|
||||
::
|
||||
now/@da
|
||||
eny/@e
|
||||
ski/sley
|
||||
our=ship
|
||||
now=@da
|
||||
eny=@uvJ
|
||||
ski=sley
|
||||
==
|
||||
|%
|
||||
:: :: ++call
|
||||
|
@ -913,8 +913,7 @@
|
||||
{$mass p/mass} :: memory usage
|
||||
{$send p/lane:ames q/@} :: transmit packet
|
||||
{$veer p/@ta q/path r/@t} :: install vane
|
||||
{$vega p/path q/path} :: old reboot
|
||||
{$velo p/@t q/@t} :: reboot
|
||||
{$vega p/@t q/@t} :: reboot
|
||||
{$verb ~} :: verbose mode
|
||||
== ::
|
||||
++ task :: in request ->$
|
||||
@ -934,8 +933,7 @@
|
||||
{$talk p/tank} ::
|
||||
{$text p/tape} ::
|
||||
{$veer p/@ta q/path r/@t} :: install vane
|
||||
{$vega p/path q/path} :: old reboot
|
||||
{$velo p/@t q/@t} :: reboot
|
||||
{$vega p/@t q/@t} :: reboot
|
||||
{$verb ~} :: verbose mode
|
||||
== ::
|
||||
-- ::able
|
||||
@ -995,8 +993,7 @@
|
||||
{$heft ~} ::
|
||||
{$text p/tape} ::
|
||||
{$veer p/@ta q/path r/@t} :: install vane
|
||||
{$vega p/path q/path} :: old reboot
|
||||
{$velo p/@t q/@t} :: reboot
|
||||
{$vega p/@t q/@t} :: reboot
|
||||
{$verb ~} :: verbose mode
|
||||
== ::
|
||||
-- ::dill
|
||||
@ -1019,8 +1016,7 @@
|
||||
[%thou p=httr] :: raw http response
|
||||
[%thus p=@ud q=(unit hiss)] :: http request+cancel
|
||||
[%veer p=@ta q=path r=@t] :: drop-through
|
||||
[%vega p=path q=path] :: drop-through
|
||||
[%velo p=@t q=@t] :: drop-through
|
||||
[%vega p=@t q=@t] :: drop-through
|
||||
== ::
|
||||
+= task :: in request ->$
|
||||
$% [%born p=(list host)] :: new unix process
|
||||
|
@ -33,7 +33,7 @@
|
||||
==
|
||||
^- [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
|
||||
%- call:ames call-args
|
||||
|
@ -463,7 +463,7 @@
|
||||
==
|
||||
^- [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)
|
||||
::
|
||||
@ -484,7 +484,7 @@
|
||||
==
|
||||
^- [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)
|
||||
::
|
||||
@ -502,7 +502,7 @@
|
||||
==
|
||||
^- [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)
|
||||
::
|
||||
@ -523,7 +523,7 @@
|
||||
==
|
||||
^- [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)
|
||||
::
|
||||
|
@ -14,6 +14,7 @@
|
||||
::
|
||||
=/ test-pit=vase !>(..zuse)
|
||||
=/ ford-gate (ford-vane test-pit)
|
||||
~! +6.ford-gate
|
||||
::
|
||||
|%
|
||||
++ test-tear ^- tang
|
||||
@ -7260,7 +7261,7 @@
|
||||
==
|
||||
^- [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
|
||||
%- call:ford call-args
|
||||
@ -7281,7 +7282,7 @@
|
||||
==
|
||||
^- [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
|
||||
%- take:ford take-args
|
||||
@ -7306,7 +7307,7 @@
|
||||
==
|
||||
^- [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
|
||||
%- call:ford call-args
|
||||
@ -7325,7 +7326,7 @@
|
||||
==
|
||||
^- [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
|
||||
%- take:ford take-args
|
||||
|
@ -89,7 +89,7 @@
|
||||
==
|
||||
^- [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
|
||||
%- call:jael call-args
|
||||
@ -109,7 +109,7 @@
|
||||
==
|
||||
^- [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
|
||||
%- call:jael call-args
|
||||
@ -126,7 +126,7 @@
|
||||
==
|
||||
^- [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
|
||||
%- take:jael take-args
|
||||
@ -146,7 +146,7 @@
|
||||
==
|
||||
^- [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
|
||||
%- take:jael take-args
|
||||
|
Loading…
Reference in New Issue
Block a user