Goals and Core Model
Goals
- Use mutable value semantics (MVS): values are logically independent, and each value can be mutated.
- Avoid tracing garbage collection.
- Avoid manual memory management in user code.
- Keep copies explicit at the assignment/operator level with predictable eager-copy behavior.
- Keep memory behavior deterministic.
Core Model
- Mutable Value Semantics - value semantics, no visible aliasing, no identity, but values are locally mutable.
- No garbage collector or manual memory management - deterministic ownership and drop in generated code.
- Second-class references - references may only be created in function and block signatures and may not outlive the function/block invocation.
- Keep ownership costs predictable - borrows and moves avoid extra copy work.
No-Cycle Constraint
The language disallows ownership cycles, and those cycles should be impossible to create within MVS.
- Composite ownership graphs must be acyclic.
- Strong back-references that would create cycles are invalid.
Because cycles are disallowed, ownership-based drop remains sufficient for reclamation.