What's not built yet
Designed, not builtThe gaps that remain, as of the latest build log step. Read this before assuming anything else in this manual.
Most of what earlier versions of this page listed (dictionaries, var and loops, variants and switch, imports,
tuples, interpolation, pipes, tests, doc comments, floats, bytes) now exists and has its own page in the sidebar. What
is still missing, or only partly there:
Sketched, with no parser support
Explicit type-parameter lists on a function, written <'a> in the binder position. Ordinary generic data types,
ability-polymorphic binders (<'e>) and named type variables in annotations ((x: 'a): 'a) are built; a generic
function is otherwise simply inferred.
Not designed at all yet
- Handlers written as ordinary functions (
handle e with handler), effect-variable types such as{g}, and operations that take a delayed computation or a generic function. Clay’shandlehas inline clauses only. - Structural matching across unrelated record types, (a
.modifyhelper is decided against: path assignment covers it). - A real map type behind
dict(iteration withfor (k, v) in dis built; the representation is still a sorted list). - Concurrency and networking primitives.
Built, but narrower than the design
- Abilities: a declared-but-unused ability is refused (stricter than Unison).
- Imports are per file and never stored; a directory tree derived from names is not built.
- Constructors, ability operations and record fields cannot be renamed (the type’s own name can).
- Storage: tested against a local S3 mock only; real AWS, R2 and B2 are untried. Planning a bring-in and opening a definition are lazy (request-count tested against the mock); a stored partial replica and pinning are not built.
- Offline, nothing is verified by UCM: the Rust kernel’s checker and hasher decide, and the server (when present) cross-checks.
Also unsettled, even on paper
- Whether Clay restricts comparison operators (
<,>) to numeric types, or keeps Unison’s fully polymorphic comparisons. - The typing rule for a bare
.keyon a dict, as opposed tod["k"], which is built.
docs/open-issues.md in the repository is the full, ranked list.