Skip to main content

Python bindings for rars RAR archive toolkit

Project description

rars

A Rust implementation of RAR.

Current Status

rars covers the RAR lineage from early RE~^ archives through RAR 7, compression and decompression. It's not fast, but it works. ish.

Rust API

Use the rars crate for Rust applications and libraries. Since 0.4, the lower-level rars-format, rars-codec, rars-crypto, rars-crc32, and rars-recovery crates are folded into rars; those standalone crates ended at 0.3.x. Applications should depend on rars, and command-line installs should use rars-cli.

CLI

Inspect, test, and extract archives:

rars info archive.rar
rars test archive.rar
rars x archive.rar out/

Create archives with specific RAR generation:

rars a --format rar29 archive.rar files...
rars a --format rar50 --solid --auto-filter archive.rar files...
rars a --format rar70 --store --volume-size 10m archive.part1.rar files...

The writer supports stored and compressed members, split volumes, passwords, header encryption where implemented, comments, RARVM filters, RAR5 quick-open records, and supported recovery records. Run rars --help for the exact option set.

Fast Builds

The optional fast feature enables safe portable SIMD paths for selected hot compression and decompression helpers, including LZ match scanning, x86 filter scanning, and CRC-32 updates. It uses Rust's experimental std::simd API, so it requires a nightly toolchain. Default builds do not enable this feature and remain stable-compatible.

Build or run the CLI with the fast path:

cargo +nightly run -p rars-cli --features fast -- info archive.rar
cargo +nightly build --workspace --features fast

Run the fast test and benchmark paths:

cargo +nightly test --workspace --features fast
cargo +nightly bench -p rars --bench chunk_sizes --features fast

Parallel Builds

The optional parallel feature enables Rayon worker threads for independent archive members. It parallelizes non-solid compression planning for supported writers and buffered extraction of non-solid, non-split single archives while preserving archive order for output. Solid archives and multivolume extraction fall back to the existing sequential stream because their codec state depends on member order.

Build or run the CLI with parallel workers:

cargo run -p rars-cli --features parallel -- --threads 4 a --format rar50 archive.rar files...
cargo run -p rars-cli --features parallel -- x --threads 4 archive.rar out/
cargo test --workspace --features parallel

Measure parallel archive-member work with Criterion:

cargo bench -p rars --bench parallel --features parallel
cargo +nightly bench -p rars --bench parallel --features fast,parallel

The parallel benchmark reports 1_thread and all_threads_N cases for RAR5 multi-member compression and extraction.

When --threads is omitted, rars uses all available cores. Passing --threads to a CLI built without parallel is rejected.

Python bindings

The workspace includes PyO3 bindings packaged as the rars Python module for Python 3.10 and newer. The default Python build enables the Rust parallel feature; the optional fast feature is available for nightly Rust builds only because it relies on std::simd.

maturin develop
RUSTUP_TOOLCHAIN=nightly maturin develop --features fast

The Python API exposes a rarfile-style RarFile for listing, reading, testing, and extracting archives, plus RarBuilder for creating or rewriting archives. Rewrites are staged into a new archive; existing RAR files are not edited in place.

Development

Run the test suite:

cargo test --workspace --all-targets

Generate a local coverage report:

rustup component add llvm-tools-preview
./scripts/coverage.py

The script prints a line-coverage summary, saves it to target/coverage/summary.txt, and writes HTML output to target/coverage/html/library/index.html and target/coverage/html/cli/index.html.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rars-0.4.0.tar.gz (4.6 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

rars-0.4.0-cp310-abi3-win_amd64.whl (899.4 kB view details)

Uploaded CPython 3.10+Windows x86-64

rars-0.4.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

rars-0.4.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (953.9 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

rars-0.4.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (1.9 MB view details)

Uploaded CPython 3.10+macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file rars-0.4.0.tar.gz.

File metadata

  • Download URL: rars-0.4.0.tar.gz
  • Upload date:
  • Size: 4.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rars-0.4.0.tar.gz
Algorithm Hash digest
SHA256 bcbc50c1d3328f8a04f680c7e730df9a47b244064d194b83aa7f9aff37bc765c
MD5 93095abf3f30b51a97da48dd4c6227d0
BLAKE2b-256 5c505040794e1db867e88c693c4eb1267d868de23c425d8c937d66b94eb3c7c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for rars-0.4.0.tar.gz:

Publisher: release.yml on bitplane/rars

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rars-0.4.0-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: rars-0.4.0-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 899.4 kB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rars-0.4.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 d7b7ec8a1625d63da0047052e84bc6d3dd0d0f8b34d0a01427262f59e0ee9f4b
MD5 5340e2c05c3adbb76901b276505f4365
BLAKE2b-256 b092afb098292c76843b3115fbfe062d3ce36cc5d57bb68cece35f861aea6491

See more details on using hashes here.

Provenance

The following attestation bundles were made for rars-0.4.0-cp310-abi3-win_amd64.whl:

Publisher: release.yml on bitplane/rars

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rars-0.4.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rars-0.4.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fd466b2749cb6b972439a0307b90ca28d9af6ad732ab6815127299c2c5a54163
MD5 40775e7c8a14b6009b0de66b7808e185
BLAKE2b-256 ca82bb9122c0dc81a6a36b2543567360bafe0034b2cc708a78fc0d4cf8b9daf2

See more details on using hashes here.

Provenance

The following attestation bundles were made for rars-0.4.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on bitplane/rars

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rars-0.4.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for rars-0.4.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7acae7f440538eb1c6a3001a1a47a1b9532bc8f424a366e3abb51370e16425ca
MD5 3a4fbb71236583794a6d36df013f2aa9
BLAKE2b-256 1a7d1c02439bd56d8ab16799732c0be4ba067391081f6ce3aab6023dcd277b1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for rars-0.4.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on bitplane/rars

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rars-0.4.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for rars-0.4.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 d3610fe9f708ee97430b665447782fa1088f7e15a04e20ea957dc4f219572af2
MD5 ec048ea91d51c3fbe6d56a2947fef753
BLAKE2b-256 2f763182ff0dcb04dcb08f78b6a3437a2ccc04315616a4f95891c50dd897ec0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for rars-0.4.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: release.yml on bitplane/rars

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page