Semantic pipeline
A multi-pass compiler: lexer, recursive-descent parser, semantic analyser, a Semantic Intermediate Representation, a lowerer, and a backend interface.
Phase 1 · completeRepository · drsamonline/NEO
A semantic programming platform. A statically-typed, compiled systems language whose compiler lowers source through a semantic pipeline to C, JavaScript, Rust and WebAssembly.
The repository is NEO; the language and toolchain inside it are NOVA. Phase 1–3 are marked complete; Phase 4 is next.
01 — Capabilities
Claims below are taken from the repository's own README and development plan. Where a piece is a scaffold rather than a finished feature, it is marked as such.
A multi-pass compiler: lexer, recursive-descent parser, semantic analyser, a Semantic Intermediate Representation, a lowerer, and a backend interface.
Phase 1 · completeCode generators for C, JavaScript, Rust and WebAssembly sit behind one backend abstraction, so a single SIR can be emitted to multiple targets.
1,529 LOC totalMemory management with an arena allocator and mark-and-sweep GC foundation, a runtime type registry, error handling with backtraces, FFI, I/O, threading and async primitives.
Phase 2 · 2,881 LOC · 30+ testsA nova-pkg CLI with twelve commands, Nova.toml manifest parsing and validation, and a semver resolver with conflict detection.
An LSP implementation covering completion, hover, go-to-definition, symbols and diagnostics, plus an interactive debugger with breakpoints and session control.
Phase 3 · LSP 522 · dbg 1,405A multi-crate Cargo workspace — compiler, runtime, package manager, language server, debugger, four backends and a shared nova-common crate.
02 — How it works
Every stage below is described in the repository's architecture document, with the line counts the project reports for each module.
Tokenises keywords, identifiers, literals and operators with Unicode support, and carries span information for diagnostics.
A recursive-descent parser with operator precedence and error recovery that keeps going after a syntax error to report more of them.
Builds the symbol table, resolves names and scopes, and type-checks — including basic inference — before any code is generated.
The annotated AST is lowered into a language-agnostic Semantic Intermediate Representation: a type-preserving, optimisation-ready IR.
The SIR is emitted to a chosen target through the backend interface — portable C99, ES6+ JavaScript, idiomatic Rust, or a WebAssembly module.
03 — Demo
A real example from the repository — recursive Fibonacci — and the documented way to build and run it.
// NOVA Example: Fibonacci Sequence
fn fibonacci(n: int) -> int {
if n <= 1 {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
fn main() -> int {
let count: int = 10;
print("First");
print(count);
return 0;
}
Screenshot placeholder: the repository currently ships no product screenshots. This block reproduces the example source verbatim; nothing here is a mock-up of a feature that does not exist.
04 — Get started
The steps below follow the repository's examples guide. Note that the project is pre-release and Phase 4 work — standard library, integration and docs — is still to come.
rustup.
drsamonline/NEO.
Everything lives in the repository — source, examples, language spec and development plan. Read it, build it, and see where Phase 4 goes.
Open the repository ↗05 — FAQ
No. The repository's FAQ is direct about this: it aims to orchestrate existing ecosystems rather than replace them.
The repository is drsamonline/NEO; the project it contains is named NOVA and describes itself as a semantic programming platform. This page uses both names as the source does.
Four backends are implemented: C, JavaScript, Rust and WebAssembly. The C backend is described as tested and working; the others are described as implemented.
Phases 1 to 3 — compiler core, runtime system and tooling — are marked complete in the development plan. Phase 4 (polish and integration: standard library, end-to-end testing, performance and documentation) is listed as next. It is a pre-release codebase.
With a Rust toolchain installed, clone the repository and run cargo build --release. CI does the same, building and testing the whole workspace with cargo build --workspace --all-targets and cargo test --workspace.
Not yet chosen. The repository's LICENSE file is a placeholder asking to pick Apache-2.0 or MIT before the first public release — so treat this as unlicensed for now.
In the repository: docs/language/ holds a numbered language specification, alongside architecture, development-plan and runtime-progress documents. The documentation site under website/ is a scaffold with placeholder pages.