@@ -13,13 +13,13 @@ Arvo is composed of modules called vanes:
16−At a high level `%arvo` takes a mess of unix io events and turns them
16+At a high level `%arvo` takes a mess of Unix I/O events and turns them
17into something clean and structured for the programmer.
17into something clean and structured for the programmer.
19`%arvo` is designed to avoid the usual state of complex event networks:
19`%arvo` is designed to avoid the usual state of complex event networks:
20event spaghetti. We keep track of every event's cause so that we have a
20event spaghetti. We keep track of every event's cause so that we have a
21clear causal chain for every computation. At the bottom of every chain
21clear causal chain for every computation. At the bottom of every chain
22−is a unix io event, such as a network request, terminal input, file
22+is a Unix I/O event, such as a network request, terminal input, file
23sync, or timer event. We push every step in the path the request takes
23sync, or timer event. We push every step in the path the request takes
24onto the chain until we get to the terminal cause of the computation.
24onto the chain until we get to the terminal cause of the computation.
25Then we use this causal stack to route results back to the caller.
25Then we use this causal stack to route results back to the caller.
@@ -31,7 +31,7 @@ The `%arvo` causal stack is called a `++duct`. This is represented
31simply as a list of paths, where each path represents a step in the
31simply as a list of paths, where each path represents a step in the
32causal chain. The first element in the path is the first letter of
32causal chain. The first element in the path is the first letter of
33whichever vane handled that step in the computation, or the empty span
33whichever vane handled that step in the computation, or the empty span
36Here's a duct that was recently observed in the wild:
36Here's a duct that was recently observed in the wild:
@@ -46,20 +46,20 @@ Here's a duct that was recently observed in the wild:
46This is the duct the timer vane receives when "timer" sample app asks
46This is the duct the timer vane receives when "timer" sample app asks
47the timer vane to set a timer. This is also the duct over which the
47the timer vane to set a timer. This is also the duct over which the
48response is produced at the specified time. Unix sent a terminal
48response is produced at the specified time. Unix sent a terminal
49−keystroke event (enter), and arvo routed it to %dill(our terminal),
49+keystroke event (enter), and Arvo routed it to %dill(our terminal),
50which passed it on to the %gall app terminal, which sent it to shell,
50which passed it on to the %gall app terminal, which sent it to shell,
51its child, which created a new child (with process id 4), which on
51its child, which created a new child (with process id 4), which on
52startup asked the timer vane to set a timer.
52startup asked the timer vane to set a timer.
54The timer vane saves this duct, so that when the specified time arrives
54The timer vane saves this duct, so that when the specified time arrives
55−and unix sends a wakeup event to the timer vane, it can produce the
55+and Unix sends a wakeup event to the timer vane, it can produce the
56response on the same duct. This response is routed to the place we
56response on the same duct. This response is routed to the place we
57popped off the top of the duct, i.e. the time app. This app produces the
57popped off the top of the duct, i.e. the time app. This app produces the
58text "ding", which falls down to the shell, which drops it through to
58text "ding", which falls down to the shell, which drops it through to
59the terminal. Terminal drops this down to dill, which converts it into
59the terminal. Terminal drops this down to dill, which converts it into
60−an effect that unix will recognize as a request to print "ding" to the
60+an effect that Unix will recognize as a request to print "ding" to the
61screen. When dill produces this, the last path in the duct has an
61screen. When dill produces this, the last path in the duct has an
62−initial element of the empty span, so this is routed to unix, which
62+initial element of the empty span, so this is routed to Unix, which
63applies the effects.
63applies the effects.
65This is a call stack, with a crucial feature: the stack is a first-class
65This is a call stack, with a crucial feature: the stack is a first-class
@@ -92,11 +92,11 @@ caller.
95−As shown above, we use arvo proper to route and control the flow of
95+As shown above, we use Arvo proper to route and control the flow of
96−moves. However, arvo proper is rarely directly responsible for
96+moves. However, Arvo proper is rarely directly responsible for
97processing the event data that directly causes the desired outcome of a
97processing the event data that directly causes the desired outcome of a
98move. This event data is contained within a card, which is simply a
98move. This event data is contained within a card, which is simply a
99−`(pair term noun)`. Instead, arvo proper passes the card off to one of
99+`(pair term noun)`. Instead, Arvo proper passes the card off to one of
100its vanes, which each present an interface to clients for a particular
100its vanes, which each present an interface to clients for a particular
101well-defined, stable, and general-purpose piece of functionality.
101well-defined, stable, and general-purpose piece of functionality.
@@ -120,14 +120,14 @@ Cards
122Cards are the vane-specific portion of a move. Each vane defines a
122Cards are the vane-specific portion of a move. Each vane defines a
123−protocol for interacting with other vanes (via arvo) by defining four
123+protocol for interacting with other vanes (via Arvo) by defining four
124types of cards: kisses, gifts, notes, and signs.
124types of cards: kisses, gifts, notes, and signs.
126−When one vane is `%pass`ed a card in its `++kiss`, arvo activates the
126+When one vane is `%pass`ed a card in its `++kiss`, Arvo activates the
127`++call` gate with the card as its argument. To produce a result, the
127`++call` gate with the card as its argument. To produce a result, the
128vane `%give`s one of the cards defined in its `++gift`. If the vane
128vane `%give`s one of the cards defined in its `++gift`. If the vane
129needs to request something of another vane, it `%pass`es it a `++note`
129needs to request something of another vane, it `%pass`es it a `++note`
130−card. When that other vane returns a result, arvo activates the `++take`
130+card. When that other vane returns a result, Arvo activates the `++take`
131gate of the initial vane with one of the cards defined in its `++sign`.
131gate of the initial vane with one of the cards defined in its `++sign`.
133In other words, there are only four ways of seeing a move: (1) as a
133In other words, there are only four ways of seeing a move: (1) as a
@@ -136,12 +136,12 @@ seen by the callee, a `++kiss`. (3) the response to that first request
136as seen by the callee, a `++gift`. (4) the response to the first request
136as seen by the callee, a `++gift`. (4) the response to the first request
137as seen by the caller, a `++sign`.
137as seen by the caller, a `++sign`.
139−When a `++kiss` card is passed to a vane, arvo calls its `++call` gate,
139+When a `++kiss` card is passed to a vane, Arvo calls its `++call` gate,
140passing it both the card and its duct. This gate must be defined in
140passing it both the card and its duct. This gate must be defined in
141every vane. It produces two things in the following order: a list of
141every vane. It produces two things in the following order: a list of
142moves and a possibly modified copy of its context. The moves are used to
142moves and a possibly modified copy of its context. The moves are used to
143interact with other vanes, while the new context allows the vane to save
143interact with other vanes, while the new context allows the vane to save
144−its state. The next time arvo activates the vane it will have this
144+its state. The next time Arvo activates the vane it will have this
145context as its subject.
145context as its subject.
147This overview has detailed how to pass a card to a particular vane. To
147This overview has detailed how to pass a card to a particular vane. To