Jonathan S. Shapiro
shap at eros-os.org
Sun Jul 17 11:41:00 EDT 2005
After some discussion, I am making the following changes to the syntax
for statefull interfaces and imports.
1. STATEFULL-INTERFACE is removed from the language. In the absence of
other declaration, the declarations and definitions presented in an
interface must be implemented by deeply non-mutating implementations.
2. When it is necessary to specify an interface with statefull elements,
the syntax will be:
... definitions and declarations ...)
The current specification, updated in the obvious way to replace modules
with interfaces, might suggest that performing an import on a statefull
interface should import only the deeply non-mutating subset of the
interface. This was a design error. IMPORT on a stateful INTERFACE is an
After some back and forth by email, MarkM and I agree that
STATEFULL-IMPORT is motivated by social rather than technical concerns.
We also agree that the keyword is impossibly ugly.
However, having said this, we continue to feel that given the types of
applications for which BitC is envisioned, it is desirable to be
explicit when the possibility of state is introduced by an import.
Therefore, we want to keep the conceptual distinction between IMPORT and
STATEFULL-IMPORT. We are, however, changing the keyword.
I initially proposed IMPORT* to MarkM. He points out that Java
developers will tend to misread this, and suggests IMPORT! (which
suggests mutation). I am provisionally going to go with IMPORT!.
More information about the bitc-dev