Status & Roadmap
Raven is a young language. If you try it out today, you're beta testing: expect bugs, missing pieces and breaking changes. This page is the honest accounting.
What works today
- The full compile pipeline:
.rvsource to wasm (or JS) binaries, with type inference, inlining and reference counting. - The language core: functions, multiple dispatch, pattern matching, bundles, value semantics, swap arguments, loops and labels.
- Modules and packages: file imports, re-exports,
--packageentry points. - JS interop in both directions, including inline JS and promise handling without function colouring.
- The REPL, the formatter, stack traces, DWARF debug info, and a language server with diagnostics and formatting.
- An incremental compiler underneath it all – rebuilds and REPL interactions reuse previous work.
Known gaps and rough edges
- Standard library: sparse. No hash maps or sets; IO is
argsandreadFile; no dates, no networking. JS interop is the escape valve. - No lambdas –
mapand friends take named functions. - No keyword arguments.
- No user-defined macros –
fn,foretc are macros, but you can't write your own yet. matchdoesn't check exhaustiveness yet.- Concurrency (
async, channels) exists but is unstable – expect compiler errors on paths we haven't smoothed. - Compilation model: one entry file (plus imports) at a time; no separate compilation or package registry.
- Editor tooling: syntax highlighting, diagnostics and formatting, but not much more yet.
- Compiler error messages can be cryptic, especially from type inference – if you hit
unimplementedor an inference error you can't explain, it's likely our bug, not yours. Please report it.
Roadmap
Roughly in order of priority:
- Core data structures – hash maps and sets in the standard library.
- Lambdas.
- Packages proper – manifests, versioning, a registry, separate compilation.
- Exhaustiveness checking for
match. - Stabilising concurrency.
- User-defined macros.
- Richer editor tooling – completion, hover docs from
@docstrings.
Interfaces will change and break along the way; we don't yet promise compatibility between versions.
Following along
Development happens in the open on GitHub, with an occasional dev log. Questions and bug reports are very welcome – there's also a Discord.