Language Proposals

Design decisions and rationale for language features. Proposals go through draft review before approval or rejection.

134 approved 23 drafts 7 rejected
Back to Roadmap

Drafts

23 proposals

MCP Semantic Tooling Server

An MCP (Model Context Protocol) server that exposes the Ori compiler's semantic knowledge to AI agents, providing instant answers to queries that currently require file scanning, and verified code tra...

Eric (with Claude) Created March 5, 2026

Test-Driven Profile-Guided Optimization

Leverage Ori's mandatory test infrastructure as an automatic source of PGO (Profile-Guided Optimization) training data. Since every function requires tests and tests live in the dependency graph, `ori...

Eric (with Claude) Created February 28, 2026

@cImport — Compile-Time C Header Import

`@cImport` reads C header files at compile time using libclang (already bundled via LLVM), translates C declarations into Ori `extern "c"` blocks, and applies automatic type mapping from C types to Or...

Eric Created February 23, 2026

Built-in Linter and Format-on-Compile

Ori eliminates external linting tools and formatting debates by building both directly into the compiler:

Eric (with AI assistance) Created February 18, 2026

Capability Sets

This proposal introduces **capability sets** — named, reusable collections of capability bindings that can be defined once and applied with `with`. This eliminates repetitive capability wiring while m...

Eric (with AI assistance) Created February 3, 2026

Minimal FFI for Console Support

This proposal defines the **minimal FFI features** required to implement console/terminal support in Ori. Rather than implementing the full FFI specification (Section 11) upfront, we identify the prec...

Eric (with AI assistance) Created February 3, 2026

Binary Size Units (IEC Standard)

Add binary (1024-based) size units alongside the existing SI (1000-based) units, following the IEC standard naming convention (`kib`, `mib`, `gib`, `tib`).

Eric (with AI assistance) Created February 3, 2026

std.console API Design

This proposal defines `std.console`, Ori's first-class console/terminal library. The goal is to provide **the best console support of any programming language** — correct Unicode handling, honest capa...

Eric (with AI assistance) Created February 3, 2026

std.http FFI Backend Selection

This proposal selects the FFI backend for `std.http` — Ori's HTTP client and server library.

Created January 31, 2026

std.regex FFI Backend Selection

This proposal selects the FFI backend for `std.regex` — Ori's regular expression library.

Created January 31, 2026

Standard Library Resilience API

This proposal defines the `std.resilience` module, providing retry logic with configurable backoff strategies. The module enables robust error handling for transient failures in network calls, databas...

Eric (with AI assistance) Created January 31, 2026

Standard Library Validate API

This proposal defines the `std.validate` module, providing declarative validation with error accumulation. Unlike fail-fast validation that stops at the first error, this module collects all validatio...

Eric (with AI assistance) Created January 31, 2026

Parameterized and Property-Based Testing

Add parameterized and property-based testing to Ori via the `#test` attribute. Tests can declare parameters that are supplied by data lists, generators, or exhaustive enumeration.

Eric (with Claude) Created January 30, 2026

std.fs Windows FFI Implementation

This proposal adds Windows FFI implementation details to the approved `std.fs` API. File system operations on Windows are backed by Win32 APIs from kernel32.dll, with UTF-16 string handling and handle...

Created January 30, 2026

std.math API Design

A comprehensive mathematics module providing constants, elementary functions, trigonometry, and statistics for numeric computation in Ori. Core mathematical functions are backed by **libm** (the stand...

Created January 30, 2026

std.time API Design (FFI Revision)

This revision adds FFI implementation details to the approved `std.time` proposal. The public API remains unchanged; this documents the C library backends.

Created January 30, 2026

Ori Scripts and Developer Tooling

Add a simple, npm-style scripts system to Ori with built-in cross-platform file operations. Keep it dead simple - just string commands - while fixing the pain points that plague npm scripts.

Eric (with Claude) Created January 27, 2026

Graph Data Structure in Standard Library

Add `Graph<N, E>` to `std.collections` for representing directed and undirected graphs without reference cycles. Uses dual adjacency maps for O(1) bidirectional traversal.

Eric (with Claude) Created January 26, 2026

Print Capability with String Interpolation

Extend the `Print` capability to work seamlessly with string interpolation, enabling formatted output that can be redirected to different channels (stdout, buffers, logs).

Eric (with AI assistance) Created January 26, 2026

LRU Cache in Standard Library

Add `LRUCache<K, V>` to `std.collections` for bounded caching with least-recently-used eviction. Uses timestamp-based tracking instead of a doubly-linked list to maintain ARC safety.

Eric (with Claude) Created January 26, 2026

Undo History in Standard Library

Add `History<T>` to `std.collections` for undo/redo functionality using persistent data structures instead of the command pattern. Keep old states rather than computing inverses.

Eric (with Claude) Created January 26, 2026

Zipper Data Structures in Standard Library

Add `Zipper<T>` and `TreeZipper<T>` to `std.collections` for efficient cursor-based traversal and editing of sequences and trees without reference cycles.

Claude (with Eric) Created January 26, 2026

Hive Container

Add `Hive<T>` to the standard library — a container optimized for frequent insertion and erasure while maintaining stable references. Based on C++26's `std::hive`.

Eric Created January 22, 2026

Approved

134 proposals

Byte Literals

Add byte literal syntax `b'x'` for creating `byte` values directly, mirroring the existing `char` literal syntax `'x'`. Additionally, add `\xHH` hex escapes to both byte and char literals.

Eric (with Claude) Approved March 5, 2026

Byte-Level String Access

Add methods for accessing the raw UTF-8 bytes of a `str` value, and provide efficient byte-buffer types for byte-oriented processing like lexers and parsers.

Eric (with Claude) Approved March 5, 2026

Character and Byte Classification Methods

Define standard classification methods on `char` and `byte` types for character category testing. These are essential for text processing, lexers, parsers, and input validation.

Eric (with Claude) Approved March 5, 2026

Colon Syntax for Trait Implementations

Replace `impl Trait for Type` with `impl Type: Trait`, putting the subject before the predicate and unifying impl syntax with every other `:` conformance position in the language.

Eric (with Claude) Approved March 5, 2026

Intrinsics v2 — Generic SIMD API & Byte Operations

This proposal: 1. Redesigns the Intrinsics SIMD API from explicit-width functions to generic operations that monomorphize based on lane type and width 2. Adds byte-level SIMD operations — the foundati...

Eric (with AI assistance) Approved March 5, 2026

Labeled Block Early Exit

Allow `break:label value` to exit named blocks early with a value, providing early-exit ergonomics without adding a `return` keyword.

Eric (with Claude) Approved March 5, 2026

Mutable Self

Make `self` a mutable binding in method bodies, consistent with Ori's mutable-by-default philosophy. Methods that mutate `self` implicitly propagate the modified value back to the caller through desug...

Eric (with Claude) Approved March 5, 2026

Range Patterns on char and byte

Extend range patterns in `match` to work on `char` and `byte` types, enabling concise character classification in pattern matching.

Eric (with Claude) Approved March 5, 2026

Value Trait — ARC-Free Value Types

Introduce a `Value` marker trait that guarantees a type is always stored inline, copied by value, and completely bypasses ARC (automatic reference counting). Types declared with `Value` are never heap...

Eric (with AI assistance) Approved March 5, 2026

While Loop Expression

Add `while condition do body` loop syntax as sugar over `loop { if !condition then break; body }`.

Eric (with Claude) Approved March 5, 2026

Argument Punning

Allow omitting the value in a named function argument when the argument name matches the variable name being passed. `f(target: target)` can be written as `f(target:)`. This extends the existing struc...

Eric Approved February 21, 2026

Compound Assignment Operators

Add compound assignment operators (`+=`, `-=`, `*=`, `/=`, `%=`, `@=`, `&=`, `|=`, `^=`, `<<=`, `>>=`, `&&=`, `||=`) that desugar to `x = x op y`. This is pure syntactic sugar — no new traits, no new ...

Eric Approved February 21, 2026

Deep FFI — Higher-Level Foreign Function Interface

Deep FFI is a set of opt-in annotations and compiler features that layer on top of the existing `extern` declaration syntax. Five abstractions — declarative marshalling, ownership annotations, error p...

Eric Approved February 21, 2026

IsEmpty Trait for Collection Emptiness

Eric (with AI assistance) Approved February 21, 2026

`@` Matrix Multiplication Operator

Add `@` as a binary operator for matrix multiplication, following Python's PEP 465 convention. The operator desugars to the `MatMul` trait method `matrix_multiply()`, following the same pattern as all...

Eric Approved February 21, 2026

Pipe Operator

Add a pipe operator `|>` for left-to-right function composition. The piped value automatically fills the single unspecified parameter — no placeholder needed. This follows the same principle as delega...

Eric Approved February 21, 2026

`**` Power / Exponentiation Operator

Add `**` as a binary operator for exponentiation. The operator desugars to the `Pow` trait method `power()`, following the same pattern as all existing operator traits. `**` is right-associative and b...

Eric Approved February 21, 2026

Capability Unification & Generics Upgrade

Establish a consistent vocabulary for capabilities — **`:`** for structural capabilities (what types *have*) and **`uses`** for environmental capabilities (what functions *do*) — replacing the disconn...

Eric (with AI assistance) Approved February 20, 2026

Comma-Separated Match Arms

Change match arm separators from newlines to commas. Trailing commas are optional. This aligns match syntax with Rust, removes newline significance as a special case, and improves grammar consistency ...

Eric Approved February 20, 2026

Unsafe Semantics

Define `Unsafe` as a **marker capability** (like `Suspend`) that gates operations the compiler cannot verify. The `unsafe { }` block discharges the `Unsafe` capability locally — a programmer assertion...

Eric (with AI assistance) Approved February 20, 2026

Block Expression Syntax — `{ }` Replaces `run()` / `match()` / `try()`

Replace the parenthesized `function_seq` syntax with curly-brace block syntax. Move contracts from `run()` body-level to C++-style function-level declarations. Remove `run()` entirely.

Eric Approved February 19, 2026

Representation Optimization

Formalize the compiler's freedom to optimize the machine representation of types during lowering. The programmer writes `int`, `float`, and other high-level types; the compiler selects the most effici...

Eric Approved February 19, 2026

Compile-Time File Embedding (`embed`)

Add compile-time `embed` and `has_embed` expressions for embedding file contents into Ori programs. The `embed` expression is type-driven: the expected type determines whether the file is embedded as ...

Eric (with Claude) Approved February 18, 2026

Len Trait for Collection Length

Eric (with AI assistance) Approved February 18, 2026

Stateful Mock Testing in the Capability System

Ori's capability system uses `with...in` to provide mock implementations for testing. However, some tests require mocks that accumulate state across multiple calls (e.g., a counter that increments). B...

Eric (with AI assistance) Approved February 18, 2026

Index and Field Assignment via Copy-on-Write Desugaring

Eric (with AI assistance) Approved February 17, 2026

Named Capability Sets (`capset`)

This proposal introduces `capset`, a named capability set declaration that groups multiple capabilities under a single name. Capsets are transparent aliases — they expand to their constituent capabili...

Eric (with AI assistance) Approved February 15, 2026

Copy Semantics and Additional Reserved Keywords

Extend the low-level future-proofing proposal with:

Claude (with Eric) Approved February 2, 2026

Decimal Duration and Size Literals

Allow decimal syntax in duration and size literals as compile-time sugar that converts to exact integer values in the base unit.

Eric Approved February 2, 2026

Low-Level Future-Proofing

Reserve design space in Ori's type system and IR to enable future low-level programming features (stack-allocated types, borrowed views, arenas) without breaking ARC semantics or the high-level progra...

Eric Approved February 2, 2026

Repr Extensions

Extend the `#repr` attribute to support additional memory layout controls beyond `#repr("c")`. Add `#repr("packed")`, `#repr("transparent")`, and `#repr("aligned", N)` for fine-grained control over st...

Eric Approved February 2, 2026

Runtime Library Discovery

Define how the Ori compiler discovers `libori_rt.a` (the runtime library) during AOT compilation. Following rustc's sysroot pattern, discovery walks up from the compiler binary location rather than re...

Approved February 2, 2026

AOT Test Backend

Add a new `Backend::AOT` test execution mode that compiles `.ori` tests through the full Ahead-of-Time compilation pipeline: LLVM IR generation → object file emission → linking → binary execution. Thi...

Eric (with Claude) Approved February 1, 2026

Multi-File AOT Compilation

Enable AOT compilation of Ori programs that use `use` statements to import functions from other files. Currently, `ori build` silently produces broken binaries when the source file imports from other ...

Eric (with Claude) Approved February 1, 2026

AOT Compilation

This proposal formalizes the Ahead-of-Time (AOT) compilation pipeline for Ori, covering object file generation, optimization passes, linking, debug information, and target configuration.

Eric (with AI assistance) Approved January 31, 2026

Associated Functions as a Language Feature

Implement associated functions as a general language feature that works for any type with an `impl` block, rather than hardcoding support for specific types like Duration and Size.

Claude Approved January 31, 2026

Associated Functions Proposal

Add support for associated functions (static methods) on types, enabling syntax like `Duration.from_seconds(s: 10)` and `Size.from_bytes(b: 1024)`.

Claude Approved January 31, 2026

Basic Const Generics

This proposal formalizes const generic parameters (`$N: int`), enabling compile-time values as type and function parameters. Const generics allow types like fixed-capacity lists to encode their capaci...

Eric (with AI assistance) Approved January 31, 2026

Default Associated Types

Allow associated types in traits to have default values, enabling `type Output = Self` where implementors can omit the associated type if the default is acceptable.

Claude Approved January 31, 2026

Default Type Parameters on Traits

Allow type parameters on traits to have default values, enabling `trait Add<Rhs = Self>` where `Rhs` defaults to `Self` if not specified.

Claude Approved January 31, 2026

Move Duration and Size to Standard Library

Remove Duration and Size as compiler built-in types and implement them as regular Ori types in the standard library prelude, using pure language features. Literal suffixes (`10s`, `5mb`) remain compil...

Claude Approved January 31, 2026

Existential Types (impl Trait)

This proposal formalizes the `impl Trait` syntax for existential types in Ori. Existential types allow functions to return opaque types that satisfy trait bounds without exposing the concrete type to ...

Eric (with AI assistance) Approved January 31, 2026

For-Do Expression

This proposal formalizes the `for...in...do` iteration expression syntax, including binding patterns, guard conditions, break/continue semantics, and interaction with labeled loops.

Eric (with AI assistance) Approved January 31, 2026

If Expression

This proposal formalizes the `if...then...else` conditional expression syntax, including type compatibility rules, branch evaluation, and interaction with the `Never` type.

Eric (with AI assistance) Approved January 31, 2026

Labeled Loops

This proposal formalizes labeled loop semantics, including label syntax, break/continue targeting, scope rules, and interaction with loop values.

Eric (with AI assistance) Approved January 31, 2026

Loop Expression

This proposal formalizes the `loop(...)` infinite loop expression syntax, including break/continue semantics, type inference from break values, and interaction with labeled loops.

Eric (with AI assistance) Approved January 31, 2026

LSP Implementation

This proposal formalizes the design and implementation decisions for Ori's Language Server Protocol (LSP) implementation, addressing architecture, integration, and design questions not covered in the ...

Eric (with AI assistance) Approved January 31, 2026

Match Expression Syntax

This proposal formalizes the syntax and semantics of match expressions in Ori. Match expressions provide pattern matching with exhaustiveness checking, enabling concise and safe destructuring of value...

Eric (with AI assistance) Approved January 31, 2026

Never Type Semantics

This proposal formalizes the `Never` type semantics, including its role as a bottom type, coercion rules, and use cases.

Eric (with AI assistance) Approved January 31, 2026

Newtype Pattern

This proposal formalizes newtype semantics, including type distinctness, conversions, trait inheritance, and use cases.

Eric (with AI assistance) Approved January 31, 2026

Operator Trait Method Naming

Rename operator trait methods to use full words instead of abbreviations for consistency and readability.

Claude Approved January 31, 2026

Operator Traits Proposal

Define traits for arithmetic, bitwise, and unary operators that user-defined types can implement to support operator syntax. The compiler desugars operators to trait method calls.

Claude Approved January 31, 2026

Ordering Type

This proposal formalizes the `Ordering` type, including its variants, use with `Comparable`, and common operations.

Eric (with AI assistance) Approved January 31, 2026

Package Version Resolution

Ori uses **exact version pinning** with a **single version policy**. No caret, no tilde, no ranges. Each package appears exactly once in the dependency graph at the version specified in `oripk.toml`.

Approved January 31, 2026

App-Wide Panic Handler

Add an optional app-wide `@panic` handler function that executes before program termination when a panic occurs. This provides a hook for logging, error reporting, and cleanup without enabling local r...

Eric (with AI assistance) Approved January 31, 2026

Recurse Pattern

This proposal formalizes the `recurse` pattern semantics, including memoization, parallel options, termination guarantees, and the `self` keyword.

Eric (with AI assistance) Approved January 31, 2026

Reflection API

This proposal introduces a reflection API for Ori that enables runtime type introspection while maintaining the language's safety guarantees. The design centers on an opt-in `Reflect` trait with stati...

Ori Language Team Approved January 31, 2026

Standard Library Philosophy

Ori's standard library follows a "batteries included, independently versioned" philosophy. Official `std.*` packages cover common programming tasks, are maintained by the core team with long-term comm...

Approved January 31, 2026

Timeout and Spawn Patterns

This proposal formalizes the `timeout` and `spawn` pattern semantics, including cancellation behavior, error handling, and relationship to other concurrency patterns.

Eric (with AI assistance) Approved January 31, 2026

Variadic Functions

Add variadic function parameters allowing functions to accept a variable number of arguments of the same type.

Eric Approved January 31, 2026

WASM Playground

This proposal formalizes the design and implementation decisions for Ori's browser-based WASM playground, which allows users to write, run, and format Ori code directly in the browser without any loca...

Eric (with AI assistance) Approved January 31, 2026

With Pattern (Resource Acquisition)

This proposal formalizes the `with` pattern semantics for resource acquisition, use, and guaranteed release.

Eric (with AI assistance) Approved January 31, 2026

Additional Built-in Functions and Types

This proposal formalizes three built-in functions and one type: `repeat`, `compile_error`, `PanicInfo`, and clarifies the null coalescing operator (`??`).

Eric (with AI assistance) Approved January 30, 2026

Additional Core Traits

This proposal formalizes three core traits: `Printable`, `Default`, and `Traceable`.

Eric (with AI assistance) Approved January 30, 2026

Cache Pattern

This proposal formalizes the `cache` pattern semantics, including TTL behavior, key requirements, cache invalidation, and capability interaction.

Eric (with AI assistance) Approved January 30, 2026

Closure Capture Semantics

This proposal specifies precise closure capture semantics, including when captures occur, how mutable bindings interact with captures, closure behavior across task boundaries, and memory implications....

Eric (with AI assistance) Approved January 30, 2026

Comparable and Hashable Traits

This proposal formalizes the `Comparable` and `Hashable` traits, including their definitions, invariants, standard implementations, and derivation rules.

Eric (with AI assistance) Approved January 30, 2026

Computed Map Keys

Formalize map literal key semantics: bare identifiers are literal string keys (like TypeScript/JSON), and `[expression]` syntax enables computed keys.

Approved January 30, 2026

Conditional Compilation

Add conditional compilation support to Ori, allowing code to be included or excluded based on target platform, architecture, or custom build flags.

Eric (with AI assistance) Approved January 30, 2026

Const Evaluation Termination

This proposal specifies the termination guarantees and limits for compile-time constant evaluation, addressing what happens when const functions don't terminate, how long compilation can spend on cons...

Eric (with AI assistance) Approved January 30, 2026

Const Generic Bounds

This proposal formalizes const generic bounds (e.g., `where N > 0`), including allowed constraints, evaluation semantics, and error handling.

Eric (with AI assistance) Approved January 30, 2026

Custom Subscripting for User-Defined Types

Eric (with AI assistance) Approved January 30, 2026

Default Implementation Resolution

This proposal specifies the resolution rules for `def impl` (default implementations), including how conflicts between multiple defaults are resolved, interaction with `with...in` bindings, and initia...

Eric (with AI assistance) Approved January 30, 2026

Derived Traits

This proposal formalizes the `#derive` attribute semantics, including derivable traits, derivation rules, field constraints, and error handling.

Eric (with AI assistance) Approved January 30, 2026

Developer Convenience Functions

Add three built-in functions to the prelude for common development tasks:

Eric (with Claude) Approved January 30, 2026

Drop Trait

This proposal formalizes the `Drop` trait for custom destructors, including execution timing, constraints, and interaction with ARC.

Eric (with AI assistance) Approved January 30, 2026

Duration and Size Literal Types

This proposal formalizes the `Duration` and `Size` types, including literal syntax, arithmetic operations, conversions, and comparison semantics.

Eric (with AI assistance) Approved January 30, 2026

Error Trace Semantics with Async and Catch

This proposal specifies how error traces interact with async code, the `catch` pattern, and `try` blocks, addressing gaps around trace preservation across task boundaries and when traces can be lost.

Eric (with AI assistance) Approved January 30, 2026

Extension Methods

This proposal formalizes extension method semantics, including definition syntax, import mechanics, conflict resolution, and scoping rules.

Eric (with AI assistance) Approved January 30, 2026

Fixed-Capacity Lists

Introduce fixed-capacity lists — inline-allocated lists with a compile-time maximum size. Useful for embedded systems, performance-critical code, and bounded buffers.

Eric Approved January 30, 2026

For-Yield Comprehensions

This proposal formalizes `for...yield` comprehension semantics, including type inference, filtering, nesting, and interaction with break/continue.

Eric (with AI assistance) Approved January 30, 2026

Formattable Trait and Format Specs

This proposal formalizes the `Formattable` trait and format specification syntax for customized string formatting.

Eric (with AI assistance) Approved January 30, 2026

Grammar Synchronization Formalization

Formalize the relationship between the grammar specification (`grammar.ebnf`), the Rust compiler implementation, and Ori language tests. Establish `grammar.ebnf` as the single source of truth for synt...

Eric Approved January 30, 2026

Index Trait

This proposal formalizes the `Index` trait for custom subscripting, including return type variants, multiple key types, and error handling patterns.

Eric (with AI assistance) Approved January 30, 2026

Into Trait

This proposal formalizes the `Into` trait for type conversions, including its relationship to explicit conversion, standard implementations, and use patterns.

Eric (with AI assistance) Approved January 30, 2026

Intrinsics Capability

This proposal formalizes the `Intrinsics` capability for low-level, platform-specific operations including SIMD, bit manipulation, and hardware feature detection.

Eric (with AI assistance) Approved January 30, 2026

Iterator Performance and Semantics

This proposal formalizes the performance characteristics and precise semantics of Ori's functional iterator model, addressing the unusual `(Option<Item>, Self)` return type, state copying behavior, an...

Eric (with AI assistance) Approved January 30, 2026

Memory Model Edge Cases

This proposal addresses edge cases in Ori's memory model, including reference count atomicity across tasks, destructor guarantees, panic during destruction, and value representation rules. It also for...

Eric (with AI assistance) Approved January 30, 2026

Module System Details

This proposal specifies module system details including entry point files (`lib.ori` vs `mod.ori` vs `main.ori`), circular dependency detection and error reporting, re-export chains, nested module vis...

Eric (with AI assistance) Approved January 30, 2026

Nursery Cancellation Semantics

This proposal specifies the exact semantics of task cancellation within nurseries, addressing gaps in the current spec around what happens when tasks are cancelled due to errors, timeouts, or early te...

Eric (with AI assistance) Approved January 30, 2026

Object Safety Rules

This proposal formally specifies which traits can be used as trait objects, defining the object safety rules that the compiler enforces.

Eric (with AI assistance) Approved January 30, 2026

Parallel Execution Guarantees

This proposal specifies the execution guarantees for the `parallel` pattern, addressing ambiguity around ordering, concurrency limits, resource exhaustion, and partial completion semantics.

Eric (with AI assistance) Approved January 30, 2026

Pattern Matching Exhaustiveness

This proposal specifies the algorithm and rules for pattern matching exhaustiveness checking, including how the compiler determines if all cases are covered, when errors are issued, and how pattern fe...

Eric (with AI assistance) Approved January 30, 2026

Platform FFI (Native & WASM)

A unified foreign function interface supporting both native platforms (via C ABI) and WebAssembly (via JavaScript interop). The same Ori code can target either platform with appropriate FFI backends, ...

Approved January 30, 2026

Rename Async Capability to Suspend

Rename the `Async` marker capability to `Suspend` to better reflect its semantics and avoid confusion with async/await patterns from other languages.

Eric (with AI assistance) Approved January 30, 2026

Sendable Trait and Interior Mutability Definition

This proposal clarifies the `Sendable` trait by defining what "interior mutability" means in Ori's context, specifying exactly which types are Sendable, and documenting verification rules for closures...

Eric (with AI assistance) Approved January 30, 2026

Simplified Doc Comment Syntax

Simplify doc comment syntax by removing the verbose `@param` and `@field` keywords. Use minimal markers that mirror familiar patterns:

Eric Approved January 30, 2026

std.crypto API Design

This proposal defines the API for `std.crypto`, providing cryptographic primitives for hashing, encryption, signatures, key exchange, and secure random number generation.

Eric (with AI assistance) Approved January 30, 2026

std.crypto FFI Implementation (Native)

This proposal adds native FFI implementation details to the approved `std.crypto` API. Cryptographic operations are backed by **libsodium** for modern algorithms and **OpenSSL** for RSA algorithms.

Approved January 30, 2026

std.fs API Design (FFI Revision)

This revision adds FFI implementation details to the approved `std.fs` proposal. File system operations are backed by POSIX APIs on Unix platforms. Windows support is deferred to a separate proposal.

Approved January 30, 2026

std.fs API Design

This proposal defines the API for `std.fs`, providing file system operations including reading, writing, directory manipulation, and file metadata.

Eric (with AI assistance) Approved January 30, 2026

std.json API Design (FFI Revision)

This revision adds FFI implementation details to the approved `std.json` proposal. JSON parsing/serialization uses **yyjson** on native platforms and **JavaScript's JSON API** on WASM, while keeping t...

Approved January 30, 2026

std.json API Design

This proposal defines the API for `std.json`, providing JSON parsing, serialization, and manipulation capabilities.

Eric (with AI assistance) Approved January 30, 2026

std.time API Design

This proposal defines the API for `std.time`, providing date/time types, formatting, parsing, arithmetic, and timezone handling.

Eric (with AI assistance) Approved January 30, 2026

Formalize Test Terminology

Standardize test terminology across the specification and documentation:

Eric (with Claude) Approved January 30, 2026

Trait Resolution and Conflict Handling

This proposal specifies rules for resolving trait implementation conflicts, including the diamond problem in trait inheritance, conflicting default implementations, coherence rules (orphan rules), and...

Eric (with AI assistance) Approved January 30, 2026

Capability Composition Rules

This proposal specifies how capabilities compose, including partial provision with `with...in`, nested binding behavior, capability variance, and resolution rules when defaults and explicit bindings i...

Eric (with AI assistance) Approved January 29, 2026

Default Implementations (`def impl`)

Introduce `def impl` syntax to declare a default implementation for a trait. When a module exports both a trait and its `def impl`, importing the trait automatically binds the default implementation t...

Eric (with Claude) Approved January 29, 2026

Task and Async Context Definitions

This proposal formally defines what a "task" is in Ori and specifies async context semantics. Currently, the spec uses these terms without precise definitions, making it impossible to reason about con...

Eric (with AI assistance) Approved January 29, 2026

Test Execution Model

Define the complete test execution model for Ori: when tests run, which tests run, and how the compiler integrates test execution into the build process. This proposal consolidates and extends the app...

Eric (with Claude) Approved January 29, 2026

`as` Conversion Syntax

Replace the special-cased `int()`, `float()`, `str()`, `byte()` type conversion functions with a unified `as` keyword syntax, backed by traits for extensibility.

Eric (with Claude) Approved January 28, 2026

Pre/Post Checks for the `run` Pattern

Extend the `run` pattern with optional `pre_check:` and `post_check:` properties to support contract-style defensive programming without introducing new syntax or keywords.

Eric Approved January 28, 2026

Clone Trait

Define the `Clone` trait that enables explicit value duplication. This trait is already referenced in the prelude and derivable traits list but lacks a formal definition.

Eric (with Claude) Approved January 28, 2026

Debug Trait

Add a `Debug` trait separate from `Printable` for developer-facing structural representation of values. `Debug` is automatically derivable and shows the complete internal structure, while `Printable` ...

Eric (with Claude) Approved January 28, 2026

Default Parameter Values

Allow function parameters to specify default values, enabling callers to omit arguments.

Eric Approved January 28, 2026

Error Return Traces

Add automatic stack trace collection to `Result` error paths, enabling developers to see where errors originated, not just where they were caught.

Eric Approved January 28, 2026

Multiple Function Clauses

Allow functions to be defined with multiple clauses that pattern match on arguments, enabling cleaner recursive and conditional logic.

Eric Approved January 28, 2026

Incremental Test Execution and Explicit Floating Tests

Two related changes to Ori's testing system:

Eric (with AI assistance) Approved January 28, 2026

Iterator Traits

Formalize iteration in Ori with four core traits: `Iterator`, `DoubleEndedIterator`, `Iterable`, and `Collect`. These traits enable generic code over any iterable, allow user types to participate in `...

Eric (with Claude) Approved January 28, 2026

No Circular Imports

The Ori compiler must reject circular import dependencies between modules. Import cycles are a compile-time error.

Eric (with AI assistance) Approved January 28, 2026

Integer Overflow Behavior

Define integer overflow behavior in Ori: panic by default for safety, with explicit stdlib functions for alternative behaviors (saturation, wrapping).

Eric Approved January 28, 2026

Range with Step

Extend range syntax to support a step value for non-unit increments.

Eric Approved January 28, 2026

Remove Dot Prefix from Named Arguments

Remove the `.` prefix from named arguments. Use `name: value` syntax instead of `.name: value`.

Claude (with Eric) Approved January 28, 2026

Remove `dyn` Keyword for Trait Objects

Remove the `dyn` keyword for trait objects. Use the trait name directly as a type to indicate dynamic dispatch.

Eric Approved January 28, 2026

Sendable Trait and Role-Based Channels

Eric (with AI assistance) Approved January 28, 2026

Simplified Attribute Syntax

Simplify attribute syntax from `#[name(...)]` to `#name(...)` by removing the brackets. This reduces visual noise while maintaining clear attribute identification.

Eric Approved January 28, 2026

Simplified Bindings with `$` for Immutability

Simplify Ori's binding model to two forms:

Eric Approved January 28, 2026

Positional Lambdas for Single-Parameter Functions

When a function has exactly one parameter and the argument is a lambda, allow omitting the parameter name:

Claude (with Eric) Approved January 28, 2026

Spread Operator

Add a spread operator `...` for expanding collections and structs in literal contexts.

Eric Approved January 28, 2026

String Interpolation

Add string interpolation to Ori using **template strings** with backtick delimiters. Regular double-quoted strings remain unchanged (no interpolation).

Eric (with AI assistance) Approved January 28, 2026

Structured Diagnostics and Auto-Fix

Extend the compiler's diagnostic system to output structured, machine-readable diagnostics with actionable fix suggestions that can be automatically applied. This enables:

Claude Approved January 28, 2026

Causality Tracking (`ori impact` and `ori why`)

Expose Salsa's dependency tracking to users via two commands:

Eric (with Claude) Approved January 28, 2026

Dependency-Aware Test Execution

Implement reverse dependency closure for test execution. When a function changes, automatically run tests for that function AND tests for all functions that depend on it (callers up the dependency gra...

Eric (with Claude) Approved January 25, 2026

function_seq and function_exp Pattern Distinction

Two changes:

Eric Approved January 22, 2026
×

Rejected

7 proposals