The language that makes C++ simple and Python jealous.
Created by Aravind Pilla
# No main() needed — just write code
print("Hello, World!")
nums = [1, 2, 3, 4, 5]
result = nums |> filter(|x| x > 2) |> map(|x| x * x)
print(result)
print("Hello, World!")
nums = [1, 2, 3, 4, 5]
result = list(map(
lambda x: x * x,
filter(lambda x: x > 2, nums)
))
print(result)
Power, simplicity, and speed in one language.
Simpler than any mainstream language. Python has 35, Rust has 39, C++ has 97. Pyro proves you can do more with less.
Compiled to optimized machine code. 10-100x faster than Python on compute-heavy workloads. Fibonacci(35) in 0.02s vs Python's 3.2s.
More batteries included than Python's standard library. From HTTP servers to AES encryption to CSV parsing — all built in.
Data flows left to right, not inside out. Chain operations naturally. No more nested function calls or temporary variables.
AES-256-GCM encryption, SHA-256 hashing, PBKDF2 key derivation, and more. Production-grade cryptography built right in.
REPL, LSP server, code formatter, debugger, profiler, and package manager. Everything you need from day one.
Same simplicity. More power. No boilerplate.
name = "Aravind" # assignment
age = 25
def greet(name): # def, colon
return f"Hi {name}" # f-prefix
for i in range(10): # range(), colon
print(i)
if age > 18: # colon
print("adult")
name = "Aravind" # IDENTICAL
age = 25
fn greet(name) # shorter, no colon
return "Hi {name}" # no f-prefix needed
for i in 0..10 # cleaner ranges
print(i)
if age > 18 # no colon
print("adult")
A head-to-head comparison with the most popular languages.
| Feature | Pyro | Python | Go | Rust | JavaScript |
|---|---|---|---|---|---|
| Keywords | 23 | 35 | 25 | 39 | 30 |
| Compilation | Native binary | Interpreted | Native binary | Native binary | JIT / Interpreted |
| Speed (Fibonacci 35) | 0.02s | 3.2s | 0.05s | 0.01s | 0.6s |
| Built-in Modules | 76 | ~70 (stdlib) | ~40 | ~15 | ~10 |
| Pipe Operator | Yes ( |> ) | No | No | No (nightly) | Stage 2 proposal |
| Built-in Crypto | AES-256, SHA, PBKDF2 | hashlib, ssl | crypto pkg | External crate | Web Crypto API |
| Pattern Matching | match expression | match (3.10+) | No | match expression | No |
| Memory Safety | Compile-time checks | GC managed | GC managed | Ownership model | GC managed |
| Learning Curve | Very easy | Very easy | Easy | Steep | Easy |
| Built-in Toolchain | REPL, LSP, fmt, debug | REPL only | go fmt, go vet | cargo, rustfmt | npm (external) |
| Startup Time | ~1ms | ~30ms | ~2ms | ~1ms | ~40ms (Node) |
See Pyro in action across different domains.
# Hello World in Pyro — no main() needed
name = "World"
print("Hello, {name}!")
# No imports, no main(), no semicolons, no types
for i in 0..5
print("Count: {i}")
# Functions, closures, and recursion
fn fibonacci(n)
if n <= 1
return n
return fibonacci(n - 1) + fibonacci(n - 2)
fn apply(f, val)
return f(val)
double = |x| x * 2
print(apply(double, 21)) # 42
print(fibonacci(35)) # 9227465
# Lists, maps, and the pipe operator
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# Pipe operator: data flows left to right
evens = data |> filter(|x| x % 2 == 0)
squares = evens |> map(|x| x * x)
total = squares |> reduce(|a, b| a + b)
print("Sum of even squares: {total}")
# Sum of even squares: 220
# Maps (dictionaries)
scores = {"Alice": 95, "Bob": 87, "Carol": 92}
print(scores["Alice"]) # 95
print(scores["Bob"]) # 87
# HTTP web server in Pyro
import web
fn home(req)
return web.html("<h1>Welcome to Pyro!</h1>")
fn api_users(req)
return web.json("[{\"name\": \"Alice\"}, {\"name\": \"Bob\"}]")
mut app = web.app()
app.get("/", home)
app.get("/api/users", api_users)
print("Server running on :8080")
app.listen(8080)
# Data analysis in Pyro
import math
# Compute stats on a dataset
data = [23, 45, 12, 67, 34, 89, 56]
total = data.sum()
count = data.len()
avg = total / count
print("Sum: {total}")
print("Count: {count}")
print("Average: {avg}")
print("Min: {data.min()}, Max: {data.max()}")
# Filter and transform with pipes
big = data |> filter(|x| x > 30)
print("Values > 30: {big}")
# Built-in crypto — zero pip install
import crypto
import validate
# Hash a password
hash = crypto.hash_sha256("my_password")
print("SHA-256: {hash}")
# Validate input
print(validate.email("test@email.com"))
print(validate.url("https://pyro.dev"))
# Timing and scheduling
import time
start = time.now()
mut sum = 0
for i in 0..1000000
sum = sum + i
elapsed = time.now() - start
print("Sum: {sum}")
print("Time: {elapsed} ms")
Benchmarked on an AMD Ryzen 9 5900X, 32 GB RAM, Ubuntu 22.04.
Everything you need, from day one. No package manager required for the basics.
Install Pyro in under a minute.
curl -fsSL https://aravindlabs.tech/pyro-lang/install.sh | bash
curl -fsSL https://aravindlabs.tech/pyro-lang/install.sh | bash
irm https://aravindlabs.tech/pyro-lang/install.ps1 | iex
Pre-built binary + C++ toolchain. No Visual Studio, no restarts.
Aravind Pilla is a developer who believes programming languages should be powerful without being painful. Pyro was born from a simple question: what if a language had the speed of C++, the readability of Python, and the batteries-included philosophy turned up to eleven? With 7,045 lines of compiler code, 76 built-in modules, and 199 passing tests, Pyro is the answer. Built at aravindlabs.tech.
Learn the entire keyword set in minutes.