Siyo
A JVM-compiled programming language with structured concurrency, actor-based messaging, pattern matching, closures, and seamless Java interoperability. ~19,000 lines of Java with 1,475 passing tests and dual-path execution — the same frontend feeds both an ASM bytecode emitter and a tree-walking interpreter.
Compilation Pipeline
Concurrency Model
Structured concurrency — scope/spawn blocks that automatically join spawned threads at block exit. Built on Java 21 virtual threads for lightweight execution.
Channels — Buffered and unbuffered channels with for x in channel iteration. Go-style communication between concurrent tasks.
Actors — actor struct with mailbox-based event loops. Supports synchronous method calls and fire-and-forget send operations.
Language Features
- Primitives: int, long, bool, float, string
- Collections: arrays, maps, sets
- Structs, enums, optional types
- First-class functions with closures
- Pattern matching with exhaustive checks
- REPL for interactive exploration
- Project scaffolding via siyo.toml
- Maven Central dependency resolution
- Classpath support for Java libraries
- 37 built-in standard library functions
Java Interoperability
Direct imports from the JVM ecosystem — import java "java.net.Socket". Call constructors, invoke methods, pass Siyo closures to Java functional interfaces. Dependencies declared in siyo.toml auto-download from Maven Central and cache locally.