Projects

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

1
LexerTokenizes source into a stream of lexemes with position tracking
2
ParserBuilds a concrete syntax tree via recursive descent
3
BinderResolves names, checks types, manages scopes, desugars iteration
4
LowererTransforms control flow into labels and jumps for code generation
5
EmitterGenerates JVM bytecode through the ASM library — produces .class files
6
EvaluatorAlternative tree-walking interpreter sharing the same frontend

Concurrency Model

Structured concurrencyscope/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.

Actorsactor struct with mailbox-based event loops. Supports synchronous method calls and fire-and-forget send operations.

Language Features

Type System
  • Primitives: int, long, bool, float, string
  • Collections: arrays, maps, sets
  • Structs, enums, optional types
  • First-class functions with closures
  • Pattern matching with exhaustive checks
Tooling
  • 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.

Example Programs

Algorithms — bubble sort, binary search, linked listsNetworking — REST API with SQLite, NIO serverConcurrency — actor-based TCP database, chat serverData processing — CSV reader, JSON parserJava interop — JDBC, socket programming, file I/OApplications — todo app, calculator, word counter