@@ -78,21 +78,32 @@ type Exclusive = ExclusiveCapability
7878 */
7979trait Control extends SharedCapability , Classifier
8080
81- /** Marker trait for classes with methods that require an exclusive reference. */
81+ /** Marker trait for classes that can consult and change the global program state.
82+ * These classes typically contain mutable variables and/or update methods.
83+ */
8284@ experimental
83- trait Mutable extends ExclusiveCapability
85+ trait Stateful extends ExclusiveCapability
8486
85- /** Marker trait for classes with reader methods, typically extended by Mutable classes */
87+ /** Marker trait for classes that produce fresh capabilities with their values. If a value of a type
88+ * extending Separate is created, a fresh `cap` is automatically added to the value's capture set.
89+ */
8690@ experimental
87- @ deprecated
88- trait Read extends Mutable
91+ trait Separate extends ExclusiveCapability
8992
90- /** Marker trait for classes that are not subject to scoping restrictions
91- * of captured capabilities.
93+ /** Marker trait for classes that are not subject to scoping restrictions of captured capabilities.
9294 */
9395@ experimental
9496trait Unscoped extends ExclusiveCapability , Classifier
9597
98+ @ experimental
99+ trait Mutable extends Stateful , Separate // , Unscoped
100+
101+ /** Marker trait for classes with reader methods, typically extended by Mutable classes */
102+ @ experimental
103+ @ deprecated
104+ trait Read extends Mutable
105+
106+
96107/** Carrier trait for capture set type parameters */
97108@ experimental
98109trait CapSet extends Any
0 commit comments