Development Roadmap

This document serves as the evolving roadmap for RunMat to track the progress of the project towards the 1.0 release.

The core language and runtime are complete. The major remaining items are:

  • The GUI plotting backend has a few edges that need to be smoothed out.
  • The package manager needs to be implemented.
  • The JIT currently optimizes a subset of the language, with an interpreter fallback for operations that are currently not implemented in the JIT. Full JIT coverage will be implemented before the 1.0 release.
  • Continued expansion of built-in function coverage. RunMat now has extensive built-in function coverage across arrays, linear algebra, FFT/signal processing, statistics, strings, and I/O. Additional functions continue to be added based on user needs.

The below tracks the progress of the project towards the 1.0 release to date.

Milestone P0 - Bootstrapping

  • Expand lexer to cover MATLAB operators, keywords and comments.
  • Introduce runmat-parser crate producing an AST.
  • Basic runmat-repl that tokenizes input and prints tokens.
  • Set up CI with cargo fmt and cargo check.

Milestone P1 - Language Core

  • Complete parser with precedence rules and matrix syntax.
  • Extend parser to support control flow, function definitions and array indexing so that typical MATLAB files can be parsed without errors.
  • High-level IR (runmat-hir) with scope and type annotations.
  • Simple interpreter running on an unoptimised bytecode (runmat-ignition).
  • Headless plotting backend emitting SVG/PNG.
  • Jupyter kernel communication skeleton.

Milestone P2 - Performance Features

  • Cranelift-based JIT (runmat-turbine).
  • BLAS/LAPACK bindings and array primitives (runmat-runtime).
  • Generational GC with optional pointer compression (runmat-gc).
  • Snapshot creator to preload the standard library (runmat-snapshot).
  • v0.1 release.

Milestone P3 - User Experience

  • Full language coverage (docs/LANGUAGE_COVERAGE.md).
  • v0.2 release.
  • Full standard library pass for canonical built-ins ((arrays, linalg, FFT/signal, stats, strings, I/O, ...).
  • Implement LSP server.
  • Implement VSCode / Cursor extension.
  • Complete Accelerate (GPU) support.
  • Finish plotting library integration.
  • Implement package manager.