| Crates.io | ruchy |
| lib.rs | ruchy |
| version | 3.46.0 |
| created_at | 2025-08-16 02:17:11.326836+00 |
| updated_at | 2025-09-24 19:44:01.986249+00 |
| description | A systems scripting language that transpiles to idiomatic Rust with extreme quality engineering |
| homepage | |
| repository | https://github.com/paiml/ruchy |
| max_upload_size | |
| id | 1797769 |
| size | 12,195,874 |
A modern, expressive programming language for data science and scientific computing, featuring a self-hosting compiler, comprehensive tooling, and enterprise-grade quality standards.
# Install from crates.io
cargo install ruchy
# Or build from source
git clone https://github.com/noahgift/ruchy
cd ruchy
cargo build --release
# Start the interactive REPL
ruchy repl
# Run a Ruchy script
ruchy run script.ruchy
# Format code
ruchy fmt src/
# Run tests
ruchy test run tests/
// Variables and functions
let x = 42
let add = fn(a, b) => a + b
// Pattern matching
match value {
Some(x) => println(f"Got {x}"),
None => println("Nothing"),
}
// Async/await with blocks and lambdas (NEW in v3.45.0)
async fn fetch_data(url) {
let response = await http.get(url)
response.json()
}
// Async blocks
let future_result = async {
let data = await fetch_data("api/users")
data.length
}
// Async lambdas
let processors = urls.map(async |url| await fetch_data(url))
let transformer = async |x, y| x + await compute(y)
// Define actors with state and message handlers
actor ChatAgent {
name: String,
message_count: i32,
receive process_message(content: String, sender: String) {
self.message_count = self.message_count + 1;
println("[" + self.name + "] From " + sender + ": " + content)
}
receive get_stats() -> String {
self.name + " processed " + self.message_count.to_string() + " messages"
}
}
actor BankAccount {
balance: i32,
account_number: String,
receive deposit(amount: i32) {
self.balance = self.balance + amount;
println("Deposited " + amount.to_string() + ". Balance: " + self.balance.to_string())
}
receive withdraw(amount: i32) {
if amount <= self.balance {
self.balance = self.balance - amount;
println("Withdrew " + amount.to_string() + ". Balance: " + self.balance.to_string())
}
}
receive get_balance() -> i32 {
self.balance
}
}
// DataFrame operations
let df = read_csv("data.csv")
let result = df
|> filter(row => row.age > 18)
|> group_by("category")
|> agg(mean("value"))
|> sort_by("mean_value", descending=true)
// Plotting
plot(df.x, df.y, kind="scatter", title="Analysis")
ruchy repl - Start interactive REPLruchy run <file> - Execute a Ruchy scriptruchy fmt <path> - Format code (supports --check flag)ruchy wasm compile <input> -o <output> - Compile to WASMruchy wasm validate <module> - Validate WASM moduleruchy wasm run <module> - Execute WASM moduleruchy notebook serve - Start notebook serverruchy notebook test <file> - Test notebook with coverageruchy notebook convert <input> <output> - Convert notebook formatruchy test run <path> - Run tests with optional coverageruchy test report - Generate test report (HTML/JSON/JUnit)ruchy/
├── src/
│ ├── frontend/ # Parser and AST
│ ├── middleend/ # Type system and inference
│ ├── backend/ # Code generation and transpilation
│ ├── runtime/ # REPL and interpreter
│ ├── lsp/ # Language server protocol
│ └── wasm/ # WebAssembly support
├── tests/ # Integration tests
├── examples/ # Example programs
└── docs/ # Documentation
This project follows strict quality engineering practices:
# Run tests
make test
# Check coverage
make coverage
# Run quality checks
make lint
# Build documentation
make doc
The project includes a comprehensive WebAssembly Quality Assurance Framework v3.0 with 4 validation phases:
# Run complete QA validation
make qa-framework
# Individual phases
make qa-foundation # Coverage & infrastructure
make qa-browser # Browser testing & WASM validation
make qa-quality # Security & complexity analysis
make qa-optimization # Performance & regression testing
# Quick quality checks
make qa-security # Security analysis
make qa-complexity # Complexity analysis
make qa-dashboard # Interactive quality dashboard
# See all QA commands
make qa-help
Quality Targets:
We welcome contributions! Please see our Contributing Guide for details on our code of conduct and development process.
This project is licensed under the MIT License - see the LICENSE file for details.