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
module game.movement;
struct Position {
pub X: f32;
pub Y: f32;
}
fn Step(Value: mut Position&,
Speed: f32, Dt: f32) {
Value.X += Speed * Dt;
}
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
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.
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 REFLECTIONYour 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 ATTRIBUTESPut 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 ↗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 ↗