From 85d9f4f0f5f64fb23f937f380c57447be69fd7d6 Mon Sep 17 00:00:00 2001
From: Tim Watson
Date: Wed, 28 May 2014 12:05:35 +0100
Subject: [PATCH 01/78] Update _config.yml
---
_config.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_config.yml b/_config.yml
index 892bf81..b4a2f76 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1,4 +1,4 @@
-exclude: [".rvmrc", ".rbenv-version", "README.md", "Rakefile", "static/templates/wikipage.mdt"]
+exclude: [".rvmrc", ".rbenv-version", "README.md", "Rakefile", "static/templates/*"]
lsi: false
auto: true
pygments: true
From e5336b88811b99c4347abe01d89a20925ad36855 Mon Sep 17 00:00:00 2001
From: Tim Watson
Date: Wed, 28 May 2014 12:06:44 +0100
Subject: [PATCH 02/78] oops - remove illegal char
---
changelog/dp-0.4.1.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/changelog/dp-0.4.1.md b/changelog/dp-0.4.1.md
index cc650ab..8b2fdad 100644
--- a/changelog/dp-0.4.1.md
+++ b/changelog/dp-0.4.1.md
@@ -17,7 +17,7 @@ This is a small feature release containing various enhancements.
-
-
diff --git a/team.md b/team.md
index c16b71d..3532de2 100644
--- a/team.md
+++ b/team.md
@@ -27,7 +27,7 @@ of Cloud Haskell as a whole. [Edsko De Vries][13], a member of Well-Typed and th
author of much of the new implementation we have today, is still closely involved
as well.
-[Tim][6] is the primary author and maintainer of [disributed-process-platform][8];
+[Tim][6] is the primary author and maintainer of [disributed-process][8];
an effort to port many of the benefits of Erlang's [Open Telecom Platform][10] to
the Cloud Haskell ecosystem.
@@ -48,7 +48,7 @@ Duncan Coutts, Simon Marlow, Ryan Newton, Eric Kow, Adam Foltzer, Nicolas Wu
[5]: http://www.haskell.org/haskellwiki/Parallel_GHC_Project
[6]: https://github.com/hyperthunk
[7]: https://github.com/jepst
-[8]: https://github.com/haskell-distributed/disributed-process-platform
+[8]: https://github.com/haskell-distributed/disributed-process
[9]: http://hackage.haskell.org/trac/ghc/wiki/Contributors
[10]: http://en.wikipedia.org/wiki/Open_Telecom_Platform
[11]: https://github.com/jepst/distributed-process-global
diff --git a/tutorials/1ch.md b/tutorials/1ch.md
index 41f00e1..4eb07d2 100644
--- a/tutorials/1ch.md
+++ b/tutorials/1ch.md
@@ -138,7 +138,7 @@ main = do
-- Die immediately - throws a ProcessExitException with the given reason.
Nothing -> die "nothing came back!"
Just s -> say $ "got " ++ s ++ " back!"
-
+
-- Without the following delay, the process sometimes exits before the messages are exchanged.
liftIO $ threadDelay 2000000
{% endhighlight %}
@@ -289,9 +289,9 @@ different ways:
------
-[1]: /static/doc/distributed-process/Control-Distributed-Process.html#v:Message
-[2]: http://hackage.haskell.org/package/distributed-process
-[3]: /static/doc/distributed-process-platform/Control-Distributed-Process-Platform-Async.html
-[4]: /static/doc/distributed-process-platform/Control-Distributed-Process-Platform-ManagedProcess.htmlv:callAsync
-[5]: http://hackage.haskell.org/packages/archive/distributed-process/latest/doc/html/Control-Distributed-Process-Internal-Primitives.html#t:Match
-[6]: http://hackage.haskell.org/packages/archive/distributed-process/latest/doc/html/Control-Distributed-Process-Closure.html
+[1]: https://hackage.haskell.org/package/distributed-process-0.6.6/docs/Control-Distributed-Process.html#t:Message
+[2]: https://hackage.haskell.org/package/distributed-process
+[3]: https://hackage.haskell.org/package/distributed-process-async/docs/Control-Distributed-Process-Async.html
+[4]: https://hackage.haskell.org/package/distributed-process-client-server-0.1.3.2/docs/Control-Distributed-Process-ManagedProcess-Client.html#v:callAsync
+[5]: https://hackage.haskell.org/packages/archive/distributed-process/latest/doc/html/Control-Distributed-Process-Internal-Primitives.html#t:Match
+[6]: https://hackage.haskell.org/packages/archive/distributed-process/latest/doc/html/Control-Distributed-Process-Closure.html
diff --git a/tutorials/3ch.md b/tutorials/3ch.md
index 680421e..c5b9dc7 100644
--- a/tutorials/3ch.md
+++ b/tutorials/3ch.md
@@ -177,9 +177,9 @@ proxy :: Serializable a => ProcessId -> (a -> Process Bool) -> Process ()
{% endhighlight %}
Since `matchAny` operates on `(Message -> Process b)` and `handleMessage` operates on
-`a -> Process b` we can compose these to make our proxy server. We must not forward
+`a -> Process b` we can compose these to make our proxy server. We must not forward
messages for which the predicate function evaluates to `Just False`, nor can we sensibly
-forward messages which the predicate function is unable to evaluate due to type
+forward messages which the predicate function is unable to evaluate due to type
incompatibility. This leaves us with the definition found in distributed-process:
{% highlight haskell %}
@@ -197,7 +197,7 @@ proxy pid proc = do
Beyond simple relays and proxies, the raw message handling capabilities available in
distributed-process can be utilised to develop highly generic message processing code.
-All the richness of the distributed-process-platform APIs (such as `ManagedProcess`) which
+All the richness of the distributed-process-client-server APIs (such as `ManagedProcess`) which
will be discussed in later tutorials are, in fact, built upon these families of primitives.
### Typed Channels
@@ -234,10 +234,10 @@ is terminated.
The `ProcessExitException` signal is sent from one process to another, indicating that the
receiver is being asked to terminate. A process can choose to tell itself to exit, and the
-[`die`][7] primitive simplifies doing so without worrying about the expected type for the
+[`die`][7] primitive simplifies doing so without worrying about the expected type for the
action. In fact, [`die`][7] has slightly different semantics from [`exit`][5], since the
latter involves sending an internal signal to the local node controller. A direct consequence
-of this is that the _exit signal_ may not arrive immediately, since the _Node Controller_ could
+of this is that the _exit signal_ may not arrive immediately, since the _Node Controller_ could
be busy processing other events. On the other hand, the [`die`][7] primitive throws a
`ProcessExitException` directly in the calling thread, thus terminating it without delay.
In practise, this means the following two functions could behave quite differently at
@@ -247,19 +247,19 @@ runtime:
-- this will never print anything...
demo1 = die "Boom" >> expect >>= say
-
+
-- this /might/ print something before it exits
demo2 = do
self <- getSelfPid
exit self "Boom"
- expect >>= say
+ expect >>= say
{% endhighlight %}
The `ProcessExitException` type holds a _reason_ field, which is serialised as a raw `Message`.
This exception type is exported, so it is possible to catch these _exit signals_ and decide how
to respond to them. Catching _exit signals_ is done via a set of primitives in
distributed-process, and the use of them forms a key component of the various fault tolerance
-strategies provided by distributed-process-platform.
+strategies provided by distributed-process-supervisor.
A `ProcessKillException` is intended to be an _untrappable_ exit signal, so its type is
not exported and therefore you can __only__ handle it by catching all exceptions, which
@@ -296,7 +296,7 @@ special case. Since link exit signals cannot be caught directly, if you find you
to _trap_ a link failure, you probably want to use a monitor instead.
Whilst the built-in `link` primitive terminates the link-ee regardless of exit reason,
-distributed-process-platform provides an alternate function `linkOnFailure`, which only
+distributed-process-extras provides an alternate function `linkOnFailure`, which only
dispatches the `ProcessLinkException` if the link-ed process dies abnormally (i.e., with
some `DiedReason` other than `DiedNormal`).
@@ -305,7 +305,7 @@ putting a `ProcessMonitorNotification` into the process' mailbox. This signal an
constituent fields can be introspected in order to decide what action (if any) the receiver
can/should take in response to the monitored process' death. Let's take a look at how
monitors can be used to determine both when and _how_ a process has terminated. Tucked
-away in distributed-process-platform, the `linkOnFailure` primitive works in exactly this
+away in distributed-process-extras, the `linkOnFailure` primitive works in exactly this
way, only terminating the caller if the subject terminates abnormally. Let's take a look...
{% highlight haskell %}
@@ -366,17 +366,17 @@ process. The `ProcessInfo` type it returns contains the local node id and a list
registered names, monitors and links for the process. The call returns `Nothing` if the
process in question is not alive.
-### Monad Transformer Stacks
+### Monad Transformer Stacks
-It is not generally necessary, but it may be convenient in your application to use a
-custom monad transformer stack with the Process monad at the bottom. For example,
+It is not generally necessary, but it may be convenient in your application to use a
+custom monad transformer stack with the Process monad at the bottom. For example,
you may have decided that in various places in your application you will make calls to
a network database. You may create a data access module, and it will need configuration information available to it in
-order to connect to the database server. A ReaderT can be a nice way to make
+order to connect to the database server. A ReaderT can be a nice way to make
configuration data available throughout an application without
-schlepping it around by hand.
+schlepping it around by hand.
-This example is a bit contrived and over-simplified but
+This example is a bit contrived and over-simplified but
illustrates the concept. Consider the `fetchUser` function below, it runs in the `AppProcess`
monad which provides the configuration settings required to connect to the database:
@@ -409,7 +409,7 @@ openDB = do
closeDB :: DB.Connection -> AppProcess ()
closeDB db = liftIO (DB.close db)
-
+
{% endhighlight %}
So this would mostly work but it is not complete. What happens if an exception
@@ -423,17 +423,17 @@ In the base library, [bracket][brkt] is defined in Control.Exception with this s
bracket :: IO a --^ computation to run first ("acquire resource")
-> (a -> IO b) --^ computation to run last ("release resource")
-> (a -> IO c) --^ computation to run in-between
- -> IO c
+ -> IO c
{% endhighlight %}
Great! We pass an IO action that acquires a resource; `bracket` passes that
resource to a function which takes the resource and runs another action.
-We also provide a release function which `bracket` is guaranteed to run
-even if the primary action raises an exception.
+We also provide a release function which `bracket` is guaranteed to run
+even if the primary action raises an exception.
-Unfortunately, we cannot directly use `bracket` in our
+Unfortunately, we cannot directly use `bracket` in our
`fetchUser` function: openDB (resource acquisition) runs in the `AppProcess`
monad. If our functions ran in IO, we could lift the entire bracket computation into
our monad transformer stack with liftIO; but we cannot do that for the computations
@@ -473,7 +473,7 @@ onException p what = p `catch` \e -> do _ <- what
`distributed-process` needs to do this sort of thing to keep its dependency
list small, but do we really want to write this for every transformer stack
-we use in our own applications? No! And we do not have to, thanks to
+we use in our own applications? No! And we do not have to, thanks to
the [monad-control][mctrl] and [lifted-base][lbase] libraries.
[monad-control][mctrl] provides several typeclasses and helper functions
@@ -489,17 +489,17 @@ bracket that looks like this:
{% highlight haskell %}
-bracket :: MonadBaseControl IO m
+bracket :: MonadBaseControl IO m
=> m a --^ computation to run first ("acquire resource")
-> (a -> m b) --^ computation to run last ("release resource")
-> (a -> m c) --^ computation to run in-between
- -> m c
+ -> m c
{% endhighlight %}
It is just the same as the version found in base, except it is generalized to work
with actions in any monad that implements [MonadBaseControl IO][mbc]. [monad-control][mctrl] defines
-instances for the standard transformers, but that instance requires the base monad
+instances for the standard transformers, but that instance requires the base monad
(in this case, `Process`) to also have an instance of these classes.
To address this the [distributed-process-monad-control][dpmc] package
@@ -520,7 +520,7 @@ fetchUser email =
Lifted.bracket openDB
closeDB
$ \db -> liftIO $ DB.query db email
-
+
{% endhighlight %}
diff --git a/tutorials/4ch.md b/tutorials/4ch.md
index 83dc0ef..26c92c0 100644
--- a/tutorials/4ch.md
+++ b/tutorials/4ch.md
@@ -8,9 +8,9 @@ title: 4. Managed Process Tutorial
### Introduction
The source code for this tutorial is based on the `BlockingQueue` API
-from distributed-process-platform and can be accessed [here][1].
+from distributed-process-task and can be accessed [here][1].
Please note that this tutorial is based on the stable (master) branch
-of [distributed-process-platform][3].
+of [distributed-process-task][3].
### Managed Processes
@@ -40,8 +40,8 @@ code to be run on termination/shutdown.
{% highlight haskell %}
myServer :: ProcessDefinition MyStateType
-myServer =
- ProcessDefinition {
+myServer =
+ ProcessDefinition {
-- handle messages sent to us via the call/cast API functions
apiHandlers = [
-- a list of Dispatchers, derived by calling on of the various
@@ -113,7 +113,7 @@ that math server that does just that:
----
{% highlight haskell %}
-module MathServer
+module MathServer
( -- client facing API
add
-- starting/spawning the server process
@@ -241,9 +241,9 @@ more interesting and useful.
### Building a Task Queue
This section of the tutorial is based on a real module from the
-distributed-process-platform library, called `BlockingQueue`.
+distributed-process-task library, called `BlockingQueue`.
-Let's imagine we want to execute tasks on an arbitrary node, but want
+Let's imagine we want to execute tasks on an arbitrary node, but want
the caller to block whilst the remote task is executing. We also want
to put an upper bound on the number of concurrent tasks/callers that
the server will accept. Let's use `ManagedProcess` to implement a generic
@@ -275,7 +275,7 @@ typeclass to allow clients to specify the server's location in whatever
manner suits them: The type of a task will be `Closure (Process a)` and
the server will explicitly return an /either/ value with `Left String`
for errors and `Right a` for successful results.
-
+
{% highlight haskell %}
-- enqueues the task in the pool and blocks
-- the caller until the task is complete
@@ -663,8 +663,8 @@ another to monitor the first and handle failures and/or cancellation. Spawning
processes is cheap, but not free as each process is a haskell thread, plus some
additional book keeping data.
-[1]: https://github.com/haskell-distributed/distributed-process-platform/blob/master/src/Control/Distributed/Process/Platform/Task/Queue/BlockingQueue.hs
-[2]: /static/doc/distributed-process-platform/Control-Distributed-Process-Platform-ManagedProcess.html#t:ProcessDefinition
-[3]: https://github.com/haskell-distributed/distributed-process-platform/tree/master/
-[4]: https://github.com/haskell-distributed/distributed-process-platform/tree/master/src/Control/Distributed/Process/Platform/UnsafePrimitives.hs
+[1]: https://github.com/haskell-distributed/distributed-process-task/blob/master/src/Control/Distributed/Process/Task/Queue/BlockingQueue.hs
+[2]: https://hackage.haskell.org/package/distributed-process-client-server-0.1.3.2/docs/Control-Distributed-Process-ManagedProcess.html#t:ProcessDefinition
+[3]: https://github.com/haskell-distributed/distributed-process-task
+[4]: https://github.com/haskell-distributed/distributed-process-extras/blob/master/src/Control/Distributed/Process/Extras/UnsafePrimitives.hs
[5]: /documentation.html
diff --git a/tutorials/5ch.md b/tutorials/5ch.md
index 1a56c3f..1811c8f 100644
--- a/tutorials/5ch.md
+++ b/tutorials/5ch.md
@@ -56,7 +56,7 @@ triggered the shutdown/terminate sequence for the supervisor's process explicitl
When a supervisor is told directly to terminate a child process, it uses the
`ChildTerminationPolicy` to determine whether the child should be terminated
_gracefully_ or _brutally killed_. This _shutdown protocol_ is used throughout
-[distributed-process-platform][dpp] and in order for a child process to be managed
+[distributed-process-supervisor][dpp] and in order for a child process to be managed
effectively by its supervisor, it is imperative that it understands the protocol.
When a _graceful_ shutdown is required, the supervisor will send an exit signal to the
child process, with the `ExitReason` set to `ExitShutdown`, whence the child process is
@@ -70,7 +70,7 @@ provide a timeout value. The supervisor attempts a _gracefull_ shutdown initiall
however if the child does not exit within the given time window, the supervisor will
automatically revert to a _brutal kill_ using `TerminateImmediately`. If the
timeout value is set to `Infinity`, the supervisor will wait indefintiely for the
-child to exit cleanly.
+child to exit cleanly.
When a supervisor detects a child exit, it will attempt a restart. Whilst explicitly
terminating a child will **only** terminate the specified child process, unexpected
@@ -142,11 +142,10 @@ order, otherwise the dependent children might crash whilst we're restarting othe
rely on. It follows that, in this setup, we cannot subsequently (re)start the children in the
same order we stopped them either.
-[dpp]: https://github.com/haskell-distributed/distributed-process-platform
+[dpp]: https://github.com/haskell-distributed/distributed-process-supervisor
[sup1]: /img/one-for-one.png
[sup2]: /img/one-for-all.png
[sup3]: /img/one-for-all-left-to-right.png
[alert]: /img/alert.png
[info]: /img/info.png
[erlsup]: http://www.erlang.org/doc/man/supervisor.html
-
diff --git a/tutorials/6ch.md b/tutorials/6ch.md
index 1269745..29a32c6 100644
--- a/tutorials/6ch.md
+++ b/tutorials/6ch.md
@@ -56,7 +56,7 @@ look at this in action, revisiting the well-trodden _math server_ example
from our previous tutorials:
{% highlight haskell %}
-module MathServer
+module MathServer
( -- client facing API
MathServer()
, add
@@ -561,20 +561,19 @@ the client using the send ports supplied in the request data.
> passes data to them (via the `SendPort`) is bound to exactly the same type(s)!
> Furthermore, adding reply channels (in the form of a `SendPort`) to the request
> types ensures that the replies will be handled correctly as well! As a result,
-> there can be no ambiguity about the types involved for _either_ side of the
+> there can be no ambiguity about the types involved for _either_ side of the
> client-server relationship and therefore no unhandled messages due to runtime
> type mismatches - the compiler will catch that sort of thing for us!
------
-[1]: http://hackage.haskell.org/package/distributed-process-platform/Control-Distributed-Process-Platform-Service-Registry.html
-[2]: http://hackage.haskell.org/package/distributed-process-platform/Control-Distributed-Process-Platform-Async.html
-[3]: http://hackage.haskell.org/package/distributed-process-platform/Control-Distributed-Process-Platform-Service-SystemLog.html
-[mgmt]: http://hackage.haskell.org/package/distributed-process/Control-Distributed-Process-Management.html
-[dbg]: http://hackage.haskell.org/package/distributed-process/Control-Distributed-Process-Debug.html
-[rtbl]: http://hackage.haskell.org/package/distributed-proces-platforms/Control-Distributed-Process-Platform.html#t:Routable
-[rsbl]: http://hackage.haskell.org/package/distributed-process-platform/Control-Distributed-Process-Platform.html#t:Resolvable
+[1]: https://hackage.haskell.org/package/distributed-process-registry/docs/Control-Distributed-Process-Registry.html
+[2]: https://hackage.haskell.org/package/distributed-process-async/docs/Control-Distributed-Process-Async.html
+[3]: https://hackage.haskell.org/package/distributed-process-extras/docs/Control-Distributed-Process-Extras-SystemLog.html
+[mgmt]: https://hackage.haskell.org/package/distributed-process/Control-Distributed-Process-Management.html
+[dbg]: https://hackage.haskell.org/package/distributed-process/Control-Distributed-Process-Debug.html
+[rtbl]: https://hackage.haskell.org/package/distributed-process-extras/docs/Control-Distributed-Process-Extras.html#t:Routable
+[rsbl]: https://hackage.haskell.org/package/distributed-process-extras/docs/Control-Distributed-Process-Extras.html#t:Resolvable
[alert]: /img/alert.png
[info]: /img/info.png
-[policy]: http://hackage.haskell.org/package/distributed-process-platform/Control-Distributed-Process-Platform-ManagedProcess.html#t:UnhandledMessagePolicy
-[mailbox]: http://hackage.haskell.org/package/distributed-process-platform/Control-Distributed-Process-Platform-Execution-Mailbox.html
-
+[policy]: https://hackage.haskell.org/package/distributed-process-client-server/docs/Control-Distributed-Process-ManagedProcess.html#v:unhandledMessagePolicy
+[mailbox]: https://hackage.haskell.org/package/distributed-process-execution-0.1.2.2/docs/Control-Distributed-Process-Execution-Mailbox.html
From a5312ac246af5b5ed23338a1fda143baf98496a3 Mon Sep 17 00:00:00 2001
From: Tom Hunger
Date: Thu, 9 Feb 2017 11:03:34 +0000
Subject: [PATCH 55/78] Opinionated: Remove changelog completely. It's way out
of date.
---
_includes/nav.html | 1 -
_layouts/changelog.html | 59 -----------------------------
_layouts/changes.html | 53 --------------------------
changelog/dp-0.4.1.md | 23 ------------
changelog/dp-0.4.2.md | 28 --------------
changelog/dp-0.5.0.md | 61 ------------------------------
changelog/dpp-0.1.0.md | 83 -----------------------------------------
changelog/ds-0.3.0.0.md | 17 ---------
changelog/nt-0.4.0.0.md | 24 ------------
changelog/rd-0.2.0.0.md | 19 ----------
index.md | 2 -
11 files changed, 370 deletions(-)
delete mode 100644 _layouts/changelog.html
delete mode 100644 _layouts/changes.html
delete mode 100644 changelog/dp-0.4.1.md
delete mode 100644 changelog/dp-0.4.2.md
delete mode 100644 changelog/dp-0.5.0.md
delete mode 100644 changelog/dpp-0.1.0.md
delete mode 100644 changelog/ds-0.3.0.0.md
delete mode 100644 changelog/nt-0.4.0.0.md
delete mode 100644 changelog/rd-0.2.0.0.md
diff --git a/_includes/nav.html b/_includes/nav.html
index 2fa93b1..4e45e25 100644
--- a/_includes/nav.html
+++ b/_includes/nav.html
@@ -32,7 +32,6 @@