User model: terminology
Brian Goetz
brian.goetz at oracle.com
Wed May 4 15:05:24 UTC 2022
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_.
More information about the valhalla-spec-observers
mailing list