Skip to main content

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: .rv source 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, --package entry 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 args and readFile; no dates, no networking. JS interop is the escape valve.
  • No lambdasmap and friends take named functions.
  • No keyword arguments.
  • No user-defined macrosfn, for etc are macros, but you can't write your own yet.
  • match doesn'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 unimplemented or an inference error you can't explain, it's likely our bug, not yours. Please report it.

Roadmap

Roughly in order of priority:

  1. Core data structures – hash maps and sets in the standard library.
  2. Lambdas.
  3. Packages proper – manifests, versioning, a registry, separate compilation.
  4. Exhaustiveness checking for match.
  5. Stabilising concurrency.
  6. User-defined macros.
  7. Richer editor tooling – completion, hover docs from @doc strings.

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.