A clean, minimal scripting language that seamlessly integrates with Rust.
- π Quick Start Guide - Learn RustX basics
- π Quick Reference - Syntax cheat sheet
- π» Installation - Setup instructions
- π€ Contributing - How to contribute
- π Changelog - Version history
# Linux/macOS - One-line installer
curl -sSL https://raw.githubusercontent.com/GrandpaEJx/RustX/main/install.sh | bash
# Or download manually from GitHub Releases
# https://github.com/GrandpaEJx/RustX/releases/latestSee INSTALL.md for detailed installation instructions.
cargo install --git https://github.com/GrandpaEJx/RustX rustxrustx examples/basic.rsx# Compile a script to a standalone executable
rustx build examples/basic.rsx --output my_app
# Run the compiled binary
./my_apprustx replname = "World"
print(`Hello, {name}!`)
- π Simple Syntax - Clean, Python-like syntax
- π Rust Integration - Use RustX in Rust via macros
- π¦ Rich Built-ins - 15+ built-in functions
- π Web Framework - Build high-performance web servers (67k+ RPS)
- π Standard Library - web, json, time, http, os, fs, term modules
- π― Template Strings - Backtick strings with
{var}interpolation - π οΈ Compiler - Transpiles to Rust for native performance
- π REPL - Interactive shell with history
- β‘ Fast - Tree-walk interpreter written in Rust
- π Standalone - No Rust required for interpreter mode
RustX runs in two modes:
| Mode | Speed | Requires Rust | Use Case |
|---|---|---|---|
| Interpreter | Fast startup | β No | Most scripts, prototyping |
| JIT Compiler | ~6x faster than Node.js | β Yes | Performance-critical code |
Interpreter mode is the default - just run rustx script.rsx and it works immediately!
JIT compilation is only needed for:
rust {}blocks (embedded Rust code)rust_importstatements (native dependencies)- Maximum performance (see benchmarks)
x = 42 // Integer
pi = 3.14 // Float
name = "Alice" // String
active = true // Boolean
items = [1, 2, 3] // Array
name = "Bob"
age = 25
print(`My name is {name} and I'm {age} years old`)
// String methods
"hello world".upper() // HELLO WORLD
" trim me ".trim().lower() // trim me
// Array methods
[1, 2, 3].len() // 3
// Math methods
3.14.round() // 3
(-42).abs() // 42
fn greet(name) {
`Hello, {name}!`
}
fn add(a, b) => a + b // Arrow function
// If expression
result = if age >= 18 { "Adult" } else { "Minor" }
// Loops
for i in range(5) {
print(i)
}
while x < 10 {
x = x + 1
}
New! Explicit imports for better performance:
// Import only what you need
use json
use os
// Now use the modules
data = json.parse(`{"name": "Alice"}`)
path = os.env("HOME")
Benefits:
- π Faster startup (no overhead from unused modules)
- π¦ Cleaner transpiled code (9 lines vs 22 for hello world!)
- π Explicit dependencies (like Python/JavaScript)
Available modules: json, http, os, time, web, fs, term
Build high-performance web servers with built-in modules:
use web
rust {
// Force JIT compilation
}
import web
import json
let app = web.app()
fn home(body, debug) {
return web.json({
"name": "RustX API",
"version": "1.0.0",
"status": "running"
})
}
fn add(body, debug) {
let data = json.parse(body)
let result = data["a"] + data["b"]
return web.json({"sum": result})
}
app.get("/", home)
app.post("/add", add)
app.listen(8080, false, 4)
Performance: 67k RPS (100 connections), 57k RPS (1000 connections)
You can import Rust crates and write raw Rust code:
use crate "rand" = "0.8"
rust {
fn get_random() -> Result<Value, String> {
let n: i64 = rand::random::<u8>() as i64;
Ok(Value::Int(n))
}
}
print("Random:", get_random())
Core: print, range, len, type, push, pop
String: split, join, trim, upper, lower
Math: abs, min, max, floor, ceil, round
Standard Library Modules:
web- Build web servers and APIsjson- Parse and serialize JSONtime- Timestamps and delayshttp- HTTP client requestsos- Environment and CLI args
See complete API reference β
use rustx_macros::rx;
fn main() {
let result: i64 = rx! { "10 + 20 * 2" };
println!("Result: {}", result); // Result: 50
}Check out the examples/ directory:
basic.rsx- Variables, functions, arraysloops.rsx- For and while loopsrecursion.rsx- Recursive functionstemplate_strings.rsx- Template string interpolationmethod_chaining.rsx- Method chaining with dot operatorstring_math.rsx- String and math functionsrust_imports.rsx- Importing crates and embedding Rustweb_server.rsx- Running an Actix-web server
RustX/
βββ crates/
β βββ core/ # Language core (lexer, parser, interpreter)
β βββ macros/ # rx! and rsx! macros
β βββ cli/ # Command-line interface
βββ examples/ # Example scripts
βββ docs/ # Documentation
Q: Is RustX faster than Python?
A: The interpreter is generally slower than CPython, but the compiler (which compiles to native Rust) can be significantly faster, especially for loop-heavy code.
Q: Can I use crates.io libraries?
A: Yes! As of v0.3.0, you can use use crate "name" = "version" to import crates directly into your scripts. RustX detects this and JIT-compiles your script to a native Rust binary.
Q: Does RustX support classes/structs?
A: Not yet. We support Maps and Functions for data structure and logic.
Contributions welcome! Please read our contributing guidelines.
MIT License - see LICENSE file for details.
Made with β€οΈ in Rust