maat_module 0.12.1

Module system and multi-file compilation for the Maat programming language
Documentation

maat_module

Module system and multi-file compilation for the Maat programming language.

Role

maat_module resolves mod declarations into a directed acyclic dependency graph before compilation begins. Each source file is parsed independently, cycle detection is performed via DFS with gray/black coloring, and the resulting topological ordering drives a two-phase pipeline: per-module type checking (with cross-module export injection) followed by sequential code generation and linking into a single Bytecode artifact.

File Resolution

Resolution follows Rust's module conventions:

  • mod foo; in dir/mod.maat --> dir/foo.maat or dir/foo/mod.maat
  • mod bar; in dir/foo.maat --> dir/foo/bar.maat or dir/foo/bar/mod.maat

Ambiguous paths (i.e., when both alternatives exist) and missing paths both produce descriptive ModuleError values.

Usage

use maat_module::resolve_module_graph;
use std::path::Path;

let graph = resolve_module_graph(Path::new("src/main.maat"))?;
let bytecode = maat_module::compile_graph(graph)?;

API Docs

docs.rs/maat_module

Repository

github.com/maatlabs/maat. See the project README for an overview of the full compiler pipeline.