i know less than nothing here, of course, but... any way to make the
default case of "nothing has changed" be somehow fast (enough), and
only the "oh poop things got edited" have to go into slow-mo for a
second to adjust?
iiuc, erlang doesn't have transactions so it is a different situation.
when you redefine a function, the next time the (standard approach to
writing erlang actors) tail call goes back into the function it will
be actually going into the new definition. so of course that limits
exactly what can be changed. and it only allows for one version to be
running at a time so anything depending on it would have to be
upgraded somehow simultaneously? (well, erlang systems tend to be
written to handle errors well i guess so maybe you can step-wise
upgrade bits and pieces until it is all working again.)
On a related note, would it be possible to implement atomic, system-
wide transactions by suspending the current computation, replacing
some root bindings, and continuing? How do long-running systems like
Erlang handle this problem?
-Stuart
This document appears to have been removed from its server. Google
Scholar still indexes it (with only a single hit on the full, quoted
title) and (for now) has a HTML conversion of it, which I snatched,
just in case no other copy becomes available and that entry ages out of
Google's cache.
A little more poking around (using regular Google instead of Google
Scholar) turned up this:
<http://www.cs.brown.edu/research/pubs/theses/phd/2008/cooper.pdf>
Randall Schulz