aboutsummaryrefslogtreecommitdiff
path: root/chapter/3
diff options
context:
space:
mode:
authorNathaniel Dempkowski <natdempk@gmail.com>2016-12-16 15:44:47 -0500
committerNathaniel Dempkowski <natdempk@gmail.com>2016-12-16 15:44:47 -0500
commitcd3dc1c8c5777a239d417caf00d53f6d2348dca9 (patch)
tree56aba020c5c5687a920a37340933969205ed97aa /chapter/3
parent16384f769fbe273b1f5937f9d823d2d045e82e73 (diff)
Remove TODOs
Diffstat (limited to 'chapter/3')
-rw-r--r--chapter/3/message-passing.md6
1 files changed, 1 insertions, 5 deletions
diff --git a/chapter/3/message-passing.md b/chapter/3/message-passing.md
index cb97bf3..434f83a 100644
--- a/chapter/3/message-passing.md
+++ b/chapter/3/message-passing.md
@@ -260,9 +260,7 @@ def makeStatusHolder(var myStatus) {
This creates an object `statusHolder` with methods defined by `to` statements. A method invocation from another vat-local object like `statusHolder.setStatus(123)` causes a message to be synchronously delivered to this object. Other objects can register as event listeners by calling either `statusHolder.addListener()` or `statusHolder <- addListener()` to either synchronously or eventually register as listeners. They will be notified eventually when the value of the `statusHolder` changes. This is done via `<-` which is the eventual-send operator.
-The motivation for this referencing model comes from wanting to work at a finer-grained level of references than a traditional actor exposes. The simplest example is that you want to ensure that another actor in your system can read a value, but can't write to it. How do you do that within another actor model? You might imagine creating a read-only variant of an actor which doesn't expose a write message type, or proxies only `read` messages to another actor which supports both `read` and `write` operations. In E because you are handing out object references, you would simply only pass around references to a `read` method, and you don't have to worry about other actors in your system being able to write values. These finer-grained references make reasoning about state guarantees easier because you are no longer exposing references to an entire actor, but instead the granular capabilities of the actor.
-
-TODO: Mention partial failure and implications of different types of communication
+The motivation for this referencing model comes from wanting to work at a finer-grained level of references than a traditional actor exposes. The simplest example is that you want to ensure that another actor in your system can read a value, but can't write to it. How do you do that within another actor model? You might imagine creating a read-only variant of an actor which doesn't expose a write message type, or proxies only `read` messages to another actor which supports both `read` and `write` operations. In E because you are handing out object references, you would simply only pass around references to a `read` method, and you don't have to worry about other actors in your system being able to write values. These finer-grained references make reasoning about state guarantees easier because you are no longer exposing references to an entire actor, but instead the granular capabilities of the actor. Finer-grained references also enable partial failures and recoveries within an actor. Individual objects within an actor can fail and be restarted without affecting the health of the entire actor. This is in a way similar to the supervision hierarchies seen in Erlang, and even means that messages to a failed object could be queued for processing while that object is recovering. This is something that could not happen with the same granularity in another actor system, but feels like a natural outcome of object-level references in E.
## AmbientTalk/2
@@ -448,6 +446,4 @@ One popular model of message-passing concurrency that has been getting attention
# References
-TODO: Add non-journal references
-
{% bibliography --file message-passing %}