Pyro

The language that makes C++ simple and Python jealous.

Created by Aravind Pilla

Pyro
# 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)
Python

print("Hello, World!")

nums = [1, 2, 3, 4, 5]
result = list(map(
    lambda x: x * x,
    filter(lambda x: x > 2, nums)
))
print(result)
0
Keywords
0
Built-in Modules
0
Tests Passing
0
Lines of Compiler

Why Pyro?

Power, simplicity, and speed in one language.

23

23 Keywords

Simpler than any mainstream language. Python has 35, Rust has 39, C++ has 97. Pyro proves you can do more with less.

C+

Native C++ Speed

Compiled to optimized machine code. 10-100x faster than Python on compute-heavy workloads. Fibonacci(35) in 0.02s vs Python's 3.2s.

76

76 Built-in Modules

More batteries included than Python's standard library. From HTTP servers to AES encryption to CSV parsing — all built in.

|>

Pipe Operator |>

Data flows left to right, not inside out. Chain operations naturally. No more nested function calls or temporary variables.

🔒

Real OpenSSL Security

AES-256-GCM encryption, SHA-256 hashing, PBKDF2 key derivation, and more. Production-grade cryptography built right in.

Full Toolchain

REPL, LSP server, code formatter, debugger, profiler, and package manager. Everything you need from day one.

Pyro vs Python

Same simplicity. More power. No boilerplate.

Python
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")
Pyro
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")

How Pyro Compares

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)

Code Examples

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")

Raw Speed

Benchmarked on an AMD Ryzen 9 5900X, 32 GB RAM, Ubuntu 22.04.

Fibonacci(35) — Recursive

Pyro
0.02s
0.02s
Rust
0.01s
0.01s
Go
0.05s
0.05s
Python
3.2s
3.2s

HTTP Throughput — Requests per Second

Go
100k rps
100k rps
Pyro
50k rps
50k rps
Python
2k rps
2k rps

CSV Processing — 1M Rows

Pyro
0.1s
0.1s
Python
2.5s
2.5s

Startup Time

Pyro
0.001s
0.001s
Python
0.03s
0.03s

76 Built-in Modules

Everything you need, from day one. No package manager required for the basics.

Core (12)

std io os fs path fmt math time log errors types reflect

Data (12)

json csv xml yaml toml base64 hex sqlite collections iter serialize compress

Web (10)

http url websocket html template mime cookie router cors sse

Security (8)

crypto hash hmac aes rsa tls jwt pbkdf2

Algorithms (8)

sort search graph matrix stats random bigint bitops

Networking (10)

net tcp udp dns smtp ftp ssh grpc mqtt redis

System (8)

process thread async signal env sys mem ffi

Text (8)

string regex unicode glob diff color table plot

Get Started

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.

See full installation guide →

About the Creator

AP

Aravind Pilla

Creator of Pyro

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.

Just 23 Keywords

Learn the entire keyword set in minutes.

fn let mut if else for in while return import struct match pub async await true false nil try catch enum throw finally