From f5ae248a10acab7cbfa9c2b39f91276303800523 Mon Sep 17 00:00:00 2001 From: ausagentsmith Date: Mon, 6 Apr 2026 20:26:41 +1000 Subject: [PATCH 01/33] ci: add Dependabot configuration --- .github/dependabot.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..7526c92 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,22 @@ +version: 2 +updates: + - package-ecosystem: cargo + directory: / + schedule: + interval: weekly + day: monday + open-pull-requests-limit: 10 + groups: + rust-dependencies: + patterns: + - "*" + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly + day: monday + open-pull-requests-limit: 5 + groups: + github-actions: + patterns: + - "*" From 96e9ab1477ae5917ccbc88d3ab61b9cc9d4ba026 Mon Sep 17 00:00:00 2001 From: ausagentsmith Date: Mon, 6 Apr 2026 20:26:43 +1000 Subject: [PATCH 02/33] =?UTF-8?q?ci:=20add=20Dependabot=20=E2=86=92=20Line?= =?UTF-8?q?ar=20integration=20workflow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/dependabot-linear.yml | 41 +++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .github/workflows/dependabot-linear.yml diff --git a/.github/workflows/dependabot-linear.yml b/.github/workflows/dependabot-linear.yml new file mode 100644 index 0000000..67e5ff3 --- /dev/null +++ b/.github/workflows/dependabot-linear.yml @@ -0,0 +1,41 @@ +name: Dependabot Linear Integration + +on: + pull_request: + types: [opened] + +permissions: + pull-requests: read + +jobs: + create-linear-issue: + if: github.actor == 'dependabot[bot]' + runs-on: ubuntu-latest + steps: + - name: Create Linear Issue + env: + LINEAR_API_KEY: ${{ secrets.LINEAR_API_TOKEN }} + PR_TITLE: ${{ github.event.pull_request.title }} + PR_URL: ${{ github.event.pull_request.html_url }} + PR_BODY: ${{ github.event.pull_request.body }} + REPO_NAME: ${{ github.event.repository.name }} + run: | + DESCRIPTION="**Dependabot PR:** ${PR_URL} + + **Repository:** ${REPO_NAME} + + ${PR_BODY}" + + # Escape for JSON + TITLE=$(echo "$PR_TITLE" | jq -Rs '.') + DESC=$(echo "$DESCRIPTION" | jq -Rs '.') + + curl -s -X POST https://api.linear.app/graphql \ + -H "Content-Type: application/json" \ + -H "Authorization: ${LINEAR_API_KEY}" \ + -d "{ + \"query\": \"mutation { issueCreate(input: { title: ${TITLE}, description: ${DESC}, + teamId: \"c2acb063-92b9-4d9f-ab23-0ced91983a97\", + labelIds: [\"0ee40789-158e-4b1c-93b3-3974e1b80117\"] + }) { success issue { id identifier url } } }" + }' From fa2637fb6a28b4d384cae5cc4bb3ea27faa4a6c2 Mon Sep 17 00:00:00 2001 From: ausagentsmith Date: Mon, 6 Apr 2026 21:32:47 +1000 Subject: [PATCH 03/33] =?UTF-8?q?Disable=20dependabot=20=E2=80=94=20GitHub?= =?UTF-8?q?=20Actions=20restricted?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/dependabot.yml | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 7526c92..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,22 +0,0 @@ -version: 2 -updates: - - package-ecosystem: cargo - directory: / - schedule: - interval: weekly - day: monday - open-pull-requests-limit: 10 - groups: - rust-dependencies: - patterns: - - "*" - - package-ecosystem: github-actions - directory: / - schedule: - interval: weekly - day: monday - open-pull-requests-limit: 5 - groups: - github-actions: - patterns: - - "*" From 927b98aae89924f29d25118a91533c40da488cff Mon Sep 17 00:00:00 2001 From: ausagentsmith Date: Tue, 7 Apr 2026 07:27:51 +1000 Subject: [PATCH 04/33] Add Forgejo CI workflow --- .forgejo/workflows/ci.yml | 46 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 .forgejo/workflows/ci.yml diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml new file mode 100644 index 0000000..7d97cf1 --- /dev/null +++ b/.forgejo/workflows/ci.yml @@ -0,0 +1,46 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + workflow_dispatch: + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + check: + runs-on: ubuntu-latest + name: Build & Test + steps: + - uses: actions/checkout@v4 + + - name: Install system dependencies + run: | + sudo apt-get update + sudo apt-get install -y build-essential pkg-config libssl-dev cmake + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + components: clippy, rustfmt + + - name: Configure git for private deps + run: git config --global url."https://x-access-token:${{ secrets.GIT_AUTH_TOKEN }}@github.com/".insteadOf "https://github.com/" + + - name: Rust cache + uses: Swatinem/rust-cache@v2 + + - name: Format check + run: cargo fmt --all -- --check + + - name: Compile check + run: cargo check --workspace + + - name: Run tests + run: cargo test --workspace --lib + + - name: Clippy + run: cargo clippy --workspace -- -D warnings From dd860c795eae1a7c049f9ad31e225bc04a1e6a87 Mon Sep 17 00:00:00 2001 From: ausagentsmith Date: Tue, 7 Apr 2026 07:35:20 +1000 Subject: [PATCH 05/33] Fix CI: use manual Rust install instead of third-party actions --- .forgejo/workflows/ci.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index 7d97cf1..c55f402 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -23,16 +23,13 @@ jobs: sudo apt-get install -y build-essential pkg-config libssl-dev cmake - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable - with: - components: clippy, rustfmt + run: | + curl --proto =https --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --component clippy,rustfmt + echo "$HOME/.cargo/bin" >> $GITHUB_PATH - name: Configure git for private deps run: git config --global url."https://x-access-token:${{ secrets.GIT_AUTH_TOKEN }}@github.com/".insteadOf "https://github.com/" - - name: Rust cache - uses: Swatinem/rust-cache@v2 - - name: Format check run: cargo fmt --all -- --check From 6aba97bb6d561912acaaa6d051edde945293637f Mon Sep 17 00:00:00 2001 From: ausagentsmith Date: Tue, 7 Apr 2026 07:47:30 +1000 Subject: [PATCH 06/33] Simplify CI: Rust pre-installed in runner image --- .forgejo/workflows/ci.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index c55f402..4031b57 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -17,16 +17,6 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Install system dependencies - run: | - sudo apt-get update - sudo apt-get install -y build-essential pkg-config libssl-dev cmake - - - name: Install Rust toolchain - run: | - curl --proto =https --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --component clippy,rustfmt - echo "$HOME/.cargo/bin" >> $GITHUB_PATH - - name: Configure git for private deps run: git config --global url."https://x-access-token:${{ secrets.GIT_AUTH_TOKEN }}@github.com/".insteadOf "https://github.com/" From 43bcc4a68a7c444a1b882b1f3dad818a3663643a Mon Sep 17 00:00:00 2001 From: ausagentsmith Date: Tue, 7 Apr 2026 08:08:56 +1000 Subject: [PATCH 07/33] CI: switch git auth to Forgejo --- .forgejo/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index 4031b57..a55ed86 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: - uses: actions/checkout@v4 - name: Configure git for private deps - run: git config --global url."https://x-access-token:${{ secrets.GIT_AUTH_TOKEN }}@github.com/".insteadOf "https://github.com/" + run: git config --global url."http://x-access-token:${{ secrets.GIT_AUTH_TOKEN }}@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - name: Format check run: cargo fmt --all -- --check From af53f15358734d3e5d0e867bded6a306fba9fa9a Mon Sep 17 00:00:00 2001 From: ausagentsmith Date: Tue, 7 Apr 2026 09:10:25 +1000 Subject: [PATCH 08/33] chore: bump version, switch deps to Forgejo cargo registry --- Cargo.lock | 27 ++++++++++++++++----------- Cargo.toml | 10 +++++----- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 61c3004..b82bb20 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -584,8 +584,9 @@ dependencies = [ [[package]] name = "librtbit-bencode" -version = "0.1.0" -source = "git+http://100.92.54.45:3002/indexarr/librtbit-bencode.git?tag=v0.1.0#106ebdb7abf7d34a14971135b78a45dd6f5ff35b" +version = "0.1.1" +source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" +checksum = "3c7026c019e7aae5fbd1c9dc41f83648cc165f4be740dfe13496e4a248a5176b" dependencies = [ "anyhow", "arrayvec", @@ -600,8 +601,9 @@ dependencies = [ [[package]] name = "librtbit-buffers" -version = "0.1.0" -source = "git+http://100.92.54.45:3002/indexarr/librtbit-buffers.git?tag=v0.1.0#9ccc901158813a4d83b1a4effa7be2e25fdd66e3" +version = "0.1.1" +source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" +checksum = "5d32ad9f98e44df8995837f15628133a0dfcc604bc003b6298d1e238e0ceb4c7" dependencies = [ "bytes", "librtbit-clone-to-owned", @@ -611,16 +613,18 @@ dependencies = [ [[package]] name = "librtbit-clone-to-owned" -version = "0.1.0" -source = "git+http://100.92.54.45:3002/indexarr/librtbit-clone-to-owned.git?tag=v0.1.0#bbb6b5888b1904f8b8e384a867a78fea6536aeb2" +version = "0.1.1" +source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" +checksum = "652077f668126ff93bf2c61fbfc88a38b60b9e50c1edc440a72c2a9a5b614459" dependencies = [ "bytes", ] [[package]] name = "librtbit-core" -version = "0.1.0" -source = "git+http://100.92.54.45:3002/indexarr/librtbit-core.git?tag=v0.1.0#f15cc24ba7ec350acc242eb4a9f31fdc4a139995" +version = "0.1.1" +source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" +checksum = "a329ebdc01c714f9dd5770da35ac495314936208bd77a240cc58577bc2040fb9" dependencies = [ "anyhow", "bytes", @@ -648,7 +652,7 @@ dependencies = [ [[package]] name = "librtbit-peer-protocol" -version = "0.1.0" +version = "0.1.1" dependencies = [ "anyhow", "bitvec", @@ -668,8 +672,9 @@ dependencies = [ [[package]] name = "librtbit-sha1-wrapper" -version = "0.1.0" -source = "git+https://github.com/AusAgentSmith-org/librtbit-sha1-wrapper.git?tag=v0.1.0#15403f2292d878d159c1b52747a52667845133db" +version = "0.1.1" +source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" +checksum = "db142701a46374113e30dd0b39ec0f0c6fca5fe7481e0108b8178914173d52f5" dependencies = [ "assert_cfg", "crypto-hash", diff --git a/Cargo.toml b/Cargo.toml index add5613..7dae8c1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "librtbit-peer-protocol" -version = "0.1.0" +version = "0.1.1" edition = "2024" description = "BitTorrent peer wire protocol implementation for the rtbit client" license = "MIT" @@ -10,10 +10,10 @@ repository = "http://100.92.54.45:3002/indexarr/librtbit-peer-protocol" serde = "1" serde_derive = "1" byteorder = "1" -buffers = { git = "http://100.92.54.45:3002/indexarr/librtbit-buffers.git", tag = "v0.1.0", package = "librtbit-buffers" } -bencode = { git = "http://100.92.54.45:3002/indexarr/librtbit-bencode.git", tag = "v0.1.0", package = "librtbit-bencode" } -clone_to_owned = { git = "http://100.92.54.45:3002/indexarr/librtbit-clone-to-owned.git", tag = "v0.1.0", package = "librtbit-clone-to-owned" } -librtbit-core = { git = "http://100.92.54.45:3002/indexarr/librtbit-core.git", tag = "v0.1.0" } +buffers = { version = "0.1.0", registry = "forgejo", package = "librtbit-buffers" } +bencode = { version = "0.1.0", registry = "forgejo", package = "librtbit-bencode" } +clone_to_owned = { version = "0.1.0", registry = "forgejo", package = "librtbit-clone-to-owned" } +librtbit-core = { version = "0.1.1", registry = "forgejo" } bitvec = "1" anyhow = "1" bytes = "1" From 3a41d4673a46c7ec07a16c54144b72156f45b709 Mon Sep 17 00:00:00 2001 From: ausagentsmith Date: Tue, 7 Apr 2026 10:01:07 +1000 Subject: [PATCH 09/33] Remove old GitHub workflow to prevent duplicate CI runs --- .github/workflows/ci.yml | 36 ------------------------------------ 1 file changed, 36 deletions(-) delete mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 85e958f..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: CI - -on: - push: - branches: [main] - pull_request: - workflow_dispatch: - -permissions: - contents: read - -jobs: - rust: - runs-on: [self-hosted, node-b, linux, x64] - steps: - - uses: actions/checkout@v7 - - uses: dtolnay/rust-toolchain@stable - with: - components: rustfmt,clippy - - name: Configure retained Forgejo registry credentials - env: - FORGEJO_CARGO_TOKEN: ${{ secrets.FORGEJO_CARGO_TOKEN }} - shell: bash - run: | - test -n "$FORGEJO_CARGO_TOKEN" - export CARGO_HOME="$RUNNER_TEMP/cargo-home" - mkdir -p "$CARGO_HOME" - chmod 700 "$CARGO_HOME" - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n' > "$CARGO_HOME/config.toml" - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$FORGEJO_CARGO_TOKEN" > "$CARGO_HOME/credentials.toml" - chmod 600 "$CARGO_HOME/credentials.toml" - printf 'CARGO_HOME=%s\n' "$CARGO_HOME" >> "$GITHUB_ENV" - - run: cargo fmt --all -- --check - - run: cargo check --workspace - - run: cargo test --workspace - - run: cargo clippy --workspace --all-targets -- -D warnings From d656b0231849475170424ad8b8ea318ab90c3b7f Mon Sep 17 00:00:00 2001 From: ausagentsmith Date: Tue, 7 Apr 2026 10:01:07 +1000 Subject: [PATCH 10/33] Remove old GitHub workflow to prevent duplicate CI runs --- .github/workflows/dependabot-linear.yml | 41 ------------------------- 1 file changed, 41 deletions(-) delete mode 100644 .github/workflows/dependabot-linear.yml diff --git a/.github/workflows/dependabot-linear.yml b/.github/workflows/dependabot-linear.yml deleted file mode 100644 index 67e5ff3..0000000 --- a/.github/workflows/dependabot-linear.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Dependabot Linear Integration - -on: - pull_request: - types: [opened] - -permissions: - pull-requests: read - -jobs: - create-linear-issue: - if: github.actor == 'dependabot[bot]' - runs-on: ubuntu-latest - steps: - - name: Create Linear Issue - env: - LINEAR_API_KEY: ${{ secrets.LINEAR_API_TOKEN }} - PR_TITLE: ${{ github.event.pull_request.title }} - PR_URL: ${{ github.event.pull_request.html_url }} - PR_BODY: ${{ github.event.pull_request.body }} - REPO_NAME: ${{ github.event.repository.name }} - run: | - DESCRIPTION="**Dependabot PR:** ${PR_URL} - - **Repository:** ${REPO_NAME} - - ${PR_BODY}" - - # Escape for JSON - TITLE=$(echo "$PR_TITLE" | jq -Rs '.') - DESC=$(echo "$DESCRIPTION" | jq -Rs '.') - - curl -s -X POST https://api.linear.app/graphql \ - -H "Content-Type: application/json" \ - -H "Authorization: ${LINEAR_API_KEY}" \ - -d "{ - \"query\": \"mutation { issueCreate(input: { title: ${TITLE}, description: ${DESC}, - teamId: \"c2acb063-92b9-4d9f-ab23-0ced91983a97\", - labelIds: [\"0ee40789-158e-4b1c-93b3-3974e1b80117\"] - }) { success issue { id identifier url } } }" - }' From 4890b59c924d58713c6022f95799f3c9d4e687c1 Mon Sep 17 00:00:00 2001 From: ausagentsmith Date: Tue, 7 Apr 2026 10:01:08 +1000 Subject: [PATCH 11/33] Remove old GitHub workflow to prevent duplicate CI runs --- .github/workflows/notify-downstream.yml | 43 ------------------------- 1 file changed, 43 deletions(-) delete mode 100644 .github/workflows/notify-downstream.yml diff --git a/.github/workflows/notify-downstream.yml b/.github/workflows/notify-downstream.yml deleted file mode 100644 index 61f8f72..0000000 --- a/.github/workflows/notify-downstream.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Notify Downstream - -on: - push: - tags: - - 'v*' - -jobs: - notify: - runs-on: [self-hosted, node-b] - name: Create update issues - steps: - - name: Create issues in downstream repos - env: - GH_TOKEN: ${{ secrets.GHCR_TOKEN }} - run: | - TAG="${GITHUB_REF_NAME}" - REPO="${GITHUB_REPOSITORY##*/}" - - for DOWNSTREAM in AusAgentSmith-org/rustTorrent AusAgentSmith-org/StackArr AusAgentSmith-org/NGMS; do - EXISTING=$(gh issue list --repo "$DOWNSTREAM" --search "Update ${REPO} to ${TAG}" --state open --json number --jq 'length' 2>/dev/null || echo "0") - if [ "$EXISTING" != "0" ]; then - echo "Issue already exists in ${DOWNSTREAM}, skipping" - continue - fi - - gh issue create \ - --repo "$DOWNSTREAM" \ - --title "Update ${REPO} to ${TAG}" \ - --body "$(cat < Date: Tue, 7 Apr 2026 13:17:06 +1000 Subject: [PATCH 12/33] ci: add cargo registry token for Forgejo deps --- .forgejo/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index a55ed86..88f33f4 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -10,6 +10,9 @@ concurrency: group: ci-${{ github.ref }} cancel-in-progress: true +env: + CARGO_REGISTRIES_FORGEJO_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + jobs: check: runs-on: ubuntu-latest From e370dac520df99649a01cb0052bbe3f739d43fcb Mon Sep 17 00:00:00 2001 From: ausagentsmith Date: Tue, 7 Apr 2026 14:18:01 +1000 Subject: [PATCH 13/33] chore: remove Forgejo Actions workflow (ci.yml) --- .forgejo/workflows/ci.yml | 36 ------------------------------------ 1 file changed, 36 deletions(-) delete mode 100644 .forgejo/workflows/ci.yml diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml deleted file mode 100644 index 88f33f4..0000000 --- a/.forgejo/workflows/ci.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: CI - -on: - push: - branches: [main] - pull_request: - workflow_dispatch: - -concurrency: - group: ci-${{ github.ref }} - cancel-in-progress: true - -env: - CARGO_REGISTRIES_FORGEJO_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} - -jobs: - check: - runs-on: ubuntu-latest - name: Build & Test - steps: - - uses: actions/checkout@v4 - - - name: Configure git for private deps - run: git config --global url."http://x-access-token:${{ secrets.GIT_AUTH_TOKEN }}@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - - - name: Format check - run: cargo fmt --all -- --check - - - name: Compile check - run: cargo check --workspace - - - name: Run tests - run: cargo test --workspace --lib - - - name: Clippy - run: cargo clippy --workspace -- -D warnings From 3a834fa48dd3b46ebbfd59cfd9ad5d748ad9c067 Mon Sep 17 00:00:00 2001 From: ausagentsmith Date: Tue, 7 Apr 2026 14:29:28 +1000 Subject: [PATCH 14/33] ci: add Woodpecker pipeline --- .woodpecker.yml | 78 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 .woodpecker.yml diff --git a/.woodpecker.yml b/.woodpecker.yml new file mode 100644 index 0000000..222ea70 --- /dev/null +++ b/.woodpecker.yml @@ -0,0 +1,78 @@ +when: + - event: push + branch: main + - event: manual + +steps: + - name: fmt + image: rust:1.88-bookworm + commands: + - rustup component add rustfmt + - cargo fmt --all -- --check + + - name: check + image: rust:1.88-bookworm + secrets: [git_auth_token] + commands: + - git config --global url."http://x-access-token:$${GIT_AUTH_TOKEN}@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" + - mkdir -p $CARGO_HOME + - | + cat > $CARGO_HOME/config.toml << CONF + [registries.forgejo] + index = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" + [registry] + default = "forgejo" + CONF + - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$${GIT_AUTH_TOKEN}" > $CARGO_HOME/credentials.toml + - cargo check --workspace + + - name: test + image: rust:1.88-bookworm + secrets: [git_auth_token] + commands: + - git config --global url."http://x-access-token:$${GIT_AUTH_TOKEN}@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" + - mkdir -p $CARGO_HOME + - | + cat > $CARGO_HOME/config.toml << CONF + [registries.forgejo] + index = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" + [registry] + default = "forgejo" + CONF + - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$${GIT_AUTH_TOKEN}" > $CARGO_HOME/credentials.toml + - cargo test --workspace + + - name: clippy + image: rust:1.88-bookworm + secrets: [git_auth_token] + commands: + - rustup component add clippy + - git config --global url."http://x-access-token:$${GIT_AUTH_TOKEN}@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" + - mkdir -p $CARGO_HOME + - | + cat > $CARGO_HOME/config.toml << CONF + [registries.forgejo] + index = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" + [registry] + default = "forgejo" + CONF + - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$${GIT_AUTH_TOKEN}" > $CARGO_HOME/credentials.toml + - cargo clippy --workspace -- -D warnings + + - name: publish + image: rust:1.88-bookworm + secrets: [git_auth_token] + commands: + - mkdir -p $CARGO_HOME + - | + cat > $CARGO_HOME/config.toml << CONF + [registries.forgejo] + index = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" + [registry] + default = "forgejo" + CONF + - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$${GIT_AUTH_TOKEN}" > $CARGO_HOME/credentials.toml + - cargo publish --allow-dirty 2>&1 || echo "Publish skipped (version may already exist)" + when: + - event: push + branch: main From 7e221dc08f319db60bfd6743b838d2f7ef4d0fef Mon Sep 17 00:00:00 2001 From: ausagentsmith Date: Tue, 7 Apr 2026 14:38:12 +1000 Subject: [PATCH 15/33] =?UTF-8?q?ci:=20fix=20fmt=20step=20=E2=80=94=20add?= =?UTF-8?q?=20cargo=20registry=20config=20to=20all=20steps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index 222ea70..7eeb184 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -6,7 +6,18 @@ when: steps: - name: fmt image: rust:1.88-bookworm + secrets: [git_auth_token] commands: + - git config --global url."http://x-access-token:$${GIT_AUTH_TOKEN}@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" + - mkdir -p $CARGO_HOME + - | + cat > $CARGO_HOME/config.toml << CONF + [registries.forgejo] + index = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" + [registry] + default = "forgejo" + CONF + - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$${GIT_AUTH_TOKEN}" > $CARGO_HOME/credentials.toml - rustup component add rustfmt - cargo fmt --all -- --check @@ -46,7 +57,6 @@ steps: image: rust:1.88-bookworm secrets: [git_auth_token] commands: - - rustup component add clippy - git config --global url."http://x-access-token:$${GIT_AUTH_TOKEN}@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - mkdir -p $CARGO_HOME - | @@ -57,6 +67,7 @@ steps: default = "forgejo" CONF - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$${GIT_AUTH_TOKEN}" > $CARGO_HOME/credentials.toml + - rustup component add clippy - cargo clippy --workspace -- -D warnings - name: publish From f53e2ffd5d9f531b77af5a03ead354e8586838ae Mon Sep 17 00:00:00 2001 From: ausagentsmith Date: Tue, 7 Apr 2026 14:53:09 +1000 Subject: [PATCH 16/33] =?UTF-8?q?ci:=20fix=20secrets=20=E2=80=94=20use=20e?= =?UTF-8?q?nvironment/from=5Fsecret?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker.yml | 83 +++++++++++++++++-------------------------------- 1 file changed, 29 insertions(+), 54 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index 7eeb184..68351cc 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -6,83 +6,58 @@ when: steps: - name: fmt image: rust:1.88-bookworm - secrets: [git_auth_token] + environment: + GIT_AUTH_TOKEN: + from_secret: git_auth_token commands: - - git config --global url."http://x-access-token:$${GIT_AUTH_TOKEN}@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - - mkdir -p $CARGO_HOME - - | - cat > $CARGO_HOME/config.toml << CONF - [registries.forgejo] - index = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" - [registry] - default = "forgejo" - CONF - - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$${GIT_AUTH_TOKEN}" > $CARGO_HOME/credentials.toml + - git config --global url."http://x-access-token:$GIT_AUTH_TOKEN@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" + - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml + - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml - rustup component add rustfmt - cargo fmt --all -- --check - name: check image: rust:1.88-bookworm - secrets: [git_auth_token] + environment: + GIT_AUTH_TOKEN: + from_secret: git_auth_token commands: - - git config --global url."http://x-access-token:$${GIT_AUTH_TOKEN}@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - - mkdir -p $CARGO_HOME - - | - cat > $CARGO_HOME/config.toml << CONF - [registries.forgejo] - index = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" - [registry] - default = "forgejo" - CONF - - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$${GIT_AUTH_TOKEN}" > $CARGO_HOME/credentials.toml + - git config --global url."http://x-access-token:$GIT_AUTH_TOKEN@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" + - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml + - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml - cargo check --workspace - name: test image: rust:1.88-bookworm - secrets: [git_auth_token] + environment: + GIT_AUTH_TOKEN: + from_secret: git_auth_token commands: - - git config --global url."http://x-access-token:$${GIT_AUTH_TOKEN}@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - - mkdir -p $CARGO_HOME - - | - cat > $CARGO_HOME/config.toml << CONF - [registries.forgejo] - index = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" - [registry] - default = "forgejo" - CONF - - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$${GIT_AUTH_TOKEN}" > $CARGO_HOME/credentials.toml + - git config --global url."http://x-access-token:$GIT_AUTH_TOKEN@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" + - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml + - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml - cargo test --workspace - name: clippy image: rust:1.88-bookworm - secrets: [git_auth_token] + environment: + GIT_AUTH_TOKEN: + from_secret: git_auth_token commands: - - git config --global url."http://x-access-token:$${GIT_AUTH_TOKEN}@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - - mkdir -p $CARGO_HOME - - | - cat > $CARGO_HOME/config.toml << CONF - [registries.forgejo] - index = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" - [registry] - default = "forgejo" - CONF - - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$${GIT_AUTH_TOKEN}" > $CARGO_HOME/credentials.toml + - git config --global url."http://x-access-token:$GIT_AUTH_TOKEN@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" + - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml + - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml - rustup component add clippy - cargo clippy --workspace -- -D warnings - name: publish image: rust:1.88-bookworm - secrets: [git_auth_token] + environment: + GIT_AUTH_TOKEN: + from_secret: git_auth_token commands: - - mkdir -p $CARGO_HOME - - | - cat > $CARGO_HOME/config.toml << CONF - [registries.forgejo] - index = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" - [registry] - default = "forgejo" - CONF - - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$${GIT_AUTH_TOKEN}" > $CARGO_HOME/credentials.toml + - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml + - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml - cargo publish --allow-dirty 2>&1 || echo "Publish skipped (version may already exist)" when: - event: push From 866f0a90184742eded21de11776a74ff39a8a87d Mon Sep 17 00:00:00 2001 From: ausagentsmith Date: Tue, 7 Apr 2026 06:11:05 +0000 Subject: [PATCH 17/33] Add renovate.json --- renovate.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 renovate.json diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..ce10b6b --- /dev/null +++ b/renovate.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:recommended" + ], + "labels": [ + "dependencies" + ], + "schedule": [ + "before 6am on Monday" + ] +} From 7bb3cdb4dff121257b482b45ded0d6dcdbbfb708 Mon Sep 17 00:00:00 2001 From: AusAgentSmith Date: Thu, 9 Apr 2026 17:29:34 +1000 Subject: [PATCH 18/33] Add discord notifications and renovate trigger to CI --- .woodpecker.yml | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/.woodpecker.yml b/.woodpecker.yml index 68351cc..f8c22fd 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -62,3 +62,47 @@ steps: when: - event: push branch: main + + - name: trigger-renovate + image: alpine/curl + environment: + WOODPECKER_TOKEN: + from_secret: woodpecker_token + commands: + - | + curl -sf -X POST \ + "https://ci.indexarr.net/api/repos/indexarr/renovate/pipelines" \ + -H "Authorization: Bearer $WOODPECKER_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{"branch":"main"}' + when: + - event: push + branch: main + + - name: discord-success + image: alpine/curl + environment: + DISCORD_WEBHOOK_URL: + from_secret: discord_webhook_url + commands: + - | + curl -s -X POST "$DISCORD_WEBHOOK_URL" \ + -H "Content-Type: application/json" \ + -d "{\"embeds\":[{\"title\":\"librtbit-peer-protocol published\",\"description\":\"Published to Forgejo registry. Renovate scan triggered.\",\"color\":3066993}]}" + when: + - event: push + branch: main + status: success + + - name: discord-failure + image: alpine/curl + environment: + DISCORD_WEBHOOK_URL: + from_secret: discord_webhook_url + commands: + - | + curl -s -X POST "$DISCORD_WEBHOOK_URL" \ + -H "Content-Type: application/json" \ + -d "{\"embeds\":[{\"title\":\"librtbit-peer-protocol build failed\",\"description\":\"Check CI logs for details\",\"color\":15158332}]}" + when: + - status: failure From 30fece649cf9ea3c03b8ed58ba29cd47db71bf24 Mon Sep 17 00:00:00 2001 From: AusAgentSmith Date: Thu, 9 Apr 2026 17:34:55 +1000 Subject: [PATCH 19/33] Fix woodpecker status syntax: use array form --- .woodpecker.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index f8c22fd..77eae0f 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -92,7 +92,7 @@ steps: when: - event: push branch: main - status: success + status: [success] - name: discord-failure image: alpine/curl @@ -105,4 +105,4 @@ steps: -H "Content-Type: application/json" \ -d "{\"embeds\":[{\"title\":\"librtbit-peer-protocol build failed\",\"description\":\"Check CI logs for details\",\"color\":15158332}]}" when: - - status: failure + - status: [failure] From e30df86822aa30d4355d31dcae18dd47fbccd489 Mon Sep 17 00:00:00 2001 From: TheDancingDeveloper <306930456+thedancingdeveloper@users.noreply.github.com> Date: Thu, 9 Apr 2026 19:03:25 +1000 Subject: [PATCH 20/33] chore(deps): update librtbit-buffers 0.1.0 -> 0.1.1 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 7dae8c1..716f8a4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ repository = "http://100.92.54.45:3002/indexarr/librtbit-peer-protocol" serde = "1" serde_derive = "1" byteorder = "1" -buffers = { version = "0.1.0", registry = "forgejo", package = "librtbit-buffers" } +buffers = { version = "0.1.1", registry = "forgejo", package = "librtbit-buffers" } bencode = { version = "0.1.0", registry = "forgejo", package = "librtbit-bencode" } clone_to_owned = { version = "0.1.0", registry = "forgejo", package = "librtbit-clone-to-owned" } librtbit-core = { version = "0.1.1", registry = "forgejo" } From 8730a94ea2770be06b7ae5a06ddd06bdbd5ac081 Mon Sep 17 00:00:00 2001 From: TheDancingDeveloper <306930456+thedancingdeveloper@users.noreply.github.com> Date: Thu, 9 Apr 2026 19:03:25 +1000 Subject: [PATCH 21/33] chore(deps): update librtbit-bencode 0.1.0 -> 0.1.1 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 716f8a4..ad95158 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ serde = "1" serde_derive = "1" byteorder = "1" buffers = { version = "0.1.1", registry = "forgejo", package = "librtbit-buffers" } -bencode = { version = "0.1.0", registry = "forgejo", package = "librtbit-bencode" } +bencode = { version = "0.1.1", registry = "forgejo", package = "librtbit-bencode" } clone_to_owned = { version = "0.1.0", registry = "forgejo", package = "librtbit-clone-to-owned" } librtbit-core = { version = "0.1.1", registry = "forgejo" } bitvec = "1" From f3727c8865bf5420a014dcccc6ac5c5fc32cc733 Mon Sep 17 00:00:00 2001 From: TheDancingDeveloper <306930456+thedancingdeveloper@users.noreply.github.com> Date: Thu, 9 Apr 2026 19:03:25 +1000 Subject: [PATCH 22/33] chore(deps): update librtbit-clone-to-owned 0.1.0 -> 0.1.1 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index ad95158..6ed56c5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ serde_derive = "1" byteorder = "1" buffers = { version = "0.1.1", registry = "forgejo", package = "librtbit-buffers" } bencode = { version = "0.1.1", registry = "forgejo", package = "librtbit-bencode" } -clone_to_owned = { version = "0.1.0", registry = "forgejo", package = "librtbit-clone-to-owned" } +clone_to_owned = { version = "0.1.1", registry = "forgejo", package = "librtbit-clone-to-owned" } librtbit-core = { version = "0.1.1", registry = "forgejo" } bitvec = "1" anyhow = "1" From 2dee5b60f1ad3aec9980b51e5971ceafc02bc4b5 Mon Sep 17 00:00:00 2001 From: TheDancingDeveloper <306930456+thedancingdeveloper@users.noreply.github.com> Date: Thu, 9 Apr 2026 08:56:46 +0000 Subject: [PATCH 23/33] Update rust Docker tag to v1.94 --- .woodpecker.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index 77eae0f..cc73c28 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -5,7 +5,7 @@ when: steps: - name: fmt - image: rust:1.88-bookworm + image: rust:1.94-bookworm environment: GIT_AUTH_TOKEN: from_secret: git_auth_token @@ -17,7 +17,7 @@ steps: - cargo fmt --all -- --check - name: check - image: rust:1.88-bookworm + image: rust:1.94-bookworm environment: GIT_AUTH_TOKEN: from_secret: git_auth_token @@ -28,7 +28,7 @@ steps: - cargo check --workspace - name: test - image: rust:1.88-bookworm + image: rust:1.94-bookworm environment: GIT_AUTH_TOKEN: from_secret: git_auth_token @@ -39,7 +39,7 @@ steps: - cargo test --workspace - name: clippy - image: rust:1.88-bookworm + image: rust:1.94-bookworm environment: GIT_AUTH_TOKEN: from_secret: git_auth_token @@ -51,7 +51,7 @@ steps: - cargo clippy --workspace -- -D warnings - name: publish - image: rust:1.88-bookworm + image: rust:1.94-bookworm environment: GIT_AUTH_TOKEN: from_secret: git_auth_token From 2af6326d76e342a849772fcf44134bec828770b7 Mon Sep 17 00:00:00 2001 From: TheDancingDeveloper <306930456+thedancingdeveloper@users.noreply.github.com> Date: Thu, 9 Apr 2026 08:56:45 +0000 Subject: [PATCH 24/33] Update Rust crate criterion to 0.8 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 6ed56c5..6f929e4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,7 @@ librtbit-buffers = { git = "http://100.92.54.45:3002/indexarr/librtbit-buffers.g librtbit-clone-to-owned = { git = "http://100.92.54.45:3002/indexarr/librtbit-clone-to-owned.git", tag = "v0.1.0" } [dev-dependencies] -criterion = "0.7" +criterion = "0.8" [[bench]] name = "bench" From cb8d5447b9657dc351f698c8c4f72c6b17f35c89 Mon Sep 17 00:00:00 2001 From: AusAgentSmith Date: Fri, 10 Apr 2026 13:55:11 +1000 Subject: [PATCH 25/33] test: add peer protocol message round-trip tests Add 5 tests: handshake encode/decode, request serialization, keepalive, choke, and interested message deserialization. --- .woodpecker.yml | 1 + tests/message_roundtrip.rs | 59 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 tests/message_roundtrip.rs diff --git a/.woodpecker.yml b/.woodpecker.yml index cc73c28..5b738e6 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -2,6 +2,7 @@ when: - event: push branch: main - event: manual + - event: pull_request steps: - name: fmt diff --git a/tests/message_roundtrip.rs b/tests/message_roundtrip.rs new file mode 100644 index 0000000..67338cc --- /dev/null +++ b/tests/message_roundtrip.rs @@ -0,0 +1,59 @@ +//! Message serialization/deserialization round-trip tests. + +use librtbit_core::hash_id::Id20; +use librtbit_peer_protocol::{Handshake, Message, Request}; + +const HANDSHAKE_LEN: usize = 68; + +#[test] +fn test_handshake_encode_decode() { + let info_hash = Id20::new([0xAA; 20]); + let peer_id = Id20::new([0xBB; 20]); + let hs = Handshake::new(info_hash, peer_id); + + let mut buf = [0u8; HANDSHAKE_LEN]; + let written = hs.serialize_unchecked_len(&mut buf); + assert_eq!(written, HANDSHAKE_LEN); + + let (decoded, consumed) = Handshake::deserialize(&buf).unwrap(); + assert_eq!(consumed, HANDSHAKE_LEN); + assert_eq!(decoded.info_hash, info_hash); + assert_eq!(decoded.peer_id, peer_id); +} + +#[test] +fn test_request_message_serialize() { + let req = Request::new(5, 16384, 16384); + let mut buf = [0u8; 128]; + let written = req.serialize_unchecked_len(&mut buf); + assert!(written > 0, "serialization should produce bytes"); + // Request is 12 bytes: index(4) + begin(4) + length(4) + assert_eq!(written, 12); +} + +#[test] +fn test_message_keepalive_deserialize() { + // KeepAlive is a 4-byte zero-length prefix: [0, 0, 0, 0] + let buf = [0u8; 4]; + let (msg, consumed) = Message::deserialize(&buf, &[]).unwrap(); + assert_eq!(consumed, 4); + assert!(matches!(msg, Message::KeepAlive)); +} + +#[test] +fn test_message_choke_deserialize() { + // Choke: length=1, id=0 → [0, 0, 0, 1, 0] + let buf = [0, 0, 0, 1, 0]; + let (msg, consumed) = Message::deserialize(&buf, &[]).unwrap(); + assert_eq!(consumed, 5); + assert!(matches!(msg, Message::Choke)); +} + +#[test] +fn test_message_interested_deserialize() { + // Interested: length=1, id=2 → [0, 0, 0, 1, 2] + let buf = [0, 0, 0, 1, 2]; + let (msg, consumed) = Message::deserialize(&buf, &[]).unwrap(); + assert_eq!(consumed, 5); + assert!(matches!(msg, Message::Interested)); +} From 37031ee43e255bbc415addaaa37c9293d511d1d9 Mon Sep 17 00:00:00 2001 From: AusAgentSmith Date: Sat, 25 Apr 2026 05:35:22 +0000 Subject: [PATCH 26/33] fix(extended): skip None fields when serializing PeerExtendedMessageIds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The bencode crate cannot represent Option::None (no nil/null in bencode), so serializing a PeerExtendedMessageIds with any Option field set to None errored with "bencode doesn't support None". In practice this affected callers that hand-construct the struct — for tests, mock peers, or peers advertising a partial extension set (e.g. ut_metadata-only peers that don't implement ut_pex / ut_holepunch). The standard PeerExtendedMessageIds::my() path was unaffected because it sets all three Some. Add #[serde(skip_serializing_if = "Option::is_none")] to all three fields and a regression test covering the partial + fully-empty cases. Bumps version to 0.1.2 (additive, backwards-compatible — fully-Some structs serialize identically to before). --- Cargo.lock | 29 +++++++++++++++++++++++++---- Cargo.toml | 2 +- src/extended/mod.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b82bb20..9bbc890 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,6 +11,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "alloca" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7d05ea6aea7e9e64d25b9156ba2fee3fdd659e34e41063cd2fc7cd020d7f4" +dependencies = [ + "cc", +] + [[package]] name = "anes" version = "0.1.6" @@ -209,10 +218,11 @@ dependencies = [ [[package]] name = "criterion" -version = "0.7.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1c047a62b0cc3e145fa84415a3191f628e980b194c2755aa12300a4e6cbd928" +checksum = "950046b2aa2492f9a536f5f4f9a3de7b9e2476e575e05bd6c333371add4d98f3" dependencies = [ + "alloca", "anes", "cast", "ciborium", @@ -221,6 +231,7 @@ dependencies = [ "itertools 0.13.0", "num-traits", "oorandom", + "page_size", "plotters", "rayon", "regex", @@ -232,9 +243,9 @@ dependencies = [ [[package]] name = "criterion-plot" -version = "0.6.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b1bcc0dc7dfae599d84ad0b1a55f80cde8af3725da8313b528da95ef783e338" +checksum = "d8d80a2f4f5b554395e47b5d8305bc3d27813bacb73493eb1001e8f76dae29ea" dependencies = [ "cast", "itertools 0.13.0", @@ -766,6 +777,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "page_size" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d5b2194ed13191c1999ae0704b7839fb18384fa22e49b57eeaa97d79ce40da" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "parking_lot" version = "0.12.5" diff --git a/Cargo.toml b/Cargo.toml index 6f929e4..5bcd594 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "librtbit-peer-protocol" -version = "0.1.1" +version = "0.1.2" edition = "2024" description = "BitTorrent peer wire protocol implementation for the rtbit client" license = "MIT" diff --git a/src/extended/mod.rs b/src/extended/mod.rs index f9be21a..76c4b68 100644 --- a/src/extended/mod.rs +++ b/src/extended/mod.rs @@ -28,8 +28,11 @@ use super::MY_EXTENDED_UT_METADATA; #[derive(Debug, Default, Serialize, Deserialize, Clone, Copy, PartialEq, Eq)] pub struct PeerExtendedMessageIds { + #[serde(skip_serializing_if = "Option::is_none")] pub ut_metadata: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub ut_pex: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub ut_holepunch: Option, } @@ -169,6 +172,46 @@ mod tests { ) } + /// Regression: `PeerExtendedMessageIds` with only some fields set must + /// serialize without panicking. Before adding `skip_serializing_if` + /// bencode would reject the `None` fields outright ("bencode doesn't + /// support None"). This affects callers that hand-construct the struct + /// for tests, mock peers, or for advertising a *partial* extension + /// set (e.g. ut_metadata-only peers). + #[test] + fn test_peer_extended_message_ids_partial_serialize_round_trip() { + use crate::extended::PeerExtendedMessageIds; + use bencode::{bencode_serialize_to_writer, from_bytes}; + + let partial = PeerExtendedMessageIds { + ut_metadata: Some(3), + ut_pex: None, + ut_holepunch: None, + }; + let mut buf = Vec::new(); + bencode_serialize_to_writer(partial, &mut buf).expect("partial serialize ok"); + + let decoded: PeerExtendedMessageIds = from_bytes(&buf).expect("round-trip ok"); + assert_eq!(decoded.ut_metadata, Some(3)); + assert_eq!(decoded.ut_pex, None); + assert_eq!(decoded.ut_holepunch, None); + + // Also confirm the wire bytes contain only the set field's key — + // peers shouldn't see `ut_pex` / `ut_holepunch` keys at all. + let wire = std::str::from_utf8(&buf).unwrap(); + assert!(wire.contains("ut_metadata")); + assert!(!wire.contains("ut_pex")); + assert!(!wire.contains("ut_holepunch")); + + // Sanity: a fully-empty struct also round-trips. + let empty = PeerExtendedMessageIds::default(); + let mut buf = Vec::new(); + bencode_serialize_to_writer(empty, &mut buf).expect("empty serialize ok"); + let decoded: PeerExtendedMessageIds = from_bytes(&buf).unwrap(); + assert_eq!(decoded, empty); + assert_eq!(buf, b"de"); // empty bencode dict + } + #[test] fn test_ut_metadata_trailing_bytes_is_error() { ut_metadata_trailing_bytes_is_error(ExtendedMessage::UtMetadata(UtMetadata::Request(42))); From f46fe5225387ddbdd67e120b4089d420cf9bbef9 Mon Sep 17 00:00:00 2001 From: TheDancingDeveloper <306930456+thedancingdeveloper@users.noreply.github.com> Date: Thu, 14 May 2026 11:46:59 +1000 Subject: [PATCH 27/33] Add sccache to Rust CI steps --- .woodpecker.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.woodpecker.yml b/.woodpecker.yml index 5b738e6..e940551 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -10,7 +10,10 @@ steps: environment: GIT_AUTH_TOKEN: from_secret: git_auth_token + RUSTC_WRAPPER: sccache + SCCACHE_REDIS: "redis://100.92.54.45:6380" commands: + - apt-get install -y --no-install-recommends sccache >/dev/null 2>&1 || true - git config --global url."http://x-access-token:$GIT_AUTH_TOKEN@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml @@ -22,7 +25,10 @@ steps: environment: GIT_AUTH_TOKEN: from_secret: git_auth_token + RUSTC_WRAPPER: sccache + SCCACHE_REDIS: "redis://100.92.54.45:6380" commands: + - apt-get install -y --no-install-recommends sccache >/dev/null 2>&1 || true - git config --global url."http://x-access-token:$GIT_AUTH_TOKEN@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml @@ -33,7 +39,10 @@ steps: environment: GIT_AUTH_TOKEN: from_secret: git_auth_token + RUSTC_WRAPPER: sccache + SCCACHE_REDIS: "redis://100.92.54.45:6380" commands: + - apt-get install -y --no-install-recommends sccache >/dev/null 2>&1 || true - git config --global url."http://x-access-token:$GIT_AUTH_TOKEN@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml @@ -44,7 +53,10 @@ steps: environment: GIT_AUTH_TOKEN: from_secret: git_auth_token + RUSTC_WRAPPER: sccache + SCCACHE_REDIS: "redis://100.92.54.45:6380" commands: + - apt-get install -y --no-install-recommends sccache >/dev/null 2>&1 || true - git config --global url."http://x-access-token:$GIT_AUTH_TOKEN@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml From c81d8eea8fcd725cba1ee64ae54dd53d8779b553 Mon Sep 17 00:00:00 2001 From: TheDancingDeveloper <306930456+thedancingdeveloper@users.noreply.github.com> Date: Fri, 12 Jun 2026 04:32:25 +0000 Subject: [PATCH 28/33] Update dependencies --- .woodpecker.yml | 10 +- Cargo.lock | 487 ++++++++++++++++++++++++++++++++++++------------ Cargo.toml | 8 +- 3 files changed, 380 insertions(+), 125 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index e940551..f0c8c42 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -6,7 +6,7 @@ when: steps: - name: fmt - image: rust:1.94-bookworm + image: rust:1.95-bookworm environment: GIT_AUTH_TOKEN: from_secret: git_auth_token @@ -21,7 +21,7 @@ steps: - cargo fmt --all -- --check - name: check - image: rust:1.94-bookworm + image: rust:1.95-bookworm environment: GIT_AUTH_TOKEN: from_secret: git_auth_token @@ -35,7 +35,7 @@ steps: - cargo check --workspace - name: test - image: rust:1.94-bookworm + image: rust:1.95-bookworm environment: GIT_AUTH_TOKEN: from_secret: git_auth_token @@ -49,7 +49,7 @@ steps: - cargo test --workspace - name: clippy - image: rust:1.94-bookworm + image: rust:1.95-bookworm environment: GIT_AUTH_TOKEN: from_secret: git_auth_token @@ -64,7 +64,7 @@ steps: - cargo clippy --workspace -- -D warnings - name: publish - image: rust:1.94-bookworm + image: rust:1.95-bookworm environment: GIT_AUTH_TOKEN: from_secret: git_auth_token diff --git a/Cargo.lock b/Cargo.lock index 9bbc890..ccd703f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -55,24 +55,24 @@ dependencies = [ [[package]] name = "atoi" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +checksum = "4652e33138d8d9c774c9697a351b019deb33737812be629603434407f288a323" dependencies = [ "num-traits", ] [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" [[package]] name = "bitvec" @@ -88,9 +88,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "byteorder" @@ -112,9 +112,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.59" +version = "1.2.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7a4d3ec6524d28a329fc53654bbadc9bdd7b0431f5d65f1a56ffb28a1ee5283" +checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f" dependencies = [ "find-msvc-tools", "shlex", @@ -126,11 +126,22 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +[[package]] +name = "chacha20" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +dependencies = [ + "cfg-if", + "cpufeatures", + "rand_core", +] + [[package]] name = "chardetng" -version = "0.1.17" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14b8f0b65b7b08ae3c8187e8d77174de20cb6777864c6b832d8ad365999cf1ea" +checksum = "13de944a44b5064ee5d3a5ceccc49a41bfec50f2580e66f82e87703acdb88b53" dependencies = [ "cfg-if", "encoding_rs", @@ -166,9 +177,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.0" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" +checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" dependencies = [ "clap_builder", ] @@ -216,6 +227,15 @@ dependencies = [ "typewit", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "criterion" version = "0.8.2" @@ -296,9 +316,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" +checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" [[package]] name = "directories" @@ -323,9 +343,9 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", @@ -334,9 +354,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "encoding_rs" @@ -347,12 +367,24 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + [[package]] name = "find-msvc-tools" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -395,6 +427,24 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "slab", +] + [[package]] name = "getrandom" version = "0.2.17" @@ -408,14 +458,16 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", "libc", "r-efi", + "rand_core", "wasip2", + "wasip3", ] [[package]] @@ -429,6 +481,27 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hex" version = "0.3.2" @@ -523,6 +596,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + [[package]] name = "idna" version = "1.1.0" @@ -536,14 +615,26 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ "icu_normalizer", "icu_properties", ] +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown 0.17.1", + "serde", + "serde_core", +] + [[package]] name = "itertools" version = "0.13.0" @@ -570,34 +661,39 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.94" +version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9" +checksum = "f2025f20d7a4fa7785846e7b63d10a76d3f1cee98ee5cb79ea59703f95e42162" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libc" -version = "0.2.184" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libredox" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ddbf48fd451246b1f8c2610bd3b4ac0cc6e149d89832867093ab69a17194f08" +checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" dependencies = [ "libc", ] [[package]] name = "librtbit-bencode" -version = "0.1.1" -source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" -checksum = "3c7026c019e7aae5fbd1c9dc41f83648cc165f4be740dfe13496e4a248a5176b" +version = "0.1.5" dependencies = [ "anyhow", "arrayvec", @@ -612,9 +708,7 @@ dependencies = [ [[package]] name = "librtbit-buffers" -version = "0.1.1" -source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" -checksum = "5d32ad9f98e44df8995837f15628133a0dfcc604bc003b6298d1e238e0ceb4c7" +version = "0.1.2" dependencies = [ "bytes", "librtbit-clone-to-owned", @@ -625,17 +719,13 @@ dependencies = [ [[package]] name = "librtbit-clone-to-owned" version = "0.1.1" -source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" -checksum = "652077f668126ff93bf2c61fbfc88a38b60b9e50c1edc440a72c2a9a5b614459" dependencies = [ "bytes", ] [[package]] name = "librtbit-core" -version = "0.1.1" -source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" -checksum = "a329ebdc01c714f9dd5770da35ac495314936208bd77a240cc58577bc2040fb9" +version = "0.1.5" dependencies = [ "anyhow", "bytes", @@ -663,7 +753,7 @@ dependencies = [ [[package]] name = "librtbit-peer-protocol" -version = "0.1.1" +version = "0.1.3" dependencies = [ "anyhow", "bitvec", @@ -683,9 +773,7 @@ dependencies = [ [[package]] name = "librtbit-sha1-wrapper" -version = "0.1.1" -source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" -checksum = "db142701a46374113e30dd0b39ec0f0c6fca5fe7481e0108b8178914173d52f5" +version = "0.1.2" dependencies = [ "assert_cfg", "crypto-hash", @@ -706,11 +794,17 @@ dependencies = [ "scopeguard", ] +[[package]] +name = "log" +version = "0.4.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a" + [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" [[package]] name = "num-traits" @@ -735,15 +829,14 @@ checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" [[package]] name = "openssl" -version = "0.10.76" +version = "0.10.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "951c002c75e16ea2c65b8c7e4d3d51d5530d8dfa7d060b4776828c88cfb18ecf" +checksum = "a45fa2aa886c42762255da344f0a0d313e254066c46aad76f300c3d3da62d967" dependencies = [ "bitflags", "cfg-if", "foreign-types", "libc", - "once_cell", "openssl-macros", "openssl-sys", ] @@ -761,9 +854,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.112" +version = "0.9.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d55af3b3e226502be1526dfdba67ab0e9c96fc293004e79576b2b9edb0dbdb" +checksum = "f28a22dc7140cda5f096e5e7724a6962ca81a7f8bfd2979f9b18c11af56318c4" dependencies = [ "cc", "libc", @@ -824,9 +917,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "plotters" @@ -866,12 +959,13 @@ dependencies = [ ] [[package]] -name = "ppv-lite86" -version = "0.2.21" +name = "prettyplease" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ - "zerocopy", + "proc-macro2", + "syn", ] [[package]] @@ -894,9 +988,9 @@ dependencies = [ [[package]] name = "r-efi" -version = "5.3.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] name = "radium" @@ -906,38 +1000,26 @@ checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "rand" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" -dependencies = [ - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" dependencies = [ - "ppv-lite86", + "chacha20", + "getrandom 0.4.2", "rand_core", ] [[package]] name = "rand_core" -version = "0.9.5" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", -] +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "rayon" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" dependencies = [ "either", "rayon-core", @@ -975,9 +1057,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.3" +version = "1.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" dependencies = [ "aho-corasick", "memchr", @@ -998,9 +1080,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rustversion" @@ -1023,6 +1105,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + [[package]] name = "serde" version = "1.0.228" @@ -1055,9 +1143,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -1068,15 +1156,21 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "slab" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "stable_deref_trait" @@ -1154,9 +1248,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.51.0" +version = "1.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bd1c4c0fc4a7ab90fc15ef6daaa3ec3b893f004f915f2392557ed23237820cd" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" dependencies = [ "pin-project-lite", "tokio-macros", @@ -1219,9 +1313,9 @@ dependencies = [ [[package]] name = "typewit" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc19094686c694eb41b3b99dcc2f2975d4b078512fa22ae6c63f7ca318bdcff7" +checksum = "214ca0b2191785cbc06209b9ca1861e048e39b5ba33574b3cedd58363d5bb5f6" [[package]] name = "unicode-ident" @@ -1229,6 +1323,12 @@ version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + [[package]] name = "url" version = "2.5.8" @@ -1270,18 +1370,27 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.2+wasi-0.2.9" +version = "1.0.3+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" +dependencies = [ + "wit-bindgen 0.57.1", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ - "wit-bindgen", + "wit-bindgen 0.51.0", ] [[package]] name = "wasm-bindgen" -version = "0.2.117" +version = "0.2.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0" +checksum = "a254a4b10c19a76f09a27640e7ffbf9bc30bf67e16a3bf28aaefa4920fe81563" dependencies = [ "cfg-if", "once_cell", @@ -1292,9 +1401,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.117" +version = "0.2.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be" +checksum = "24a40fc75b0ec6f3746ceb10d36f53a93dcd68a93b11b6445983945d79eba0dc" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1302,9 +1411,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.117" +version = "0.2.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2" +checksum = "908f34bd9b9ce3d4caf07b72dfab63d61504d156856c6bd3cd87fa350cf3985b" dependencies = [ "bumpalo", "proc-macro2", @@ -1315,18 +1424,52 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.117" +version = "0.2.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b" +checksum = "7acbf7616c27b194bbb550bf77ed0c2c3e5b7fd1260a93082b95fb7f47959b92" dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + [[package]] name = "web-sys" -version = "0.3.94" +version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd70027e39b12f0849461e08ffc50b9cd7688d942c1c8e3c7b22273236b4dd0a" +checksum = "6e0871acf327f283dc6da28a1696cdc64fb355ba9f935d052021fa77f35cce69" dependencies = [ "js-sys", "wasm-bindgen", @@ -1383,6 +1526,94 @@ name = "wit-bindgen" version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] [[package]] name = "writeable" @@ -1401,9 +1632,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -1424,18 +1655,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.48" +version = "0.8.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" +checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.48" +version = "0.8.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" +checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" dependencies = [ "proc-macro2", "quote", @@ -1444,9 +1675,9 @@ dependencies = [ [[package]] name = "zerofrom" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" dependencies = [ "zerofrom-derive", ] @@ -1501,3 +1732,27 @@ name = "zmij" version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + +[[patch.unused]] +name = "librtbit" +version = "0.1.3" + +[[patch.unused]] +name = "librtbit-dht" +version = "0.1.3" + +[[patch.unused]] +name = "librtbit-lsd" +version = "0.1.2" + +[[patch.unused]] +name = "librtbit-tracker-comms" +version = "0.1.5" + +[[patch.unused]] +name = "librtbit-upnp" +version = "0.1.2" + +[[patch.unused]] +name = "librtbit-upnp-serve" +version = "0.1.2" diff --git a/Cargo.toml b/Cargo.toml index 5bcd594..8924365 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "librtbit-peer-protocol" -version = "0.1.2" +version = "0.1.3" edition = "2024" description = "BitTorrent peer wire protocol implementation for the rtbit client" license = "MIT" @@ -10,10 +10,10 @@ repository = "http://100.92.54.45:3002/indexarr/librtbit-peer-protocol" serde = "1" serde_derive = "1" byteorder = "1" -buffers = { version = "0.1.1", registry = "forgejo", package = "librtbit-buffers" } -bencode = { version = "0.1.1", registry = "forgejo", package = "librtbit-bencode" } +buffers = { version = "0.1.2", registry = "forgejo", package = "librtbit-buffers" } +bencode = { version = "0.1.5", registry = "forgejo", package = "librtbit-bencode" } clone_to_owned = { version = "0.1.1", registry = "forgejo", package = "librtbit-clone-to-owned" } -librtbit-core = { version = "0.1.1", registry = "forgejo" } +librtbit-core = { version = "0.1.5", registry = "forgejo" } bitvec = "1" anyhow = "1" bytes = "1" From c45297c9a85d887a28ca1a84b4db81951b6688a7 Mon Sep 17 00:00:00 2001 From: TheDancingDeveloper <306930456+thedancingdeveloper@users.noreply.github.com> Date: Fri, 12 Jun 2026 04:39:07 +0000 Subject: [PATCH 29/33] Normalize Cargo.lock --- Cargo.lock | 34 ++++++++++------------------------ 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ccd703f..99a235f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -694,6 +694,8 @@ dependencies = [ [[package]] name = "librtbit-bencode" version = "0.1.5" +source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" +checksum = "e7d35dd07182c2bc219e499bbbe8fa6ce059331767f46cd75cc144608b15840b" dependencies = [ "anyhow", "arrayvec", @@ -709,6 +711,8 @@ dependencies = [ [[package]] name = "librtbit-buffers" version = "0.1.2" +source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" +checksum = "a3c284674535972fd7693f515f1d12c8ca20b5a2c37a03020bdeca32241cf29c" dependencies = [ "bytes", "librtbit-clone-to-owned", @@ -719,6 +723,8 @@ dependencies = [ [[package]] name = "librtbit-clone-to-owned" version = "0.1.1" +source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" +checksum = "652077f668126ff93bf2c61fbfc88a38b60b9e50c1edc440a72c2a9a5b614459" dependencies = [ "bytes", ] @@ -726,6 +732,8 @@ dependencies = [ [[package]] name = "librtbit-core" version = "0.1.5" +source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" +checksum = "5666666c2bd8714347ae0f68fbfef885d4ae28446a26c394e0a8a43ccb78238d" dependencies = [ "anyhow", "bytes", @@ -774,6 +782,8 @@ dependencies = [ [[package]] name = "librtbit-sha1-wrapper" version = "0.1.2" +source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" +checksum = "2a49584e920ec499c2ea310f636b56169bad910a2be2920429c2964f81df2f53" dependencies = [ "assert_cfg", "crypto-hash", @@ -1732,27 +1742,3 @@ name = "zmij" version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" - -[[patch.unused]] -name = "librtbit" -version = "0.1.3" - -[[patch.unused]] -name = "librtbit-dht" -version = "0.1.3" - -[[patch.unused]] -name = "librtbit-lsd" -version = "0.1.2" - -[[patch.unused]] -name = "librtbit-tracker-comms" -version = "0.1.5" - -[[patch.unused]] -name = "librtbit-upnp" -version = "0.1.2" - -[[patch.unused]] -name = "librtbit-upnp-serve" -version = "0.1.2" From 8f6ce1a44243a377631205b72ea8b12ea04ff7c7 Mon Sep 17 00:00:00 2001 From: TheDancingDeveloper <306930456+thedancingdeveloper@users.noreply.github.com> Date: Fri, 12 Jun 2026 04:56:29 +0000 Subject: [PATCH 30/33] Fix Woodpecker sccache bootstrap --- .woodpecker.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index f0c8c42..a6a28f2 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -13,7 +13,7 @@ steps: RUSTC_WRAPPER: sccache SCCACHE_REDIS: "redis://100.92.54.45:6380" commands: - - apt-get install -y --no-install-recommends sccache >/dev/null 2>&1 || true + - curl -sSfL "https://github.com/mozilla/sccache/releases/download/v0.8.2/sccache-v0.8.2-x86_64-unknown-linux-musl.tar.gz" | tar -xz -C /tmp && mv /tmp/sccache-v0.8.2-x86_64-unknown-linux-musl/sccache /usr/local/bin/sccache - git config --global url."http://x-access-token:$GIT_AUTH_TOKEN@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml @@ -28,7 +28,7 @@ steps: RUSTC_WRAPPER: sccache SCCACHE_REDIS: "redis://100.92.54.45:6380" commands: - - apt-get install -y --no-install-recommends sccache >/dev/null 2>&1 || true + - curl -sSfL "https://github.com/mozilla/sccache/releases/download/v0.8.2/sccache-v0.8.2-x86_64-unknown-linux-musl.tar.gz" | tar -xz -C /tmp && mv /tmp/sccache-v0.8.2-x86_64-unknown-linux-musl/sccache /usr/local/bin/sccache - git config --global url."http://x-access-token:$GIT_AUTH_TOKEN@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml @@ -42,7 +42,7 @@ steps: RUSTC_WRAPPER: sccache SCCACHE_REDIS: "redis://100.92.54.45:6380" commands: - - apt-get install -y --no-install-recommends sccache >/dev/null 2>&1 || true + - curl -sSfL "https://github.com/mozilla/sccache/releases/download/v0.8.2/sccache-v0.8.2-x86_64-unknown-linux-musl.tar.gz" | tar -xz -C /tmp && mv /tmp/sccache-v0.8.2-x86_64-unknown-linux-musl/sccache /usr/local/bin/sccache - git config --global url."http://x-access-token:$GIT_AUTH_TOKEN@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml @@ -56,7 +56,7 @@ steps: RUSTC_WRAPPER: sccache SCCACHE_REDIS: "redis://100.92.54.45:6380" commands: - - apt-get install -y --no-install-recommends sccache >/dev/null 2>&1 || true + - curl -sSfL "https://github.com/mozilla/sccache/releases/download/v0.8.2/sccache-v0.8.2-x86_64-unknown-linux-musl.tar.gz" | tar -xz -C /tmp && mv /tmp/sccache-v0.8.2-x86_64-unknown-linux-musl/sccache /usr/local/bin/sccache - git config --global url."http://x-access-token:$GIT_AUTH_TOKEN@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml From 88066d7476f4c08a5271c9b4fd889b47f134ef6c Mon Sep 17 00:00:00 2001 From: TheDancingDeveloper <306930456+thedancingdeveloper@users.noreply.github.com> Date: Fri, 12 Jun 2026 05:07:27 +0000 Subject: [PATCH 31/33] Remove stale Renovate trigger --- .woodpecker.yml | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index a6a28f2..75dd35e 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -76,22 +76,6 @@ steps: - event: push branch: main - - name: trigger-renovate - image: alpine/curl - environment: - WOODPECKER_TOKEN: - from_secret: woodpecker_token - commands: - - | - curl -sf -X POST \ - "https://ci.indexarr.net/api/repos/indexarr/renovate/pipelines" \ - -H "Authorization: Bearer $WOODPECKER_TOKEN" \ - -H "Content-Type: application/json" \ - -d '{"branch":"main"}' - when: - - event: push - branch: main - - name: discord-success image: alpine/curl environment: @@ -101,7 +85,7 @@ steps: - | curl -s -X POST "$DISCORD_WEBHOOK_URL" \ -H "Content-Type: application/json" \ - -d "{\"embeds\":[{\"title\":\"librtbit-peer-protocol published\",\"description\":\"Published to Forgejo registry. Renovate scan triggered.\",\"color\":3066993}]}" + -d "{\"embeds\":[{\"title\":\"librtbit-peer-protocol published\",\"description\":\"Published to Forgejo registry.\",\"color\":3066993}]}" when: - event: push branch: main From 11060a6a696d153a2c016facaf3366f44f12ad15 Mon Sep 17 00:00:00 2001 From: TheDancingDeveloper <306930456+thedancingdeveloper@users.noreply.github.com> Date: Tue, 14 Jul 2026 02:45:52 +0000 Subject: [PATCH 32/33] feat: release monorepo improvements --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/lib.rs | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 122 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 99a235f..6fccc7d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -761,7 +761,7 @@ dependencies = [ [[package]] name = "librtbit-peer-protocol" -version = "0.1.3" +version = "0.1.4" dependencies = [ "anyhow", "bitvec", diff --git a/Cargo.toml b/Cargo.toml index 8924365..5ae56ab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "librtbit-peer-protocol" -version = "0.1.3" +version = "0.1.4" edition = "2024" description = "BitTorrent peer wire protocol implementation for the rtbit client" license = "MIT" diff --git a/src/lib.rs b/src/lib.rs index 846e2a4..a38c1ff 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -46,6 +46,12 @@ const MSGID_BITFIELD: MsgId = 5; const MSGID_REQUEST: MsgId = 6; const MSGID_PIECE: MsgId = 7; const MSGID_CANCEL: MsgId = 8; +const MSGID_PORT: MsgId = 9; +const MSGID_SUGGEST_PIECE: MsgId = 13; +const MSGID_HAVE_ALL: MsgId = 14; +const MSGID_HAVE_NONE: MsgId = 15; +const MSGID_REJECT_REQUEST: MsgId = 16; +const MSGID_ALLOWED_FAST: MsgId = 17; const MSGID_EXTENDED: MsgId = 20; pub const EXTENDED_UT_METADATA_KEY: &[u8] = b"ut_metadata"; @@ -71,6 +77,12 @@ impl MsgIdDebug { MSGID_REQUEST => "request", MSGID_PIECE => "piece", MSGID_CANCEL => "cancel", + MSGID_PORT => "port", + MSGID_SUGGEST_PIECE => "suggest_piece", + MSGID_HAVE_ALL => "have_all", + MSGID_HAVE_NONE => "have_none", + MSGID_REJECT_REQUEST => "reject_request", + MSGID_ALLOWED_FAST => "allowed_fast", MSGID_EXTENDED => "extended", _ => return None, }; @@ -232,6 +244,14 @@ pub enum Message<'a> { Unchoke, Interested, NotInterested, + /// BEP 5 DHT listen port. + Port(u16), + /// BEP 6 Fast Extension messages. + SuggestPiece(u32), + HaveAll, + HaveNone, + RejectRequest(Request), + AllowedFast(u32), Piece(Piece>), Extended(ExtendedMessage>), } @@ -280,12 +300,15 @@ impl Message<'_> { } match self { - Message::Request(request) | Message::Cancel(request) => { + Message::Request(request) + | Message::Cancel(request) + | Message::RejectRequest(request) => { const TOTAL_LEN: usize = PREAMBLE_LEN + INTEGER_LEN * 3; check_len!(TOTAL_LEN); let msg_id = match self { Message::Request(..) => MSGID_REQUEST, Message::Cancel(..) => MSGID_CANCEL, + Message::RejectRequest(..) => MSGID_REJECT_REQUEST, _ => unsafe { unreachable_unchecked() }, }; write_preamble!((INTEGER_LEN * 3) as u32, msg_id); @@ -300,13 +323,20 @@ impl Message<'_> { out[PREAMBLE_LEN..PREAMBLE_LEN + block_len].copy_from_slice(b.as_ref()); Ok(total_len) } - Message::Choke | Message::Unchoke | Message::Interested | Message::NotInterested => { + Message::Choke + | Message::Unchoke + | Message::Interested + | Message::NotInterested + | Message::HaveAll + | Message::HaveNone => { check_len!(PREAMBLE_LEN); let msg_id = match self { Message::Choke => MSGID_CHOKE, Message::Unchoke => MSGID_UNCHOKE, Message::Interested => MSGID_INTERESTED, Message::NotInterested => MSGID_NOT_INTERESTED, + Message::HaveAll => MSGID_HAVE_ALL, + Message::HaveNone => MSGID_HAVE_NONE, _ => unsafe { unreachable_unchecked() }, }; write_preamble!(0, msg_id); @@ -332,6 +362,23 @@ impl Message<'_> { out[5..9].copy_from_slice(&v.to_be_bytes()); Ok(9) } + Message::Port(port) => { + check_len!(PREAMBLE_LEN + 2); + write_preamble!(2, MSGID_PORT); + out[5..7].copy_from_slice(&port.to_be_bytes()); + Ok(7) + } + Message::SuggestPiece(piece) | Message::AllowedFast(piece) => { + check_len!(PREAMBLE_LEN + INTEGER_LEN); + let msg_id = if matches!(self, Message::SuggestPiece(_)) { + MSGID_SUGGEST_PIECE + } else { + MSGID_ALLOWED_FAST + }; + write_preamble!(INTEGER_LEN as u32, msg_id); + out[5..9].copy_from_slice(&piece.to_be_bytes()); + Ok(9) + } Message::Extended(e) => { check_len!(PREAMBLE_LEN + 2); let msg_len = e.serialize(&mut out[PREAMBLE_LEN..], peer_extended_messages)?; @@ -412,6 +459,30 @@ impl Message<'_> { let have = buf.read_u32_be().unwrap(); Ok((Message::Have(have), total_len)) } + MSGID_PORT => { + check_msg_len!(2); + let port = buf.consume::<2>().unwrap(); + Ok((Message::Port(BE::read_u16(&port)), total_len)) + } + MSGID_SUGGEST_PIECE | MSGID_ALLOWED_FAST => { + check_msg_len!(4); + let piece = buf.read_u32_be().unwrap(); + let message = if msg_id == MSGID_SUGGEST_PIECE { + Message::SuggestPiece(piece) + } else { + Message::AllowedFast(piece) + }; + Ok((message, total_len)) + } + MSGID_HAVE_ALL | MSGID_HAVE_NONE => { + check_msg_len!(0); + let message = if msg_id == MSGID_HAVE_ALL { + Message::HaveAll + } else { + Message::HaveNone + }; + Ok((message, total_len)) + } MSGID_BITFIELD => { check_msg_len!(min 1); // In practice, as bitfield is always (almost) the first message, it should be contiguous. @@ -420,7 +491,7 @@ impl Message<'_> { .ok_or(MessageDeserializeError::NeedContiguous)?; Ok((Message::Bitfield(ByteBuf::from(data)), total_len)) } - MSGID_REQUEST | MSGID_CANCEL => { + MSGID_REQUEST | MSGID_CANCEL | MSGID_REJECT_REQUEST => { check_msg_len!(12); const I32: usize = 4; const I32_3: usize = I32 * 3; @@ -430,10 +501,11 @@ impl Message<'_> { begin: BE::read_u32(&req[I32..I32 * 2]), length: BE::read_u32(&req[I32 * 2..I32 * 3]), }; - let req = if msg_id == MSGID_REQUEST { - Message::Request(request) - } else { - Message::Cancel(request) + let req = match msg_id { + MSGID_REQUEST => Message::Request(request), + MSGID_CANCEL => Message::Cancel(request), + MSGID_REJECT_REQUEST => Message::RejectRequest(request), + _ => unsafe { unreachable_unchecked() }, }; Ok((req, total_len)) } @@ -487,6 +559,9 @@ impl Handshake { let mut reserved: u64 = 0; // supports extended messaging reserved |= 1 << 20; + // BEP 5 DHT and BEP 6 Fast Extension. + reserved |= 1; + reserved |= 1 << 2; Handshake { reserved, @@ -519,6 +594,14 @@ impl Handshake { self.reserved.to_be_bytes()[5] & 0x10 > 0 } + pub fn supports_dht(&self) -> bool { + self.reserved & 1 != 0 + } + + pub fn supports_fast(&self) -> bool { + self.reserved & (1 << 2) != 0 + } + #[must_use] pub fn serialize_unchecked_len(&self, buf: &mut [u8]) -> usize { debug_assert_eq!(PSTR_BT1.len(), 19); @@ -584,6 +667,36 @@ mod tests { let (de, dlen) = Handshake::deserialize(&buf).unwrap(); assert_eq!(dlen, len); assert_eq!(se, de); + assert!(de.supports_extended()); + assert!(de.supports_dht()); + assert!(de.supports_fast()); + } + + #[test] + fn bep5_and_bep6_messages_round_trip() { + let request = Request::new(7, 16_384, 16_384); + let messages = [ + Message::Port(6881), + Message::SuggestPiece(7), + Message::HaveAll, + Message::HaveNone, + Message::RejectRequest(request), + Message::AllowedFast(9), + ]; + + for original in messages { + let mut encoded = [0u8; 64]; + let encoded_len = original.serialize(&mut encoded, &Default::default).unwrap(); + let (decoded, decoded_len) = + Message::deserialize(&encoded[..encoded_len], &[]).unwrap(); + assert_eq!(decoded_len, encoded_len); + + let mut reencoded = [0u8; 64]; + let reencoded_len = decoded + .serialize(&mut reencoded, &Default::default) + .unwrap(); + assert_eq!(&encoded[..encoded_len], &reencoded[..reencoded_len]); + } } #[test] From 2b1986e32b0518ec9bd40f978f77db5276087e44 Mon Sep 17 00:00:00 2001 From: TheDancingDeveloper Date: Thu, 23 Jul 2026 22:37:22 +0000 Subject: [PATCH 33/33] migration: switch internal deps to pinned GitHub git sources --- .github/workflows/ci.yml | 36 +++ Cargo.lock | 479 ++++++++++----------------------------- Cargo.toml | 17 +- 3 files changed, 166 insertions(+), 366 deletions(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..85e958f --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,36 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + workflow_dispatch: + +permissions: + contents: read + +jobs: + rust: + runs-on: [self-hosted, node-b, linux, x64] + steps: + - uses: actions/checkout@v7 + - uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt,clippy + - name: Configure retained Forgejo registry credentials + env: + FORGEJO_CARGO_TOKEN: ${{ secrets.FORGEJO_CARGO_TOKEN }} + shell: bash + run: | + test -n "$FORGEJO_CARGO_TOKEN" + export CARGO_HOME="$RUNNER_TEMP/cargo-home" + mkdir -p "$CARGO_HOME" + chmod 700 "$CARGO_HOME" + printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n' > "$CARGO_HOME/config.toml" + printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$FORGEJO_CARGO_TOKEN" > "$CARGO_HOME/credentials.toml" + chmod 600 "$CARGO_HOME/credentials.toml" + printf 'CARGO_HOME=%s\n' "$CARGO_HOME" >> "$GITHUB_ENV" + - run: cargo fmt --all -- --check + - run: cargo check --workspace + - run: cargo test --workspace + - run: cargo clippy --workspace --all-targets -- -D warnings diff --git a/Cargo.lock b/Cargo.lock index 6fccc7d..33bd17e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -34,15 +34,15 @@ checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "assert_cfg" @@ -55,9 +55,9 @@ dependencies = [ [[package]] name = "atoi" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4652e33138d8d9c774c9697a351b019deb33737812be629603434407f288a323" +checksum = "e7a8bbe9949e43a1edaa043038c68703b04774156afdfb62ba2cef5bf93d67be" dependencies = [ "num-traits", ] @@ -70,15 +70,15 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "bitflags" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "bitvec" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +checksum = "ddcec3d12c579d40898fe0a9a358a803c23e9c52ca3c425707f81c9436211837" dependencies = [ "funty", "radium", @@ -100,9 +100,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" [[package]] name = "cast" @@ -112,9 +112,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.63" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f" +checksum = "c89588d05638b5b4594a3348a2d6c20277e43a7f5c5202b05cc56888475a47b8" dependencies = [ "find-msvc-tools", "shlex", @@ -128,9 +128,9 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cpufeatures", @@ -177,18 +177,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.1" +version = "4.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" +checksum = "d91e0c145792ef73a6ad36d27c75ac09f1832222a3c209689d90f534685ee5b7" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.6.0" +version = "4.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +checksum = "f09628afdcc538b57f3c6341e9c8e9970f18e4a481690a64974d7023bd33548b" dependencies = [ "anstyle", "clap_lex", @@ -273,9 +273,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -283,18 +283,18 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.18" +version = "0.9.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" [[package]] name = "crunchy" @@ -349,7 +349,7 @@ checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -367,24 +367,12 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - [[package]] name = "find-msvc-tools" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - [[package]] name = "foreign-types" version = "0.3.2" @@ -417,27 +405,27 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures-core" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7" [[package]] name = "futures-sink" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" +checksum = "e34418ac499d6305c2fb5ad0ed2f6ac998c5f8ca209b4510f7f94242c647e307" [[package]] name = "futures-task" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109" [[package]] name = "futures-util" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa" dependencies = [ "futures-core", "futures-task", @@ -458,16 +446,14 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "libc", "r-efi", "rand_core", - "wasip2", - "wasip3", ] [[package]] @@ -481,27 +467,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "foldhash", -] - -[[package]] -name = "hashbrown" -version = "0.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - [[package]] name = "hex" version = "0.3.2" @@ -596,12 +561,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - [[package]] name = "idna" version = "1.1.0" @@ -623,18 +582,6 @@ dependencies = [ "icu_properties", ] -[[package]] -name = "indexmap" -version = "2.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" -dependencies = [ - "equivalent", - "hashbrown 0.17.1", - "serde", - "serde_core", -] - [[package]] name = "itertools" version = "0.13.0" @@ -661,32 +608,26 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.100" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2025f20d7a4fa7785846e7b63d10a76d3f1cee98ee5cb79ea59703f95e42162" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", "futures-util", "wasm-bindgen", ] -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - [[package]] name = "libc" -version = "0.2.186" +version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "libredox" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" +checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652" dependencies = [ "libc", ] @@ -694,8 +635,7 @@ dependencies = [ [[package]] name = "librtbit-bencode" version = "0.1.5" -source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" -checksum = "e7d35dd07182c2bc219e499bbbe8fa6ce059331767f46cd75cc144608b15840b" +source = "git+https://github.com/TheDancingDeveloper-org/librtbit-bencode.git#255c93423c6fc86da5d9227457da28c8c1f3fdd6" dependencies = [ "anyhow", "arrayvec", @@ -711,8 +651,7 @@ dependencies = [ [[package]] name = "librtbit-buffers" version = "0.1.2" -source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" -checksum = "a3c284674535972fd7693f515f1d12c8ca20b5a2c37a03020bdeca32241cf29c" +source = "git+https://github.com/TheDancingDeveloper-org/librtbit-buffers.git#60fde393b379face7c0acfe7f654a1a5ae3f3731" dependencies = [ "bytes", "librtbit-clone-to-owned", @@ -723,8 +662,7 @@ dependencies = [ [[package]] name = "librtbit-clone-to-owned" version = "0.1.1" -source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" -checksum = "652077f668126ff93bf2c61fbfc88a38b60b9e50c1edc440a72c2a9a5b614459" +source = "git+https://github.com/TheDancingDeveloper-org/librtbit-clone-to-owned.git#6944f73c91e9a4cc3be7694f864c5c06012066fc" dependencies = [ "bytes", ] @@ -732,8 +670,7 @@ dependencies = [ [[package]] name = "librtbit-core" version = "0.1.5" -source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" -checksum = "5666666c2bd8714347ae0f68fbfef885d4ae28446a26c394e0a8a43ccb78238d" +source = "git+https://github.com/TheDancingDeveloper-org/librtbit-core.git#486540bb77448ae50df5e2ca846aa0caeef5314e" dependencies = [ "anyhow", "bytes", @@ -781,9 +718,8 @@ dependencies = [ [[package]] name = "librtbit-sha1-wrapper" -version = "0.1.2" -source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" -checksum = "2a49584e920ec499c2ea310f636b56169bad910a2be2920429c2964f81df2f53" +version = "0.1.1" +source = "git+https://github.com/TheDancingDeveloper-org/librtbit-sha1-wrapper.git#26062b9c6d4e73ad8b061f366d01056d401e467b" dependencies = [ "assert_cfg", "crypto-hash", @@ -804,17 +740,11 @@ dependencies = [ "scopeguard", ] -[[package]] -name = "log" -version = "0.4.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a" - [[package]] name = "memchr" -version = "2.8.2" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "num-traits" @@ -839,9 +769,9 @@ checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" [[package]] name = "openssl" -version = "0.10.80" +version = "0.10.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a45fa2aa886c42762255da344f0a0d313e254066c46aad76f300c3d3da62d967" +checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" dependencies = [ "bitflags", "cfg-if", @@ -859,14 +789,14 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "openssl-sys" -version = "0.9.116" +version = "0.9.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28a22dc7140cda5f096e5e7724a6962ca81a7f8bfd2979f9b18c11af56318c4" +checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695" dependencies = [ "cc", "libc", @@ -968,30 +898,20 @@ dependencies = [ "zerovec", ] -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn", -] - [[package]] name = "proc-macro2" -version = "1.0.106" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.45" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] @@ -1010,12 +930,12 @@ checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "rand" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ "chacha20", - "getrandom 0.4.2", + "getrandom 0.4.3", "rand_core", ] @@ -1067,9 +987,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.4" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" dependencies = [ "aho-corasick", "memchr", @@ -1079,9 +999,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad" dependencies = [ "aho-corasick", "memchr", @@ -1096,9 +1016,9 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "same-file" @@ -1115,17 +1035,11 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "semver" -version = "1.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" - [[package]] name = "serde" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" dependencies = [ "serde_core", "serde_derive", @@ -1133,29 +1047,29 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] name = "serde_json" -version = "1.0.150" +version = "1.0.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" dependencies = [ "itoa", "memchr", @@ -1190,9 +1104,20 @@ checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "syn" -version = "2.0.117" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" dependencies = [ "proc-macro2", "quote", @@ -1207,7 +1132,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -1218,22 +1143,22 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -1258,9 +1183,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.52.3" +version = "1.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" dependencies = [ "pin-project-lite", "tokio-macros", @@ -1268,20 +1193,20 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.7.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" +checksum = "6328af13490e73a9b4694030fafd93f8c8c6a9dede33e821c3fc63eddf8042ba" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "tokio-util" -version = "0.7.18" +version = "0.7.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52" dependencies = [ "bytes", "futures-core", @@ -1309,7 +1234,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -1333,12 +1258,6 @@ version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - [[package]] name = "url" version = "2.5.8" @@ -1378,29 +1297,11 @@ version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" -[[package]] -name = "wasip2" -version = "1.0.3+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" -dependencies = [ - "wit-bindgen 0.57.1", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen 0.51.0", -] - [[package]] name = "wasm-bindgen" -version = "0.2.123" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a254a4b10c19a76f09a27640e7ffbf9bc30bf67e16a3bf28aaefa4920fe81563" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -1411,9 +1312,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.123" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24a40fc75b0ec6f3746ceb10d36f53a93dcd68a93b11b6445983945d79eba0dc" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1421,65 +1322,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.123" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "908f34bd9b9ce3d4caf07b72dfab63d61504d156856c6bd3cd87fa350cf3985b" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.119", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.123" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7acbf7616c27b194bbb550bf77ed0c2c3e5b7fd1260a93082b95fb7f47959b92" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags", - "hashbrown 0.15.5", - "indexmap", - "semver", -] - [[package]] name = "web-sys" -version = "0.3.100" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0871acf327f283dc6da28a1696cdc64fb355ba9f935d052021fa77f35cce69" +checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" dependencies = [ "js-sys", "wasm-bindgen", @@ -1531,100 +1398,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - -[[package]] -name = "wit-bindgen" -version = "0.57.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" - -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck", - "indexmap", - "prettyplease", - "syn", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags", - "indexmap", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - [[package]] name = "writeable" version = "0.6.3" @@ -1659,28 +1432,28 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.52" +version = "0.8.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" +checksum = "b5a105cd7b140f6eeec8acff2ea38135d3cab283ada58540f629fe51e46696eb" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.52" +version = "0.8.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" +checksum = "0fe976fb70c78cd64cccfe3a6fc142244e8a77b70959b30faf9d0ac37ee228eb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -1700,7 +1473,7 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", "synstructure", ] @@ -1734,11 +1507,11 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "zmij" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/Cargo.toml b/Cargo.toml index 5ae56ab..be934eb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,10 +10,10 @@ repository = "http://100.92.54.45:3002/indexarr/librtbit-peer-protocol" serde = "1" serde_derive = "1" byteorder = "1" -buffers = { version = "0.1.2", registry = "forgejo", package = "librtbit-buffers" } -bencode = { version = "0.1.5", registry = "forgejo", package = "librtbit-bencode" } -clone_to_owned = { version = "0.1.1", registry = "forgejo", package = "librtbit-clone-to-owned" } -librtbit-core = { version = "0.1.5", registry = "forgejo" } +buffers = { git = "https://github.com/TheDancingDeveloper-org/librtbit-buffers.git", package = "librtbit-buffers" } +bencode = { git = "https://github.com/TheDancingDeveloper-org/librtbit-bencode.git", package = "librtbit-bencode" } +clone_to_owned = { git = "https://github.com/TheDancingDeveloper-org/librtbit-clone-to-owned.git", package = "librtbit-clone-to-owned" } +librtbit-core = { git = "https://github.com/TheDancingDeveloper-org/librtbit-core.git" } bitvec = "1" anyhow = "1" bytes = "1" @@ -21,15 +21,6 @@ itertools = "0.14" thiserror = "2" tracing = "0.1" -[patch."https://github.com/AusAgentSmith-org/librtbit-bencode.git"] -librtbit-bencode = { git = "http://100.92.54.45:3002/indexarr/librtbit-bencode.git", tag = "v0.1.0" } - -[patch."https://github.com/AusAgentSmith-org/librtbit-buffers.git"] -librtbit-buffers = { git = "http://100.92.54.45:3002/indexarr/librtbit-buffers.git", tag = "v0.1.0" } - -[patch."https://github.com/AusAgentSmith-org/librtbit-clone-to-owned.git"] -librtbit-clone-to-owned = { git = "http://100.92.54.45:3002/indexarr/librtbit-clone-to-owned.git", tag = "v0.1.0" } - [dev-dependencies] criterion = "0.8"