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_.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/valhalla-spec-experts/attachments/20220504/efd7f37c/attachment-0001.htm>


More information about the valhalla-spec-experts mailing list