Table of Contents
- What's New
- Why Rash?
- Quick Start
- Features
- Core Commands
- Advanced Testing
- Documentation
- Quality Metrics
- Shell Compatibility
- Performance
- MCP Server
- Contributing
- License
🚀 What's New in v6.50.0
Latest Release - 2026-01-06
- Logic Extraction for EXTREME TDD: Pure logic functions extracted from linter rules
sc2086_logic.rs: Double-quote detection (37 unit tests)sc2154_logic.rs: Variable reference validation (44 unit tests)devcontainer_logic.rs: JSON validation helpers (42 unit tests)sec010_logic.rs: Path traversal detection (26 unit tests)
- New Linter Rules: docker007-012, signal001, systemd001, launchd001
- Fast Coverage:
make coverageruns in under 5 minutes with nextest - Quality Metrics: 9,824 tests, 94.16% line coverage, 96.52% function coverage
See CHANGELOG.md for complete release notes.
Why Rash?
Shell scripts are everywhere—CI/CD pipelines, deployment automation, system configuration—but they're notoriously difficult to write safely. Rash solves this by providing:
- Bidirectional Safety: Write in Rust and transpile to shell, or purify existing bash scripts
- Automatic Transformation: Don't just detect problems—fix them automatically
- Deterministic Guarantees: Same input always produces identical, reproducible output
- Zero Runtime Dependencies: Generated scripts run on any POSIX-compliant system
Features
- 🛡️ Automatic Safety: Protection against shell injection, word splitting, glob expansion
- 🔍 Beyond Linting: Full AST semantic understanding - transforms code, doesn't just warn
- 📦 Zero Runtime Dependencies: Generated scripts work on any POSIX shell
- 🎯 Deterministic Output: Same input always produces identical scripts
- âś… ShellCheck Compliant: All output passes strict linting
How Rash Exceeds ShellCheck
| What ShellCheck Does | What Rash Does |
|---|---|
| ⚠️ Warns: "$RANDOM is non-deterministic" | ✅ Rewrites to version-based deterministic IDs |
| ⚠️ Warns: "mkdir may fail if exists" | ✅ Transforms to mkdir -p (idempotent) |
| ⚠️ Warns: "Unquoted variable expansion" | ✅ Quotes all variables automatically |
| Static pattern matching | Full AST semantic understanding |
| Detects issues (read-only) | Fixes issues (read-write transformation) |
Key Difference: ShellCheck tells you what's wrong. Rash understands your code's intent and rewrites it to be safe, deterministic, and idempotent — automatically.
Quick Start
Installation
# From crates.io (recommended)
# Or from source
Write Rust, Get Safe Shell
// install.rs
Transpile to safe POSIX shell:
Or Purify Existing Bash
Before (messy bash):
#!/bin/bash
SESSION_ID= # Non-deterministic
After (purified by Rash):
#!/bin/sh
session_id="session-" # âś… Deterministic
Core Commands
# Transpile Rust to shell
# Purify legacy bash scripts
# Interactive REPL with debugging
# Lint shell scripts (including Dockerfiles)
# Test bash scripts
# Quality scoring
# Comprehensive audit
Advanced Testing
Rash includes Probar integration for comprehensive quality assurance:
# State machine testing with playbooks
# Mutation testing (goal: >90% kill rate)
# Deterministic simulation replay
Mutation Operators: Rash applies 10 mutation operators including string mutations, command substitutions, conditional inversions, and redirect modifications to verify test quality.
📚 Documentation
The Rash Book is the canonical source for all documentation:
→ Read The Rash Book
Quick links:
Why the book?
- âś… All examples automatically tested
- âś… Always up-to-date with latest release
- âś… Comprehensive coverage of all features
- âś… Real-world examples and tutorials
Quality Metrics
| Metric | Value | Status |
|---|---|---|
| PMAT Score | 133/134 (99.3%) | âś… Grade A+ |
| Tests | 9,824 passing | âś… 100% pass rate |
| Line Coverage | 94.16% | âś… Near target (95%) |
| Function Coverage | 96.52% | âś… Exceeds target |
| T-code Falsification | 142/142 | âś… 130-point checklist |
| D-code Falsification | 31/31 | âś… Dockerfile validation |
| ShellCheck | 100% compliant | âś… All output passes |
| Shell Compatibility | 6 shells | âś… sh, dash, bash, ash, zsh, mksh |
Falsification Testing (Popper Methodology)
Rash uses Popperian falsification—tests attempt to disprove functionality rather than prove it works:
# Run 130-point transpiler falsification checklist
# Run 30-point Dockerfile falsification checklist
A passing test means the falsification attempt failed—the feature works correctly.
Shell Compatibility
Generated scripts are tested on:
| Shell | Version | Status |
|---|---|---|
| POSIX sh | - | âś… Full support |
| dash | 0.5.11+ | âś… Full support |
| bash | 3.2+ | âś… Full support |
| ash (BusyBox) | 1.30+ | âś… Full support |
| zsh | 5.0+ | âś… Full support |
| mksh | R59+ | âś… Full support |
Performance
Rash is designed for fast transpilation:
- Rust-to-Shell: 21.1µs transpile time
- Makefile Parsing: 0.034-1.43ms (70-320x faster than targets)
- Memory Usage: <10MB for most scripts
MCP Server
Rash provides a Model Context Protocol (MCP) server for AI-assisted shell script generation:
# Install MCP server
# Run server
Available in the official MCP registry as io.github.paiml/rash.
Contributing
We welcome contributions! See our Contributing Guide for details.
# Clone and test
# Run all quality checks
License
MIT License. See LICENSE for details.