Let's talk about terminology.  (This is getting dangerously close to a call-for-bikeshed, so let's exercise restraint.)

Currently, we have primitives and classes/references, where primitives have box/wrapper reference companions.  The original goal of Bucket 3 was to model primitive/box pairs. We have tentatively been calling these "primitives", but there are good arguments why we should not overload this term.

We have tentatively assigned the phrase "value class" to all identity-free classes, but it is also possible we can use value to describe what we've been calling primitives, and use something else (identity-free, non-identity) to describe the bigger family.

So, in our search for how to stack the user model, we should bear in mind that names that have been tentatively assigned to one thing might be a better fit for something else (e.g., the "new primitives").  We are looking for:

 - A term for all non-identity classes.  (Previously, all classes had identity.) - A term for  what we've been calling atomicity: that instances cannot appear to be torn, even when published under race.  (Previously, all classes had this property.)  - A term for those non-identity classes which do not _require_ a reference.  These must have a valid zero, and give rise to two types, what we've been calling the "ref" and "val" projections.
 - A term for what we've been calling the "ref" and "val" projections.

Let's start with _terms_, not _declaration syntax_.

Reply via email to