Open
Description
As part of the on-going work to specify the language, we should specify the Scala memory model á la the Java memory model (JMM).
AFAIK, there is no specification of a memory model even for Scala 2: it is currently implicitly defined via implementation details and the JMM. This situation becomes tenuous now that there is another multi-threaded implementation of Scala: Scala Native 0.5. The implementation details are completely different on the Native platform and there is no JVM runtime enforcing the JMM, so for a consistent, cross-platform language experience it is important that we independently define the memory model.
Linking to typelevel/cats-effect#3899.