Under heavy development. This site describes the intended 1.0 language. Current features and performance vary. Development status
Sn50SnThe SnAPI programming language

THE Sn PROGRAMMING LANGUAGE

C++ performance.
Scripting-speed iteration.

Sn is a systems language for developers building games, engines, embedded software, and other real-time systems. Modern syntax that feels familiar to C++ developers, fast compilation, and an interactive native JIT.

The goal for 1.0: develop with the immediacy of scripting, with runtime performance comparable to or faster than C++. Sn is under heavy development; this describes where it is headed.

In active development · Progress is made regularly

movement.snSn / language example
module game.movement;

struct Position {
    pub X: f32;
    pub Y: f32;
}

fn Step(Value: mut Position&,
        Speed: f32, Dt: f32) {
    Value.X += Speed * Dt;
}
↳Native values. Explicit writable access.
Game code is systems code.Function syntax ↗
Native systems programmingModern, C++-familiar syntaxInteractive JIT + native AOTAutomatic C & C++ interop

WHY Sn EXISTS

You changed a function.
Why are you still waiting?

When a change takes longer to build than to write, you spend your day waiting to test ideas. That delay is especially painful in game and engine development, where getting the behavior right takes repeated experimentation.

Sn starts with that problem. Keep the native performance and machine-level control that brought you to C++, then make changing and running the code fast enough to stay in the work.

Why I started building Sn ↗

THE INTENDED 1.0 WORKFLOW

Save the change.
Run the new code.

Start a persistent native JIT session from your editor. Save a compatible function change and use the new code in the same process, with its existing state. Avoid rebuilding and relaunching the entire application for every adjustment.

When a change cannot safely preserve live state, the session restarts the program. For distribution, compile the same language ahead of time into a native executable.

JIT, reload, and native builds ↗

COMPILATION TARGETS

< 2 seconds300,000 generated source lines to an O0 executable, including code generation and linking.
< 100 msHot-edit target, including analysis and compatible JIT publication.

Development targets, not current benchmark claims. Runtime performance is measured separately from compilation speed.

Current development status →

MORE THAN A FASTER BUILD

A modern systems language
with the features engines need.

01 / NATIVE LIBRARIES
{ C / C++ }

Use the libraries
you already depend on.

Automatic header binding is part of the language’s interop design. C bindings are generated from real headers with the native compile context and reused until their inputs change. The same automatic experience is intended for C++.

C is implemented; C++ is planned ↗
02 / NATIVE REFLECTION
TypeOf<T>

Your types already
know their members.

Inspect types, fields, properties, and methods through compiler-generated metadata. Read and write reflected values or invoke methods through checked APIs. Build inspectors and data-driven tools from that information.

Explore the reflection API ↗
03 / TYPED ATTRIBUTES
[Attribute]

Put metadata
on the declaration.

Declare typed attributes with explicit target, repetition, inheritance, and retention rules. Construct them at compile time and query retained values through reflection—useful for editor tools, serialization rules, and application-specific metadata.

How attributes work ↗

STILL A SYSTEMS LANGUAGE

Built for the code
that has a frame budget.

Sn grew out of game-engine development. Its scope also includes native applications, operating-system components, and embedded firmware.

Control memory and lifetime.

Inline values, explicit allocation, allocator-aware containers, and deterministic cleanup. No garbage collector or exception unwinding in the language design.

Express requirements in the type system.

Generics, structural concepts, typed results, optional values, and explicit mutable access. Static dispatch is the default.

Move work out of runtime.

Use compile-time functions, required constant evaluation, and const generics for values and specializations known before execution.

DOCUMENTATION & REFERENCE

Read the syntax.
Look up the contract.

Language guides and a searchable standard-library reference, with public signatures, lifetime rules, failure behavior, and examples. Choose the documentation version that matches your compiler release.

Browse the reference ↗

FROM THE CREATOR OF SnAPI

The language is one part of the work.

Sn grew out of 15 years developing SnAPI and the frustration of slow engine iteration. SnAPI’s cross-platform libraries and SnBuild’s platform provisioning and builds are separate products. Sn’s intended ecosystem also includes a canonical package manager.

Sn, SnAPI, and SnBuild ↗
THE CREATOR’S STORYFifteen years of SnAPI.
Then another compile.
Read why Sn exists ↗

DEVELOPMENT STATUS

This is the destination.
We are still building it.

This site presents the intended Sn 1.0 language. Sn is currently under heavy development, and the current compiler does not yet meet every feature or performance goal. Progress is made regularly.

Public compiler releases will be built from selected Git tags, with matching versioned documentation and known limitations. Sn is closed-source and has one official compiler distribution.

What is implemented and what is next ↗
Searching Development · language & standard library