From 5a65256cf3d9a60c23b91037237e56c2e1f187e6 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Wed, 19 Jan 2022 14:24:21 +0100 Subject: [PATCH 1/4] Syndicate traces --- schema-bundle.bin | 10 +++++- schemas/trace.prs | 82 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 schemas/trace.prs diff --git a/schema-bundle.bin b/schema-bundle.bin index daa8718..5ab7aee 100644 --- a/schema-bundle.bin +++ b/schema-bundle.bin @@ -1,6 +1,14 @@ “³bundle·µ³tcp„“³schema·³version‘³ definitions·³TcpLocal“³rec“³lit³ tcp-local„“³tupleµ“³named³host“³atom³String„„“³named³port“³atom³ SignedInteger„„„„„³ TcpRemote“³rec“³lit³ tcp-remote„“³tupleµ“³named³host“³atom³String„„“³named³port“³atom³ SignedInteger„„„„„³ TcpPeerInfo“³rec“³lit³tcp-peer„“³tupleµ“³named³handle“³embedded³any„„“³named³local“³refµ„³TcpLocal„„“³named³remote“³refµ„³ TcpRemote„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³timer„“³schema·³version‘³ definitions·³SetTimer“³rec“³lit³ set-timer„“³tupleµ“³named³label³any„“³named³msecs“³atom³Double„„“³named³kind“³refµ„³ TimerKind„„„„„³ LaterThan“³rec“³lit³ -later-than„“³tupleµ“³named³msecs“³atom³Double„„„„„³ TimerKind“³orµµ±relative“³lit³relative„„µ±absolute“³lit³absolute„„µ±clear“³lit³clear„„„„³ TimerExpired“³rec“³lit³ timer-expired„“³tupleµ“³named³label³any„“³named³msecs“³atom³Double„„„„„„³ embeddedType€„„µ³stream„“³schema·³version‘³ definitions·³Mode“³orµµ±bytes“³lit³bytes„„µ±lines“³refµ„³LineMode„„µ±packet“³rec“³lit³packet„“³tupleµ“³named³size“³atom³ SignedInteger„„„„„„µ±object“³rec“³lit³object„“³tupleµ“³named³ description³any„„„„„„„³Sink“³orµµ±source“³rec“³lit³source„“³tupleµ“³named³ +later-than„“³tupleµ“³named³msecs“³atom³Double„„„„„³ TimerKind“³orµµ±relative“³lit³relative„„µ±absolute“³lit³absolute„„µ±clear“³lit³clear„„„„³ TimerExpired“³rec“³lit³ timer-expired„“³tupleµ“³named³label³any„“³named³msecs“³atom³Double„„„„„„³ embeddedType€„„µ³trace„“³schema·³version‘³ definitions·³Oid³any³Name“³orµµ± anonymous“³rec“³lit³ anonymous„“³tupleµ„„„„µ±named“³rec“³lit³named„“³tupleµ“³named³name³any„„„„„„„³Target“³rec“³lit³entity„“³tupleµ“³named³actor“³refµ„³ActorId„„“³named³facet“³refµ„³FacetId„„“³named³oid“³refµ„³Oid„„„„„³TaskId³any³TurnId³any³ActorId³any³FacetId³any³ TurnCause“³orµµ±turn“³rec“³lit³ caused-by„“³tupleµ“³named³id“³refµ„³TurnId„„„„„„µ± actorBoot“³rec“³lit³ +actor-boot„“³tupleµ„„„„µ± actorCleanup“³rec“³lit³ actor-cleanup„“³tupleµ„„„„µ±linkedTaskRelease“³rec“³lit³linked-task-release„“³tupleµ“³named³id“³refµ„³TaskId„„“³named³reason“³refµ„³LinkedTaskReleaseReason„„„„„„µ±periodicActivation“³rec“³lit³periodic-activation„“³tupleµ“³named³period“³atom³Double„„„„„„µ±delay“³rec“³lit³delay„“³tupleµ“³named³ causingTurn“³refµ„³TurnId„„“³named³amount“³atom³Double„„„„„„µ±external“³rec“³lit³external„“³tupleµ“³named³ description³any„„„„„„„³ +ExitStatus“³orµµ±ok“³lit³ok„„µ±Error“³refµ³protocol„³Error„„„„³ +TraceEntry“³rec“³lit³trace„“³tupleµ“³named³ timestamp“³atom³Double„„“³named³actor“³refµ„³ActorId„„“³named³item“³refµ„³ActorActivation„„„„„³ActorActivation“³orµµ±start“³rec“³lit³start„“³tupleµ“³named³ actorName“³refµ„³Name„„„„„„µ±turn“³refµ„³TurnDescription„„µ±stop“³rec“³lit³stop„“³tupleµ“³named³status“³refµ„³ +ExitStatus„„„„„„„„³FacetStopReason“³orµµ±explicitAction“³lit³explicit-action„„µ±inert“³lit³inert„„µ±parentStopping“³lit³parent-stopping„„µ± actorStopping“³lit³actor-stopping„„„„³TurnDescription“³rec“³lit³turn„“³tupleµ“³named³id“³refµ„³TurnId„„“³named³cause“³refµ„³ TurnCause„„“³named³actions“³seqof“³refµ„³ActionDescription„„„„„„³ActionDescription“³orµµ±assert“³rec“³lit³assert„“³tupleµ“³named³target“³refµ„³Target„„“³named³ assertion“³refµ„³AssertionDescription„„“³named³handle“³refµ³protocol„³Handle„„„„„„µ±retract“³rec“³lit³retract„“³tupleµ“³named³target“³refµ„³Target„„“³named³handle“³refµ³protocol„³Handle„„„„„„µ±message“³rec“³lit³message„“³tupleµ“³named³target“³refµ„³Target„„“³named³body“³refµ„³AssertionDescription„„„„„„µ±sync“³rec“³lit³sync„“³tupleµ“³named³target“³refµ„³Target„„„„„„µ±spawn“³rec“³lit³spawn„“³tupleµ“³named³link“³atom³Boolean„„“³named³id“³refµ„³ActorId„„„„„„µ±link“³rec“³lit³link„“³tupleµ“³named³ parentActor“³refµ„³ActorId„„“³named³ childToParent“³refµ³protocol„³Handle„„“³named³ +childActor“³refµ„³ActorId„„“³named³ parentToChild“³refµ³protocol„³Handle„„„„„„µ± breakLink“³rec“³lit³ +break-link„“³tupleµ“³named³peer“³refµ„³ActorId„„“³named³handle“³refµ³protocol„³Handle„„„„„„µ± +facetStart“³rec“³lit³ facet-start„“³tupleµ“³named³path“³seqof“³refµ„³FacetId„„„„„„„µ± facetStop“³rec“³lit³ +facet-stop„“³tupleµ“³named³path“³seqof“³refµ„³FacetId„„„“³named³reason“³refµ„³FacetStopReason„„„„„„µ±linkedTaskStart“³rec“³lit³linked-task-start„“³tupleµ“³named³taskName“³refµ„³Name„„“³named³id“³refµ„³TaskId„„„„„„„„³AssertionDescription“³orµµ±value“³rec“³lit³value„“³tupleµ“³named³value³any„„„„„µ±opaque“³rec“³lit³opaque„“³tupleµ“³named³ description³any„„„„„„„³LinkedTaskReleaseReason“³orµµ± cancelled“³lit³ cancelled„„µ±normal“³lit³normal„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³stream„“³schema·³version‘³ definitions·³Mode“³orµµ±bytes“³lit³bytes„„µ±lines“³refµ„³LineMode„„µ±packet“³rec“³lit³packet„“³tupleµ“³named³size“³atom³ SignedInteger„„„„„„µ±object“³rec“³lit³object„“³tupleµ“³named³ description³any„„„„„„„³Sink“³orµµ±source“³rec“³lit³source„“³tupleµ“³named³ controller“³embedded“³refµ„³Source„„„„„„„µ± StreamError“³refµ„³ StreamError„„µ±data“³rec“³lit³data„“³tupleµ“³named³payload³any„“³named³mode“³refµ„³Mode„„„„„„µ±eof“³rec“³lit³eof„“³tupleµ„„„„„„³Source“³orµµ±sink“³rec“³lit³sink„“³tupleµ“³named³ controller“³embedded“³refµ„³Sink„„„„„„„µ± StreamError“³refµ„³ StreamError„„µ±credit“³rec“³lit³credit„“³tupleµ“³named³amount“³refµ„³ CreditAmount„„“³named³mode“³refµ„³Mode„„„„„„„„³LineMode“³orµµ±lf“³lit³lf„„µ±crlf“³lit³crlf„„„„³ StreamError“³rec“³lit³error„“³tupleµ“³named³message“³atom³String„„„„„³ CreditAmount“³orµµ±count“³atom³ SignedInteger„„µ± unbounded“³lit³ unbounded„„„„³StreamConnection“³rec“³lit³stream-connection„“³tupleµ“³named³source“³embedded“³refµ„³Source„„„“³named³sink“³embedded“³refµ„³Sink„„„“³named³spec³any„„„„³StreamListenerError“³rec“³lit³stream-listener-error„“³tupleµ“³named³spec³any„“³named³message“³atom³String„„„„„³StreamListenerReady“³rec“³lit³stream-listener-ready„“³tupleµ“³named³spec³any„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³sturdy„“³schema·³version‘³ definitions·³Lit“³rec“³lit³lit„“³tupleµ“³named³value³any„„„„³Oid“³atom³ SignedInteger„³Alts“³rec“³lit³or„“³tupleµ“³named³ alternatives“³seqof“³refµ„³Rewrite„„„„„„³PAnd“³rec“³lit³and„“³tupleµ“³named³patterns“³seqof“³refµ„³Pattern„„„„„„³PNot“³rec“³lit³not„“³tupleµ“³named³pattern“³refµ„³Pattern„„„„„³TRef“³rec“³lit³ref„“³tupleµ“³named³binding“³atom³ SignedInteger„„„„„³PAtom“³orµµ±Boolean“³lit³Boolean„„µ±Float“³lit³Float„„µ±Double“³lit³Double„„µ± SignedInteger“³lit³ SignedInteger„„µ±String“³lit³String„„µ± ByteString“³lit³ diff --git a/schemas/trace.prs b/schemas/trace.prs new file mode 100644 index 0000000..9caa11d --- /dev/null +++ b/schemas/trace.prs @@ -0,0 +1,82 @@ +version 1 . +embeddedType EntityRef.Cap . + +TraceEntry = . + +ActorActivation = +/ +/ @turn TurnDescription +/ +. + +Name = +/ +/ +. + +ActorId = any . +FacetId = any . +Oid = any . +TaskId = any . +TurnId = any . + +ExitStatus = =ok / protocol.Error . + +; Trace information associated with a turn. +TurnDescription = . + +; The cause of a turn. +TurnCause = +/ @turn +/ @actorBoot +/ @actorCleanup +/ @linkedTaskRelease +/ @periodicActivation +/ +/ +. + +LinkedTaskReleaseReason = =cancelled / =normal . + +; An action taken during a turn. +ActionDescription = +/ +/ +/ +/ +/ +/ +/ @breakLink +/ @facetStart +/ @facetStop +/ @linkedTaskStart +. + +; An assertion or the body of a message: either a Preserves value, or +; some opaque system-internal value, represented according to the +; system concerned. +AssertionDescription = +/ +/ +. + +FacetStopReason = +/ @explicitAction =explicit-action +/ =inert +/ @parentStopping =parent-stopping +/ @actorStopping =actor-stopping +. + +Target = . + +; For the future: consider including information about `protocol`-level `Turn`s etc sent to +; peers over e.g. Websockets or TCP/IP, allowing cross-correlation of traces from different +; processes and implementations with each other to form a large overall picture. +. From ab34b62cf10cfd11e69585b72c399a854d044f43 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Thu, 20 Jan 2022 09:40:53 +0100 Subject: [PATCH 2/4] Refine the trace protocol a bit --- schema-bundle.bin | 11 +++++------ schemas/trace.prs | 28 +++++++++++++++++++++------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/schema-bundle.bin b/schema-bundle.bin index 5ab7aee..1591838 100644 --- a/schema-bundle.bin +++ b/schema-bundle.bin @@ -1,14 +1,13 @@ “³bundle·µ³tcp„“³schema·³version‘³ definitions·³TcpLocal“³rec“³lit³ tcp-local„“³tupleµ“³named³host“³atom³String„„“³named³port“³atom³ SignedInteger„„„„„³ TcpRemote“³rec“³lit³ tcp-remote„“³tupleµ“³named³host“³atom³String„„“³named³port“³atom³ SignedInteger„„„„„³ TcpPeerInfo“³rec“³lit³tcp-peer„“³tupleµ“³named³handle“³embedded³any„„“³named³local“³refµ„³TcpLocal„„“³named³remote“³refµ„³ TcpRemote„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³timer„“³schema·³version‘³ definitions·³SetTimer“³rec“³lit³ set-timer„“³tupleµ“³named³label³any„“³named³msecs“³atom³Double„„“³named³kind“³refµ„³ TimerKind„„„„„³ LaterThan“³rec“³lit³ -later-than„“³tupleµ“³named³msecs“³atom³Double„„„„„³ TimerKind“³orµµ±relative“³lit³relative„„µ±absolute“³lit³absolute„„µ±clear“³lit³clear„„„„³ TimerExpired“³rec“³lit³ timer-expired„“³tupleµ“³named³label³any„“³named³msecs“³atom³Double„„„„„„³ embeddedType€„„µ³trace„“³schema·³version‘³ definitions·³Oid³any³Name“³orµµ± anonymous“³rec“³lit³ anonymous„“³tupleµ„„„„µ±named“³rec“³lit³named„“³tupleµ“³named³name³any„„„„„„„³Target“³rec“³lit³entity„“³tupleµ“³named³actor“³refµ„³ActorId„„“³named³facet“³refµ„³FacetId„„“³named³oid“³refµ„³Oid„„„„„³TaskId³any³TurnId³any³ActorId³any³FacetId³any³ TurnCause“³orµµ±turn“³rec“³lit³ caused-by„“³tupleµ“³named³id“³refµ„³TurnId„„„„„„µ± actorBoot“³rec“³lit³ -actor-boot„“³tupleµ„„„„µ± actorCleanup“³rec“³lit³ actor-cleanup„“³tupleµ„„„„µ±linkedTaskRelease“³rec“³lit³linked-task-release„“³tupleµ“³named³id“³refµ„³TaskId„„“³named³reason“³refµ„³LinkedTaskReleaseReason„„„„„„µ±periodicActivation“³rec“³lit³periodic-activation„“³tupleµ“³named³period“³atom³Double„„„„„„µ±delay“³rec“³lit³delay„“³tupleµ“³named³ causingTurn“³refµ„³TurnId„„“³named³amount“³atom³Double„„„„„„µ±external“³rec“³lit³external„“³tupleµ“³named³ description³any„„„„„„„³ +later-than„“³tupleµ“³named³msecs“³atom³Double„„„„„³ TimerKind“³orµµ±relative“³lit³relative„„µ±absolute“³lit³absolute„„µ±clear“³lit³clear„„„„³ TimerExpired“³rec“³lit³ timer-expired„“³tupleµ“³named³label³any„“³named³msecs“³atom³Double„„„„„„³ embeddedType€„„µ³trace„“³schema·³version‘³ definitions·³Oid³any³Name“³orµµ± anonymous“³rec“³lit³ anonymous„“³tupleµ„„„„µ±named“³rec“³lit³named„“³tupleµ“³named³name³any„„„„„„„³Target“³rec“³lit³entity„“³tupleµ“³named³actor“³refµ„³ActorId„„“³named³facet“³refµ„³FacetId„„“³named³oid“³refµ„³Oid„„„„„³TaskId³any³TurnId³any³ActorId³any³FacetId³any³ TurnCause“³orµµ±turn“³rec“³lit³ caused-by„“³tupleµ“³named³id“³refµ„³TurnId„„„„„„µ±cleanup“³rec“³lit³cleanup„“³tupleµ„„„„µ±linkedTaskRelease“³rec“³lit³linked-task-release„“³tupleµ“³named³id“³refµ„³TaskId„„“³named³reason“³refµ„³LinkedTaskReleaseReason„„„„„„µ±periodicActivation“³rec“³lit³periodic-activation„“³tupleµ“³named³period“³atom³Double„„„„„„µ±delay“³rec“³lit³delay„“³tupleµ“³named³ causingTurn“³refµ„³TurnId„„“³named³amount“³atom³Double„„„„„„µ±external“³rec“³lit³external„“³tupleµ“³named³ description³any„„„„„„„³ TurnEvent“³orµµ±assert“³rec“³lit³assert„“³tupleµ“³named³ assertion“³refµ„³AssertionDescription„„“³named³handle“³refµ³protocol„³Handle„„„„„„µ±retract“³rec“³lit³retract„“³tupleµ“³named³handle“³refµ³protocol„³Handle„„„„„„µ±message“³rec“³lit³message„“³tupleµ“³named³body“³refµ„³AssertionDescription„„„„„„µ±sync“³rec“³lit³sync„“³tupleµ“³named³peer“³refµ„³Target„„„„„„µ± breakLink“³rec“³lit³ +break-link„“³tupleµ“³named³source“³refµ„³ActorId„„“³named³handle“³refµ³protocol„³Handle„„„„„„„„³ ExitStatus“³orµµ±ok“³lit³ok„„µ±Error“³refµ³protocol„³Error„„„„³ TraceEntry“³rec“³lit³trace„“³tupleµ“³named³ timestamp“³atom³Double„„“³named³actor“³refµ„³ActorId„„“³named³item“³refµ„³ActorActivation„„„„„³ActorActivation“³orµµ±start“³rec“³lit³start„“³tupleµ“³named³ actorName“³refµ„³Name„„„„„„µ±turn“³refµ„³TurnDescription„„µ±stop“³rec“³lit³stop„“³tupleµ“³named³status“³refµ„³ -ExitStatus„„„„„„„„³FacetStopReason“³orµµ±explicitAction“³lit³explicit-action„„µ±inert“³lit³inert„„µ±parentStopping“³lit³parent-stopping„„µ± actorStopping“³lit³actor-stopping„„„„³TurnDescription“³rec“³lit³turn„“³tupleµ“³named³id“³refµ„³TurnId„„“³named³cause“³refµ„³ TurnCause„„“³named³actions“³seqof“³refµ„³ActionDescription„„„„„„³ActionDescription“³orµµ±assert“³rec“³lit³assert„“³tupleµ“³named³target“³refµ„³Target„„“³named³ assertion“³refµ„³AssertionDescription„„“³named³handle“³refµ³protocol„³Handle„„„„„„µ±retract“³rec“³lit³retract„“³tupleµ“³named³target“³refµ„³Target„„“³named³handle“³refµ³protocol„³Handle„„„„„„µ±message“³rec“³lit³message„“³tupleµ“³named³target“³refµ„³Target„„“³named³body“³refµ„³AssertionDescription„„„„„„µ±sync“³rec“³lit³sync„“³tupleµ“³named³target“³refµ„³Target„„„„„„µ±spawn“³rec“³lit³spawn„“³tupleµ“³named³link“³atom³Boolean„„“³named³id“³refµ„³ActorId„„„„„„µ±link“³rec“³lit³link„“³tupleµ“³named³ parentActor“³refµ„³ActorId„„“³named³ childToParent“³refµ³protocol„³Handle„„“³named³ -childActor“³refµ„³ActorId„„“³named³ parentToChild“³refµ³protocol„³Handle„„„„„„µ± breakLink“³rec“³lit³ -break-link„“³tupleµ“³named³peer“³refµ„³ActorId„„“³named³handle“³refµ³protocol„³Handle„„„„„„µ± +ExitStatus„„„„„„„„³FacetStopReason“³orµµ±explicitAction“³lit³explicit-action„„µ±inert“³lit³inert„„µ±parentStopping“³lit³parent-stopping„„µ± actorStopping“³lit³actor-stopping„„„„³TurnDescription“³rec“³lit³turn„“³tupleµ“³named³id“³refµ„³TurnId„„“³named³cause“³refµ„³ TurnCause„„“³named³actions“³seqof“³refµ„³ActionDescription„„„„„„³ActionDescription“³orµµ±dequeue“³rec“³lit³dequeue„“³tupleµ“³named³event“³refµ„³TargetedTurnEvent„„„„„„µ±enqueue“³rec“³lit³enqueue„“³tupleµ“³named³event“³refµ„³TargetedTurnEvent„„„„„„µ±dequeueInternal“³rec“³lit³dequeue-internal„“³tupleµ“³named³event“³refµ„³TargetedTurnEvent„„„„„„µ±enqueueInternal“³rec“³lit³enqueue-internal„“³tupleµ“³named³event“³refµ„³TargetedTurnEvent„„„„„„µ±spawn“³rec“³lit³spawn„“³tupleµ“³named³link“³atom³Boolean„„“³named³id“³refµ„³ActorId„„„„„„µ±link“³rec“³lit³link„“³tupleµ“³named³ parentActor“³refµ„³ActorId„„“³named³ childToParent“³refµ³protocol„³Handle„„“³named³ +childActor“³refµ„³ActorId„„“³named³ parentToChild“³refµ³protocol„³Handle„„„„„„µ± facetStart“³rec“³lit³ facet-start„“³tupleµ“³named³path“³seqof“³refµ„³FacetId„„„„„„„µ± facetStop“³rec“³lit³ -facet-stop„“³tupleµ“³named³path“³seqof“³refµ„³FacetId„„„“³named³reason“³refµ„³FacetStopReason„„„„„„µ±linkedTaskStart“³rec“³lit³linked-task-start„“³tupleµ“³named³taskName“³refµ„³Name„„“³named³id“³refµ„³TaskId„„„„„„„„³AssertionDescription“³orµµ±value“³rec“³lit³value„“³tupleµ“³named³value³any„„„„„µ±opaque“³rec“³lit³opaque„“³tupleµ“³named³ description³any„„„„„„„³LinkedTaskReleaseReason“³orµµ± cancelled“³lit³ cancelled„„µ±normal“³lit³normal„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³stream„“³schema·³version‘³ definitions·³Mode“³orµµ±bytes“³lit³bytes„„µ±lines“³refµ„³LineMode„„µ±packet“³rec“³lit³packet„“³tupleµ“³named³size“³atom³ SignedInteger„„„„„„µ±object“³rec“³lit³object„“³tupleµ“³named³ description³any„„„„„„„³Sink“³orµµ±source“³rec“³lit³source„“³tupleµ“³named³ +facet-stop„“³tupleµ“³named³path“³seqof“³refµ„³FacetId„„„“³named³reason“³refµ„³FacetStopReason„„„„„„µ±linkedTaskStart“³rec“³lit³linked-task-start„“³tupleµ“³named³taskName“³refµ„³Name„„“³named³id“³refµ„³TaskId„„„„„„„„³TargetedTurnEvent“³rec“³lit³event„“³tupleµ“³named³target“³refµ„³Target„„“³named³detail“³refµ„³ TurnEvent„„„„„³AssertionDescription“³orµµ±value“³rec“³lit³value„“³tupleµ“³named³value³any„„„„„µ±opaque“³rec“³lit³opaque„“³tupleµ“³named³ description³any„„„„„„„³LinkedTaskReleaseReason“³orµµ± cancelled“³lit³ cancelled„„µ±normal“³lit³normal„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³stream„“³schema·³version‘³ definitions·³Mode“³orµµ±bytes“³lit³bytes„„µ±lines“³refµ„³LineMode„„µ±packet“³rec“³lit³packet„“³tupleµ“³named³size“³atom³ SignedInteger„„„„„„µ±object“³rec“³lit³object„“³tupleµ“³named³ description³any„„„„„„„³Sink“³orµµ±source“³rec“³lit³source„“³tupleµ“³named³ controller“³embedded“³refµ„³Source„„„„„„„µ± StreamError“³refµ„³ StreamError„„µ±data“³rec“³lit³data„“³tupleµ“³named³payload³any„“³named³mode“³refµ„³Mode„„„„„„µ±eof“³rec“³lit³eof„“³tupleµ„„„„„„³Source“³orµµ±sink“³rec“³lit³sink„“³tupleµ“³named³ controller“³embedded“³refµ„³Sink„„„„„„„µ± StreamError“³refµ„³ StreamError„„µ±credit“³rec“³lit³credit„“³tupleµ“³named³amount“³refµ„³ CreditAmount„„“³named³mode“³refµ„³Mode„„„„„„„„³LineMode“³orµµ±lf“³lit³lf„„µ±crlf“³lit³crlf„„„„³ StreamError“³rec“³lit³error„“³tupleµ“³named³message“³atom³String„„„„„³ CreditAmount“³orµµ±count“³atom³ SignedInteger„„µ± unbounded“³lit³ unbounded„„„„³StreamConnection“³rec“³lit³stream-connection„“³tupleµ“³named³source“³embedded“³refµ„³Source„„„“³named³sink“³embedded“³refµ„³Sink„„„“³named³spec³any„„„„³StreamListenerError“³rec“³lit³stream-listener-error„“³tupleµ“³named³spec³any„“³named³message“³atom³String„„„„„³StreamListenerReady“³rec“³lit³stream-listener-ready„“³tupleµ“³named³spec³any„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³sturdy„“³schema·³version‘³ definitions·³Lit“³rec“³lit³lit„“³tupleµ“³named³value³any„„„„³Oid“³atom³ SignedInteger„³Alts“³rec“³lit³or„“³tupleµ“³named³ alternatives“³seqof“³refµ„³Rewrite„„„„„„³PAnd“³rec“³lit³and„“³tupleµ“³named³patterns“³seqof“³refµ„³Pattern„„„„„„³PNot“³rec“³lit³not„“³tupleµ“³named³pattern“³refµ„³Pattern„„„„„³TRef“³rec“³lit³ref„“³tupleµ“³named³binding“³atom³ SignedInteger„„„„„³PAtom“³orµµ±Boolean“³lit³Boolean„„µ±Float“³lit³Float„„µ±Double“³lit³Double„„µ± SignedInteger“³lit³ SignedInteger„„µ±String“³lit³String„„µ± ByteString“³lit³ diff --git a/schemas/trace.prs b/schemas/trace.prs index 9caa11d..6259ef3 100644 --- a/schemas/trace.prs +++ b/schemas/trace.prs @@ -31,8 +31,7 @@ TurnDescription = -/ @actorBoot -/ @actorCleanup +/ / @linkedTaskRelease / @periodicActivation / @@ -41,19 +40,34 @@ TurnCause = LinkedTaskReleaseReason = =cancelled / =normal . +; An actual event carried within a turn. +TurnEvent = +/ +/ +/ +/ +/ ; A souped-up, disguised, special-purpose `retract` event. + @breakLink +. + +TargetedTurnEvent = . + ; An action taken during a turn. ActionDescription = -/ -/ -/ -/ +/ ; The active party is processing a new `event` for `target` from the received Turn. + +/ ; The active party has queued a new `event` to be processed later by `target`. + +/ ; The active party is processing an internally-queued event for one of its own entities. + @dequeueInternal +/ ; The active party has scheduled an internally-queued event for one of its own entities. + @enqueueInternal / / -/ @breakLink / @facetStart / @facetStop / @linkedTaskStart From 19c96bdef208d1b741038c814f8b29dea0870e0c Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Thu, 3 Feb 2022 22:55:06 +0100 Subject: [PATCH 3/4] Allow userDefined states --- schema-bundle.bin | 2 +- schemas/service.prs | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/schema-bundle.bin b/schema-bundle.bin index 1591838..46b596c 100644 --- a/schema-bundle.bin +++ b/schema-bundle.bin @@ -15,7 +15,7 @@ ByteString TAttenuate“³refµ„³ TAttenuate„„µ±TRef“³refµ„³TRef„„µ±Lit“³refµ„³Lit„„µ± TCompound“³refµ„³ TCompound„„„„³ PCompound“³orµµ±rec“³rec“³lit³rec„“³tupleµ“³named³label³any„“³named³fields“³seqof“³refµ„³Pattern„„„„„„„µ±arr“³rec“³lit³arr„“³tupleµ“³named³items“³seqof“³refµ„³Pattern„„„„„„„µ±dict“³rec“³lit³dict„“³tupleµ“³named³entries“³dictof³any“³refµ„³Pattern„„„„„„„„„³ PEmbedded“³lit³Embedded„³ SturdyRef“³rec“³lit³ref„“³tupleµ“³named³oid³any„“³named³ caveatChain“³seqof“³refµ„³ Attenuation„„„“³named³sig“³atom³ ByteString„„„„„³ TCompound“³orµµ±rec“³rec“³lit³rec„“³tupleµ“³named³label³any„“³named³fields“³seqof“³refµ„³Template„„„„„„„µ±arr“³rec“³lit³arr„“³tupleµ“³named³items“³seqof“³refµ„³Template„„„„„„„µ±dict“³rec“³lit³dict„“³tupleµ“³named³entries“³dictof³any“³refµ„³Template„„„„„„„„„³ -TAttenuate“³rec“³lit³ attenuate„“³tupleµ“³named³template“³refµ„³Template„„“³named³ attenuation“³refµ„³ Attenuation„„„„„³ Attenuation“³seqof“³refµ„³Caveat„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³worker„“³schema·³version‘³ definitions·³Instance“³rec“³lit³Instance„“³tupleµ“³named³name“³atom³String„„“³named³argument³any„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³service„“³schema·³version‘³ definitions·³State“³orµµ±started“³lit³started„„µ±ready“³lit³ready„„µ±failed“³lit³failed„„µ±complete“³lit³complete„„„„³ +TAttenuate“³rec“³lit³ attenuate„“³tupleµ“³named³template“³refµ„³Template„„“³named³ attenuation“³refµ„³ Attenuation„„„„„³ Attenuation“³seqof“³refµ„³Caveat„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³worker„“³schema·³version‘³ definitions·³Instance“³rec“³lit³Instance„“³tupleµ“³named³name“³atom³String„„“³named³argument³any„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³service„“³schema·³version‘³ definitions·³State“³orµµ±started“³lit³started„„µ±ready“³lit³ready„„µ±failed“³lit³failed„„µ±complete“³lit³complete„„µ± userDefined³any„„„³ RunService“³rec“³lit³ run-service„“³tupleµ“³named³ serviceName³any„„„„³ ServiceState“³rec“³lit³ service-state„“³tupleµ“³named³ serviceName³any„“³named³state“³refµ„³State„„„„„³ ServiceObject“³rec“³lit³service-object„“³tupleµ“³named³ serviceName³any„“³named³object³any„„„„³RequireService“³rec“³lit³require-service„“³tupleµ“³named³ serviceName³any„„„„³RestartService“³rec“³lit³restart-service„“³tupleµ“³named³ serviceName³any„„„„³ServiceDependency“³rec“³lit³ depends-on„“³tupleµ“³named³depender³any„“³named³dependee“³refµ„³ ServiceState„„„„„³SystemLayerService“³rec“³lit³system-layer-service„“³tupleµ“³named³ serviceName³any„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³protocol„“³schema·³version‘³ definitions·³Oid“³atom³ SignedInteger„³Sync“³rec“³lit³sync„“³tupleµ“³named³peer“³embedded“³lit„„„„„„³Turn“³seqof“³refµ„³ TurnEvent„„³Error“³rec“³lit³error„“³tupleµ“³named³message“³atom³String„„“³named³detail³any„„„„³Event“³orµµ±Assert“³refµ„³Assert„„µ±Retract“³refµ„³Retract„„µ±Message“³refµ„³Message„„µ±Sync“³refµ„³Sync„„„„³Assert“³rec“³lit³assert„“³tupleµ“³named³ assertion“³refµ„³ Assertion„„“³named³handle“³refµ„³Handle„„„„„³Handle“³atom³ SignedInteger„³Packet“³orµµ±Turn“³refµ„³Turn„„µ±Error“³refµ„³Error„„µ± Extension“³refµ„³ Extension„„„„³Message“³rec“³lit³message„“³tupleµ“³named³body“³refµ„³ Assertion„„„„„³Retract“³rec“³lit³retract„“³tupleµ“³named³handle“³refµ„³Handle„„„„„³ Assertion³any³ Extension“³rec“³named³label³any„“³named³fields“³seqof³any„„„³ TurnEvent“³tupleµ“³named³oid“³refµ„³Oid„„“³named³event“³refµ„³Event„„„„„³ embeddedType€„„µ³ dataspace„“³schema·³version‘³ definitions·³Observe“³rec“³lit³Observe„“³tupleµ“³named³pattern“³refµ³dataspacePatterns„³Pattern„„“³named³observer“³embedded³any„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³ gatekeeper„“³schema·³version‘³ definitions·³Bind“³rec“³lit³bind„“³tupleµ“³named³oid³any„“³named³key“³atom³ diff --git a/schemas/service.prs b/schemas/service.prs index 8328fcf..71cb7e7 100644 --- a/schemas/service.prs +++ b/schemas/service.prs @@ -38,10 +38,13 @@ State = =failed / ; The service has completed execution. =complete +/ ; Extension or user-defined state + @userDefined any . -; Asserts that, when `depender` is `require-service`d, it should not -; be started until `dependee` has been asserted. +; Asserts that, when `depender` is `require-service`d, it should not be started until +; `dependee` has been asserted, and also that `dependee`'s `serviceName` should be +; `require-service`d. ServiceDependency = . ; Asserts that the service is a "system layer" service. If *not* From ca92d99c524d99b6d3be04a0ba5383ec5a65b550 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Fri, 4 Feb 2022 14:26:50 +0100 Subject: [PATCH 4/4] Remove notion of "system-layer-service" from core protocols --- schema-bundle.bin | 2 +- schemas/service.prs | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/schema-bundle.bin b/schema-bundle.bin index 46b596c..0f38f12 100644 --- a/schema-bundle.bin +++ b/schema-bundle.bin @@ -17,7 +17,7 @@ TAttenuate ByteString„„„„„³ TCompound“³orµµ±rec“³rec“³lit³rec„“³tupleµ“³named³label³any„“³named³fields“³seqof“³refµ„³Template„„„„„„„µ±arr“³rec“³lit³arr„“³tupleµ“³named³items“³seqof“³refµ„³Template„„„„„„„µ±dict“³rec“³lit³dict„“³tupleµ“³named³entries“³dictof³any“³refµ„³Template„„„„„„„„„³ TAttenuate“³rec“³lit³ attenuate„“³tupleµ“³named³template“³refµ„³Template„„“³named³ attenuation“³refµ„³ Attenuation„„„„„³ Attenuation“³seqof“³refµ„³Caveat„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³worker„“³schema·³version‘³ definitions·³Instance“³rec“³lit³Instance„“³tupleµ“³named³name“³atom³String„„“³named³argument³any„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³service„“³schema·³version‘³ definitions·³State“³orµµ±started“³lit³started„„µ±ready“³lit³ready„„µ±failed“³lit³failed„„µ±complete“³lit³complete„„µ± userDefined³any„„„³ RunService“³rec“³lit³ run-service„“³tupleµ“³named³ serviceName³any„„„„³ ServiceState“³rec“³lit³ service-state„“³tupleµ“³named³ serviceName³any„“³named³state“³refµ„³State„„„„„³ ServiceObject“³rec“³lit³service-object„“³tupleµ“³named³ serviceName³any„“³named³object³any„„„„³RequireService“³rec“³lit³require-service„“³tupleµ“³named³ serviceName³any„„„„³RestartService“³rec“³lit³restart-service„“³tupleµ“³named³ serviceName³any„„„„³ServiceDependency“³rec“³lit³ -depends-on„“³tupleµ“³named³depender³any„“³named³dependee“³refµ„³ ServiceState„„„„„³SystemLayerService“³rec“³lit³system-layer-service„“³tupleµ“³named³ serviceName³any„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³protocol„“³schema·³version‘³ definitions·³Oid“³atom³ SignedInteger„³Sync“³rec“³lit³sync„“³tupleµ“³named³peer“³embedded“³lit„„„„„„³Turn“³seqof“³refµ„³ TurnEvent„„³Error“³rec“³lit³error„“³tupleµ“³named³message“³atom³String„„“³named³detail³any„„„„³Event“³orµµ±Assert“³refµ„³Assert„„µ±Retract“³refµ„³Retract„„µ±Message“³refµ„³Message„„µ±Sync“³refµ„³Sync„„„„³Assert“³rec“³lit³assert„“³tupleµ“³named³ assertion“³refµ„³ Assertion„„“³named³handle“³refµ„³Handle„„„„„³Handle“³atom³ SignedInteger„³Packet“³orµµ±Turn“³refµ„³Turn„„µ±Error“³refµ„³Error„„µ± Extension“³refµ„³ Extension„„„„³Message“³rec“³lit³message„“³tupleµ“³named³body“³refµ„³ Assertion„„„„„³Retract“³rec“³lit³retract„“³tupleµ“³named³handle“³refµ„³Handle„„„„„³ Assertion³any³ Extension“³rec“³named³label³any„“³named³fields“³seqof³any„„„³ TurnEvent“³tupleµ“³named³oid“³refµ„³Oid„„“³named³event“³refµ„³Event„„„„„³ embeddedType€„„µ³ dataspace„“³schema·³version‘³ definitions·³Observe“³rec“³lit³Observe„“³tupleµ“³named³pattern“³refµ³dataspacePatterns„³Pattern„„“³named³observer“³embedded³any„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³ +depends-on„“³tupleµ“³named³depender³any„“³named³dependee“³refµ„³ ServiceState„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³protocol„“³schema·³version‘³ definitions·³Oid“³atom³ SignedInteger„³Sync“³rec“³lit³sync„“³tupleµ“³named³peer“³embedded“³lit„„„„„„³Turn“³seqof“³refµ„³ TurnEvent„„³Error“³rec“³lit³error„“³tupleµ“³named³message“³atom³String„„“³named³detail³any„„„„³Event“³orµµ±Assert“³refµ„³Assert„„µ±Retract“³refµ„³Retract„„µ±Message“³refµ„³Message„„µ±Sync“³refµ„³Sync„„„„³Assert“³rec“³lit³assert„“³tupleµ“³named³ assertion“³refµ„³ Assertion„„“³named³handle“³refµ„³Handle„„„„„³Handle“³atom³ SignedInteger„³Packet“³orµµ±Turn“³refµ„³Turn„„µ±Error“³refµ„³Error„„µ± Extension“³refµ„³ Extension„„„„³Message“³rec“³lit³message„“³tupleµ“³named³body“³refµ„³ Assertion„„„„„³Retract“³rec“³lit³retract„“³tupleµ“³named³handle“³refµ„³Handle„„„„„³ Assertion³any³ Extension“³rec“³named³label³any„“³named³fields“³seqof³any„„„³ TurnEvent“³tupleµ“³named³oid“³refµ„³Oid„„“³named³event“³refµ„³Event„„„„„³ embeddedType€„„µ³ dataspace„“³schema·³version‘³ definitions·³Observe“³rec“³lit³Observe„“³tupleµ“³named³pattern“³refµ³dataspacePatterns„³Pattern„„“³named³observer“³embedded³any„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³ gatekeeper„“³schema·³version‘³ definitions·³Bind“³rec“³lit³bind„“³tupleµ“³named³oid³any„“³named³key“³atom³ ByteString„„“³named³target“³embedded³any„„„„„³Resolve“³rec“³lit³resolve„“³tupleµ“³named³ sturdyref“³refµ³sturdy„³ SturdyRef„„“³named³observer“³embedded“³embedded³any„„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³ racketEvent„“³schema·³version‘³ definitions·³ RacketEvent“³rec“³lit³ racket-event„“³tupleµ“³named³source“³embedded³any„„“³named³event“³embedded³any„„„„„„³ embeddedType€„„µ³transportAddress„“³schema·³version‘³ definitions·³Tcp“³rec“³lit³tcp„“³tupleµ“³named³host“³atom³String„„“³named³port“³atom³ SignedInteger„„„„„³Unix“³rec“³lit³unix„“³tupleµ“³named³path“³atom³String„„„„„³Stdio“³rec“³lit³stdio„“³tupleµ„„„³ WebSocket“³rec“³lit³ws„“³tupleµ“³named³url“³atom³String„„„„„„³ embeddedType€„„µ³dataspacePatterns„“³schema·³version‘³ definitions·³DLit“³rec“³lit³lit„“³tupleµ“³named³value“³refµ„³AnyAtom„„„„„³DBind“³rec“³lit³bind„“³tupleµ“³named³pattern“³refµ„³Pattern„„„„„³AnyAtom“³orµµ±bool“³atom³Boolean„„µ±float“³atom³Float„„µ±double“³atom³Double„„µ±int“³atom³ SignedInteger„„µ±string“³atom³String„„µ±bytes“³atom³ ByteString„„µ±symbol“³atom³Symbol„„µ±embedded“³embedded³any„„„„³Pattern“³orµµ±DDiscard“³refµ„³DDiscard„„µ±DBind“³refµ„³DBind„„µ±DLit“³refµ„³DLit„„µ± DCompound“³refµ„³ DCompound„„„„³DDiscard“³rec“³lit³_„“³tupleµ„„„³ DCompound“³orµµ±rec“³rec“³lit³rec„“³tupleµ“³named³label³any„“³named³fields“³seqof“³refµ„³Pattern„„„„„„„µ±arr“³rec“³lit³arr„“³tupleµ“³named³items“³seqof“³refµ„³Pattern„„„„„„„µ±dict“³rec“³lit³dict„“³tupleµ“³named³entries“³dictof³any“³refµ„³Pattern„„„„„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³secureChatProtocol„“³schema·³version‘³ definitions·³Join“³rec“³lit³ diff --git a/schemas/service.prs b/schemas/service.prs index 71cb7e7..506208d 100644 --- a/schemas/service.prs +++ b/schemas/service.prs @@ -47,11 +47,5 @@ State = ; `require-service`d. ServiceDependency = . -; Asserts that the service is a "system layer" service. If *not* -; specified for a service X, where X is not `` for some -; Y, the system acts as if ` ready>>` were asserted. -SystemLayerService = . - ; Message. Triggers a service restart. RestartService = .