← In development
08 / Shared language runtime

Noctis Runtime

Noctis is the language-neutral runtime beneath Nox and Nyx. It defines the common representations that allow compiled engine code and interpreted development code to interoperate without creating a bespoke binding layer for every language pair.

Technology
C++ / Runtime architecture
Status
Design phase
The challenge

Two languages need one honest runtime boundary.

Nox and Nyx deliberately expose different levels of control, but values crossing between them still need one stable identity, layout, invocation model, and error path. Building those rules separately into each frontend would create duplicated policy and incompatible assumptions.

The approach

Standardise representation, not language policy.

Noctis owns only the boundary: type descriptors, cross-language values, callable environments, shared core types, registration, dispatch, and result transport. Source syntax, ownership analysis, compilation, and interpretation stay with their respective languages.

Inside the project

What it does.

  1. 01

    A language-neutral registry for types, fields, methods, variants, and inheritance

  2. 02

    A shared value protocol designed to minimize copying and marshalling

  3. 03

    Stable callable-environment and invocation contracts

  4. 04

    Common Result and Error transport across explicit and implicit error models

  5. 05

    One host-registration surface for Nox, Nyx, and existing C++ systems

Design principles

How decisions
get made.

Share the boundary

Concepts used by multiple frontends get one runtime representation instead of parallel adapters.

Keep policy in languages

Ownership, inference, syntax, and execution strategy remain frontend responsibilities.

Build foundations first

The Nyx VM and Nox integration should target Noctis contracts rather than forcing the runtime to retrofit ad hoc internals.

See the work

Noctis Runtime

Follow the architecture
Next projectChaos