Skip to content

Cloud Haskell 3.0 Proposal

Tim Watson edited this page Dec 2, 2018 · 13 revisions

Discussion

Although I've called this iteration of Cloud Haskell 3.0, this doesn't represent an epoch for any of the libraries - indeed distributed-process is still at v0.7.4 as of December 2018. Instead we're talking about a third re-write, the first iteration being the remote package, and the second being the current live version.

Motivation

See the High Level Redesign Proposal for details.

Outline

The architecture of the current (2.0) release is outlined here.

We will present several viewpoints, starting with a bottom up, dependency oriented perspective.

+----------------------------------------------------------------------------------+
|                          Application \ Framework Code                            |
+----------------------------------------------------------------------------------+
          |            |     |   |         |               |             |
          V            |     |   |         |               |             |
+------------------+   |     |   |         |               |             |
|   Cloud Haskell  |   |     |   |         |               |             |
|     Libraries    |   |     |   |         |               |             |
| (supervisor etc) |   |     |   |         |               |             |
+------------------+   |     |   |         |               |             |
      |                |     |   |         |               |             |
      |                |     |   |         |               |             |
      V                V     |   |         |               |             |
+-------------------------+  |   |   +-------------+       |             | 
|      Cloud Haskell      |  |   |   |   Akka.hs   |       |             |
|  (distributed-process)  |  |   |   |  (akka-hs)  |       |             |
+-------------------------+  |   |   +-------------+       |             |
             |               |   |            |            |             |
             |               |   |            |            |             |
             V               |   |            V            V             |
+-------------------------+  |   |      +-------------------------+      |
|     Core Actor Model    |__|   |      |    Distributed Actors   |      |
|     (control-actor)     |      |      |   (control-actor-dist)  |      |
+-------------------------+      |      +-------------------------+      |
          |        ^             |          |               |            |
          |        |             |          |               V            V
          |        |             |          |            +--------------------------+
          |        |             |          |            |      Data.Distributed    |
          |        |             V          V            |   (data-dist-serialise)  |
          |        |     +------------------------+     +--------------------------+
          |        |     |  Distributed Channels  |        ^        |
          |        |     |  (control-dist*-chan)  |________|        |
          |        |     +------------------------+                 V
          |        |                                        +-------------------+
          |      +------------------------------+           |  serialise/cborg  |
          |      |    Distribution Framework    |           +-------------------+
          |      |  (haskell-distributed-node)  |
          |      +------------------------------+
          |                                 |
          V                                 V
+-------------------------+   +------------------------------+
|    Typed Channel API    |   |      Transport Interface     |
|     (control-chan)      |   |      (network-transport)     |
+-------------------------+   +------------------------------+
     |                                      |
     V                                      V
+------------------+          +------------------------------+
| concurrency/STM  |          | Haskell/C Transport Library  |
+------------------+          +------------------------------+
Clone this wiki locally