# aria2-rust-pro `aria2-rust-pro` is a Rust 2024 rewrite of the current Aria2-Pro-Core behavior, with upstream aria2 1.37.0 compatibility as the primary external contract. 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. ## 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 - backed by a self-hosted Gitea `v1.0.0` release with Windows archive, Docker tar, manifests, and checksum assets - 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 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 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.