BSD-3-Clause licensed by Duncan Coutts, Nicolas Wu, Edsko de Vries
Maintained by Facundo Domínguez

Module documentation for 0.7.4

This is an implementation of Cloud Haskell, as described in Towards Haskell in the Cloud by Jeff Epstein, Andrew Black, and Simon Peyton Jones (, although some of the details are different. The precise message passing semantics are based on A unified semantics for future Erlang by Hans Svensson, Lars-Åke Fredlund and Clara Benac Earle. You will probably also want to install a Cloud Haskell backend such as distributed-process-simplelocalnet.




2018-06-12 Facundo Domínguez <> 0.7.4

* Added support for exceptions >= 0.10

2017-08-31 Facundo Domínguez <> 0.7.3

* Drop support for ghc-7.8.* and earlier.

2017-08-31 Facundo Domínguez <> 0.7.2

* Fixed build errors with ghc-8.2.1.

2017-08-22 Facundo Domínguez <> 0.7.1

* Relax upper bounds in dependencies to build with ghc-8.2.1.

2017-08-21 Facundo Domínguez <> 0.7.0

* Change type of message sent by `say` from a 3-tuple to a proper
type (`SayMessage`) with a proper `UTCTime`. (#291)
* Expose the MonitorRef in the withMonitor call.
* Have unmonitor remove the monitor message in the inbox. (#268)
* Remove Mx Data Tables. This API isn't used, is easy to replace with various
other packages. (#276)
* Add Ord instance to SpawnRef.

2016-10-13 Facundo Domínguez <> 0.6.6

* Remove monitors from remote nodes when a process dies. (#295)

2016-10-12 Facundo Domínguez <> 0.6.5

* Use only one connection to communicate between NCs. (#296, #297)
* Improve documentation of CQueue.
* Implement bidirectional multimaps for links and monitors. (#293, #294)
* Fix various warnings. (#292)
* Fix some of the intermittent failures in tests.
* Improve error messages when node controllers receive invalid requests.

2016-06-09 Facundo Domínguez <> 0.6.4

* Fixup build errors.

2016-06-09 Facundo Domínguez <> 0.6.3

* Relax template-haskell upper bound.

2016-06-09 Facundo Domínguez <> 0.6.2

* Provide compatibility with ghc-8.0.1
* Remove dependency on ghc-prim.
* Don't throw exceptions asynchronously.
* Bump upper bounds of dependencies.
* Fix exception handling in callLocal.
* Have spawnLocal inherit the masking state of the caller.
* Have nsend send unencoded messages to local processes.

2016-03-03 Facundo Domínguez <> 0.6.1

* Implement MonadCatch, MonadThrow, MonadMask for Process.

2016-02-18 Facundo Domínguez <> 0.6.0

* Have nsendRemote skip the transport for local communication.
* Unsafe primitives for usend and nsendRemote.
* Stop using the transport for local communication.
* Skip the transport for whereisRemoteAsync and registerRemoteAsync.
* Have nsendRemote skip the transport for local communication.
* Have runProcess forward exceptions.
* Reimport distributed-process-tests. d-p and d-p-test now can be kept in
* Add a stack.yaml file for building tests and d-p all at once conveniently.
* Implement unreliable forward (uforward).
* Add Functor instance for Match data type
* Have `spawnAsync` not use the transport in the local case.
* Fix monitor race in 'call'.
* Add compatibility with ghc-7.10: support new typeable, loosen deps, write
proper NFData instances, support new TH.
* Kill processes on a local node upon closeLocalNode.
* Fix getNodeStats function, see DP-97
* Return size of the queue in ProcessInfo.
* Implement unreliable send (usend).
* Implement MonadFix instance for Process.
* Introduce callLocal primitive.
* Prevent message loss due to timeouts in CQueue.
* More informative ProcessRegistrationException. Now includes the identifier
of the process that owns the name, if any.
* Avoid message loop between threads when tracing received messages.

2015-06-15 Facundo Domínguez <> 0.5.5

* Fix dependencies.
* Add compatibility with GHC-7.10.
* Fix various race conditions (DP-99, DP-103).

2014-12-09 Tim Watson <> 0.5.2

* Fix docstring for `register`
* Added Data instance to ProcessId, LocalProcessId and NodeId
* Add static serialiation dictionary for 'Static', for completeness
* Add Closure static serialization dictionary
* Replacement for modifyMVarMasked for GHC <= 7.4
* Document the use of built-in trace flags
* Make forkProcess exception-safe
* Make -Wall clean

2014-08-13 Tim Watson <> 0.5.1

* Fix cabal docs (thanks Markus Barenhoff)
* Expose lifted version of Control.Exception.mask_ (thanks Alexander Vershilov)

2014-05-30 Tim Watson <> 0.5.0

* Dependency on STM implicitly changed from 1.3 to 1.4, but was not reflected in the cabal file
* Race condition in local monitoring when using call
* mask now works correctly if unmask is called by another process
* Improve efficiency of local message passing
* nsend uses local communication channels
* Link Node Controller and Network Listener
* Label spawned processes using labelThread
* Relaxed upper bound on syb in the cabal manifest
* Bump binary version to include 0.7.*
* Exposed process info
* Exposed node statistics
* Moved tests to
* Added "polymorphic expect"
* Exposed Message type and broaden scope of polymorphic expect
* Added Management API (for working with internal/system events)
* Tracing can no longer be disabled
* We now report node statistics for monitoring/management
* Node.runProcess now propagates exceptions to its caller
* Added simple micro benchmarks

2013-01-27 Tim Watson <> 0.4.2

* Improved exception handling for deferred type checked exit reasons
* Add matchChan primitive (thanks Simon Marlow)
* Expose deferred message handling/checking for AbstractMessage
* Add `getProcessInfo' API
* Add `trace' API backed by the GHC eventlog

2012-11-22 Edsko de Vries <> 0.4.1

* Make behaviour of 'register' more Erlang-like (register will now fail if the
name is already registered). Patch by Jeff Epstein.
* Functor, Applicative, Alternative and Monad instances for ReceivePort
* Add support for receiveChanTimeout
* Improved documentation
* Avoid name clashes in the TH generation for closures
* Relax package bounds to allow for Binary 0.6

2012-10-23 Edsko de Vries <>

* Fix race condition in spawn

2012-10-04 Edsko de Vries <>

* Relax package boundaries

2012-10-03 Edsko de Vries <> 0.4.0

* Improved treatment of network failure, using new failure semantics of
* Make NodeId Typeable
* Extend Template Haskell support with "remotableDec" so that you can refer to
$(mkClosure 'f) within the body of "f".
* Fix bug in spawnChannelLocal
* Numerous memory leaks plugged
* Relax upper bound on dependency on 'network'
* New primitive 'matchAny'
* Remove 'whereisRemote' (see comment of 'whereisRemoteAsync')

2012-08-16 Edsko de Vries <> 0.3.1

* Fix memory leaks
* Make Template Haskell support optional
* Relax dependency constraints

2012-08-07 Edsko de Vries <> 0.3.0

* Extract 'static' into a separate package (C.D.Static)
* Use new package rank1dynamic to proper runtime checks for polymorphic values

2012-08-02 Edsko de Vries <>

* Expose the constructors of Closure
* Add instance (Typeable a => Serializable (Static a)) and make sure we only
use the internal representation of Static where really necessary
* Improved docs

2012-07-31 Edsko de Vries <>

* Add exception handling primitives
* Fix runProcess: if the process threw an exception, a 'waiting indefinitely on
MVar' exception would be thrown.

2012-07-21 Edsko de Vries <>

* Bugfix in the node controller
(one way this bug materialized: when using the SimpleLocalnet backend,
slave nodes could not be reused)
* Improved documentation in Control.Distributed.Process.Closure

2012-07-20 Edsko de Vries <>

* Improve docs
* Local versions of spawn

2012-07-16 Edsko de Vries <>

* Base 4.6 compatibility
* Relax constraints on bytestring and containers

2012-07-16 Edsko de Vries <>

* Relax upper bound on 'time' dependency

2012-07-11 Edsko de Vries <> 0.2.1

* Complete redesign of the underlying implementation of static values and

* Add support for 'spawnChannel'

2012-07-09 Edsko de Vries <>

* Bugfix: Continue processing messages when a connection breaks.

2012-07-07 Edsko de Vries <> 0.2.0

* Initial release.
comments powered byDisqus