Sisu

Where Sisu stands

Every feature of Sisu, whether it works today or is planned, with links to the design notes that explain it.

Built from the repository at commit a8614dc.

Sisu makes no stability promise yet: any change may break programs. Planned work can change and has no promised date.

Language

What you can write in a Sisu program. Each link leads to the ADR or roadmap section that covers the feature.

FeatureStateDesign notes
Nothing changes unless marked mut✓ Works todayADR 0011
Functions, if as a value, loops✓ Works todayRoadmap: what works today
Classes with fields and methods✓ Works todayADR 0029, Roadmap: classes and optionals
Optionals instead of null✓ Works todayRoadmap: classes and optionals
Enums that carry data, including recursive ones✓ Works todayADR 0019, ADR 0020
match that must cover every case✓ Works todayRoadmap: enums and match
Integers that panic on overflow; IEEE 754 floats✓ Works todayADR 0003, ADR 0017
UTF-8 strings and formatting✓ Works todayADR 0014, Roadmap: format specs
Arrays that behave like values✓ Works todayADR 0007, ADR 0021
Compile-time constants✓ Works todayRoadmap: strings and constants
Generic functions, classes and enums✓ Works todayADR 0023, Roadmap: what works today
Optionals that nest, such as i64??✓ Works todayADR 0024, Roadmap: what works today
Interfaces○ PlannedADR 0023, Roadmap: proposed next steps
Errors with Result and ?○ PlannedRoadmap: proposed next steps
weak references○ PlannedADR 0008
Closures and iterators○ PlannedRoadmap: proposed next steps
Records, named and default arguments○ PlannedRoadmap: proposed next steps, ADR 0020
Modules○ PlannedRoadmap: modules, ADR 0035
Tests in the source file○ PlannedRoadmap: what can start now
More number types○ PlannedRoadmap: gaps before production
Concurrency○ PlannedADR 0010, Roadmap: concurrency

Standard library

The functions and methods every program gets. The library is still small.

FeatureStateDesign notes
Printing and reading lines✓ Works todayADR 0009, ADR 0015
Program arguments✓ Works todayRoadmap: streams and arguments
Text as characters, bytes and words✓ Works todayADR 0014, ADR 0016
Float math✓ Works todayADR 0017, Roadmap: floats
len, sum and contains on arrays✓ Works todayRoadmap: what works today
Lists and maps○ PlannedRoadmap: proposed next steps
Files, environment and exit codes○ PlannedRoadmap: proposed next steps, ADR 0009

Compiler

How sisu turns a source file into native code.

FeatureStateDesign notes
Native code for x86-64 and ARM64 Linux and ARM64 macOS through LLVM✓ Works todayArchitecture
Optimized builds with -O2 and -O3✓ Works todayRoadmap: early tooling
Reference counting, no garbage collector✓ Works todayADR 0005
Panics that name the source line✓ Works todayADR 0003, Roadmap: what panics
Front end fuzzed nightly✓ Works todayRoadmap: fuzzing, Developing Sisu
MIR, to remove reference-count updates that cancel out○ PlannedRoadmap: mir
Debug info for gdb○ PlannedRoadmap: later and stretch goals
Windows○ PlannedRoadmap: later and stretch goals
Cross-compiling○ PlannedRoadmap: later and stretch goals
Calling C libraries○ PlannedRoadmap: later and stretch goals
A report of the bounds checks the optimizer keeps○ PlannedRoadmap: later and stretch goals
Generated programs fuzzed nightly for wrong answers✓ Works todayRoadmap: fuzzing, Developing Sisu
Lexer and parser in Sisu○ PlannedRoadmap: the growing proof program

Toolchain

The commands around the compiler.

FeatureStateDesign notes
sisu: build, run, check, explain, show IR✓ Works todayDeveloping Sisu
Benchmarks on every pull request that touches the code✓ Works todayBenchmarks, Developing Sisu
sisu run reuses the build of an unchanged script○ PlannedRoadmap: early tooling
sisu test, sisu fmt and sisu lsp○ PlannedRoadmap: early tooling
Install without cloning○ PlannedRoadmap: gaps before production
Packages from a path or Git○ PlannedRoadmap: gaps before production, deliberately avoided

Developer experience

What helps you write and fix a program.

FeatureStateDesign notes
Errors that point at your code✓ Works todayADR 0013
sisu explain for all 157 codes✓ Works todayADR 0013, Diagnostic codes
Fixes marked safe or unsafe✓ Works todayADR 0013, Applying fixes
JSON output for tools✓ Works todayJSON output
Warnings for unused names✓ Works todayW0012, W0013, W0014
Formatter○ PlannedRoadmap: later and stretch goals
Language server○ PlannedRoadmap: later and stretch goals
VS Code highlighting○ PlannedRoadmap: early tooling
More lints○ PlannedRoadmap: later and stretch goals
Recovery from syntax errors inside a function○ PlannedRoadmap: later and stretch goals, gaps before production
Leak finder (--leaks)○ PlannedRoadmap: early tooling, ADR 0008
Doc comments○ PlannedRoadmap: later and stretch goals
A language reference○ PlannedRoadmap: gaps before production

Some things Sisu leaves out on purpose, such as a borrow checker, inheritance and macros. The design decisions say why.