// predictable by design
A language that runs
exactly as it reads.
A small, explicit language with no hidden control flow and no implicit coercion. Tree-walking interpreter in Rust, native binaries with no runtime.
curl -fsSL dl.syntella.dev/install.sh | bash
use io
// flow runs the caller's block at each yield
flow repeat(n) {
for i in range(n) { yield }
}
func main() {
defer io.println("bye")
repeat 3 { io.println("tick") }
}
Statements end at the next keyword. Types never coerce behind your back. What you write is what runs.
Get started
From install to native binary in three steps.
Grab the binary
One line drops syt onto your PATH, checksum verified.
Scaffold a project
syt init writes a syt.toml and src/main.syt.
Interpret, then compile
Iterate with run, ship a binary with build.
Why Syntella
Small surface, no surprises.
The features that catch you off guard in other languages simply are not here.
No implicit coercion
With annotations, int + float is a compile-time error. Types stay what you declared.
flow and yield
One primitive for iteration callbacks. A flow body runs the caller's block at each yield.
defer and typed errors
Cleanup at scope exit, in reverse order. Errors are values, not exceptions. No try, no catch.
Go-style concurrency
Channels, spawn, and select. Full CSP, part of the language, not a library.
Native binaries
syt build compiles through LLVM to a standalone executable. No runtime, no VM.
One toolchain
HTTP server, package manager, LSP, and formatter. The whole toolchain is one binary: syt.
Install
One command per platform.
Pre-built binaries for Linux, macOS, and Windows, published on every release and checksum verified.
$ curl -fsSL dl.syntella.dev/install.sh | bash
> irm dl.syntella.dev/install.ps1 | iex
$ cargo build --release