# aria2-rust-pro `aria2-rust-pro` is an independently maintained Rust 2024 implementation of an aria2-compatible download client. Its compatibility and migration work are informed by [Aria2-Pro-Core](https://github.com/P3TERX/Aria2-Pro-Core) and the upstream [aria2 project](https://github.com/aria2/aria2). This repository is the maintained Rust line for the project. It aims to keep the familiar aria2 configuration and RPC surface, while moving the implementation onto a modern Cargo-based toolchain, stricter quality gates, and source-first packaging automation. ## Project Origins - [Aria2-Pro-Core](https://github.com/P3TERX/Aria2-Pro-Core) is the direct compatibility and migration reference for the enhanced deployment profile. - [aria2](https://github.com/aria2/aria2) is the upstream project whose CLI, configuration, and RPC contracts guide this implementation. See [Project Origins](docs/project-origins.md) for the scope of those references and this project's independent maintenance model. ## What This Repository Provides - a Rust-native `aria2-rust-pro` CLI with aria2-style config and RPC behavior - a Docker image build that preserves the familiar Pro Docker environment model - a Cargo-native `xtask` workflow for release packaging, Docker smoke tests, and local export - strict workspace-wide linting, testing, and dependency policy enforcement - local release staging for Windows artifacts and portable Docker image tar exports ## Current Snapshot The repository already includes: - a local Windows release packaging flow - a local Docker image export flow - JSON-RPC and XML-RPC coverage for representative aria2 client paths - BitTorrent, Metalink, HTTP, HTTPS, XML-RPC, JSON-RPC, and SFTP feature surfaces in the current binary banner The current public repository state should be read as: - source of truth for ongoing Rust development - suitable for local builds, local packaging, and local Docker deployment - released as a source snapshot under `v1.0.0`; binary and image assets are built locally from the documented packaging workflows - not yet presented as a public container registry or broad multi-platform binary distribution service ## Quick Start ### Build the binary ```powershell rtk cargo build --release -p aria2-rust-pro-cli --bin aria2-rust-pro ``` ### Check the version banner ```powershell .\target\release\aria2-rust-pro.exe --version ``` ### Run the main validation lanes ```powershell rtk cargo check --workspace --all-targets --all-features --locked rtk cargo nextest run --workspace --all-targets --all-features --locked ``` ### Package a local release artifact ```powershell rtk cargo run --manifest-path .\xtask\Cargo.toml -- release package-local --build ``` ### Build and export a local Docker image tar ```powershell rtk cargo run --manifest-path .\xtask\Cargo.toml -- docker export-local --build ``` ## Repository Guide - [docs/deployment/README.md](docs/deployment/README.md): native and Docker deployment guide - [docs/migration/README.md](docs/migration/README.md): migration notes from existing [Aria2-Pro-Core](https://github.com/P3TERX/Aria2-Pro-Core) and Aria2-Pro-Docker installs - [docs/release/README.md](docs/release/README.md): local release packaging, Docker export, and artifact manifest flow - [docs/release/RELEASE-NOTES-TEMPLATE.md](docs/release/RELEASE-NOTES-TEMPLATE.md): release announcement template - [docs/compatibility/aria2-compat-ledger.md](docs/compatibility/aria2-compat-ledger.md): compatibility tracking ledger - [docs/testing/quality-gates.md](docs/testing/quality-gates.md): required test and lint gates - [CONTRIBUTING.md](CONTRIBUTING.md): contribution workflow and repository expectations - [CHANGELOG.md](CHANGELOG.md): release-facing change history ## Workspace Layout - `crates/aria2-rust-pro-cli`: CLI surface, config projection, runtime launch, and rendering - `crates/aria2-rust-pro-compat`: aria2-facing option and compatibility layer - `crates/aria2-rust-pro-core`: scheduler, engine, runtime coordination - `crates/aria2-rust-pro-protocol`: HTTP, BitTorrent, Metalink, and transport domain logic - `crates/aria2-rust-pro-rpc`: JSON-RPC, XML-RPC, routing, and handlers - `crates/aria2-rust-pro-storage`: session and persistence layers - `crates/aria2-rust-pro-tests`: integration, compatibility, and pressure tests - `xtask/`: Cargo-native project automation - `docker/`: image build, entrypoint, compose example, and bundled defaults ## Packaging and Local Artifacts Local staged artifacts live under: - `dist/release/v/` for packaged release archives - `dist/docker/v/` for portable Docker image tar exports The package and export commands emit checksum files and JSON manifests beside the artifacts so a staged build can be moved to another machine and verified without guessing which binary or image tag it came from. ## Compatibility Direction The compatibility target is practical aria2 interoperability rather than a novel CLI surface. That means the project prioritizes: - aria2-style config semantics - existing RPC client compatibility - migration paths from [Aria2-Pro-Core](https://github.com/P3TERX/Aria2-Pro-Core) and Aria2-Pro-Docker - release packaging that keeps runtime evidence with the artifact ## License `aria2-rust-pro` is licensed under [GPL-2.0-or-later](LICENSE). OpenSSL linking-exception handling remains a release and documentation concern carried forward from the aria2 ecosystem.