> 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.