arvo: adds %wyrd event validation (disabled)

and switches runtime version to $path
This commit is contained in:
Joe Bryan 2020-12-06 03:23:26 -08:00
parent ff06ccd2b9
commit fb4000b3f0
3 changed files with 69 additions and 52 deletions

View File

@ -253,12 +253,7 @@
== ==
== ==
+$ vane [=vase =worm] +$ vane [=vase =worm]
+$ vere +$ vere [[non=@ta rev=path] kel=wynn]
$: $: non=@ta
rev=(pair term (trel @ud @ud @ud)) :: XX path?
==
kel=wynn
==
+$ vile +$ vile
$: typ=type :: -:!>(*type) $: typ=type :: -:!>(*type)
duc=type :: -:!>(*duct) duc=type :: -:!>(*duct)
@ -341,48 +336,66 @@
== ==
~>(%slog.[0 leaf+"arvo: scry-lost"] ~) ~>(%slog.[0 leaf+"arvo: scry-lost"] ~)
[~ ~ q.vax] [~ ~ q.vax]
:: +wyrd: kelvin negotiation :: |wyrd: kelvin negotiation
:: ::
:: specified but unimplemented: :: specified but unimplemented:
:: arvo should produce a [wend/wynn] effect :: arvo should produce a [wend/wynn] effect
:: to signal downgrade :: to signal downgrade
:: ::
++ wyrd ++ wyrd
|= [run=wynn hav=wynn] |%
:: wyr: ~: runtime supports all required kelvins :: +sane: kelvin stack for validity
:: ^: runtime support is missing or lagging
:: ::
=; wyr !. ++ sane
?~ wyr |= kel=wynn
same ^- ?
~& wyrd=wyr &
~_ :+ %rose :: ?: =(~ kel) &
[" " ~ ~] :: =^ las=(pair term @ud) kel kel
:~ =+ p.u.wyr :: |- ^- ?
leaf/"%{(trip p)} %{(scow %ud q)} required;" :: ?~ kel &
?~ q.u.wyr :: ?& (gte q.las q.i.kel)
leaf/"runtime missing support" :: $(las i.kel, kel t.kel)
leaf/"runtime only supports %{(scow %ud u.q.u.wyr)}" :: ==
== :: +need: require kelvins
~> %mean.'arvo: upgrade blocked'
~> %mean.'wyrd'
!!
:: ::
|- ^- (unit (pair (pair term @ud) (unit @ud))) ++ need
?~ hav ~ |= [run=wynn hav=wynn]
:: :: wyr: ~: runtime supports all required kelvins
:: fel: %&: runtime kelvin for [i.hav] :: ^: runtime support is missing or lagging
:: %|: no specified runtime support ::
:: =; wyr !.
=/ fel ?~ wyr
|- ^- (each @ud (pair term @ud)) same
?~ run |/i.hav ~& wyrd=wyr
?:(=(p.i.hav p.i.run) &/q.i.run $(run t.run)) ~_ :+ %rose
:: [" " ~ ~]
?- -.fel :~ =+ p.u.wyr
%| `[p.fel ~] leaf/"%{(trip p)} %{(scow %ud q)} required;"
%& ?.((lte p.fel q.i.hav) `[i.hav `p.fel] $(hav t.hav)) ?~ q.u.wyr
== leaf/"runtime missing support"
leaf/"runtime only supports %{(scow %ud u.q.u.wyr)}"
==
~> %mean.'arvo: upgrade blocked'
~> %mean.'wyrd'
!!
::
|- ^- (unit (pair (pair term @ud) (unit @ud)))
?~ hav ~
::
:: fel: %&: runtime kelvin for [i.hav]
:: %|: no specified runtime support
::
=/ fel
|- ^- (each @ud (pair term @ud))
?~ run |/i.hav
?:(=(p.i.hav p.i.run) &/q.i.run $(run t.run))
::
?- -.fel
%| `[p.fel ~]
%& ?.((lte p.fel q.i.hav) `[i.hav `p.fel] $(hav t.hav))
==
--
:: ::
:: |de: axal engine :: |de: axal engine
:: ::
@ -1302,7 +1315,7 @@
(smit:va "lull" pit /sys/lull/hoon u.lul.job) (smit:va "lull" pit /sys/lull/hoon u.lul.job)
=? zus.mod.sol ?=(^ zus.job) =? zus.mod.sol ?=(^ zus.job)
(smit:va "zuse" lul.mod.sol /sys/zuse/hoon u.zus.job) (smit:va "zuse" lul.mod.sol /sys/zuse/hoon u.zus.job)
%- %+ wyrd kel.ver.zen %- %+ need:wyrd kel.ver.zen
:~ lull/;;(@ud q:(slap lul.mod.sol limb/%lull)) :~ lull/;;(@ud q:(slap lul.mod.sol limb/%lull))
zuse/;;(@ud q:(slap zus.mod.sol limb/%zuse)) zuse/;;(@ud q:(slap zus.mod.sol limb/%zuse))
== ==
@ -1386,7 +1399,9 @@
:: ::
:: %wyrd: check for runtime kelvin compatibility :: %wyrd: check for runtime kelvin compatibility
:: ::
%wyrd %- %+ wyrd kel.p.buz %wyrd ?. (sane:wyrd kel.p.buz)
~>(%mean.'wyrd: insane' !!)
%- %+ need:wyrd kel.p.buz
^- (list (pair term @)) ^- (list (pair term @))
:~ hoon/hoon-version :~ hoon/hoon-version
arvo/arvo arvo/arvo
@ -1456,7 +1471,7 @@
~>(%mean.'wyrd: vega:' !!) ~>(%mean.'wyrd: vega:' !!)
:: require runtime compatibility :: require runtime compatibility
:: ::
%- (wyrd kel [hoon/nex ~]) %- (need:wyrd kel [hoon/nex ~])
:: ::
:: if we're upgrading language versions, recompile the compiler :: if we're upgrading language versions, recompile the compiler
:: ::
@ -1559,7 +1574,7 @@
:: ::
=. van.mod (~(run by van.mod) |=(=vane vane(worm *worm))) =. van.mod (~(run by van.mod) |=(=vane vane(worm *worm)))
:: ::
%- %+ wyrd kel.ver.zen %- %+ need:wyrd kel.ver.zen
^- (list (pair term @)) ^- (list (pair term @))
:~ hoon/hoon-version :~ hoon/hoon-version
arvo/arvo arvo/arvo
@ -1648,7 +1663,7 @@
~ ~
=/ lul $:u.lul =/ lul $:u.lul
=/ zus $:u.zus =/ zus $:u.zus
%- %+ wyrd kel.u.ver %- %+ need:wyrd kel.u.ver
^- (list (pair term @)) ^- (list (pair term @))
:~ hoon/hoon-version :~ hoon/hoon-version
arvo/arvo arvo/arvo
@ -1736,7 +1751,9 @@
%what ..poke(gub (what gub p.wip)) %what ..poke(gub (what gub p.wip))
%whom ..poke(who ~|(%whom-once ?>(?=(~ who) `p.wip))) %whom ..poke(who ~|(%whom-once ?>(?=(~ who) `p.wip)))
:: ::
%wyrd %- %+ wyrd kel.p.wip %wyrd ?. (sane:wyrd kel.p.wip)
~>(%mean.'wyrd: insane' !!)
%- %+ need:wyrd kel.p.wip
^- (list (pair term @)) ^- (list (pair term @))
:* hoon/hoon-version :* hoon/hoon-version
arvo/arvo arvo/arvo

View File

@ -1079,6 +1079,7 @@
# define c3__sym c3_s3('s','y','m') # define c3__sym c3_s3('s','y','m')
# define c3__sync c3_s4('s','y','n','c') # define c3__sync c3_s4('s','y','n','c')
# define c3__sys c3_s3('s','y','s') # define c3__sys c3_s3('s','y','s')
# define c3__ta c3_s2('t','a')
# define c3__tab c3_s3('t','a','b') # define c3__tab c3_s3('t','a','b')
# define c3__tack c3_s4('t','a','c','k') # define c3__tack c3_s4('t','a','c','k')
# define c3__tag c3_s3('t','a','g') # define c3__tag c3_s3('t','a','g')

View File

@ -668,11 +668,8 @@ _pier_wyrd_fail(u3_pier* pir_u, u3_ovum* egg_u, u3_noun lud)
// XX organizing version constants // XX organizing version constants
// //
#define VERE_NAME "vere" #define VERE_NAME "vere"
#define VERE_MAJOR 0 #define VERE_ZUSE 309
#define VERE_MINOR 10
#define VERE_PATCH 9
#define VERE_ZUSE 309
/* _pier_wyrd_aver(): check for %wend effect and version downgrade. RETAIN /* _pier_wyrd_aver(): check for %wend effect and version downgrade. RETAIN
*/ */
@ -791,7 +788,9 @@ _pier_wyrd_card(u3_pier* pir_u)
// XX god_u not necessarily available yet, refactor call sites // XX god_u not necessarily available yet, refactor call sites
// //
u3_noun ver = u3nq(u3i_string(VERE_NAME), VERE_MAJOR, VERE_MINOR, VERE_PATCH); u3_noun ver = u3nt(u3i_string(VERE_NAME),
u3dc("scot", c3__ta, u3i_string(URBIT_VERSION)),
u3_nul);
u3_noun kel = u3nl(u3nc(c3__zuse, VERE_ZUSE), // XX god_u->zus_w u3_noun kel = u3nl(u3nc(c3__zuse, VERE_ZUSE), // XX god_u->zus_w
u3nc(c3__lull, u3i_string("lull-kelvin")), // XX define u3nc(c3__lull, u3i_string("lull-kelvin")), // XX define
u3nc(c3__arvo, u3i_string("arvo-kelvin")), // XX from both king and serf? u3nc(c3__arvo, u3i_string("arvo-kelvin")), // XX from both king and serf?