Exceptions and Panics Were a Mistake: Better Error Handling
Exceptions and panics turn ordinary control flow into hidden exits. Osprey makes expected failure explicit with Result types and algebraic effect handlers.
Language design and implementation notes.
Exceptions and panics turn ordinary control flow into hidden exits. Osprey makes expected failure explicit with Result types and algebraic effect handlers.
Semantic versioning records maintainer intent, not compatibility proof. Osprey's package plan proposes exact identity, compatibility epochs, and downstream testing.
Osprey ships opt-in Perceus automatic reference counting. The compiler inserts ownership operations, and the runtime reclaims values as owner counts reach zero.
Default and ML syntax lower to the same Osprey program representation.
Osprey now ships persistent List<T> and Map<K,V> backed by a 32-way bitmapped vector trie and a HAMT — the same data structures that power Clojure and Scala. Append, set and remove are O(log32 n); old versions of a collection stay valid in O(1) extra space.
Osprey-managed values are memory-safe; C calls cross that boundary.
Use union variants to represent API outcomes and match each case explicitly.