From fc7759b6db009baf81b9fa9018e30546ba71436d Mon Sep 17 00:00:00 2001 From: "C. Guy Yarvin" Date: Tue, 7 Feb 2017 18:28:12 -0800 Subject: [PATCH] New arvo. --- sys/parv.hoon | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 sys/parv.hoon diff --git a/sys/parv.hoon b/sys/parv.hoon new file mode 100644 index 000000000..033fc9bef --- /dev/null +++ b/sys/parv.hoon @@ -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 + +--