Static values language extension proposal
Tim Watson
watson.timothy at gmail.com
Fri Jan 24 18:06:58 UTC 2014
I don't have time to weigh in on this proposal right now, but I have several comments...
On 24 Jan 2014, at 17:19, Facundo Domínguez wrote:
> Rationale
> =======
>
> We want the language extension to meet the following requirements:
>
> 1. It must be a practical alternative to the remoteTable functions
> in the distributed-static package.
>
Agreed - this is vital!
> 2. It must not change the build scheme used for Haskell programs. A
> collection of .o files produced from Haskell source code should still
> be possible to link with the system linking tools.
>
Also vital.
> 3. It must not restrict all communicating processes using the
> extension to be launched from the same binary.
>
I personally think this is very valuable.
> About the need for using different binaries
> ==============================
>
> While using distributed-process we found some use cases for supporting
> communicating closures between multiple binaries.
>
> One of these use cases involved a distributed application and a
> monitoring tool. The monitoring tool would need to link in some
> graphics libraries to display information on the screen, none of which
> were required by the monitored application. Conversely, the monitored
> application would link in some modules that the monitoring application
> didn’t need. Crucially, both applications are fairly loosely coupled,
> even if they both need to exchange static values about bindings in
> some modules they shared.
Indeed - this is an almost canonical use-case, as are administrative (e.g., remote management) tools.
> As the application depends on shared libraries, now a tool to collect
> these libraries would be required so they can be distributed together
> with the executable binary when deploying a Cloud Haskell application
> in a cluster. We won’t delve further into this problem.
Great idea.
>
> Another possible line of work is extending this approach so a process
> can pull shared objects from a remote peer, when this remote peer
> sends a static value that is defined in a shared object not available
> to the process.
This would go a long way towards answering our questions about 'hot code upgrade' and be useful in many other areas too.
More information about the Glasgow-haskell-users
mailing list