Write embedded or bare-metal firmware without needing a runtime
Build CLI tools with manual memory management and no garbage collector
Read the roughly 1500-line compiler source to learn how a simple compiler works
Call existing C libraries directly through the extern C interop block
| alonsovm44/tc-lang | jayhutajulu1/cve-2026-43494-pintheft-poc | knogle/libsamp | |
|---|---|---|---|
| Stars | 18 | 18 | 18 |
| Language | C | C | C |
| Setup difficulty | moderate | hard | hard |
| Complexity | 4/5 | 5/5 | 5/5 |
| Audience | developer | researcher | researcher |
Figures from each repo's GitHub metadata at analysis time.
Requires a C11 compiler to build the output, the language itself has no runtime dependency.
Tight-C is a minimal systems programming language that transpiles to C. The design goal is to give you something as powerful as C but with a cleaner surface: only 10 keywords, no garbage collector, no type inference, no object-oriented features, and no hidden behavior. You write Tight-C code in .tc files, run the compiler, and get readable C11 as output that you can inspect, modify, or hand off to any C compiler. The language has two pointer types. A raw pointer (->) works like a C pointer. A fat pointer (=>) is a small struct containing both a pointer and a length, which lets you do bounds-aware slicing without a runtime library. Manual memory management uses alloc() and free(), and a defer keyword ensures cleanup code runs when the current scope exits, similar to how Go's defer works. A pin keyword marks a variable as immutable within its scope, the compiler catches reassignment at parse time. Structs are packed by default with no padding, which makes memory layout predictable for embedded and systems work. C interop is handled with an extern "C" block that lets you call any C library directly. Imports either link to pre-compiled headers (use) or inline another .tc file at compile time (@use). The compiler itself is about 1500 lines of C. It runs in a single pass: a lexer tokenizes the source, a parser builds an abstract syntax tree, and an emitter walks the tree and writes C11 text. There is no intermediate representation, no optimizer, and no code generation beyond string output. The resulting C is always readable. If you want to see exactly what your code becomes, you can stop at the C output step. The README lists good use cases as CLI tools, embedded or bare-metal firmware (no runtime required), game engine internals needing manual memory control, and learning how compilers work. The entire compiler is small enough to read in a few hours. Tight-C is released under the MIT license and builds on Windows, Linux, and macOS.
A minimal systems programming language with only 10 keywords that transpiles to readable C11, aimed at embedded, firmware, and CLI projects needing manual memory control.
Mainly C. The stack also includes C.
Released under the MIT license, free to use, modify, and redistribute, including for commercial projects.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.