Know what your code can do
before it runs
A systems language where every function declares its capabilities — IO, network, clock, and more — with compile-time effect checking.
Pre-built releases: Linux x86_64 and ARM64, macOS Apple Silicon, and Windows x86_64 (Windows is a best-effort Tier 3 target — use WSL for day-to-day work). Building programs also requires LLVM 17+ or 18+, clang, and a platform linker.Installation requirements
curl -fsSL https://raw.githubusercontent.com/SailfinIO/sailfin/main/install.sh | bashWhy Sailfin?
A language built around compile-time capability enforcement.
Effect Types
Every function declares what it can do. Undeclared IO, network, and clock operations fail the build, and effects propagate to callers across module boundaries.
Capability Security
Capsules declare required capabilities in their manifest. Registered operations and resolved callees are checked at compile time; opt-in workspace envelopes enforce member manifests' declared surfaces.
Self-Hosted Compiler
Sailfin's self-hosted compiler emits textual LLVM IR and uses LLVM/clang to produce native binaries. It is a compiler, not an interpreter wrapper.
Pragmatic Ergonomics
Conventional TypeScript/Rust-like syntax and clear, source-spanned diagnostics with fix-it hints. Designed to be readable by humans and coding agents alike.
Package Registry
Capsules — Sailfin's packages — are published to pkg.sfn.dev with dependency resolution and declared-capability auditing. Point `sfn` at a private registry with `sfn config set registry <url>`.
Structured Concurrency
Routine nurseries, channels, spawn / await, and parallel execution ship as a v0 surface. Nursery exit joins every child; current limitations are documented.
Built for
Capability-Controlled Services
The compiler checks registered IO, network, clock, and entropy boundaries plus resolved callees. Audit declared capsule surfaces before production; runtime syscall sealing targets 1.0.
Systems Programming
The self-hosted compiler lowers through textual LLVM IR and LLVM/clang to native binaries, with a backend seam for future code generators.
CLI Tools & Automation
Concise syntax, explicit effects, and native binary output support auditable developer tooling and automation.
Supply-Chain Security
Every capsule declares its required capabilities, and the compiler cross-checks that declaration against the effects the capsule actually uses. Auditing inferred effect surfaces across a full transitive dependency tree is still in progress.
Ready to dive in?
Follow the ten-minute onboarding path and build your first program.