Systems programming with C-style syntax, monomorphic templates, and structural interfaces. Compiles to native code via LLVM. You manage memory; the compiler manages nothing else.
Compute-intensive backend services commonly reach for C when performance matters, Go for concurrency, C++ for libraries, and Python for everything else. Each adds a separate toolchain, a different set of idioms, and friction at every boundary.
Eskiu is a direct response to that. Phase one: a systems foundation solid enough to handle the work that currently requires C or C++. Phase two: first-class support for the domain types that high-throughput services actually work with — without giving up general systems capability.
If you can read C, you can read Eskiu. Pick a tab and see for yourself.
extern int printf(string fmt, ...); int add(int a, int b) { return a + b; } int main() { int result = add(5, 3); printf("Hello from Eskiu!\n"); printf("Result: %d\n", result); return 0; }
interface Drawable { void draw(); } struct Circle { float radius; void draw() { printf("Circle(r=%f)\n", self.radius); } } struct Square { float side; void draw() { printf("Square(s=%f)\n", self.side); } } void render(Drawable d) { d.draw(); } int main() { let c: Circle = Circle { radius: 5.0 }; render(&c); // auto-boxed to Drawable return 0; }
int apply(fn(int)->int f, int x) { return f(x); } int main() { // anonymous function — same syntax, no name let square: fn(int)->int = int(int n) { return n * n; }; printf("%d\n", square(6)); // 36 printf("%d\n", apply(square, 4)); // 16 return 0; }
import "stdlib/result.esk"; Result<int, string> divide(int a, int b) { if (b == 0) return Err<int, string>("division by zero"); return Ok<int, string>(a / b); } int main() { let r = divide(10, 2); if (r.ok == 1) printf("result = %d\n", r.value); else printf("error: %s\n", r.error); return 0; }
Each one was validated against real production code before it shipped.
Compiled to machine code via LLVM. Predictable throughput with no runtime surprises.
C-style declarations, braces, semicolons. Pick it up in an afternoon if you already know C.
alloc(T, N) and free(ptr). Heap allocation is visible in the code, not hidden behind a runtime.
A struct satisfies an interface by having the right methods. No declarations, no inheritance chain.
extern declarations give direct access to any C library — OpenSSL, POSIX, CoreGraphics — with no wrapper layer.
VS Code extension with error squiggles, hover types, and go-to-definition, driven by the compiler directly.
A real-world cryptographic pipeline — AES-256-CBC + RSA-8192 decryption, image processing, and structured output — running entirely in Eskiu via extern C interop.
Measured on Apple Silicon (arm64). 2.5× faster than the reference C. The crypto stage matches hand-written C within 0.1 ms.
| Stage | Eskiu | Reference C |
|---|---|---|
| QR / image extraction | 71.7 ms | 185.5 ms |
| Crypto (AES-256-CBC + RSA-8192) | 2.8 ms | 2.9 ms |
| Output decode | < 1 ms | 0.5 ms |
| Total | 74.4 ms | 188.9 ms |
Eskiu ships frequently. Each release adds language features, fixes compiler bugs, or improves tooling.
Full changelogfn(T)->R function pointer types. VS Code hover types and go-to-definition. switch/case type checking.Each flag stops after a specific phase and prints what was produced. No separate toolchain needed.
Builds on macOS and Linux in under a minute. Targets arm64 and x86-64.
Get Started