diff --git a/.travis.yml b/.travis.yml index 7c4849514..8eb605757 100644 --- a/.travis.yml +++ b/.travis.yml @@ -46,12 +46,7 @@ addons: - openssl - libssl-dev - libncurses5-dev - - automake - - autoconf - - make - - libtool - - g++ - - re2c + - gcc - libcurl4-gnutls-dev - unzip - gdb diff --git a/app/dojo.hoon b/app/dojo.hoon index ba950b2cc..655e1299d 100644 --- a/app/dojo.hoon +++ b/app/dojo.hoon @@ -1622,7 +1622,7 @@ (he-diff %tan u.p.cit) :: ++ he-lens - |= com/command:^^lens + |= com/command:lens ^+ +> =+ ^- source/dojo-source =| num/@ @@ -1812,7 +1812,7 @@ (wrap he-type):arm :: ++ poke-lens-command - |= com/command:^^lens ~| poke-lens+com %. com + |= com/command:lens ~| poke-lens+com %. com (wrap he-lens):arm :: ++ poke-json diff --git a/mar/lens/command.hoon b/mar/lens/command.hoon index a3ec71576..d84021df6 100644 --- a/mar/lens/command.hoon +++ b/mar/lens/command.hoon @@ -16,7 +16,7 @@ =, dejs-soft:format |% ++ source - ^- $-(^^json (unit source:^^lens)) + ^- $-(^^json (unit source:lens)) |= jon/^^json =+ tuple=%.(jon (ar source)) ?^ tuple @@ -40,7 +40,7 @@ == ++ none |=(^^json (some ~)) ++ sink - ^- $-(^^json (unit sink:^^lens)) + ^- $-(^^json (unit sink:lens)) %- of :~ stdout+none output-file+so diff --git a/sys/arvo.hoon b/sys/arvo.hoon index 527f369b7..10cc4496e 100644 --- a/sys/arvo.hoon +++ b/sys/arvo.hoon @@ -32,12 +32,9 @@ {$ud p/@ud} :: sequence == :: ++ desk @tas :: ship desk case spur +++ dock (pair @p term) :: message target ++ cage (cask vase) :: global metadata ++ cask |*(a/mold (pair mark a)) :: global data -++ cuff :: permissions - $: p/(unit (set monk)) :: can be read by - q/(set monk) :: caused or created by - == :: ++ curd {p/@tas q/*} :: typeless card ++ duct (list wire) :: causal history ++ hypo |*(a/mold (pair type a)) :: type associated @@ -46,20 +43,6 @@ == :: a :: == :: -++ kirk (unit (set monk)) :: audience -++ lens :: observation core - $_ ^? :: - |% ++ u *(unit (unit $~)) :: existence - ++ v *(unit (unit cage)) :: full history - ++ w *(unit (unit (unit cage))) :: latest diff - ++ x *(unit (unit cage)) :: data at path - ++ y *(unit (unit arch)) :: directory - ++ z *(unit (unit cage)) :: current subtree - -- :: -++ marc :: structured mark - $@ mark :: plain mark - $% {$tabl p/(list (pair marc marc))} :: map - == :: ++ mark @tas :: content type ++ mash |=(* (mass +<)) :: producing mass ++ mass $~ [%$ [%& ~]] :: memory usage diff --git a/sys/hoon.hoon b/sys/hoon.hoon index 0246e19c6..113a8168b 100644 --- a/sys/hoon.hoon +++ b/sys/hoon.hoon @@ -14078,84 +14078,20 @@ :: :::: 5f: molds and mold builders :: -++ arch {fil/(unit @uvI) dir/(map @ta ~)} :: fundamental node -++ arvo (wind {p/term q/mill} mill) :: arvo card -++ beak {p/ship q/desk r/case} :: path prefix -++ beam {{p/ship q/desk r/case} s/spur} :: global name -++ bone @ud :: opaque duct -++ case :: version - $% {$da p/@da} :: date - {$tas p/@tas} :: label - {$ud p/@ud} :: sequence - == :: -++ desk @tas :: ship desk case spur -++ cage (cask vase) :: global metadata -++ cask |*(a/mold (pair mark a)) :: global data -++ cuff :: permissions - $: p/(unit (set monk)) :: can be read by - q/(set monk) :: caused or created by - == :: -++ curd {p/@tas q/*} :: typeless card -++ dock (pair @p term) :: message target -++ duct (list wire) :: causal history -++ hypo |*(a/mold (pair type a)) :: type associated -++ hobo |* a/gate :: task wrapper - $? $% {$soft p/*} :: - == :: - a :: - == :: -++ kirk (unit (set monk)) :: audience -++ lens :: observation core - $_ ^? :: - |% ++ u *(unit (unit ~)) :: existence - ++ v *(unit (unit cage)) :: full history - ++ w *(unit (unit (unit cage))) :: latest diff - ++ x *(unit (unit cage)) :: data at path - ++ y *(unit (unit arch)) :: directory - ++ z *(unit (unit cage)) :: current subtree - -- :: ++ mane $@(@tas {@tas @tas}) :: XML name+space ++ manx $~([[%$ ~] ~] {g/marx c/marl}) :: dynamic XML node -++ marc :: structured mark - $@ mark :: plain mark - $% {$tabl p/(list (pair marc marc))} :: map - == :: -++ mark @tas :: content type ++ marl (list manx) :: XML node list ++ mars {t/{n/$$ a/{i/{n/$$ v/tape} t/~}} c/~} :: XML cdata ++ mart (list {n/mane v/tape}) :: XML attributes ++ marx $~([%$ ~] {n/mane a/mart}) :: dynamic XML tag -++ mash |=(* (mass +<)) :: producing mass -++ mass (pair cord (each noun (list mash))) :: memory usage -++ mill (each vase milt) :: vase+metavase -++ milt {p/* q/*} :: metavase ++ mite (list @ta) :: mime type ++ monk (each ship {p/@tas q/@ta}) :: general identity -++ muse {p/@tas q/duct r/arvo} :: sourced move -++ move {p/duct q/arvo} :: arvo move -++ ovum {p/wire q/curd} :: typeless ovum -++ pane (list {p/@tas q/vase}) :: kernel modules ++ pass @ :: public key -++ pone (list {p/@tas q/vise}) :: kernel modules old ++ ring @ :: private key ++ ship @p :: network identity ++ shop (each ship (list @ta)) :: urbit/dns identity -++ sink (trel bone ship path) :: subscription ++ spur path :: ship desk case spur ++ time @da :: galactic time -++ vile :: reflexive constants - $: typ/type :: -:!>(*type) - duc/type :: -:!>(*duct) - pah/type :: -:!>(*path) - mev/type :: -:!>([%meta *vase]) - == :: -++ wind :: new kernel action - |* {a/gate b/gate} :: forward+reverse - $% {$pass p/path q/a} :: advance - {$slip p/a} :: lateral - {$give p/b} :: retreat - == :: -++ wire path :: event pretext :: :::: 5g: profiling support (XX move) :: diff --git a/sys/vane/behn.hoon b/sys/vane/behn.hoon index ecae96b50..50a1b60d5 100644 --- a/sys/vane/behn.hoon +++ b/sys/vane/behn.hoon @@ -86,9 +86,8 @@ :~ timers+[%& timers] == == - :: reverse moves, since they were constructed backward, and return :: - [(flop moves) ..^^$] + [moves ..^^$] :: +set-timer: set a timer, maintaining the sort order of the :timers list :: ++ set-timer @@ -118,15 +117,18 @@ [i.timers $(timers t.timers)] :: +notify-clients: wake up vanes whose timers have expired :: + :: When we return the list moves to clients, we flop them so they're in + :: the same order as they were in :timers. + :: ++ notify-clients =| moves=(list move) |- ^+ [moves timers] :: ?~ timers - [moves timers] + [(flop moves) timers] :: ?: (gth date.i.timers now) - [moves timers] + [(flop moves) timers] :: %_ $ timers t.timers @@ -134,6 +136,14 @@ == :: +set-wake: set or unset a unix timer to wake us when next timer expires :: + :: We prepend the unix %doze event so that it is handled first. Arvo must + :: handle this first because the moves %behn emits will get handled in + :: depth-first order. If we're handling a %wake which causes a move to a + :: different vane and a %doze event to send to unix, Arvo needs to process + :: the %doze first because otherwise if the move to the other vane calls + :: back into %behn and emits a second %doze, the second %doze would be + :: handled by unix first which is incorrect. + :: ++ set-wake |= moves=(list move) ^+ [moves state]