Repository · drsamonline/NEO

NOVA.

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.


Live Phase 1 Complete Phase 2 Complete Phase 3 Complete Phase 4 Next 4 backend targets Version 0.6.0 Written in Rust
In page Compiler core ~3,500 LOC Runtime 2,881 LOC Tooling 3,601 LOC Backends C · JS · Rust · WASM

01 — Capabilities

What is implemented.

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.


Semantic pipeline

A multi-pass compiler: lexer, recursive-descent parser, semantic analyser, a Semantic Intermediate Representation, a lowerer, and a backend interface.

Phase 1 · complete

Four backends

Code 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 total

Runtime system

Memory 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+ tests

Package manager

A nova-pkg CLI with twelve commands, Nova.toml manifest parsing and validation, and a semver resolver with conflict detection.

Phase 3 · 1,674 LOC

Language server & debugger

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,405

Written in Rust

A multi-crate Cargo workspace — compiler, runtime, package manager, language server, debugger, four backends and a shared nova-common crate.

workspace v0.6.0

02 — How it works

Source in. Target code out.

Every stage below is described in the repository's architecture document, with the line counts the project reports for each module.


01

Lexer

Tokenises keywords, identifiers, literals and operators with Unicode support, and carries span information for diagnostics.

309 LOC
02

Parser

A recursive-descent parser with operator precedence and error recovery that keeps going after a syntax error to report more of them.

907 LOC
03

Semantic analyser

Builds the symbol table, resolves names and scopes, and type-checks — including basic inference — before any code is generated.

773 LOC
04

SIR & lowerer

The annotated AST is lowered into a language-agnostic Semantic Intermediate Representation: a type-preserving, optimisation-ready IR.

146 + 550 LOC
05

Backend

The SIR is emitted to a chosen target through the backend interface — portable C99, ES6+ JavaScript, idiomatic Rust, or a WebAssembly module.

1,529 LOC
Source→Lexer→Parser→AST→Semantic Analyser→SIR→Lowerer→Backend→Target Code

03 — Demo

The language, as shipped.

A real example from the repository — recursive Fibonacci — and the documented way to build and run it.


examples/fibonacci.nova
// 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.

Build & compile

# Rust toolchain required $ cargo build --release $ export PATH="$PWD/target/release:$PATH" $ nova compile examples/fibonacci.nova $ nova run examples/fibonacci.nova

Choose a target

$ nova compile --target c examples/hello.nova $ nova compile --target javascript examples/hello.nova $ nova compile --target rust examples/hello.nova $ nova compile --target wasm examples/hello.nova

04 — Get started

Clone, build, compile.

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.


Prerequisites

  • A Rust toolchain, installed via rustup.
  • A C toolchain, if you want to compile the C backend output.
  • Git, to clone drsamonline/NEO.
  • An editor of choice; the repo also carries a VS Code extension scaffold.

From zero to a compiled example

# 1. Clone $ git clone https://github.com/drsamonline/NEO.git $ cd NEO # 2. Build the workspace $ cargo build --release # 3. Compile and run $ nova compile examples/hello.nova $ ./hello

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

Questions, answered plainly.


Is NOVA replacing all languages?

No. The repository's FAQ is direct about this: it aims to orchestrate existing ecosystems rather than replace them.

Why is the repository called NEO and the language NOVA?

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.

What targets can it emit today?

Four backends are implemented: C, JavaScript, Rust and WebAssembly. The C backend is described as tested and working; the others are described as implemented.

How mature is the project?

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.

How do I build it?

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.

What is the license?

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.

Where is the documentation?

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.