> On May 18, 2022, at 8:24 AM, Dan Smith <daniel.sm...@oracle.com> wrote:
> 
> EG Zoom meeting today at 4pm UTC (9am PDT, 12pm EDT).
> 
> Recent threads to discuss:
> 
> - "User model stacking: current status": Brian talked about factoring 
> atomicity out of the B2/B3 choice, as an extra choice applying to B3 (and 
> perhaps B2, too)
> 
> - "Nullity (was: User model stacking: current status)": Brian explored the 
> possibility of using '?' and '!' as alternatives to '.ref' and '.val' for B3 
> classes, anticipating more general support in the language for null-free types
> 
> - "User model: terminology": Brian summarized the different features that 
> need labels (non-identity classes, non-identity classes with a valid zero, 
> tearable classes, types with and without null)

Summary of this discussion:

Reviewed how we ended up with concerns about the status quo approach to 
primitive classes (documented in JEP 401), how we wanted a better story for 
tearing, and different strategies that have been considered there. Nothing new 
here, just summarizing.

Dug into some details of the nullable+tearable combination:

- A tearable B2 class is probably a mismatch—if you can tear, you can create a 
zero value, but the B2 has declared itself zero-hostile. No objections, then, 
to the idea that atomic/non-atomic is a property of B3 only (or equivalently, 
by giving up atomicity you've entered a new category, B4).

- Tearable+nullable B3 types (e.g., 'LPoint;' could be considered tearable) 
remain a possible area to explore. There's some concern about user 
model—tearing a null leads to surprising outcomes after a null check and 
possible hard-to-observe memory leaks—and implementation. It would help to 
ground this conversation in some more concrete examples, though.

Reply via email to