Pythonic Syntax
Indentation-based, readable, and concise syntax that avoids extensive boilerplate.
Looks like Python. Runs like Rust. Quacks like Ryduck. Ryo /ˈraɪoʊ/ is a statically-typed language designed for high Developer Experience — the ergonomics of Python, the memory safety of Rust ("Ownership Lite"), and the concurrency model of Go.
# Errors as values · optionals · safe by default
error NotFound
fn find_user(id: int) -> NotFound!str:
if id == 0:
return NotFound
return f"user_{id}"
fn main():
# Immutable by default — no `let` keyword
greeting = "Welcome to Ryo"
# Optionals — no null pointer exceptions
maybe: ?str = "Alice"
name = maybe orelse "guest"
# Explicit, type-safe error handling
user = find_user(42) catch |err|:
match err:
NotFound: "unknown"
print(f"{greeting}, {name} → {user}")
Built with ideas from the best
A small set of orthogonal primitives with consistent behavior. Readable by default, explicit where you need to see intent.
Indentation-based, readable, and concise syntax that avoids extensive boilerplate.
Memory safety without the garbage collector. Functions borrow by default and assignments move.
Zig-style Error Unions (!T) with exhaustive pattern matching by default and clear propagation.
Colorless concurrency with a work-stealing scheduler. No async/await function coloring.
Say hi to Ryduck, our mascot.
Join the early community of developers and language enthusiasts building the software of tomorrow.
Read Documentation