MCPcopy Index your code
hub / github.com/aaronriekenberg/rust-parallel

github.com/aaronriekenberg/rust-parallel @v1.23.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.23.0 ↗ · + Follow
220 symbols 532 edges 20 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

rust-parallel

Crates.io Homebrew CI workflow

Run commands in parallel and aggregate outputs. Async application using tokio.

Example commands and detailed manual.

Listed in Awesome Rust - utilities

Similar interface to GNU Parallel or xargs plus useful features: * More than 10x faster than GNU Parallel in benchmarks * Run commands from stdin, input files, or ::: arguments * Pipe mode to read blocks from stdin and pass to commands. * Automatic parallelism to all cpus, or configure manually * Transform inputs with variables or regular expressions * Prevent output interleaving and maintain input order with -k/--keep-order * Shell mode to run bash functions and commands * TUI progress bar using indicatif * Path cache * Command timeouts * Structured debug logging * Dry run mode * Configurable error handling

Contents:

Installation

Homebrew

With Homebrew installed, run

brew install rust-parallel

Pre-built release

  1. Download a pre-built release from Github Releases for Linux, MacOS, or Windows.
  2. Extract the executable and put it somewhere in your $PATH.

From Crates.io via Cargo

  1. Install Rust
  2. Install the latest version of this app from crates.io:

    $ cargo install rust-parallel

The same cargo install rust-parallel command will also update to the latest version after initial installation.

Documents:

  1. Examples - complete runnable commands to give an idea of overall features.
  2. Manual - more detailed manual on how to use individual features.
  3. Benchmarks
  4. Output Interleaving - output interleaving in rust-parallel compared with other commands.

Tech Stack:

  • anyhow used for application error handling to propogate and format fatal errors.
  • bytesize use to parse and format --block-size parameter.
  • clap command line argument parser.
  • itertools using multi_cartesian_product to process ::: command line inputs.
  • indicatif optional TUI progress bar.
  • regex optional regular expression capture groups processing for -r/--regex option.
  • tokio asynchronous runtime for rust. From tokio this app uses:
  • async / await functions (aka coroutines)
  • Singleton CommandLineArgs instance using tokio::sync::OnceCell.
  • Asynchronous command execution using tokio::process::Command
  • tokio::sync::Semaphore used to limit number of commands that run concurrently.
  • tokio::sync::mpsc::channel used to receive inputs from input task, and to send command outputs to an output writer task. To await command completions, use the elegant property that when all Senders are dropped the channel is closed.
  • tracing structured debug and warning logs.
  • tracing::Instrument is used to provide structured debug logs.
  • which used to resolve command paths for path cache.

Core symbols most depended-on inside this repo

Shape

Method 93
Function 86
Class 32
Enum 9

Languages

Rust100%

Modules by API surface

tests/integration_tests.rs39 symbols
src/parser/regex.rs24 symbols
src/parser/command_line.rs17 symbols
src/command/metrics.rs16 symbols
src/process.rs13 symbols
src/input.rs13 symbols
src/command_line_args.rs12 symbols
src/parser/buffered.rs11 symbols
src/command.rs10 symbols
src/parser/pipe.rs9 symbols
src/progress/style.rs8 symbols
src/parser.rs7 symbols

For agents

$ claude mcp add rust-parallel \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page