clay: defer all calls to %wick

This commit is contained in:
Philip Monk 2022-10-26 22:09:53 -07:00
parent 301158c40a
commit ebf09bd248
3 changed files with 69 additions and 62 deletions

View File

@ -342,7 +342,7 @@
:: ::
=. tid.state (~(put by tid.state) new-tid yarn) =. tid.state (~(put by tid.state) new-tid yarn)
?- -.source ?- -.source
%& (begin-thread yarn p.source) %& (begin-shed yarn p.source)
%| %|
=. starting.state (~(put by starting.state) yarn [%build vase.p.source]) =. starting.state (~(put by starting.state) yarn [%build vase.p.source])
=/ pax=path =/ pax=path
@ -371,10 +371,10 @@
=/ maybe-thread (mule |.(!<(thread !<(vase q.r.u.riot)))) =/ maybe-thread (mule |.(!<(thread !<(vase q.r.u.riot))))
?: ?=(%| -.maybe-thread) ?: ?=(%| -.maybe-thread)
(thread-fail-not-running tid %thread-not-thread ~) (thread-fail-not-running tid %thread-not-thread ~)
(start-thread yarn p.maybe-thread) (slam-thread yarn p.maybe-thread)
:: ::
++ start-thread ++ slam-thread
~/ %start-thread ~/ %slam-thread
|= [=yarn =thread] |= [=yarn =thread]
^- (quip card ^state) ^- (quip card ^state)
=/ =vase vase:(~(got by starting.state) yarn) =/ =vase vase:(~(got by starting.state) yarn)
@ -382,9 +382,9 @@
?: ?=(%| -.res) ?: ?=(%| -.res)
(thread-fail-not-running (yarn-to-tid yarn) %false-start p.res) (thread-fail-not-running (yarn-to-tid yarn) %false-start p.res)
=. starting.state (~(del by starting.state) yarn) =. starting.state (~(del by starting.state) yarn)
(begin-thread yarn p.res) (begin-shed yarn p.res)
:: ::
++ begin-thread ++ begin-shed
|= [=yarn =shed:khan] |= [=yarn =shed:khan]
?< (~(has of running.state) yarn) ?< (~(has of running.state) yarn)
=/ m (strand ,vase) =/ m (strand ,vase)

View File

@ -1679,7 +1679,7 @@
?> ?=(~ deletes) ?> ?=(~ deletes)
=/ data=(map path (each page lobe)) =/ data=(map path (each page lobe))
(~(run by changes) |=(=cage &+[p q.q]:cage)) (~(run by changes) |=(=cage &+[p q.q]:cage))
(park | &+[~ data] *rang) (park | & &+[~ data] *rang)
:: ::
=/ parent-tako=tako (aeon-to-tako:ze let.dom) =/ parent-tako=tako (aeon-to-tako:ze let.dom)
=/ data=(map path (each page lobe)) =/ data=(map path (each page lobe))
@ -1694,7 +1694,7 @@
(~(run by changes) |=(=cage &+[p q.q]:cage)) (~(run by changes) |=(=cage &+[p q.q]:cage))
:: ::
=/ =yuki [~[parent-tako] data] =/ =yuki [~[parent-tako] data]
(park | &+yuki *rang) (park | & &+yuki *rang)
:: ::
:: Unix commit :: Unix commit
:: ::
@ -1728,7 +1728,7 @@
++ park ++ park
=/ check-sane | =/ check-sane |
|^ |^
|= [updated=? =yoki =rang] |= [updated=? goat=? =yoki =rang]
^+ ..park ^+ ..park
=: hut.ran (~(uni by hut.rang) hut.ran) =: hut.ran (~(uni by hut.rang) hut.ran)
lat.ran (~(uni by lat.rang) lat.ran) lat.ran (~(uni by lat.rang) lat.ran)
@ -1868,9 +1868,6 @@
=. fod.dom [spill sprig]:args =. fod.dom [spill sprig]:args
=. fad cache.args =. fad cache.args
=. ..park (emil (print q.old-yaki data)) =. ..park (emil (print q.old-yaki data))
:: notify unix and subscribers
::
=. ..park wake:?:(mem (ergo 0 mum.res) ..park)
:: if upgrading kelvin and there's a commit-in-waiting, use that :: if upgrading kelvin and there's a commit-in-waiting, use that
:: ::
=? ..park &(=(%base syd) !=(old-kel kel)) =? ..park &(=(%base syd) !=(old-kel kel))
@ -1888,14 +1885,20 @@
:: ::
$(desks t.desks) $(desks t.desks)
=/ den ((de now rof hen ruf) our desk.i.desks) =/ den ((de now rof hen ruf) our desk.i.desks)
=^ moves-3 ruf abet:(park:den | u.wat *^rang) =^ moves-3 ruf abet:(park:den | | u.wat *^rang)
=. moves-2 (weld moves-2 moves-3) =. moves-2 (weld moves-2 moves-3)
$(desks t.desks) $(desks t.desks)
:: tell gall to try to run agents if %held :: tell gall to try to run agents if %held
:: ::
?: ?=(%held liv.dom) =. ..park
(emit hen %pass /park-held/[syd] %b %wait now) ?- liv.dom
..park %held (emit hen %pass /park-held/[syd] %b %wait now)
%dead ..park
%live ?:(goat goad ..park)
==
:: notify unix and subscribers
::
wake:?:(mem (ergo 0 mum.res) ..park)
:: ::
:: +is-kernel-path: should changing .pax cause a kernel or vane reload? :: +is-kernel-path: should changing .pax cause a kernel or vane reload?
:: ::
@ -2285,7 +2288,7 @@
^+ ..take-fuse ^+ ..take-fuse
?~ merges ?~ merges
=. ..take-fuse (done-fuse clean-state %& ~) =. ..take-fuse (done-fuse clean-state %& ~)
(park | [%| next-yaki(p (flop parents))] rag) (park | & [%| next-yaki(p (flop parents))] rag)
=/ [bec=beak g=germ] i.merges =/ [bec=beak g=germ] i.merges
=/ ali-dom=dome:clay (need (~(got by sto.fiz) bec)) =/ ali-dom=dome:clay (need (~(got by sto.fiz) bec))
=/ result (merge-helper p.bec q.bec g ali-dom `next-yaki) =/ result (merge-helper p.bec q.bec g ali-dom `next-yaki)
@ -2366,7 +2369,7 @@
?~ mr ?~ mr
(done %& ~) (done %& ~)
=. ..merge (done %& conflicts.u.mr) =. ..merge (done %& conflicts.u.mr)
(park | new.u.mr ~ lat.u.mr) (park | & new.u.mr ~ lat.u.mr)
== ==
:: ::
+$ merge-result [conflicts=(set path) new=yoki lat=(map lobe page)] +$ merge-result [conflicts=(set path) new=yoki lat=(map lobe page)]
@ -3091,14 +3094,22 @@
++ wick ++ wick
^+ ..park ^+ ..park
?> ?=(%base syd) ?> ?=(%base syd)
(emit hen %pass /wick %b %wait now)
::
++ take-wick
|= err=(unit tang)
^+ ..park
?^ err
((slog leaf+"clay: desk {<syd>} failed to unsuspend" u.err) ..park)
?> ?=(%base syd)
=/ wis=(list [weft =yoki]) =/ wis=(list [weft =yoki])
%+ sort ~(tap by wic.dom) %+ sort ~(tap by wic.dom)
|= [a=[weft yoki] b=[weft yoki]] |= [a=[weft yoki] b=[weft yoki]]
(gth num.a num.b) (gth num.a num.b)
=. wis (skip wis |=([[* a=@ud] *] (gte a zuse))) =. wis (skip wis |=([[* a=@ud] *] (gte a zuse)))
?~ wis :: Every commit bottoms out here ?~ wis :: Every commit bottoms out here ?
goad ..park
(park | yoki.i.wis *rang) (park | & yoki.i.wis *rang)
:: ::
:: Cancel a request. :: Cancel a request.
:: ::
@ -4731,7 +4742,7 @@
%park %park
=^ mos ruf =^ mos ruf
=/ den ((de now rof hen ruf) our des.req) =/ den ((de now rof hen ruf) our des.req)
abet:(park:den | [yok ran]:req) abet:(park:den | & [yok ran]:req)
[mos ..^$] [mos ..^$]
:: ::
%pork %pork
@ -4739,7 +4750,7 @@
=. pud.ruf ~ =. pud.ruf ~
=^ mos ruf =^ mos ruf
=/ den ((de now rof hen ruf) our syd) =/ den ((de now rof hen ruf) our syd)
abet:(park:den & yoki *rang) abet:(park:den & & yoki *rang)
[mos ..^$] [mos ..^$]
:: ::
%perm %perm
@ -4858,8 +4869,9 @@
=^ m1 ruf =^ m1 ruf
=/ den ((de now rof hen ruf) our des.req) =/ den ((de now rof hen ruf) our des.req)
abet:(set-zest:den liv.req) abet:(set-zest:den liv.req)
=^ m2 ..^$ $(wrapped-task [%wick ~]) =^ m2 ruf abet:goad:(lu now rof hen ruf)
[(weld m1 m2) ..^$] =^ m3 ..^$ $(wrapped-task [%wick ~])
[:(weld m1 m2 m3) ..^$]
:: ::
%plea %plea
=* her ship.req =* her ship.req
@ -5642,6 +5654,13 @@
abet:(take-park-held:den error.hin) abet:(take-park-held:den error.hin)
[mos ..^$] [mos ..^$]
:: ::
?: ?=([%wick ~] tea)
?> ?=(%wake +<.hin)
=^ mos ruf
=/ den ((de now rof hen ruf) our %base)
abet:(take-wick:den error.hin)
[mos ..^$]
::
?: ?=([%foreign-warp *] tea) ?: ?=([%foreign-warp *] tea)
?> ?=(%writ +<.hin) ?> ?=(%writ +<.hin)
:_ ..^$ :_ ..^$

View File

@ -103,14 +103,14 @@
?>(?=([@ ~] s.beam) beam(s i.s.beam)) ?>(?=([@ ~] s.beam) beam(s i.s.beam))
:: ::
++ poke-spider ++ poke-spider
|= =cage |= [hen=duct =cage]
^- note ^- move
[%g %deal [our our] %spider %poke cage] [hen %pass //g %g %deal [our our] %spider %poke cage]
:: ::
++ watch-spider ++ watch-spider
|= =path |= [hen=duct =path]
^- note ^- move
[%g %deal [our our] %spider %watch path] [hen %pass //g %g %deal [our our] %spider %watch path]
-- --
=| khan-state =| khan-state
=* state - =* state -
@ -134,22 +134,8 @@
%born %born
[~ khan-gate(hey hen, tic 0)] [~ khan-gate(hey hen, tic 0)]
:: ::
%fard %fard (bard hen 'khan-fyrd--' bear.p.task %| [name args]:p.task)
=/ tid=@ta %lard (bard hen 'khan-lard--' bear.task %& shed.task)
%^ cat 3
'khan-fyrd--'
(scot %uv (sham (mix tic eny)))
=. tic +(tic)
=* fyd p.task
=/ =beak (get-beak bear.fyd now)
=/ args [~ `tid beak name.fyd q.args.fyd]
:_ khan-gate
%+ turn
:~ (watch-spider /thread-result/[tid])
(poke-spider %spider-start !>(args))
==
|=(=note ^-(move [hen %pass //g note]))
::
%fyrd %fyrd
=* fyd p.task =* fyd p.task
=/ =beak (get-beak bear.fyd now) =/ =beak (get-beak bear.fyd now)
@ -159,22 +145,24 @@
(slap (vale.dais q.q.args.fyd) !,(*hoon [~ u=.])) (slap (vale.dais q.q.args.fyd) !,(*hoon [~ u=.]))
=- [[hen %pass wire -]~ khan-gate] =- [[hen %pass wire -]~ khan-gate]
[%k %fard bear.fyd name.fyd p.q.args.fyd vase] [%k %fard bear.fyd name.fyd p.q.args.fyd vase]
::
%lard
=/ tid=@ta
%^ cat 3
'khan-lard--'
(scot %uv (sham (mix tic eny)))
=. tic +(tic)
=/ =beak (get-beak bear.task now)
=/ args [~ `tid beak shed.task]
:_ khan-gate
%+ turn
:~ (watch-spider /thread-result/[tid])
(poke-spider %spider-inline !>(args))
==
|=(=note ^-(move [hen %pass //g note]))
== ==
::
++ bard
|= [hen=duct prefix=@ta =bear payload=(each shed [name=term args=cage])]
^- [(list move) _khan-gate]
=/ =tid:rand (cat 3 prefix (scot %uv (sham (mix tic eny))))
=/ =beak (get-beak bear now)
=/ =cage
?- -.payload
%& [%spider-inline !>([~ `tid beak p.payload])]
%| [%spider-start !>([~ `tid beak [name q.args]:p.payload])]
==
=. tic +(tic)
:_ khan-gate
:~ (watch-spider hen /thread-result/[tid])
(poke-spider hen cage)
==
::
:: +load: migrate an old state to a new khan version :: +load: migrate an old state to a new khan version
:: ::
++ load ++ load