[cells-devel] Cells 3 and Celtk committed to CVS
Ken Tilton
kentilton at gmail.com
Thu Mar 16 19:30:25 UTC 2006
This is weird, I know I sent this but did not get it as a list
subscriber nor do I see it in my sent folder. Anyway, at pain of
repeating myself.
Cells 3 has been committed to CVS (not a new module, just Cells updated).
Celtk is a new module, a portable Cells Inside GUI built atop the core
of LTk. It requires Cells3.
I may actually do a little Cells doc by way of explaining Cells3
differences. The big deal can be sorted out by examining the
"finish-business" function. It makes apparent how Cells orchestrates
orderly state change. Cells3 also enforces that, by yelping if one
attempts a SETF in an observer -- you have to wrap the setf and any
computation relevant to that setf:
(with-integrity (:change)
<be safe, wrap the whole observer form>)
If this helps, here is what I had to do to port the test suite:
[s/old/new/w is the VAX EDT editor command for subsitute/old/new/whole]
s/def-c-output/defobserver/w
The syntax is unchanged. Any setfs of input Cells you have in the
body will cause a runtime error unless you wrap the form in
with-integrity as discussed above.
s/with-deference/with-integrity (:change)/w
turns out all the wrapped forms were SETFs. I kinda like the idea
of with-deference since, in the case of an observer setf, one really
is asking for a deferred action. with-integrity is a "maybe" deal --
it says "go ahead if not already under integrity handling.
s/make-be/make-instance/w
special handling now handled in shared-initialize
Forget to-be, not needed anymore
When the Family code squawks about :fm-parent being required, add:
:fm-parent self
...to the make-instance argument list. In some cases the instances
were being made without a surrounding (c? ...) form. That is needed to
have access to the parent instance self. btw, there is a make-kid
macro that is just (make-instance ',class :fm-parent self ...).
again, the cells engine yelps if it encounters a SETF needing wrapping
in: (with-integrity (:change) (setf ...))
Celtk shows a complicated example of using the client queue to get a
declarative Cells app to talk coherently to an imperative,
order-sensitive system.
kt
More information about the cells-devel
mailing list