5.4 KiB
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 and the
upstream aria2 project.
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 is the direct compatibility and migration reference for the enhanced deployment profile.
- aria2 is the upstream project whose CLI, configuration, and RPC contracts guide this implementation.
See Project Origins for the scope of those references and this project's independent maintenance model.
What This Repository Provides
- a Rust-native
aria2-rust-proCLI with aria2-style config and RPC behavior - a Docker image build that preserves the familiar Pro Docker environment model
- a Cargo-native
xtaskworkflow 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
rtk cargo build --release -p aria2-rust-pro-cli --bin aria2-rust-pro
Check the version banner
.\target\release\aria2-rust-pro.exe --version
Run the main validation lanes
rtk cargo check --workspace --all-targets --all-features --locked
rtk cargo nextest run --workspace --all-targets --all-features --locked
Package a local release artifact
rtk cargo run --manifest-path .\xtask\Cargo.toml -- release package-local --build
Build and export a local Docker image tar
rtk cargo run --manifest-path .\xtask\Cargo.toml -- docker export-local --build
Repository Guide
- docs/deployment/README.md: native and Docker deployment guide
- docs/migration/README.md: migration notes from existing Aria2-Pro-Core and Aria2-Pro-Docker installs
- docs/release/README.md: local release packaging, Docker export, and artifact manifest flow
- docs/release/RELEASE-NOTES-TEMPLATE.md: release announcement template
- docs/compatibility/aria2-compat-ledger.md: compatibility tracking ledger
- docs/testing/quality-gates.md: required test and lint gates
- CONTRIBUTING.md: contribution workflow and repository expectations
- CHANGELOG.md: release-facing change history
Workspace Layout
crates/aria2-rust-pro-cli: CLI surface, config projection, runtime launch, and renderingcrates/aria2-rust-pro-compat: aria2-facing option and compatibility layercrates/aria2-rust-pro-core: scheduler, engine, runtime coordinationcrates/aria2-rust-pro-protocol: HTTP, BitTorrent, Metalink, and transport domain logiccrates/aria2-rust-pro-rpc: JSON-RPC, XML-RPC, routing, and handlerscrates/aria2-rust-pro-storage: session and persistence layerscrates/aria2-rust-pro-tests: integration, compatibility, and pressure testsxtask/: Cargo-native project automationdocker/: image build, entrypoint, compose example, and bundled defaults
Packaging and Local Artifacts
Local staged artifacts live under:
dist/release/v<version>/for packaged release archivesdist/docker/v<version>/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. OpenSSL
linking-exception handling remains a release and documentation concern carried
forward from the aria2 ecosystem.