[cells-devel] Cells II Functional Requirements
Kenny Tilton
ktilton at nyc.rr.com
Tue Jun 8 01:51:34 UTC 2004
Cells II seems to be OK, and is back at work running Cello as well as
passing its regression tests. It will be released when I figure out
whether to put everything up on the Cells or Cello project. I plan from
here out to focus more on developing a commercial title (using Cello)
than on porting Cello. This may mean I will not even look at OS X until
the commercial title is ready to go and I want the OS X version (I
will). This also means I want a very simple way to share my ongoing work
on Cello/Cells and the easiest will be to have one cvs repository I
update periodically.
Anyway, for now, here is the spec which guided the Cells II rewrite:
Suppose the application is at some steady state S in which all Cells
(slots of instances) are either inputs (what I used to call c-variable)
or have been computed from other Cells.
Now the application polls a socket or OS event stream and gets a new
input, which leads to some cell X being assigned a new value.
Suppose also the new value for X is different from the prior value
(according to a user-definable test). We now have not just a write
operation but also a semantically meaningful change to X, so we also
consider a new state S+ to have been established, with X being the
only Cell to have reached state S+.
Now suppose there exists some cell A which depends only on cell B which
depends only on X. Suppose also that when cell B gets recomputed to
reach state S+, the change test for B's new value indicates "no change".
Let us then say B is dependent on the change to X but /unaffected/ by it.
At this point, all data points other than X are obsolete. Formally:
dX establishes state S+;
X is by definition affected by dX, and reaches S+ trivially;
all state unaffected by dX is considered to be at state S+;
all other state is still at S.
Cells is responsible for automatically ensuring all data points reach
state S+ within these constraints:
[] completeness: all non-lazy cells affected by X will be recomputed
[] consistency: once state S+ exists, computations should involve
values only from state S+. Note that this means state S++ cannot be allowed
to arise during the transition from S to S+.
[] effciency: only cells affected by X get recomputed, only once, and
only those cells which change will be scheduled for output.
[] useability: no re-entry of cell computation code, mainly so that
programmers need not worry about it.
kt
More information about the cells-devel
mailing list