Pre-Alpha is now available

Productive syntax.
Fearless safety.
Bare-metal speed.

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.

$ curl -fsSL https://raw.githubusercontent.com/ryolang/ryo/main/install.sh | sh
main.ryo
# 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

  • Python
  • Rust
  • Mojo
  • Go
  • Zig

Designed for the AI Era

A small set of orthogonal primitives with consistent behavior. Readable by default, explicit where you need to see intent.

Pythonic Syntax

Indentation-based, readable, and concise syntax that avoids extensive boilerplate.

Ownership Lite

Memory safety without the garbage collector. Functions borrow by default and assignments move.

Rich Errors

Zig-style Error Unions (!T) with exhaustive pattern matching by default and clear propagation.

Green Threads

Colorless concurrency with a work-stealing scheduler. No async/await function coloring.

Ready to write safe software?

Say hi to Ryduck, our mascot.

Join the early community of developers and language enthusiasts building the software of tomorrow.

Read Documentation