Releases: paiml/bashrs
v6.66.1
v6.66.1 — CI/release plumbing fix
Patch-level release that fixes binary-release multi-target builds.
Fixed
binary-release.yml: explicitrustup target addagainst the workspace-pinned toolchain so x86_64-unknown-linux-musl native cross-compiles don't fail with "can't find crate forcore" mid-build (#200).binary-release.yml: dropprovable-contractspath = ".."Cargo dev-dependency override so aarch64 cross builds resolve the dep purely from crates.io (#201). cross v0.2.5 mounts only the workspace dir into its Docker container — sibling-of-workspace path deps were unreachable inside the cross image.
Notes
- v6.66.0 release captured x86_64-unknown-linux-{gnu,musl} binaries, but aarch64 builds failed (path-dep override unreachable inside cross). v6.66.1 is the first tag where the corrected workflow + corrected
Cargo.tomlline up to produce all four Linux tarballs. - No source-level changes from v6.66.0; CI/release plumbing only.
Nightly Build
Automated nightly build from main.
Date: 2026-04-27T21:20:16Z
Commit: ac20d8d
This is a prerelease. For stable releases, see the latest tagged version.
v6.66.0
v6.65.0
Full Changelog: v6.64.0...v6.65.0
v6.64.0
Full Changelog: v6.63.0...v6.64.0
v6.63.0
v6.63.0 — corpus expansion, transpiler improvements, linter hardening - Corpus: 97.0/100 A+ score, +5400 entries (17,882 total) - Makefile emitter raw output mode - Nested __if_expr lowering for let-assignment and return - Parser println! macro fix for escaped quotes - SEC001/SEC002 linter improvements - Comprehensive complexity refactor in parser.rs
v6.62.0 — Variable shadowing, 15,106 corpus entries
Fixed
- Variable Shadowing in Loops (P0): save/restore pattern for let-bindings
- 80 corpus failures eliminated (97.0 → 97.5 A+)
- Lexer panic on bare heredoc
- Pipe-in-condition parser (#133)
- Dynamic array indexing with runtime variables
- For-in array expansion
Added
- 819 new corpus entries (Rounds 21-37 + 20 shadow pathological)
- 15,106 total entries, 97.5/100 A+, 0 failures
Install
cargo install bashrs --version 6.62.0
v6.61.0 — 2 P0 Transpiler Fixes + 14,712 Corpus Entries
Highlights
Transpiler Bug Fixes (P0)
Two critical correctness bugs fixed in the Rust-to-Shell transpiler:
-
Return-in-loop:
return exprinsidewhile/for/matchbodies within functions was emitting debug format strings (Arithmetic { op: Add, ... }) instead of shell arithmetic ($((expr))). Root cause: loop/match bodies were not propagating function-context awareness for return handling. -
Match-in-let:
let x = match y { 0 => a, 1 => b, _ => c }was producingx='unknown'instead of a propercasestatement with per-arm assignments. Root cause: the parser represents match-as-expression asExpr::Block([Stmt::Match{...}]), which had no handler inconvert_expr_to_value.
Both bugs were silent — the transpiler succeeded but generated incorrect shell code.
Corpus Expansion
- 14,712 total entries (13,397 Bash + 695 Makefile + 620 Dockerfile)
- V2 Score: 97.5/100 (A+), 0 failures
- 107+ CLI subcommands for corpus analysis, quality gates, and convergence tracking
New Example
cargo run --example transpiler_demo — 7 self-verifying demonstrations:
- Basic functions with return values
- Nested function calls:
f(g(h(x))) - Match expressions in let bindings
- While loops with early return
- Match inside loops (combined pattern)
- Recursive functions (fibonacci)
- Multi-function programs (gcd/lcm)
Documentation
- New Transpiler chapter in The Rash Book (overview + corpus testing)
- Updated README with current quality metrics
- Updated book version references
Quality
| Metric | Value |
|---|---|
| Tests | 10,888 passing (100%) |
| V2 Corpus Score | 97.5/100 (A+) |
| Corpus Entries | 14,712 (0 failures) |
| Transpilation | 100% pass rate |
| Deterministic | 100% |
| Cross-shell (sh+dash) | 98.8% |
Install
```bash
cargo install bashrs
```
v6.60.0 - Corpus Expansion & CLI Test Coverage
Summary
- 500+ transpilation corpus entries across all 5 tiers (Bash, Makefile, Dockerfile) — 100% pass rate, Grade A+
- 114 new CLI command tests for score, coverage, and analysis commands
- 5 bug fixes: format! macro (bug #8), assignment expression (B-016), arithmetic CommandSubst, and 3 Tier 4 adversarial bugs
- 3x faster coverage analysis via single-profraw rewrite
- Refactored constant folding to reduce cognitive complexity
Quality
| Metric | Value |
|---|---|
| Tests | 10,016 passed (0 failed) |
| Line Coverage | 91.23% |
| Function Coverage | 95.07% |
| PMAT Score | 152.5/159 (95.9%, Grade A+) |
| Corpus | 500+ entries, 100% pass rate |
Install
cargo install bashrs --version 6.60.0Crates
v6.57.0 - DSL exec() Fix & Documentation
Highlights
Bug Fixes
-
Issue #95: Fixed
exec()string validation false positivesexec("cmd1 | cmd2")now compiles successfully- Shell operators (
|,&&,||,;) allowed in exec() arguments - Shellshock and command substitution protection still active
-
Issue #95 (part 2): Fixed
exec()transpilation- Now emits
eval 'command'instead ofexec 'command' - Properly handles pipes and shell operators at runtime
- Now emits
Documentation
- Added DSL built-in functions reference (
book/src/reference/dsl-builtins.md) - Documented
echo()andexec()usage patterns - Added version history for DSL changes
Quality
- 91.76% line coverage (85% minimum)
- 95.36% region coverage
- All examples pass
- Book tests pass
Upgrade
cargo install bashrs --version 6.57.0