lhmouse/asteria

`opaque` and non-copyable classes

Closed this issue · 1 comments

One of the core principles of Asteria is that values may be copied and destroyed with no side effects. The current implementation relies heavily on copy-on-write. For extensibility and interoperability, we added the opaque type, but:

  1. If an opaque object is copied via COW, will the user observe the difference?
  2. If a COW'd object is modified, will other references to the same object observe the modification (note functions are immutable)?
  3. If the user really wishes to perform a deep copy, when should the object be copied?

Resolved in 01297f8.