Files
aria2-rust-pro/README.md
T

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-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

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

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<version>/ for packaged release archives
  • dist/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.