Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
757f395
empty
AlexandreYang May 6, 2026
a5a03a9
docs(rust): add design doc and phased progress tracker for Rust port
AlexandreYang May 6, 2026
6678c83
feat(rust): phase 0 — workspace scaffolding for the Rust port
AlexandreYang May 6, 2026
56d803d
feat(rust): phase 1 — YAML scenario test runner
AlexandreYang May 6, 2026
c7ac233
ci(rust): use pre-installed rust + pinned cache action
AlexandreYang May 6, 2026
3375921
docs(rust): record Phase 0/1 CI conclusions in PROGRESS.md
AlexandreYang May 6, 2026
87a91da
feat(rust): phase 2 — rshell-parser passes 2641/2641 corpus scripts
AlexandreYang May 6, 2026
96d8488
ci(rust): silence clippy manual_checked_ops on Rust 1.95
AlexandreYang May 6, 2026
be36e25
docs(rust): record Phase 2 CI conclusion
AlexandreYang May 6, 2026
1a95ca5
feat(rust): phase 3 — minimal interpreter passes 293/293 smoke set
AlexandreYang May 6, 2026
3135d89
docs(rust): record Phase 3 CI conclusion
AlexandreYang May 6, 2026
4788446
feat(rust): phase 4 wave 1 — cmdsubst, arith, brace mods, 13 new buil…
AlexandreYang May 6, 2026
00ca756
feat(rust): phase 4 wave 2 — find, du, strings; format fixes
AlexandreYang May 6, 2026
621976e
ci(rust): use sort_by_key for clippy 1.95 (sort_by reimplements Reverse)
AlexandreYang May 6, 2026
ac11d44
feat(rust): phase 4 wave 3 — add 'read' builtin (unblocks while/until)
AlexandreYang May 6, 2026
ece73af
ci(rust): fmt fix for read.rs
AlexandreYang May 6, 2026
fe370dc
feat(rust): phase 4 wave 4 — expand smoke set to 504/504
AlexandreYang May 6, 2026
7f232b2
feat(rust): phase 4 wave 5 — ps, ip, ss, ping (all 29 builtins ported)
AlexandreYang May 6, 2026
ea7df05
feat(rust): phase 5 + 6 — analyzer + REPORT.html generator
AlexandreYang May 6, 2026
b074f9d
docs(rust): record CI run for Phase 5+6
AlexandreYang May 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Rust

on:
push:
branches: [main]
pull_request:
branches: [main]
paths:
- 'rust/**'
- '.github/workflows/rust.yml'

permissions:
contents: read

jobs:
build-test:
name: Rust (${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
defaults:
run:
working-directory: rust
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Cache cargo registry and target
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: |
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/git/db
rust/target
key: ${{ runner.os }}-cargo-${{ hashFiles('rust/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-
- name: Show toolchain
shell: bash
run: |
rustup show active-toolchain
rustc --version
cargo --version
cargo fmt --version
cargo clippy --version
- name: Format
shell: bash
run: cargo fmt --all --check
- name: Lint
shell: bash
run: cargo clippy --all-targets -- -D warnings
- name: Build
shell: bash
run: cargo build --all-targets
- name: Test
shell: bash
run: cargo test --all-targets
- name: Symbol-allowlist analysis
shell: bash
run: cargo run --release -p rshell-analysis
22 changes: 21 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.PHONY: build fmt test test_all test_against_bash compliance
.PHONY: build fmt test test_all test_against_bash compliance \
rust-build rust-test rust-fmt rust-fmt-check rust-lint rust-all

build:
go build -o rshell ./cmd/rshell
Expand All @@ -17,3 +18,22 @@ test_against_bash:

compliance:
RSHELL_COMPLIANCE_TEST=1 go test -v ./tests/ -run TestCompliance -count=1

# --- Rust port (rust/ subdir) ---

rust-build:
cd rust && cargo build --all-targets

rust-test:
cd rust && cargo test --all-targets

rust-fmt:
cd rust && cargo fmt --all

rust-fmt-check:
cd rust && cargo fmt --all --check

rust-lint:
cd rust && cargo clippy --all-targets -- -D warnings

rust-all: rust-fmt-check rust-lint rust-build rust-test
2 changes: 2 additions & 0 deletions rust/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/target
**/*.rs.bk
Loading
Loading