mirror of
https://github.com/ilyakooo0/urbit.git
synced 2025-01-05 13:55:54 +03:00
New arvo.
This commit is contained in:
parent
5adc34bd75
commit
fc7759b6db
140
sys/parv.hoon
Normal file
140
sys/parv.hoon
Normal file
@ -0,0 +1,140 @@
|
||||
!: :: /sys/arvo
|
||||
:: :: !%reference/2
|
||||
:: %arvo: arvo microkernel.
|
||||
::
|
||||
=< :: 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/ovum}
|
||||
^+ .
|
||||
~> %slog.[0 leaf+"arvo-event"]
|
||||
.(+> +:(poke now ovo))
|
||||
=>
|
||||
:: :: ::
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: (1) models
|
||||
:: :: ::
|
||||
|%
|
||||
:: ::::
|
||||
:: :: (1a) public
|
||||
:: ::::
|
||||
++ ante :: preceding models
|
||||
|% ++ span ^span :: preceding type
|
||||
++ twig ^twig :: preceding expr
|
||||
++ vase ^vase :: preceding dynamic
|
||||
-- ::
|
||||
++ arms (map chip (pair @ta @t)) :: stated identity
|
||||
++ card {p/@tas q/*} :: tagged event
|
||||
++ chip :: standard identity
|
||||
$? $giv :: given name
|
||||
$sur :: surname
|
||||
$had :: fictitious name
|
||||
$mid :: middle name
|
||||
== ::
|
||||
++ duct (list wire) :: causal history
|
||||
++ ovum (pair wire card) :: input or output
|
||||
++ ruby @pG :: 64-bit passcode
|
||||
++ wire path :: cause
|
||||
-- =>
|
||||
|%
|
||||
:: ::::
|
||||
:: ++live :: (1b) complex
|
||||
:: ::::
|
||||
++ live :: hoon version
|
||||
|* :: save: version of ++vase
|
||||
::
|
||||
save/_vase
|
||||
|%
|
||||
++ hulk :: main stack move
|
||||
$% {$unix p/@da q/ovum} :: unix input
|
||||
{$vane p/move} :: vane action
|
||||
{$xinu p/ovum} :: unix output
|
||||
== ::
|
||||
++ mall :: any arvo version
|
||||
$? {$1 mast} :: version 1, current
|
||||
== ::
|
||||
++ mast :: system state
|
||||
$: $= gut ::
|
||||
$: run/(list hulk) :: worklist
|
||||
out/(list ovum) :: output
|
||||
== ::
|
||||
$= mal :: mammal brain
|
||||
$: sac/worm :: vane compiler cache
|
||||
van/(list (pair term vase)) ::
|
||||
== ::
|
||||
$= rep :: reptile brain
|
||||
$: orb/@p :: ship
|
||||
nym/arms :: name information
|
||||
roy/(map @ud ruby) :: start secrets
|
||||
fat/(map path (pair term noun)) :: boot filesystem
|
||||
== == ::
|
||||
++ mill (each save milo) :: vase or metavase
|
||||
++ milo {p/* q/*} :: untyped metavase
|
||||
++ move (pair duct arvo) :: vane move
|
||||
++ part :: arvo vane move
|
||||
$% {$give p/mill} :: vane "return"
|
||||
{$poke p/wire q/(pair term mill)} :: vane "call"
|
||||
== ::
|
||||
--
|
||||
-- =>
|
||||
:: :: ::
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: (2) engines
|
||||
:: :: ::
|
||||
|%
|
||||
--
|
||||
:: :: ::
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: (3) surface
|
||||
:: :: ::
|
||||
|_
|
||||
:: :: ++come
|
||||
++ come :: upgrade from old
|
||||
|=
|
||||
^- {(list ovum) _+>}
|
||||
~& %hoon-come
|
||||
=^ rey +>+ (^come +<)
|
||||
[rey +>.$]
|
||||
::
|
||||
++ keep |=(* (^keep ((hard {@da path}) +<))) :: 4
|
||||
++ load |= {@ (list ovum) pane} :: 86
|
||||
^- {(list ovum) _+>}
|
||||
~& %hoon-load
|
||||
=^ rey +>+ (^load +<)
|
||||
[rey +>.$]
|
||||
++ peek |=(* (^peek ((hard {@da path}) +<))) :: 87
|
||||
++ poke |= * :: 42
|
||||
^- {(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))
|
||||
?: ?=($velo -.q.i.ova)
|
||||
(fall (velo now t.ova ({@ @} +.q.i.ova)) [~ +>.^$])
|
||||
?: ?=(?($init $veal) -.q.i.ova)
|
||||
=+ avo=$(ova t.ova, +>+.^$ (boot (@ +.q.i.ova)))
|
||||
[[i.ova -.avo] +.avo]
|
||||
?: ?=($mass -.q.i.ova)
|
||||
=+ avo=$(ova t.ova)
|
||||
:_ +.avo
|
||||
:_ -.avo
|
||||
%= i.ova
|
||||
q.q
|
||||
:- %userspace
|
||||
:- %|
|
||||
:~ hoon+`pit
|
||||
zuse+`mast
|
||||
hoon-cache+`p.niz
|
||||
q.q.i.ova
|
||||
dot+`.
|
||||
==
|
||||
==
|
||||
=+(avo=$(ova t.ova) [[i.ova -.avo] +.avo])
|
||||
++ wish |=(* (^wish ((hard @ta) +<))) :: 20
|
||||
|
||||
--
|
Loading…
Reference in New Issue
Block a user