Sat Feb 16 12:41:57 EST 2019


If a services is just state + state update handlers, why cannot
everything be expressed as a database (or filesystem) + transaction

It probably cam but there is a problem:

A running process is a cache of its instantiation in the sense that it
is linked to other instantiations.

So, while it would be possible to have all references be in a data
structure, where all references are symbolic, it is usually not
practically feasible.

However, thinking about state in this way makes it possible to rebuild
the cache at any time.

Some roadmaps:

- instrument obj:call to make changes to back-end storage

- a global namespace is needed for all processes

- alternatively, a simple way to snapshot is needed, mapping
  non-serializable processes and ports to instantiation functions.

EDIT: It's actually quite nice to map this to Erlang: always use raw
process references, but monitor them so restart = rebind.  This does
need a way to save the state in unbound form.