nC_PROGRAMMING LANGUAGE

LANGUAGE DESIGN

The nC programming language.

nC is an experimental programming language for expressing functions, memory operations and machine instructions within one semantic model. Its compiler is called ncc.

One program, several levels

A program's behavior depends on more than its surface syntax. Data layout, alignment, calling conventions and linkage all affect the result. nC makes these decisions part of the language's design, with contracts that must remain consistent through analysis, IR, lowering and linking.

Ordinary .n source describes functions, data, imports and control flow. Root [@] establishes foundational contracts. [@machine] expresses typed instructions and control transfers; primitive[@] covers lower-level material operations. These levels share a semantic model rather than separate, interchangeable implementations.

Start with the language's design and motivation, then read the contracts between nC levels.

Explicit memory and representation

Memory has manual/raw semantics. The program is responsible for allocation, address validity and release. Type checking does not introduce ownership, automatic deallocation or implicit lifetime checks for raw pointers.

The memory and runtime guide covers the program-facing contract. The representation reference explains why target layout and ABI remain explicit.

Learn the syntax with a complete program

The first example imports io:output, declares a to main entry point and calls println. Its container also declares a final with fa:. Use the annotated hello.n example to see how those pieces fit, then continue with places, functions and control flow.

Current scope

The public documentation and downloads describe bootstrap edition V81. The native kit was tested on Windows x86-64 and Ubuntu 24.04 under WSL x86-64. Support claims apply to the documented profiles and fixtures; global Stage3 promotion remains open.

nC is currently relevant to compiler development, data representation, ABI work and native code generation. The V81 evidence separates verified behavior from work still in progress.

nC is the language. ncc is the compiler.

Use ncc to analyze source, inspect IR and emit native code. Read the nC documentation, download the compiler or inspect the public nC and ncc source repository.

Search nC