Language
What you can write in a Sisu program. Each link leads to the ADR or roadmap section that covers the feature.
| Feature | State | Design notes |
|---|---|---|
Nothing changes unless marked mut | ✓ Works today | ADR 0011 |
Functions, if as a value, loops | ✓ Works today | Roadmap: what works today |
| Classes with fields and methods | ✓ Works today | ADR 0029, Roadmap: classes and optionals |
| Optionals instead of null | ✓ Works today | Roadmap: classes and optionals |
| Enums that carry data, including recursive ones | ✓ Works today | ADR 0019, ADR 0020 |
match that must cover every case | ✓ Works today | Roadmap: enums and match |
| Integers that panic on overflow; IEEE 754 floats | ✓ Works today | ADR 0003, ADR 0017 |
| UTF-8 strings and formatting | ✓ Works today | ADR 0014, Roadmap: format specs |
| Arrays that behave like values | ✓ Works today | ADR 0007, ADR 0021 |
| Compile-time constants | ✓ Works today | Roadmap: strings and constants |
| Generic functions, classes and enums | ✓ Works today | ADR 0023, Roadmap: what works today |
Optionals that nest, such as i64?? | ✓ Works today | ADR 0024, Roadmap: what works today |
| Interfaces | ○ Planned | ADR 0023, Roadmap: proposed next steps |
Errors with Result and ? | ○ Planned | Roadmap: proposed next steps |
weak references | ○ Planned | ADR 0008 |
| Closures and iterators | ○ Planned | Roadmap: proposed next steps |
| Records, named and default arguments | ○ Planned | Roadmap: proposed next steps, ADR 0020 |
| Modules | ○ Planned | Roadmap: modules, ADR 0035 |
| Tests in the source file | ○ Planned | Roadmap: what can start now |
| More number types | ○ Planned | Roadmap: gaps before production |
| Concurrency | ○ Planned | ADR 0010, Roadmap: concurrency |
Standard library
The functions and methods every program gets. The library is still small.
| Feature | State | Design notes |
|---|---|---|
| Printing and reading lines | ✓ Works today | ADR 0009, ADR 0015 |
| Program arguments | ✓ Works today | Roadmap: streams and arguments |
| Text as characters, bytes and words | ✓ Works today | ADR 0014, ADR 0016 |
| Float math | ✓ Works today | ADR 0017, Roadmap: floats |
len, sum and contains on arrays | ✓ Works today | Roadmap: what works today |
| Lists and maps | ○ Planned | Roadmap: proposed next steps |
| Files, environment and exit codes | ○ Planned | Roadmap: proposed next steps, ADR 0009 |
Compiler
How sisu turns a source file into native code.
| Feature | State | Design notes |
|---|---|---|
| Native code for x86-64 and ARM64 Linux and ARM64 macOS through LLVM | ✓ Works today | Architecture |
Optimized builds with -O2 and -O3 | ✓ Works today | Roadmap: early tooling |
| Reference counting, no garbage collector | ✓ Works today | ADR 0005 |
| Panics that name the source line | ✓ Works today | ADR 0003, Roadmap: what panics |
| Front end fuzzed nightly | ✓ Works today | Roadmap: fuzzing, Developing Sisu |
| MIR, to remove reference-count updates that cancel out | ○ Planned | Roadmap: mir |
Debug info for gdb | ○ Planned | Roadmap: later and stretch goals |
| Windows | ○ Planned | Roadmap: later and stretch goals |
| Cross-compiling | ○ Planned | Roadmap: later and stretch goals |
| Calling C libraries | ○ Planned | Roadmap: later and stretch goals |
| A report of the bounds checks the optimizer keeps | ○ Planned | Roadmap: later and stretch goals |
| Generated programs fuzzed nightly for wrong answers | ✓ Works today | Roadmap: fuzzing, Developing Sisu |
| Lexer and parser in Sisu | ○ Planned | Roadmap: the growing proof program |
Toolchain
The commands around the compiler.
| Feature | State | Design notes |
|---|---|---|
sisu: build, run, check, explain, show IR | ✓ Works today | Developing Sisu |
| Benchmarks on every pull request that touches the code | ✓ Works today | Benchmarks, Developing Sisu |
sisu run reuses the build of an unchanged script | ○ Planned | Roadmap: early tooling |
sisu test, sisu fmt and sisu lsp | ○ Planned | Roadmap: early tooling |
| Install without cloning | ○ Planned | Roadmap: gaps before production |
| Packages from a path or Git | ○ Planned | Roadmap: gaps before production, deliberately avoided |
Developer experience
What helps you write and fix a program.
| Feature | State | Design notes |
|---|---|---|
| Errors that point at your code | ✓ Works today | ADR 0013 |
sisu explain for all 157 codes | ✓ Works today | ADR 0013, Diagnostic codes |
| Fixes marked safe or unsafe | ✓ Works today | ADR 0013, Applying fixes |
| JSON output for tools | ✓ Works today | JSON output |
| Warnings for unused names | ✓ Works today | W0012, W0013, W0014 |
| Formatter | ○ Planned | Roadmap: later and stretch goals |
| Language server | ○ Planned | Roadmap: later and stretch goals |
| VS Code highlighting | ○ Planned | Roadmap: early tooling |
| More lints | ○ Planned | Roadmap: later and stretch goals |
| Recovery from syntax errors inside a function | ○ Planned | Roadmap: later and stretch goals, gaps before production |
Leak finder (--leaks) | ○ Planned | Roadmap: early tooling, ADR 0008 |
| Doc comments | ○ Planned | Roadmap: later and stretch goals |
| A language reference | ○ Planned | Roadmap: gaps before production |
Some things Sisu leaves out on purpose, such as a borrow checker, inheritance and macros. The design decisions say why.
Sisu