A systems language that compiles to C11. Optionals, generics, and compile-time metaprogramming are first-class, with no runtime to carry. Error unions are next on the roadmap.
#import std.io;
fn main() void {
var name str = "Prathmesh";
const lang = "Tinoc";
io.println("{s} is creator of {s} Programming Language!", name, lang);
}
main.tnc — watch it transpileTinoc respects C and its ecosystem. These principles shape every design decision.
Code states its intent. Names, syntax, and structure say what they mean.
Types capture the contract. Sizes, optionals, and errors are explicit and checked.
Compile-time checks for the cases C leaves to chance: overflow, nulls, and errors.
Transpiles to C11 with no runtime. What you write is what the machine runs.
A small, composable core. One way to read a loop, one way to make a type.
Each feature addresses a known weakness of C while keeping its performance and control.
Your .tnc files compile to portable C11 with one small runtime header. It runs anywhere a C11 compiler is available.
i8 → i128, u8 → u128, f32/f64/f128, str, slices, optionals, and generics.
if, while, switch, and for without parentheses. |i| capture bindings. orelse and ? for safe unwraps.
#import resolves modules at comptime, #run executes code during compilation, #partial tracks enum switch coverage.
#import with pub visibility, real C headers via #importc, and hand-declared extern "C" fn.
v0.1.0 is out and installable. Developed in public on GitHub; syntax, compiler, and docs are public from day one, and contributors are welcome.
A struct with methods, a generic Pair:T,
and a range for. Each construct is small, and all of it
transpiles to plain C11.
self ^Point. Mutation is explicit, never hidden.:T and :(K, V).|i|, a binding rather than a closure.#import std.io;
struct Point {
x f32;
y f32;
fn translate(self ^Point, dx f32, dy f32) void {
self^.x += dx;
self^.y += dy;
}
}
struct Pair:T {
first T;
second T;
fn swap(self ^Pair:T) void {
var tmp T = self^.first;
self^.first = self^.second;
self^.second = tmp;
}
}
fn main() void {
var p Point = Point { .x = 1.0, .y = 2.0 };
p.translate(0.5, 1.5);
var pair Pair:i32 = Pair:i32 { .first = 10, .second = 20 };
pair.swap();
io.println("{any}", pair);
}
Fixed-width integers, floats, strings, slices, optionals, and heap collections. Sizes and layouts are explicit.
i8 … i128signed integersu8 … u128unsigned integersf32 · f64 · f128floating pointbool · charboolean · codepointstrlength-aware string[N]T · []Tarrays · slices^Tpointers?Toptionals!T · E!Terror unions — plannedvec:Tdynamic arraysmap:(K,V)hash mapsset:Thash setsThe compiler ships a feature at a time. This table tracks what the current release supports, straight from the repository.
| Feature | Status | Notes |
|---|---|---|
var / const (incl. static) | Shipped | Explicit or inferred types; const-mutability enforced |
fn functions | Shipped | Forward calls, argument/return type checking, missing-return checks |
struct + methods | Shipped | Fields, struct literals, instance/static methods, by-value copy |
enum + methods | Shipped | Fieldless variants and tagged unions with payloads; exhaustive switch |
switch | Shipped | Enum variants, integer/char literals, _ default, pattern binding |
| Pointers | Shipped | ^T, &x, x^, self^.x → self->x |
| Control flow | Shipped | if / else, while, for 0..10 |i|, break, continue |
| Literals & operators | Shipped | All bases, _ separators, arithmetic/comparison/logical/bitwise; content-based str ==/!= |
| C interop | Shipped | #importc "header.h" and extern "C" fn |
Modules & #import | Shipped | module keyword, pub visibility, all import forms, cycle detection, merged C output |
| Generics | Shipped | fn foo:T, struct Pair:T, alias Opt:T = ?T; — monomorphized per type-argument set |
union + methods | Shipped | C-style shared-memory fields, instance/static methods, generic unions |
| Arrays / slices | Shipped | [N]T, [_]T, []T, [N:x]T sentinel arrays, implicit array → slice |
| Optionals | Shipped | ?T, null, orelse, x?, == null / != null |
| Error unions | Planned | !T, catch — on the roadmap |
Standard library (std.io, …) | Planned | User modules are in; the std library ships when the language matures |
Full details in the language reference and the changelog.
The first public release shipped on August 5, 2026. Prebuilt binaries for macOS, Linux, and Windows are available through the installers, and the compiler, syntax, and tooling keep evolving in public.
Lexing, parsing, semantic analysis, and C11 emission — done and released.
Modules, generics, optionals, arrays, slices, enums, and unions ship in v0.1.0.
v0.1.0 binaries for macOS, Linux, and Windows; package-manager installs come later.
Error unions (!T / catch) and the standard library (std.io, std.math, std.collections).
Follow the repository, join the Discord, and take part in design discussions. Every issue and pull request helps.