Chuchu is in early development. The documentation is the source of truth, and it is more useful when it says what is missing as clearly as what works. These are the current boundaries of the implementation, not a promise about the order they will change.
What is deliberately missing
- No character literals.
- No for, break, continue or logical operators.
- No imports, user-defined types or file I/O.
- Arrays hold 1 to 256 elements and cannot be assigned element by element.
- Function annotations cover scalars only.
- No JIT and no automatic parallelism.
- Host-native only: there is no cross-OS target flag.
What works today
Within those limits, the compiler is complete enough to be useful. Inferred locals, typed reassignment, integers, floats, booleans, numeric arrays, arithmetic and comparisons all work. if/else, while, lexical scope and block shadowing are implemented. Functions support typed parameters, return types, forward calls, recursion and mutual recursion. Numerical built-ins cover abs, sqrt, min, max, sum and len.
Cheeku also handles the parts around the language: checked arithmetic, division and array bounds at runtime, native object emission, executable linking, O0 through O3, CPU selection, timing JSON, and IR or assembly output when you ask for it.
The validated native environment is macOS on Apple Silicon. Linux and Windows builds exist, but the public docs do not yet claim native support for them.
Why say it out loud
Being explicit about limits makes bug reports better and saves people from planning around features that do not exist. It also makes progress visible: when a boundary moves, the changelog and the docs can say exactly what changed.
If something here blocks you, open an issue with the smallest program that shows the problem. Real use cases are the best input for deciding what comes next.