On 06/10/2021 10:56, Remi Forax wrote:
- Existing class types like LocalDate are both nullable and atomic. These are
useful properties to preserve during migration; nullability, in particular, is
essential for source compatibility. We've provided reference-default
declarations as a mechanism to make reference types (which have these
properties) the default, with 'P.val' as an opt-in to value types. But in doing
so we take away the many benefits of value types by default, and force new code
to work with the "bad name".
The existing class LocalDate is not atomic per se, atomic in Java implies 
volatile and currently if a LocalDate field is updated in one thread, another 
thread may never see that update.
LocalDate is currently not tearable, a QLocalDate; is tearable in case of racy 
code.

The fact that QLocalDate is tearable is a consequence of the fact that e.g. elements of a QLocalDate[] cannot be read/written atomically - e.g. in a single shot, unlike for references - which are pointers and can be loaded/stored atomically (as per Java Memory Model).

It's true the word "atomic" is sometimes used to refer to operations such as CAS which provide strong inter-thread guarantees - this is not what Dan had in mind here.

Maurizio

Reply via email to