diff --git a/.coderabbit.yaml b/.coderabbit.yaml new file mode 100644 index 00000000..e5430e70 --- /dev/null +++ b/.coderabbit.yaml @@ -0,0 +1,5 @@ +# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json + +reviews: + auto_apply_labels: true + profile: assertive diff --git a/.config/nextest.toml b/.config/nextest.toml new file mode 100644 index 00000000..53d240d1 --- /dev/null +++ b/.config/nextest.toml @@ -0,0 +1,10 @@ +[store] +dir = "target/nextest" + +[profile.ci] +retries = 2 +fail-fast = false +slow-timeout = { period = "120s", terminate-after = 2 } + +[profile.ci.junit] +path = "junit.xml" diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..b6b900f6 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +github: structured-world diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 00000000..50bfe13e --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,15 @@ +# GitHub Copilot Instructions for structured-zstd + +## Project Overview + +Pure Rust zstd implementation — managed fork of [ruzstd (KillingSpark/zstd-rs)](https://github.com/KillingSpark/zstd-rs). Focus: dictionary compression improvements and performance parity with C zstd for CoordiNode LSM-tree. + +## Review Scope Rules + +**Review ONLY code within the PR's diff.** For issues found outside the diff, suggest creating a separate issue. + +## Rust Code Standards + +- **Clippy:** Must pass `cargo clippy --all-features -- -D warnings` +- This is a fork — avoid suggesting architectural changes that diverge too far from upstream +- Performance-critical code: benchmark before/after any changes diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..a45d101a --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,22 @@ +version: 2 +updates: + - package-ecosystem: "cargo" + directory: "/" + schedule: + interval: "weekly" + open-pull-requests-limit: 10 + groups: + minor-and-patch: + patterns: + - "*" + update-types: + - "minor" + - "patch" + commit-message: + prefix: "chore(deps)" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + commit-message: + prefix: "ci(deps)" diff --git a/.github/scripts/run-benchmarks.sh b/.github/scripts/run-benchmarks.sh new file mode 100755 index 00000000..1ad2086d --- /dev/null +++ b/.github/scripts/run-benchmarks.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# Run compare_ffi benchmarks and produce github-action-benchmark JSON. +# Output: benchmark-results.json (customSmallerIsBetter format — lower time = better) +set -eo pipefail + +echo "Running benchmarks..." >&2 + +# Run criterion benchmarks, capture output +cargo bench --bench compare_ffi -p structured-zstd -- --output-format bencher | tee /tmp/bench-raw.txt + +echo "Parsing results..." >&2 + +# Parse criterion bencher output into github-action-benchmark JSON +# Format: "test ... bench: ns/iter (+/- )" +python3 - <<'PYEOF' +import json, re, sys + +results = [] +with open("/tmp/bench-raw.txt") as f: + for line in f: + m = re.match(r"test (\S+)\s+\.\.\. bench:\s+([\d,]+) ns/iter", line) + if m: + name = m.group(1) + ns = int(m.group(2).replace(",", "")) + # Convert ns to ms for readability + ms = ns / 1_000_000 + results.append({ + "name": name, + "unit": "ms", + "value": round(ms, 3), + }) + +if not results: + print("ERROR: No benchmark results parsed!", file=sys.stderr) + sys.exit(1) + +with open("benchmark-results.json", "w") as f: + json.dump(results, f, indent=2) + +print(f"Wrote {len(results)} benchmark results to benchmark-results.json", file=sys.stderr) +for r in results: + print(f" {r['name']}: {r['value']} {r['unit']}", file=sys.stderr) +PYEOF diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6a7c6ef2..0514ee67 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,48 +1,149 @@ -on: [push, pull_request] - name: CI +on: + push: + branches: [main] + pull_request: + branches: [main] + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +env: + CARGO_TERM_COLOR: always + jobs: - tests: - name: stable lint, test, build - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - - name: Install stable toolchain - uses: dtolnay/rust-toolchain@stable - with: - components: clippy - - name: Install cargo-hack and cargo-msrv - uses: taiki-e/install-action@v2 - with: - tool: cargo-hack, cargo-msrv - - name: check - run: cargo hack check --workspace --feature-powerset --exclude-features rustc-dep-of-std - - name: cargo hack clippy - run: cargo hack clippy --workspace --feature-powerset --exclude-features rustc-dep-of-std - - name: cargo hack test - run: cargo hack test --workspace --feature-powerset --exclude-features rustc-dep-of-std - - name: Verify MSRV (cli) - run: cargo msrv verify --path cli/ - - name: Verify MSRV (lib) - run: cargo msrv verify --path ruzstd/ - - nightly-stuff: - name: nightly lint, miri + lint: + timeout-minutes: 10 runs-on: ubuntu-latest steps: - - name: Checkout sources - uses: actions/checkout@v4 + - uses: actions/checkout@v6 + - uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt, clippy + - uses: Swatinem/rust-cache@v2 + - name: Format + run: cargo fmt --all -- --check + - name: Clippy + run: cargo clippy -p structured-zstd --features hash,std,dict_builder -- -D warnings + + test: + needs: lint + timeout-minutes: 15 + strategy: + fail-fast: true + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v6 + - uses: dtolnay/rust-toolchain@stable + - uses: taiki-e/install-action@nextest + - uses: Swatinem/rust-cache@v2 + with: + prefix-key: ${{ runner.os }}-cargo + - name: Test + working-directory: zstd + run: cargo nextest run --profile ci -p structured-zstd --features hash,std,dict_builder + - name: Doc tests + run: cargo test --doc -p structured-zstd --features hash,std,dict_builder - - name: Install nightly toolchain - uses: dtolnay/rust-toolchain@nightly + cross-i686: + needs: lint + timeout-minutes: 15 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: dtolnay/rust-toolchain@stable + with: + targets: i686-unknown-linux-gnu + - uses: taiki-e/install-action@nextest + - name: Install 32-bit libs + run: sudo apt-get update && sudo apt-get install -y gcc-multilib + - uses: Swatinem/rust-cache@v2 with: - components: rustfmt, clippy, miri + prefix-key: cross-i686 + - name: Test (i686) + working-directory: zstd + run: cargo nextest run --profile ci -p structured-zstd --features hash,std,dict_builder --target i686-unknown-linux-gnu - - run: cargo +nightly fmt --all -- --check - - run: cargo +nightly clippy --workspace --no-default-features -- -D warnings - - run: cargo +nightly clippy --workspace -- -D warnings - - run: cargo +nightly miri test ringbuffer - - run: cargo +nightly miri test short_Writer + msrv: + needs: lint + timeout-minutes: 15 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: dtolnay/rust-toolchain@stable + with: + toolchain: "1.87" + - uses: taiki-e/install-action@nextest + - uses: Swatinem/rust-cache@v2 + with: + prefix-key: msrv + - name: Test (MSRV) + working-directory: zstd + run: cargo nextest run --profile ci -p structured-zstd --features hash,std,dict_builder + + codecov: + needs: lint + timeout-minutes: 15 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: dtolnay/rust-toolchain@nightly + with: + components: llvm-tools-preview + - uses: Swatinem/rust-cache@v2 + - uses: taiki-e/install-action@cargo-llvm-cov + - run: cargo llvm-cov -p structured-zstd --features hash,std,dict_builder --lcov --output-path lcov.info + working-directory: zstd + - uses: codecov/codecov-action@v5 + with: + files: zstd/lcov.info + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + + benchmark: + name: Performance regression check + needs: lint + timeout-minutes: 30 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + + - name: Generate bot token + id: bot-token + if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository + uses: actions/create-github-app-token@v3 + with: + app-id: ${{ secrets.RELEASER_APP_ID }} + private-key: ${{ secrets.RELEASER_APP_PRIVATE_KEY }} + + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + with: + prefix-key: bench + + - name: Run benchmarks + run: bash .github/scripts/run-benchmarks.sh + + - name: Store benchmark results + if: steps.bot-token.outputs.token != '' + uses: benchmark-action/github-action-benchmark@v1 + with: + name: "structured-zstd vs C FFI" + tool: customSmallerIsBetter + output-file-path: benchmark-results.json + github-token: ${{ steps.bot-token.outputs.token }} + auto-push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} + comment-on-alert: true + alert-comment-cc-users: "@polaz" + alert-threshold: "115%" + fail-threshold: "125%" + fail-on-alert: ${{ github.event_name == 'pull_request' }} + save-data-file: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} + benchmark-data-dir-path: dev/bench diff --git a/.github/workflows/cleanup-branches.yml b/.github/workflows/cleanup-branches.yml new file mode 100644 index 00000000..8edf589e --- /dev/null +++ b/.github/workflows/cleanup-branches.yml @@ -0,0 +1,40 @@ +name: Cleanup release-plz branches + +on: + schedule: + - cron: "23 3 * * *" + workflow_dispatch: + +permissions: + contents: write + +jobs: + cleanup: + runs-on: ubuntu-latest + steps: + - name: Delete stale release-plz branches + uses: actions/github-script@v7 + with: + script: | + const branches = await github.paginate( + github.rest.repos.listBranches, + { owner: context.repo.owner, repo: context.repo.repo, per_page: 100 } + ); + const stale = branches + .filter(b => b.name.startsWith("release-plz-")) + .map(b => b.name); + stale.sort().reverse(); + const toDelete = stale.slice(1); + for (const branch of toDelete) { + try { + await github.rest.git.deleteRef({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: `heads/${branch}` + }); + core.info(`Deleted: ${branch}`); + } catch (e) { + core.info(`Skip ${branch}: ${e.message}`); + } + } + core.info(`Cleaned ${toDelete.length} of ${stale.length} release-plz branches`); diff --git a/.github/workflows/dependabot-auto-merge.yml b/.github/workflows/dependabot-auto-merge.yml new file mode 100644 index 00000000..c249e5b1 --- /dev/null +++ b/.github/workflows/dependabot-auto-merge.yml @@ -0,0 +1,41 @@ +name: Dependabot Auto-Merge + +on: + pull_request: + types: [opened, synchronize, reopened] + +permissions: + pull-requests: write + contents: write + +jobs: + auto-merge: + runs-on: ubuntu-latest + if: github.event.pull_request.user.login == 'dependabot[bot]' + + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Dependabot metadata + id: metadata + uses: dependabot/fetch-metadata@v2 + with: + github-token: "${{ secrets.GITHUB_TOKEN }}" + + - name: Generate App Token + id: app-token + if: steps.metadata.outputs.update-type == 'version-update:semver-minor' || steps.metadata.outputs.update-type == 'version-update:semver-patch' + uses: actions/create-github-app-token@v3 + with: + app-id: ${{ secrets.RELEASER_APP_ID }} + private-key: ${{ secrets.RELEASER_APP_PRIVATE_KEY }} + + - name: Approve and enable auto-merge for minor/patch updates + if: steps.metadata.outputs.update-type == 'version-update:semver-minor' || steps.metadata.outputs.update-type == 'version-update:semver-patch' + run: | + gh pr review --approve "$PR_NUMBER" + gh pr merge --auto --squash "$PR_NUMBER" + env: + GH_TOKEN: ${{ steps.app-token.outputs.token }} + PR_NUMBER: ${{ github.event.pull_request.number }} diff --git a/.github/workflows/release-plz.yml b/.github/workflows/release-plz.yml new file mode 100644 index 00000000..2fcb2121 --- /dev/null +++ b/.github/workflows/release-plz.yml @@ -0,0 +1,42 @@ +name: Release + +on: + push: + branches: + - main + +jobs: + release-plz: + runs-on: ubuntu-latest + steps: + - name: Generate token (SW Release Bot) + id: app-token + uses: actions/create-github-app-token@v3 + with: + app-id: ${{ secrets.RELEASER_APP_ID }} + private-key: ${{ secrets.RELEASER_APP_PRIVATE_KEY }} + + - name: Checkout + uses: actions/checkout@v6 + with: + fetch-depth: 0 + token: ${{ steps.app-token.outputs.token }} + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Create release PR + uses: release-plz/action@v0.5 + with: + command: release-pr + config: .release-plz.toml + env: + GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} + + - name: Create GitHub Release + uses: release-plz/action@v0.5 + with: + command: release + config: .release-plz.toml + env: + GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..8119e59b --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,20 @@ +name: Publish to crates.io + +on: + release: + types: created + +jobs: + publish: + runs-on: ubuntu-latest + environment: release + permissions: + id-token: write + steps: + - uses: actions/checkout@v6 + - uses: dtolnay/rust-toolchain@stable + - uses: rust-lang/crates-io-auth-action@v1 + id: auth + - run: cargo publish -p structured-zstd + env: + CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }} diff --git a/.release-plz.toml b/.release-plz.toml new file mode 100644 index 00000000..a85d5415 --- /dev/null +++ b/.release-plz.toml @@ -0,0 +1,21 @@ +[workspace] +semver_check = false +git_release_enable = true +changelog_update = true +git_tag_name = "v{{ version }}" + +[changelog] +commit_parsers = [ + { message = "^chore", skip = true }, + { message = "^ci", skip = true }, + { message = "^style", skip = true }, + { message = "^build", skip = true }, + { message = "^docs\\(ci\\)", skip = true }, + { message = "^Merge", skip = true }, + { message = "^docs", group = "Documentation" }, + { message = "^feat", group = "Added" }, + { message = "^fix", group = "Fixed" }, + { message = "^perf", group = "Performance" }, + { message = "^refactor", group = "Refactored" }, + { message = "^test", group = "Testing" }, +] diff --git a/Cargo.toml b/Cargo.toml index db3f4c92..fbc1467f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,3 +1,3 @@ [workspace] resolver = "3" -members = ["ruzstd", "cli"] +members = ["zstd", "cli"] diff --git a/LICENSE b/LICENSE index 486a3351..845df2a6 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,202 @@ -MIT License - -Copyright (c) 2019 Moritz Borcherding - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2026 Structured World Foundation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/NOTICE b/NOTICE new file mode 100644 index 00000000..e2ed66db --- /dev/null +++ b/NOTICE @@ -0,0 +1,22 @@ +This project includes code from ruzstd (https://github.com/KillingSpark/zstd-rs), +originally licensed under the MIT License: + +Copyright (c) 2019 Moritz Borcherding + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 00000000..38d9664e --- /dev/null +++ b/README.md @@ -0,0 +1,86 @@ +# structured-zstd + +Pure Rust zstd implementation — managed fork of [ruzstd](https://github.com/KillingSpark/zstd-rs). + +[![CI](https://github.com/structured-world/structured-zstd/actions/workflows/ci.yml/badge.svg)](https://github.com/structured-world/structured-zstd/actions/workflows/ci.yml) +[![Crates.io](https://img.shields.io/crates/v/structured-zstd.svg)](https://crates.io/crates/structured-zstd) +[![docs.rs](https://docs.rs/structured-zstd/badge.svg)](https://docs.rs/structured-zstd) +[![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE) + +## Managed Fork + +This is a **maintained fork** of [KillingSpark/zstd-rs](https://github.com/KillingSpark/zstd-rs) (ruzstd) by [Structured World Foundation](https://sw.foundation). We maintain additional features and hardening for the [CoordiNode](https://github.com/structured-world/coordinode) database engine while contributing patches upstream. + +**Fork goals:** +- Dictionary compression improvements (critical for per-label trained dictionaries in LSM-tree) +- Performance parity with C zstd for decompression (currently 1.4-3.5x slower) +- No FFI — pure `cargo build`, no cmake/system libraries (ADR-013 compliance) + +**Upstream sync:** We regularly rebase on upstream and contribute improvements back. + +## What is this + +A pure Rust implementation of the Zstandard compression format, as defined in [RFC 8878](https://www.rfc-editor.org/rfc/rfc8878.pdf). + +This crate contains a fully operational decompressor and a compressor that is usable but does not yet match the speed, ratio, or configurability of the original C library. + +## Current Status + +### Decompression + +Complete RFC 8878 implementation. Performance: ~1.4-3.5x slower than C zstd depending on data compressibility. + +### Compression + +- [x] Uncompressed blocks +- [x] Fastest (roughly level 1) +- [ ] Default (roughly level 3) +- [ ] Better (roughly level 7) +- [ ] Best (roughly level 11) +- [x] Checksums +- [ ] Dictionary compression + +### Dictionary Generation + +When the `dict_builder` feature is enabled, the `dictionary` module can create raw content dictionaries. Within 0.2% of the official implementation on the `github-users` sample set. + +## Usage + +### Compression + +```rust +use structured_zstd::encoding::{compress, compress_to_vec, CompressionLevel}; + +let data: &[u8] = b"hello world"; +let compressed = compress_to_vec(data, CompressionLevel::Fastest); +``` + +### Decompression + +```rust,no_run +use structured_zstd::decoding::StreamingDecoder; +use structured_zstd::io::Read; + +let compressed_data: Vec = vec![]; +let mut source: &[u8] = &compressed_data; +let mut decoder = StreamingDecoder::new(&mut source).unwrap(); + +let mut result = Vec::new(); +decoder.read_to_end(&mut result).unwrap(); +``` + +## Support the Project + +
+ +![USDT TRC-20 Donation QR Code](https://raw.githubusercontent.com/structured-world/structured-zstd/main/assets/usdt-qr.svg) + +USDT (TRC-20): `TFDsezHa1cBkoeZT5q2T49Wp66K8t2DmdA` + +
+ +## License + +Apache License 2.0 + +Contributions will be published under the same Apache 2.0 license. diff --git a/Readme.md b/Readme.md deleted file mode 100644 index 79d2ff94..00000000 --- a/Readme.md +++ /dev/null @@ -1,151 +0,0 @@ -# Ruzstd (a pure rust zstd format implementation) - -[![Released API docs](https://docs.rs/ruzstd/badge.svg)](https://docs.rs/ruzstd) -[![CI](https://github.com/killingspark/zstd-rs/workflows/CI/badge.svg)](https://github.com/killingspark/zstd-rs/actions?query=workflow%3ACI) - - -# What is this - -A pure Rust implementation of the Zstandard compression format, as defined in [RFC8878](https://www.rfc-editor.org/rfc/rfc8878.pdf). - -This crate contains a fully operational implementation of the decompression portion of the standard. -It also provides a compressor which is usable, but it does not yet reach the speed, ratio or configurability of the original zstd library. - -This crate is currently actively maintained. - -# Current Status - -## Decompression -The `decoding` module provides a complete -implementation of a Zstandard decompressor. - -In terms of speed, `ruzstd` is behind the original C implementation -which has a rust binding located [here](https://github.com/gyscos/zstd-rs). - -Measuring with the 'time' utility the original zstd and my decoder both -decoding the same enwik9.zst file from a ramfs, my decoder is about 3.5 -times slower. Enwik9 is highly compressible, for less compressible data -(like a ubuntu installation .iso) my decoder comes close to only being -1.4 times slower. - -## Compression -On the compression side: -- Support for generating compressed blocks at any compression level - - [x] Uncompressed - - [x] Fastest (roughly level 1) - - [ ] Default (roughly level 3) - - [ ] Better (roughly level 7) - - [ ] Best (roughly level 11) -- [x] Checksums -- [ ] Dictionaries - -## Dictionary Generation -When the `dict_builder` feature is enabled, the `dictionary` module -provides the ability to create new dictionaries. - -On the `github-users` sample set, our implementation benchmarks within -0.2% of the official implementation (as of commit -`09e52d07340acdb2e13817b066e8be6e424f7258`): -```no_build -uncompressed: 100.00% (7484607 bytes) -no dict: 34.99% of original size (2618872 bytes) -reference dict: 16.16% of no dict size (2195672 bytes smaller) -our dict: 16.28% of no dict size (2192400 bytes smaller) -``` - -The dictionary generator only provides support for creating "raw -content" dictionaries. Tagged dictionaries are currently unsupported. - -See -for clarification. - - -# How can you use it? - -## Compression - -The easiest is to use the provided `compress`/`compress_to_vec` functions - -```rust, no_run -use ruzstd::encoding::{compress, compress_to_vec, CompressionLevel}; -let data: &[u8] = todo!(); -// Either -let mut compressed = Vec::new(); -compress(data, &mut compressed, CompressionLevel::Fastest); -// or -let compressed = compress_to_vec(data, CompressionLevel::Fastest); - ``` - - Or you can use the `FrameDecoder` manually to compress data. This allows you to process encoded data while it is being encoded instead of collecting into a big vector. - -## Decompression - -Additionally to the descriptions and the docs you can have a look at the zstd / zstd_streaming binaries. They showcase how this library can be used. - -### Easy - -The easiest is to wrap the io::Read into a StreamingDecoder which itself implements io::Read. It will decode blocks as necessary to fulfill the read requests - -```rust, no_run -use ruzstd::decoding::StreamingDecoder; -use ruzstd::io::Read; - -let mut source: &[u8] = todo!("Get a reader from a File or any other source"); -let mut decoder = StreamingDecoder::new(&mut source).unwrap(); - -let mut result = Vec::new(); -decoder.read_to_end(&mut result).unwrap(); -``` - -This might be a problem if you are accepting user provided data. Frames can be REALLY big when decoded. If this is the case you should either check how big the frame -actually is or use the memory efficient approach described below. - -### Memory efficient - -If memory is a concern you can decode frames partially. There are two ways to do this: - -#### Streaming decoder - -Use the StreamingDecoder and use a while loop to fill your buffer (see src/bin/zstd_stream.rs for an example). This is the -recommended approach. - -#### Use the lower level FrameDecoder - -For an example see the src/bin/zstd.rs file. Basically you can decode the frame until either a -given block count has been decoded or the decodebuffer has reached a certain size. Then you can collect no longer needed bytes from the buffer and do something with them, discard them and resume decoding the frame in a loop until the frame has been decoded completely. - -## Roadmap - -1. More Performance optimizations - 1. sequence_decoding and reverse_bitreader::get_bits. Those account for about 50% of the whole time used in decoding - 2. Matching suffixes. This accounts for >60% of the whole time used in encoding -2. Implement encoder features - 1. More levels - 2. Dictionaries - 3. Checksums - -## Testing - -Tests take two forms. - -1. Tests using well-formed files that have to decode correctly and are checked against their originals -1. Tests using malformed input that have been generated by the fuzzer. These don't have to decode (they are garbage) but they must not make the decoder panic - -## Fuzzing - -Fuzzing has been done on - -1. Random input with no initial corpus -2. The \*.zst in /fuzz_decodecorpus - - -### You want to help fuzz? - -Use `cargo +nightly fuzz run decode` or some other fuzz target to run the fuzzer. It is seeded with files created with decodecorpus. - -If the fuzzer finds a crash it will be saved to the artifacts dir by the fuzzer. Run `cargo test artifacts` to run the artifacts tests. -This will tell you where the decoder panics exactly. If you are able to fix the issue please feel free to do a pull request. If not please still submit the offending input and I will see how to fix it myself. - -# Contributing - -Contributions will be published under the same MIT license as this project. Please make an entry in the Changelog.md file when you make a PR. diff --git a/assets/usdt-qr.svg b/assets/usdt-qr.svg new file mode 100644 index 00000000..a8dd3dcf --- /dev/null +++ b/assets/usdt-qr.svg @@ -0,0 +1 @@ + diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 2fc340ba..f49b62e2 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,15 +1,15 @@ [package] -name = "ruzstd-cli" +name = "structured-zstd-cli" version = "0.8.2" rust-version = "1.87.0" authors = ["Moritz Borcherding "] edition = "2018" -license = "MIT" -homepage = "https://github.com/KillingSpark/zstd-rs" -repository = "https://github.com/KillingSpark/zstd-rs" -description = "A command line interface for the `ruzstd` zstd implementation" -readme = "../Readme.md" +license = "Apache-2.0" +homepage = "https://github.com/structured-world/structured-zstd" +repository = "https://github.com/structured-world/structured-zstd" +description = "A command line interface for the `structured-zstd` zstd implementation" +readme = "../README.md" keywords = ["zstd", "zstandard", "decompression"] categories = ["compression"] @@ -22,7 +22,7 @@ indicatif = { version = "0.18.0" } tracing-indicatif = { version = "0.3.13" } console = { version = "0.16.1" } tracing-subscriber = { version = "0.3.20" } -ruzstd = { path = "../ruzstd", features = ["std"] } +structured-zstd = { path = "../zstd", features = ["std"] } [dev-dependencies] criterion = "0.5" diff --git a/cli/src/main.rs b/cli/src/main.rs index fb336717..63eb113f 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -1,4 +1,3 @@ -extern crate ruzstd; mod progress; use progress::ProgressMonitor; @@ -11,7 +10,7 @@ use progress::fmt_size; use clap::{Parser, Subcommand}; use color_eyre::eyre::{ContextCompat, WrapErr}; -use ruzstd::encoding::CompressionLevel; +use structured_zstd::encoding::CompressionLevel; use tracing::info; use tracing_indicatif::IndicatifLayer; use tracing_subscriber::layer::SubscriberExt; @@ -103,7 +102,7 @@ fn main() -> color_eyre::Result<()> { fn compress(input: PathBuf, output: PathBuf, level: u8) -> color_eyre::Result<()> { info!("compressing {input:?} to {output:?}"); - let compression_level: ruzstd::encoding::CompressionLevel = match level { + let compression_level: structured_zstd::encoding::CompressionLevel = match level { 0 => CompressionLevel::Uncompressed, 1 => CompressionLevel::Fastest, 2 => CompressionLevel::Default, @@ -119,7 +118,7 @@ fn compress(input: PathBuf, output: PathBuf, level: u8) -> color_eyre::Result<() let encoder_input = ProgressMonitor::new(buffered_source, source_size); let output: File = File::create(output).wrap_err("failed to open output file for writing")?; - ruzstd::encoding::compress(encoder_input, &output, compression_level); + structured_zstd::encoding::compress(encoder_input, &output, compression_level); let compressed_size = output.metadata()?.len(); let compression_ratio = compressed_size as f64 / source_size as f64 * 100.0; info!( @@ -139,7 +138,7 @@ fn decompress(input: PathBuf, output: PathBuf) -> color_eyre::Result<()> { let mut output: File = File::create(output).wrap_err("failed to open output file for writing")?; - let mut decoder = ruzstd::decoding::StreamingDecoder::new(decoder_input)?; + let mut decoder = structured_zstd::decoding::StreamingDecoder::new(decoder_input)?; std::io::copy(&mut decoder, &mut output)?; diff --git a/zstd/.gitattributes b/zstd/.gitattributes new file mode 100644 index 00000000..fa4ae881 --- /dev/null +++ b/zstd/.gitattributes @@ -0,0 +1,5 @@ +# Corpus files are binary — never convert line endings. +# Without this, git autocrlf on Windows converts LF→CRLF in .txt files, +# causing size mismatches against their .zst compressed counterparts. +decodecorpus_files/** binary +dict_tests/** binary diff --git a/ruzstd/Cargo.toml b/zstd/Cargo.toml similarity index 66% rename from ruzstd/Cargo.toml rename to zstd/Cargo.toml index 9e2e1e61..db32a2f1 100644 --- a/ruzstd/Cargo.toml +++ b/zstd/Cargo.toml @@ -1,16 +1,19 @@ [package] -name = "ruzstd" -version = "0.8.3" +name = "structured-zstd" +version = "0.0.1" rust-version = "1.87" -authors = ["Moritz Borcherding "] +authors = [ + "Moritz Borcherding ", + "Structured World Foundation ", +] edition = "2018" -license = "MIT" -homepage = "https://github.com/KillingSpark/zstd-rs" -repository = "https://github.com/KillingSpark/zstd-rs" -description = "A decoder for the zstd compression format" +license = "Apache-2.0" +homepage = "https://github.com/structured-world/structured-zstd" +repository = "https://github.com/structured-world/structured-zstd" +description = "Pure Rust zstd implementation — managed fork of ruzstd. Dictionary decompression, no FFI." exclude = ["decodecorpus_files/*", "dict_tests/*", "fuzz_decodecorpus/*"] -readme = "Readme.md" -keywords = ["zstd", "zstandard", "decompression"] +readme = "../README.md" +keywords = ["zstd", "zstandard", "decompression", "compression", "pure-rust"] categories = ["compression"] [dependencies] @@ -43,3 +46,7 @@ rustc-dep-of-std = ["dep:compiler_builtins", "dep:core", "dep:alloc"] [[bench]] name = "decode_all" harness = false + +[[bench]] +name = "compare_ffi" +harness = false diff --git a/ruzstd/LICENSE b/zstd/LICENSE similarity index 100% rename from ruzstd/LICENSE rename to zstd/LICENSE diff --git a/ruzstd/Readme.md b/zstd/Readme.md similarity index 100% rename from ruzstd/Readme.md rename to zstd/Readme.md diff --git a/zstd/benches/compare_ffi.rs b/zstd/benches/compare_ffi.rs new file mode 100644 index 00000000..5f5bef7c --- /dev/null +++ b/zstd/benches/compare_ffi.rs @@ -0,0 +1,72 @@ +//! Comparison benchmark: structured-zstd (pure Rust) vs zstd (C FFI). +//! +//! Five variations: decompress (pure Rust/C FFI), compress (pure Rust/C FFI L1/L3). +//! Both decompress benchmarks allocate per-iteration for symmetric comparison. + +use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion}; + +/// Compressed corpus for decompression benchmarks. +const COMPRESSED_CORPUS: &[u8] = include_bytes!("../decodecorpus_files/z000033.zst"); + +fn bench_decompress(c: &mut Criterion) { + let mut group = c.benchmark_group("decompress"); + + // Pre-compute expected output length for assertions. + let expected_len = zstd::decode_all(COMPRESSED_CORPUS).unwrap().len(); + + // Pure Rust decompression — allocate per-iteration (symmetric with C FFI). + group.bench_function("pure_rust", |b| { + b.iter(|| { + let mut fr = structured_zstd::decoding::FrameDecoder::new(); + let mut target = vec![0u8; expected_len]; + let written = fr.decode_all(COMPRESSED_CORPUS, &mut target).unwrap(); + assert_eq!(written, expected_len); + }) + }); + + // C FFI decompression — allocates per-iteration via decode_all. + group.bench_function("c_ffi", |b| { + b.iter(|| { + let out = zstd::decode_all(COMPRESSED_CORPUS).unwrap(); + assert_eq!(out.len(), expected_len); + }) + }); + + group.finish(); +} + +fn bench_compress(c: &mut Criterion) { + // Get raw data by decompressing the corpus. + let raw_data = zstd::decode_all(COMPRESSED_CORPUS).unwrap(); + + let mut group = c.benchmark_group("compress"); + + // Pure Rust compression (Fastest level) + group.bench_with_input( + BenchmarkId::new("pure_rust", "fastest"), + &raw_data, + |b, data| { + b.iter(|| { + black_box(structured_zstd::encoding::compress_to_vec( + &data[..], + structured_zstd::encoding::CompressionLevel::Fastest, + )) + }) + }, + ); + + // C FFI compression (level 1 ≈ fastest) + group.bench_with_input(BenchmarkId::new("c_ffi", "level1"), &raw_data, |b, data| { + b.iter(|| black_box(zstd::encode_all(&data[..], 1).unwrap())) + }); + + // C FFI compression (level 3 ≈ default) + group.bench_with_input(BenchmarkId::new("c_ffi", "level3"), &raw_data, |b, data| { + b.iter(|| black_box(zstd::encode_all(&data[..], 3).unwrap())) + }); + + group.finish(); +} + +criterion_group!(benches, bench_decompress, bench_compress); +criterion_main!(benches); diff --git a/ruzstd/benches/decode_all.rs b/zstd/benches/decode_all.rs similarity index 91% rename from ruzstd/benches/decode_all.rs rename to zstd/benches/decode_all.rs index 43998678..a17d2351 100644 --- a/ruzstd/benches/decode_all.rs +++ b/zstd/benches/decode_all.rs @@ -1,5 +1,5 @@ use criterion::{criterion_group, criterion_main, Criterion}; -use ruzstd::decoding::FrameDecoder; +use structured_zstd::decoding::FrameDecoder; fn criterion_benchmark(c: &mut Criterion) { let mut fr = FrameDecoder::new(); diff --git a/ruzstd/decodecorpus_files/abc.txt b/zstd/decodecorpus_files/abc.txt similarity index 100% rename from ruzstd/decodecorpus_files/abc.txt rename to zstd/decodecorpus_files/abc.txt diff --git a/ruzstd/decodecorpus_files/abc.txt.zst b/zstd/decodecorpus_files/abc.txt.zst similarity index 100% rename from ruzstd/decodecorpus_files/abc.txt.zst rename to zstd/decodecorpus_files/abc.txt.zst diff --git a/ruzstd/decodecorpus_files/z000000 b/zstd/decodecorpus_files/z000000 similarity index 100% rename from ruzstd/decodecorpus_files/z000000 rename to zstd/decodecorpus_files/z000000 diff --git a/ruzstd/decodecorpus_files/z000000.zst b/zstd/decodecorpus_files/z000000.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000000.zst rename to zstd/decodecorpus_files/z000000.zst diff --git a/ruzstd/decodecorpus_files/z000001 b/zstd/decodecorpus_files/z000001 similarity index 100% rename from ruzstd/decodecorpus_files/z000001 rename to zstd/decodecorpus_files/z000001 diff --git a/ruzstd/decodecorpus_files/z000001.zst b/zstd/decodecorpus_files/z000001.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000001.zst rename to zstd/decodecorpus_files/z000001.zst diff --git a/ruzstd/decodecorpus_files/z000002 b/zstd/decodecorpus_files/z000002 similarity index 100% rename from ruzstd/decodecorpus_files/z000002 rename to zstd/decodecorpus_files/z000002 diff --git a/ruzstd/decodecorpus_files/z000002.zst b/zstd/decodecorpus_files/z000002.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000002.zst rename to zstd/decodecorpus_files/z000002.zst diff --git a/ruzstd/decodecorpus_files/z000003 b/zstd/decodecorpus_files/z000003 similarity index 100% rename from ruzstd/decodecorpus_files/z000003 rename to zstd/decodecorpus_files/z000003 diff --git a/ruzstd/decodecorpus_files/z000003.zst b/zstd/decodecorpus_files/z000003.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000003.zst rename to zstd/decodecorpus_files/z000003.zst diff --git a/ruzstd/decodecorpus_files/z000004 b/zstd/decodecorpus_files/z000004 similarity index 100% rename from ruzstd/decodecorpus_files/z000004 rename to zstd/decodecorpus_files/z000004 diff --git a/ruzstd/decodecorpus_files/z000004.zst b/zstd/decodecorpus_files/z000004.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000004.zst rename to zstd/decodecorpus_files/z000004.zst diff --git a/ruzstd/decodecorpus_files/z000005 b/zstd/decodecorpus_files/z000005 similarity index 100% rename from ruzstd/decodecorpus_files/z000005 rename to zstd/decodecorpus_files/z000005 diff --git a/ruzstd/decodecorpus_files/z000005.zst b/zstd/decodecorpus_files/z000005.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000005.zst rename to zstd/decodecorpus_files/z000005.zst diff --git a/ruzstd/decodecorpus_files/z000006 b/zstd/decodecorpus_files/z000006 similarity index 100% rename from ruzstd/decodecorpus_files/z000006 rename to zstd/decodecorpus_files/z000006 diff --git a/ruzstd/decodecorpus_files/z000006.zst b/zstd/decodecorpus_files/z000006.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000006.zst rename to zstd/decodecorpus_files/z000006.zst diff --git a/ruzstd/decodecorpus_files/z000007 b/zstd/decodecorpus_files/z000007 similarity index 100% rename from ruzstd/decodecorpus_files/z000007 rename to zstd/decodecorpus_files/z000007 diff --git a/ruzstd/decodecorpus_files/z000007.zst b/zstd/decodecorpus_files/z000007.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000007.zst rename to zstd/decodecorpus_files/z000007.zst diff --git a/ruzstd/decodecorpus_files/z000008 b/zstd/decodecorpus_files/z000008 similarity index 100% rename from ruzstd/decodecorpus_files/z000008 rename to zstd/decodecorpus_files/z000008 diff --git a/ruzstd/decodecorpus_files/z000008.zst b/zstd/decodecorpus_files/z000008.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000008.zst rename to zstd/decodecorpus_files/z000008.zst diff --git a/ruzstd/decodecorpus_files/z000009 b/zstd/decodecorpus_files/z000009 similarity index 100% rename from ruzstd/decodecorpus_files/z000009 rename to zstd/decodecorpus_files/z000009 diff --git a/ruzstd/decodecorpus_files/z000009.zst b/zstd/decodecorpus_files/z000009.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000009.zst rename to zstd/decodecorpus_files/z000009.zst diff --git a/ruzstd/decodecorpus_files/z000010 b/zstd/decodecorpus_files/z000010 similarity index 100% rename from ruzstd/decodecorpus_files/z000010 rename to zstd/decodecorpus_files/z000010 diff --git a/ruzstd/decodecorpus_files/z000010.zst b/zstd/decodecorpus_files/z000010.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000010.zst rename to zstd/decodecorpus_files/z000010.zst diff --git a/ruzstd/decodecorpus_files/z000011 b/zstd/decodecorpus_files/z000011 similarity index 100% rename from ruzstd/decodecorpus_files/z000011 rename to zstd/decodecorpus_files/z000011 diff --git a/ruzstd/decodecorpus_files/z000011.zst b/zstd/decodecorpus_files/z000011.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000011.zst rename to zstd/decodecorpus_files/z000011.zst diff --git a/ruzstd/decodecorpus_files/z000012 b/zstd/decodecorpus_files/z000012 similarity index 100% rename from ruzstd/decodecorpus_files/z000012 rename to zstd/decodecorpus_files/z000012 diff --git a/ruzstd/decodecorpus_files/z000012.zst b/zstd/decodecorpus_files/z000012.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000012.zst rename to zstd/decodecorpus_files/z000012.zst diff --git a/ruzstd/decodecorpus_files/z000013 b/zstd/decodecorpus_files/z000013 similarity index 100% rename from ruzstd/decodecorpus_files/z000013 rename to zstd/decodecorpus_files/z000013 diff --git a/ruzstd/decodecorpus_files/z000013.zst b/zstd/decodecorpus_files/z000013.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000013.zst rename to zstd/decodecorpus_files/z000013.zst diff --git a/ruzstd/decodecorpus_files/z000014 b/zstd/decodecorpus_files/z000014 similarity index 100% rename from ruzstd/decodecorpus_files/z000014 rename to zstd/decodecorpus_files/z000014 diff --git a/ruzstd/decodecorpus_files/z000014.zst b/zstd/decodecorpus_files/z000014.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000014.zst rename to zstd/decodecorpus_files/z000014.zst diff --git a/ruzstd/decodecorpus_files/z000015 b/zstd/decodecorpus_files/z000015 similarity index 100% rename from ruzstd/decodecorpus_files/z000015 rename to zstd/decodecorpus_files/z000015 diff --git a/ruzstd/decodecorpus_files/z000015.zst b/zstd/decodecorpus_files/z000015.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000015.zst rename to zstd/decodecorpus_files/z000015.zst diff --git a/ruzstd/decodecorpus_files/z000016 b/zstd/decodecorpus_files/z000016 similarity index 100% rename from ruzstd/decodecorpus_files/z000016 rename to zstd/decodecorpus_files/z000016 diff --git a/ruzstd/decodecorpus_files/z000016.zst b/zstd/decodecorpus_files/z000016.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000016.zst rename to zstd/decodecorpus_files/z000016.zst diff --git a/ruzstd/decodecorpus_files/z000017 b/zstd/decodecorpus_files/z000017 similarity index 100% rename from ruzstd/decodecorpus_files/z000017 rename to zstd/decodecorpus_files/z000017 diff --git a/ruzstd/decodecorpus_files/z000017.zst b/zstd/decodecorpus_files/z000017.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000017.zst rename to zstd/decodecorpus_files/z000017.zst diff --git a/ruzstd/decodecorpus_files/z000018 b/zstd/decodecorpus_files/z000018 similarity index 100% rename from ruzstd/decodecorpus_files/z000018 rename to zstd/decodecorpus_files/z000018 diff --git a/ruzstd/decodecorpus_files/z000018.zst b/zstd/decodecorpus_files/z000018.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000018.zst rename to zstd/decodecorpus_files/z000018.zst diff --git a/ruzstd/decodecorpus_files/z000019 b/zstd/decodecorpus_files/z000019 similarity index 100% rename from ruzstd/decodecorpus_files/z000019 rename to zstd/decodecorpus_files/z000019 diff --git a/ruzstd/decodecorpus_files/z000019.zst b/zstd/decodecorpus_files/z000019.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000019.zst rename to zstd/decodecorpus_files/z000019.zst diff --git a/ruzstd/decodecorpus_files/z000020 b/zstd/decodecorpus_files/z000020 similarity index 100% rename from ruzstd/decodecorpus_files/z000020 rename to zstd/decodecorpus_files/z000020 diff --git a/ruzstd/decodecorpus_files/z000020.zst b/zstd/decodecorpus_files/z000020.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000020.zst rename to zstd/decodecorpus_files/z000020.zst diff --git a/ruzstd/decodecorpus_files/z000021 b/zstd/decodecorpus_files/z000021 similarity index 100% rename from ruzstd/decodecorpus_files/z000021 rename to zstd/decodecorpus_files/z000021 diff --git a/ruzstd/decodecorpus_files/z000021.zst b/zstd/decodecorpus_files/z000021.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000021.zst rename to zstd/decodecorpus_files/z000021.zst diff --git a/ruzstd/decodecorpus_files/z000022 b/zstd/decodecorpus_files/z000022 similarity index 100% rename from ruzstd/decodecorpus_files/z000022 rename to zstd/decodecorpus_files/z000022 diff --git a/ruzstd/decodecorpus_files/z000022.zst b/zstd/decodecorpus_files/z000022.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000022.zst rename to zstd/decodecorpus_files/z000022.zst diff --git a/ruzstd/decodecorpus_files/z000023 b/zstd/decodecorpus_files/z000023 similarity index 100% rename from ruzstd/decodecorpus_files/z000023 rename to zstd/decodecorpus_files/z000023 diff --git a/ruzstd/decodecorpus_files/z000023.zst b/zstd/decodecorpus_files/z000023.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000023.zst rename to zstd/decodecorpus_files/z000023.zst diff --git a/ruzstd/decodecorpus_files/z000024 b/zstd/decodecorpus_files/z000024 similarity index 100% rename from ruzstd/decodecorpus_files/z000024 rename to zstd/decodecorpus_files/z000024 diff --git a/ruzstd/decodecorpus_files/z000024.zst b/zstd/decodecorpus_files/z000024.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000024.zst rename to zstd/decodecorpus_files/z000024.zst diff --git a/ruzstd/decodecorpus_files/z000025 b/zstd/decodecorpus_files/z000025 similarity index 100% rename from ruzstd/decodecorpus_files/z000025 rename to zstd/decodecorpus_files/z000025 diff --git a/ruzstd/decodecorpus_files/z000025.zst b/zstd/decodecorpus_files/z000025.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000025.zst rename to zstd/decodecorpus_files/z000025.zst diff --git a/ruzstd/decodecorpus_files/z000026 b/zstd/decodecorpus_files/z000026 similarity index 100% rename from ruzstd/decodecorpus_files/z000026 rename to zstd/decodecorpus_files/z000026 diff --git a/ruzstd/decodecorpus_files/z000026.zst b/zstd/decodecorpus_files/z000026.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000026.zst rename to zstd/decodecorpus_files/z000026.zst diff --git a/ruzstd/decodecorpus_files/z000027 b/zstd/decodecorpus_files/z000027 similarity index 100% rename from ruzstd/decodecorpus_files/z000027 rename to zstd/decodecorpus_files/z000027 diff --git a/ruzstd/decodecorpus_files/z000027.zst b/zstd/decodecorpus_files/z000027.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000027.zst rename to zstd/decodecorpus_files/z000027.zst diff --git a/ruzstd/decodecorpus_files/z000028 b/zstd/decodecorpus_files/z000028 similarity index 100% rename from ruzstd/decodecorpus_files/z000028 rename to zstd/decodecorpus_files/z000028 diff --git a/ruzstd/decodecorpus_files/z000028.zst b/zstd/decodecorpus_files/z000028.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000028.zst rename to zstd/decodecorpus_files/z000028.zst diff --git a/ruzstd/decodecorpus_files/z000029 b/zstd/decodecorpus_files/z000029 similarity index 100% rename from ruzstd/decodecorpus_files/z000029 rename to zstd/decodecorpus_files/z000029 diff --git a/ruzstd/decodecorpus_files/z000029.zst b/zstd/decodecorpus_files/z000029.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000029.zst rename to zstd/decodecorpus_files/z000029.zst diff --git a/ruzstd/decodecorpus_files/z000030 b/zstd/decodecorpus_files/z000030 similarity index 100% rename from ruzstd/decodecorpus_files/z000030 rename to zstd/decodecorpus_files/z000030 diff --git a/ruzstd/decodecorpus_files/z000030.zst b/zstd/decodecorpus_files/z000030.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000030.zst rename to zstd/decodecorpus_files/z000030.zst diff --git a/ruzstd/decodecorpus_files/z000031 b/zstd/decodecorpus_files/z000031 similarity index 100% rename from ruzstd/decodecorpus_files/z000031 rename to zstd/decodecorpus_files/z000031 diff --git a/ruzstd/decodecorpus_files/z000031.zst b/zstd/decodecorpus_files/z000031.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000031.zst rename to zstd/decodecorpus_files/z000031.zst diff --git a/ruzstd/decodecorpus_files/z000032 b/zstd/decodecorpus_files/z000032 similarity index 100% rename from ruzstd/decodecorpus_files/z000032 rename to zstd/decodecorpus_files/z000032 diff --git a/ruzstd/decodecorpus_files/z000032.zst b/zstd/decodecorpus_files/z000032.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000032.zst rename to zstd/decodecorpus_files/z000032.zst diff --git a/ruzstd/decodecorpus_files/z000033 b/zstd/decodecorpus_files/z000033 similarity index 100% rename from ruzstd/decodecorpus_files/z000033 rename to zstd/decodecorpus_files/z000033 diff --git a/ruzstd/decodecorpus_files/z000033.zst b/zstd/decodecorpus_files/z000033.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000033.zst rename to zstd/decodecorpus_files/z000033.zst diff --git a/ruzstd/decodecorpus_files/z000034 b/zstd/decodecorpus_files/z000034 similarity index 100% rename from ruzstd/decodecorpus_files/z000034 rename to zstd/decodecorpus_files/z000034 diff --git a/ruzstd/decodecorpus_files/z000034.zst b/zstd/decodecorpus_files/z000034.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000034.zst rename to zstd/decodecorpus_files/z000034.zst diff --git a/ruzstd/decodecorpus_files/z000035 b/zstd/decodecorpus_files/z000035 similarity index 100% rename from ruzstd/decodecorpus_files/z000035 rename to zstd/decodecorpus_files/z000035 diff --git a/ruzstd/decodecorpus_files/z000035.zst b/zstd/decodecorpus_files/z000035.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000035.zst rename to zstd/decodecorpus_files/z000035.zst diff --git a/ruzstd/decodecorpus_files/z000036 b/zstd/decodecorpus_files/z000036 similarity index 100% rename from ruzstd/decodecorpus_files/z000036 rename to zstd/decodecorpus_files/z000036 diff --git a/ruzstd/decodecorpus_files/z000036.zst b/zstd/decodecorpus_files/z000036.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000036.zst rename to zstd/decodecorpus_files/z000036.zst diff --git a/ruzstd/decodecorpus_files/z000037 b/zstd/decodecorpus_files/z000037 similarity index 100% rename from ruzstd/decodecorpus_files/z000037 rename to zstd/decodecorpus_files/z000037 diff --git a/ruzstd/decodecorpus_files/z000037.zst b/zstd/decodecorpus_files/z000037.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000037.zst rename to zstd/decodecorpus_files/z000037.zst diff --git a/ruzstd/decodecorpus_files/z000038 b/zstd/decodecorpus_files/z000038 similarity index 100% rename from ruzstd/decodecorpus_files/z000038 rename to zstd/decodecorpus_files/z000038 diff --git a/ruzstd/decodecorpus_files/z000038.zst b/zstd/decodecorpus_files/z000038.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000038.zst rename to zstd/decodecorpus_files/z000038.zst diff --git a/ruzstd/decodecorpus_files/z000039 b/zstd/decodecorpus_files/z000039 similarity index 100% rename from ruzstd/decodecorpus_files/z000039 rename to zstd/decodecorpus_files/z000039 diff --git a/ruzstd/decodecorpus_files/z000039.zst b/zstd/decodecorpus_files/z000039.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000039.zst rename to zstd/decodecorpus_files/z000039.zst diff --git a/ruzstd/decodecorpus_files/z000040 b/zstd/decodecorpus_files/z000040 similarity index 100% rename from ruzstd/decodecorpus_files/z000040 rename to zstd/decodecorpus_files/z000040 diff --git a/ruzstd/decodecorpus_files/z000040.zst b/zstd/decodecorpus_files/z000040.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000040.zst rename to zstd/decodecorpus_files/z000040.zst diff --git a/ruzstd/decodecorpus_files/z000041 b/zstd/decodecorpus_files/z000041 similarity index 100% rename from ruzstd/decodecorpus_files/z000041 rename to zstd/decodecorpus_files/z000041 diff --git a/ruzstd/decodecorpus_files/z000041.zst b/zstd/decodecorpus_files/z000041.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000041.zst rename to zstd/decodecorpus_files/z000041.zst diff --git a/ruzstd/decodecorpus_files/z000042 b/zstd/decodecorpus_files/z000042 similarity index 100% rename from ruzstd/decodecorpus_files/z000042 rename to zstd/decodecorpus_files/z000042 diff --git a/ruzstd/decodecorpus_files/z000042.zst b/zstd/decodecorpus_files/z000042.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000042.zst rename to zstd/decodecorpus_files/z000042.zst diff --git a/ruzstd/decodecorpus_files/z000043 b/zstd/decodecorpus_files/z000043 similarity index 100% rename from ruzstd/decodecorpus_files/z000043 rename to zstd/decodecorpus_files/z000043 diff --git a/ruzstd/decodecorpus_files/z000043.zst b/zstd/decodecorpus_files/z000043.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000043.zst rename to zstd/decodecorpus_files/z000043.zst diff --git a/ruzstd/decodecorpus_files/z000044 b/zstd/decodecorpus_files/z000044 similarity index 100% rename from ruzstd/decodecorpus_files/z000044 rename to zstd/decodecorpus_files/z000044 diff --git a/ruzstd/decodecorpus_files/z000044.zst b/zstd/decodecorpus_files/z000044.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000044.zst rename to zstd/decodecorpus_files/z000044.zst diff --git a/ruzstd/decodecorpus_files/z000045 b/zstd/decodecorpus_files/z000045 similarity index 100% rename from ruzstd/decodecorpus_files/z000045 rename to zstd/decodecorpus_files/z000045 diff --git a/ruzstd/decodecorpus_files/z000045.zst b/zstd/decodecorpus_files/z000045.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000045.zst rename to zstd/decodecorpus_files/z000045.zst diff --git a/ruzstd/decodecorpus_files/z000046 b/zstd/decodecorpus_files/z000046 similarity index 100% rename from ruzstd/decodecorpus_files/z000046 rename to zstd/decodecorpus_files/z000046 diff --git a/ruzstd/decodecorpus_files/z000046.zst b/zstd/decodecorpus_files/z000046.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000046.zst rename to zstd/decodecorpus_files/z000046.zst diff --git a/ruzstd/decodecorpus_files/z000047 b/zstd/decodecorpus_files/z000047 similarity index 100% rename from ruzstd/decodecorpus_files/z000047 rename to zstd/decodecorpus_files/z000047 diff --git a/ruzstd/decodecorpus_files/z000047.zst b/zstd/decodecorpus_files/z000047.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000047.zst rename to zstd/decodecorpus_files/z000047.zst diff --git a/ruzstd/decodecorpus_files/z000048 b/zstd/decodecorpus_files/z000048 similarity index 100% rename from ruzstd/decodecorpus_files/z000048 rename to zstd/decodecorpus_files/z000048 diff --git a/ruzstd/decodecorpus_files/z000048.zst b/zstd/decodecorpus_files/z000048.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000048.zst rename to zstd/decodecorpus_files/z000048.zst diff --git a/ruzstd/decodecorpus_files/z000049 b/zstd/decodecorpus_files/z000049 similarity index 100% rename from ruzstd/decodecorpus_files/z000049 rename to zstd/decodecorpus_files/z000049 diff --git a/ruzstd/decodecorpus_files/z000049.zst b/zstd/decodecorpus_files/z000049.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000049.zst rename to zstd/decodecorpus_files/z000049.zst diff --git a/ruzstd/decodecorpus_files/z000050 b/zstd/decodecorpus_files/z000050 similarity index 100% rename from ruzstd/decodecorpus_files/z000050 rename to zstd/decodecorpus_files/z000050 diff --git a/ruzstd/decodecorpus_files/z000050.zst b/zstd/decodecorpus_files/z000050.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000050.zst rename to zstd/decodecorpus_files/z000050.zst diff --git a/ruzstd/decodecorpus_files/z000051 b/zstd/decodecorpus_files/z000051 similarity index 100% rename from ruzstd/decodecorpus_files/z000051 rename to zstd/decodecorpus_files/z000051 diff --git a/ruzstd/decodecorpus_files/z000051.zst b/zstd/decodecorpus_files/z000051.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000051.zst rename to zstd/decodecorpus_files/z000051.zst diff --git a/ruzstd/decodecorpus_files/z000052 b/zstd/decodecorpus_files/z000052 similarity index 100% rename from ruzstd/decodecorpus_files/z000052 rename to zstd/decodecorpus_files/z000052 diff --git a/ruzstd/decodecorpus_files/z000052.zst b/zstd/decodecorpus_files/z000052.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000052.zst rename to zstd/decodecorpus_files/z000052.zst diff --git a/ruzstd/decodecorpus_files/z000053 b/zstd/decodecorpus_files/z000053 similarity index 100% rename from ruzstd/decodecorpus_files/z000053 rename to zstd/decodecorpus_files/z000053 diff --git a/ruzstd/decodecorpus_files/z000053.zst b/zstd/decodecorpus_files/z000053.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000053.zst rename to zstd/decodecorpus_files/z000053.zst diff --git a/ruzstd/decodecorpus_files/z000054 b/zstd/decodecorpus_files/z000054 similarity index 100% rename from ruzstd/decodecorpus_files/z000054 rename to zstd/decodecorpus_files/z000054 diff --git a/ruzstd/decodecorpus_files/z000054.zst b/zstd/decodecorpus_files/z000054.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000054.zst rename to zstd/decodecorpus_files/z000054.zst diff --git a/ruzstd/decodecorpus_files/z000055 b/zstd/decodecorpus_files/z000055 similarity index 100% rename from ruzstd/decodecorpus_files/z000055 rename to zstd/decodecorpus_files/z000055 diff --git a/ruzstd/decodecorpus_files/z000055.zst b/zstd/decodecorpus_files/z000055.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000055.zst rename to zstd/decodecorpus_files/z000055.zst diff --git a/ruzstd/decodecorpus_files/z000056 b/zstd/decodecorpus_files/z000056 similarity index 100% rename from ruzstd/decodecorpus_files/z000056 rename to zstd/decodecorpus_files/z000056 diff --git a/ruzstd/decodecorpus_files/z000056.zst b/zstd/decodecorpus_files/z000056.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000056.zst rename to zstd/decodecorpus_files/z000056.zst diff --git a/ruzstd/decodecorpus_files/z000057 b/zstd/decodecorpus_files/z000057 similarity index 100% rename from ruzstd/decodecorpus_files/z000057 rename to zstd/decodecorpus_files/z000057 diff --git a/ruzstd/decodecorpus_files/z000057.zst b/zstd/decodecorpus_files/z000057.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000057.zst rename to zstd/decodecorpus_files/z000057.zst diff --git a/ruzstd/decodecorpus_files/z000058 b/zstd/decodecorpus_files/z000058 similarity index 100% rename from ruzstd/decodecorpus_files/z000058 rename to zstd/decodecorpus_files/z000058 diff --git a/ruzstd/decodecorpus_files/z000058.zst b/zstd/decodecorpus_files/z000058.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000058.zst rename to zstd/decodecorpus_files/z000058.zst diff --git a/ruzstd/decodecorpus_files/z000059 b/zstd/decodecorpus_files/z000059 similarity index 100% rename from ruzstd/decodecorpus_files/z000059 rename to zstd/decodecorpus_files/z000059 diff --git a/ruzstd/decodecorpus_files/z000059.zst b/zstd/decodecorpus_files/z000059.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000059.zst rename to zstd/decodecorpus_files/z000059.zst diff --git a/ruzstd/decodecorpus_files/z000060 b/zstd/decodecorpus_files/z000060 similarity index 100% rename from ruzstd/decodecorpus_files/z000060 rename to zstd/decodecorpus_files/z000060 diff --git a/ruzstd/decodecorpus_files/z000060.zst b/zstd/decodecorpus_files/z000060.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000060.zst rename to zstd/decodecorpus_files/z000060.zst diff --git a/ruzstd/decodecorpus_files/z000061 b/zstd/decodecorpus_files/z000061 similarity index 100% rename from ruzstd/decodecorpus_files/z000061 rename to zstd/decodecorpus_files/z000061 diff --git a/ruzstd/decodecorpus_files/z000061.zst b/zstd/decodecorpus_files/z000061.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000061.zst rename to zstd/decodecorpus_files/z000061.zst diff --git a/ruzstd/decodecorpus_files/z000062 b/zstd/decodecorpus_files/z000062 similarity index 100% rename from ruzstd/decodecorpus_files/z000062 rename to zstd/decodecorpus_files/z000062 diff --git a/ruzstd/decodecorpus_files/z000062.zst b/zstd/decodecorpus_files/z000062.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000062.zst rename to zstd/decodecorpus_files/z000062.zst diff --git a/ruzstd/decodecorpus_files/z000063 b/zstd/decodecorpus_files/z000063 similarity index 100% rename from ruzstd/decodecorpus_files/z000063 rename to zstd/decodecorpus_files/z000063 diff --git a/ruzstd/decodecorpus_files/z000063.zst b/zstd/decodecorpus_files/z000063.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000063.zst rename to zstd/decodecorpus_files/z000063.zst diff --git a/ruzstd/decodecorpus_files/z000064 b/zstd/decodecorpus_files/z000064 similarity index 100% rename from ruzstd/decodecorpus_files/z000064 rename to zstd/decodecorpus_files/z000064 diff --git a/ruzstd/decodecorpus_files/z000064.zst b/zstd/decodecorpus_files/z000064.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000064.zst rename to zstd/decodecorpus_files/z000064.zst diff --git a/ruzstd/decodecorpus_files/z000065 b/zstd/decodecorpus_files/z000065 similarity index 100% rename from ruzstd/decodecorpus_files/z000065 rename to zstd/decodecorpus_files/z000065 diff --git a/ruzstd/decodecorpus_files/z000065.zst b/zstd/decodecorpus_files/z000065.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000065.zst rename to zstd/decodecorpus_files/z000065.zst diff --git a/ruzstd/decodecorpus_files/z000066 b/zstd/decodecorpus_files/z000066 similarity index 100% rename from ruzstd/decodecorpus_files/z000066 rename to zstd/decodecorpus_files/z000066 diff --git a/ruzstd/decodecorpus_files/z000066.zst b/zstd/decodecorpus_files/z000066.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000066.zst rename to zstd/decodecorpus_files/z000066.zst diff --git a/ruzstd/decodecorpus_files/z000067 b/zstd/decodecorpus_files/z000067 similarity index 100% rename from ruzstd/decodecorpus_files/z000067 rename to zstd/decodecorpus_files/z000067 diff --git a/ruzstd/decodecorpus_files/z000067.zst b/zstd/decodecorpus_files/z000067.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000067.zst rename to zstd/decodecorpus_files/z000067.zst diff --git a/ruzstd/decodecorpus_files/z000068 b/zstd/decodecorpus_files/z000068 similarity index 100% rename from ruzstd/decodecorpus_files/z000068 rename to zstd/decodecorpus_files/z000068 diff --git a/ruzstd/decodecorpus_files/z000068.zst b/zstd/decodecorpus_files/z000068.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000068.zst rename to zstd/decodecorpus_files/z000068.zst diff --git a/ruzstd/decodecorpus_files/z000069 b/zstd/decodecorpus_files/z000069 similarity index 100% rename from ruzstd/decodecorpus_files/z000069 rename to zstd/decodecorpus_files/z000069 diff --git a/ruzstd/decodecorpus_files/z000069.zst b/zstd/decodecorpus_files/z000069.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000069.zst rename to zstd/decodecorpus_files/z000069.zst diff --git a/ruzstd/decodecorpus_files/z000070 b/zstd/decodecorpus_files/z000070 similarity index 100% rename from ruzstd/decodecorpus_files/z000070 rename to zstd/decodecorpus_files/z000070 diff --git a/ruzstd/decodecorpus_files/z000070.zst b/zstd/decodecorpus_files/z000070.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000070.zst rename to zstd/decodecorpus_files/z000070.zst diff --git a/ruzstd/decodecorpus_files/z000071 b/zstd/decodecorpus_files/z000071 similarity index 100% rename from ruzstd/decodecorpus_files/z000071 rename to zstd/decodecorpus_files/z000071 diff --git a/ruzstd/decodecorpus_files/z000071.zst b/zstd/decodecorpus_files/z000071.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000071.zst rename to zstd/decodecorpus_files/z000071.zst diff --git a/ruzstd/decodecorpus_files/z000072 b/zstd/decodecorpus_files/z000072 similarity index 100% rename from ruzstd/decodecorpus_files/z000072 rename to zstd/decodecorpus_files/z000072 diff --git a/ruzstd/decodecorpus_files/z000072.zst b/zstd/decodecorpus_files/z000072.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000072.zst rename to zstd/decodecorpus_files/z000072.zst diff --git a/ruzstd/decodecorpus_files/z000073 b/zstd/decodecorpus_files/z000073 similarity index 100% rename from ruzstd/decodecorpus_files/z000073 rename to zstd/decodecorpus_files/z000073 diff --git a/ruzstd/decodecorpus_files/z000073.zst b/zstd/decodecorpus_files/z000073.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000073.zst rename to zstd/decodecorpus_files/z000073.zst diff --git a/ruzstd/decodecorpus_files/z000074 b/zstd/decodecorpus_files/z000074 similarity index 100% rename from ruzstd/decodecorpus_files/z000074 rename to zstd/decodecorpus_files/z000074 diff --git a/ruzstd/decodecorpus_files/z000074.zst b/zstd/decodecorpus_files/z000074.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000074.zst rename to zstd/decodecorpus_files/z000074.zst diff --git a/ruzstd/decodecorpus_files/z000075 b/zstd/decodecorpus_files/z000075 similarity index 100% rename from ruzstd/decodecorpus_files/z000075 rename to zstd/decodecorpus_files/z000075 diff --git a/ruzstd/decodecorpus_files/z000075.zst b/zstd/decodecorpus_files/z000075.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000075.zst rename to zstd/decodecorpus_files/z000075.zst diff --git a/ruzstd/decodecorpus_files/z000076 b/zstd/decodecorpus_files/z000076 similarity index 100% rename from ruzstd/decodecorpus_files/z000076 rename to zstd/decodecorpus_files/z000076 diff --git a/ruzstd/decodecorpus_files/z000076.zst b/zstd/decodecorpus_files/z000076.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000076.zst rename to zstd/decodecorpus_files/z000076.zst diff --git a/ruzstd/decodecorpus_files/z000077 b/zstd/decodecorpus_files/z000077 similarity index 100% rename from ruzstd/decodecorpus_files/z000077 rename to zstd/decodecorpus_files/z000077 diff --git a/ruzstd/decodecorpus_files/z000077.zst b/zstd/decodecorpus_files/z000077.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000077.zst rename to zstd/decodecorpus_files/z000077.zst diff --git a/ruzstd/decodecorpus_files/z000078 b/zstd/decodecorpus_files/z000078 similarity index 100% rename from ruzstd/decodecorpus_files/z000078 rename to zstd/decodecorpus_files/z000078 diff --git a/ruzstd/decodecorpus_files/z000078.zst b/zstd/decodecorpus_files/z000078.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000078.zst rename to zstd/decodecorpus_files/z000078.zst diff --git a/ruzstd/decodecorpus_files/z000079 b/zstd/decodecorpus_files/z000079 similarity index 100% rename from ruzstd/decodecorpus_files/z000079 rename to zstd/decodecorpus_files/z000079 diff --git a/ruzstd/decodecorpus_files/z000079.zst b/zstd/decodecorpus_files/z000079.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000079.zst rename to zstd/decodecorpus_files/z000079.zst diff --git a/ruzstd/decodecorpus_files/z000080 b/zstd/decodecorpus_files/z000080 similarity index 100% rename from ruzstd/decodecorpus_files/z000080 rename to zstd/decodecorpus_files/z000080 diff --git a/ruzstd/decodecorpus_files/z000080.zst b/zstd/decodecorpus_files/z000080.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000080.zst rename to zstd/decodecorpus_files/z000080.zst diff --git a/ruzstd/decodecorpus_files/z000081 b/zstd/decodecorpus_files/z000081 similarity index 100% rename from ruzstd/decodecorpus_files/z000081 rename to zstd/decodecorpus_files/z000081 diff --git a/ruzstd/decodecorpus_files/z000081.zst b/zstd/decodecorpus_files/z000081.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000081.zst rename to zstd/decodecorpus_files/z000081.zst diff --git a/ruzstd/decodecorpus_files/z000082 b/zstd/decodecorpus_files/z000082 similarity index 100% rename from ruzstd/decodecorpus_files/z000082 rename to zstd/decodecorpus_files/z000082 diff --git a/ruzstd/decodecorpus_files/z000082.zst b/zstd/decodecorpus_files/z000082.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000082.zst rename to zstd/decodecorpus_files/z000082.zst diff --git a/ruzstd/decodecorpus_files/z000083 b/zstd/decodecorpus_files/z000083 similarity index 100% rename from ruzstd/decodecorpus_files/z000083 rename to zstd/decodecorpus_files/z000083 diff --git a/ruzstd/decodecorpus_files/z000083.zst b/zstd/decodecorpus_files/z000083.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000083.zst rename to zstd/decodecorpus_files/z000083.zst diff --git a/ruzstd/decodecorpus_files/z000084 b/zstd/decodecorpus_files/z000084 similarity index 100% rename from ruzstd/decodecorpus_files/z000084 rename to zstd/decodecorpus_files/z000084 diff --git a/ruzstd/decodecorpus_files/z000084.zst b/zstd/decodecorpus_files/z000084.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000084.zst rename to zstd/decodecorpus_files/z000084.zst diff --git a/ruzstd/decodecorpus_files/z000085 b/zstd/decodecorpus_files/z000085 similarity index 100% rename from ruzstd/decodecorpus_files/z000085 rename to zstd/decodecorpus_files/z000085 diff --git a/ruzstd/decodecorpus_files/z000085.zst b/zstd/decodecorpus_files/z000085.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000085.zst rename to zstd/decodecorpus_files/z000085.zst diff --git a/ruzstd/decodecorpus_files/z000086 b/zstd/decodecorpus_files/z000086 similarity index 100% rename from ruzstd/decodecorpus_files/z000086 rename to zstd/decodecorpus_files/z000086 diff --git a/ruzstd/decodecorpus_files/z000086.zst b/zstd/decodecorpus_files/z000086.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000086.zst rename to zstd/decodecorpus_files/z000086.zst diff --git a/ruzstd/decodecorpus_files/z000087 b/zstd/decodecorpus_files/z000087 similarity index 100% rename from ruzstd/decodecorpus_files/z000087 rename to zstd/decodecorpus_files/z000087 diff --git a/ruzstd/decodecorpus_files/z000087.zst b/zstd/decodecorpus_files/z000087.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000087.zst rename to zstd/decodecorpus_files/z000087.zst diff --git a/ruzstd/decodecorpus_files/z000088 b/zstd/decodecorpus_files/z000088 similarity index 100% rename from ruzstd/decodecorpus_files/z000088 rename to zstd/decodecorpus_files/z000088 diff --git a/ruzstd/decodecorpus_files/z000088.zst b/zstd/decodecorpus_files/z000088.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000088.zst rename to zstd/decodecorpus_files/z000088.zst diff --git a/ruzstd/decodecorpus_files/z000089 b/zstd/decodecorpus_files/z000089 similarity index 100% rename from ruzstd/decodecorpus_files/z000089 rename to zstd/decodecorpus_files/z000089 diff --git a/ruzstd/decodecorpus_files/z000089.zst b/zstd/decodecorpus_files/z000089.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000089.zst rename to zstd/decodecorpus_files/z000089.zst diff --git a/ruzstd/decodecorpus_files/z000090 b/zstd/decodecorpus_files/z000090 similarity index 100% rename from ruzstd/decodecorpus_files/z000090 rename to zstd/decodecorpus_files/z000090 diff --git a/ruzstd/decodecorpus_files/z000090.zst b/zstd/decodecorpus_files/z000090.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000090.zst rename to zstd/decodecorpus_files/z000090.zst diff --git a/ruzstd/decodecorpus_files/z000091 b/zstd/decodecorpus_files/z000091 similarity index 100% rename from ruzstd/decodecorpus_files/z000091 rename to zstd/decodecorpus_files/z000091 diff --git a/ruzstd/decodecorpus_files/z000091.zst b/zstd/decodecorpus_files/z000091.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000091.zst rename to zstd/decodecorpus_files/z000091.zst diff --git a/ruzstd/decodecorpus_files/z000092 b/zstd/decodecorpus_files/z000092 similarity index 100% rename from ruzstd/decodecorpus_files/z000092 rename to zstd/decodecorpus_files/z000092 diff --git a/ruzstd/decodecorpus_files/z000092.zst b/zstd/decodecorpus_files/z000092.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000092.zst rename to zstd/decodecorpus_files/z000092.zst diff --git a/ruzstd/decodecorpus_files/z000093 b/zstd/decodecorpus_files/z000093 similarity index 100% rename from ruzstd/decodecorpus_files/z000093 rename to zstd/decodecorpus_files/z000093 diff --git a/ruzstd/decodecorpus_files/z000093.zst b/zstd/decodecorpus_files/z000093.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000093.zst rename to zstd/decodecorpus_files/z000093.zst diff --git a/ruzstd/decodecorpus_files/z000094 b/zstd/decodecorpus_files/z000094 similarity index 100% rename from ruzstd/decodecorpus_files/z000094 rename to zstd/decodecorpus_files/z000094 diff --git a/ruzstd/decodecorpus_files/z000094.zst b/zstd/decodecorpus_files/z000094.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000094.zst rename to zstd/decodecorpus_files/z000094.zst diff --git a/ruzstd/decodecorpus_files/z000095 b/zstd/decodecorpus_files/z000095 similarity index 100% rename from ruzstd/decodecorpus_files/z000095 rename to zstd/decodecorpus_files/z000095 diff --git a/ruzstd/decodecorpus_files/z000095.zst b/zstd/decodecorpus_files/z000095.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000095.zst rename to zstd/decodecorpus_files/z000095.zst diff --git a/ruzstd/decodecorpus_files/z000096 b/zstd/decodecorpus_files/z000096 similarity index 100% rename from ruzstd/decodecorpus_files/z000096 rename to zstd/decodecorpus_files/z000096 diff --git a/ruzstd/decodecorpus_files/z000096.zst b/zstd/decodecorpus_files/z000096.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000096.zst rename to zstd/decodecorpus_files/z000096.zst diff --git a/ruzstd/decodecorpus_files/z000097 b/zstd/decodecorpus_files/z000097 similarity index 100% rename from ruzstd/decodecorpus_files/z000097 rename to zstd/decodecorpus_files/z000097 diff --git a/ruzstd/decodecorpus_files/z000097.zst b/zstd/decodecorpus_files/z000097.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000097.zst rename to zstd/decodecorpus_files/z000097.zst diff --git a/ruzstd/decodecorpus_files/z000098 b/zstd/decodecorpus_files/z000098 similarity index 100% rename from ruzstd/decodecorpus_files/z000098 rename to zstd/decodecorpus_files/z000098 diff --git a/ruzstd/decodecorpus_files/z000098.zst b/zstd/decodecorpus_files/z000098.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000098.zst rename to zstd/decodecorpus_files/z000098.zst diff --git a/ruzstd/decodecorpus_files/z000099 b/zstd/decodecorpus_files/z000099 similarity index 100% rename from ruzstd/decodecorpus_files/z000099 rename to zstd/decodecorpus_files/z000099 diff --git a/ruzstd/decodecorpus_files/z000099.zst b/zstd/decodecorpus_files/z000099.zst similarity index 100% rename from ruzstd/decodecorpus_files/z000099.zst rename to zstd/decodecorpus_files/z000099.zst diff --git a/ruzstd/dict_tests/dictionary b/zstd/dict_tests/dictionary similarity index 100% rename from ruzstd/dict_tests/dictionary rename to zstd/dict_tests/dictionary diff --git a/ruzstd/dict_tests/files/ModemManager.service b/zstd/dict_tests/files/ModemManager.service similarity index 100% rename from ruzstd/dict_tests/files/ModemManager.service rename to zstd/dict_tests/files/ModemManager.service diff --git a/ruzstd/dict_tests/files/ModemManager.service.zst b/zstd/dict_tests/files/ModemManager.service.zst similarity index 100% rename from ruzstd/dict_tests/files/ModemManager.service.zst rename to zstd/dict_tests/files/ModemManager.service.zst diff --git a/ruzstd/dict_tests/files/NetworkManager-dispatcher.service b/zstd/dict_tests/files/NetworkManager-dispatcher.service similarity index 100% rename from ruzstd/dict_tests/files/NetworkManager-dispatcher.service rename to zstd/dict_tests/files/NetworkManager-dispatcher.service diff --git a/ruzstd/dict_tests/files/NetworkManager-dispatcher.service.zst b/zstd/dict_tests/files/NetworkManager-dispatcher.service.zst similarity index 100% rename from ruzstd/dict_tests/files/NetworkManager-dispatcher.service.zst rename to zstd/dict_tests/files/NetworkManager-dispatcher.service.zst diff --git a/ruzstd/dict_tests/files/NetworkManager-wait-online.service b/zstd/dict_tests/files/NetworkManager-wait-online.service similarity index 100% rename from ruzstd/dict_tests/files/NetworkManager-wait-online.service rename to zstd/dict_tests/files/NetworkManager-wait-online.service diff --git a/ruzstd/dict_tests/files/NetworkManager-wait-online.service.zst b/zstd/dict_tests/files/NetworkManager-wait-online.service.zst similarity index 100% rename from ruzstd/dict_tests/files/NetworkManager-wait-online.service.zst rename to zstd/dict_tests/files/NetworkManager-wait-online.service.zst diff --git a/ruzstd/dict_tests/files/NetworkManager.service b/zstd/dict_tests/files/NetworkManager.service similarity index 100% rename from ruzstd/dict_tests/files/NetworkManager.service rename to zstd/dict_tests/files/NetworkManager.service diff --git a/ruzstd/dict_tests/files/NetworkManager.service.zst b/zstd/dict_tests/files/NetworkManager.service.zst similarity index 100% rename from ruzstd/dict_tests/files/NetworkManager.service.zst rename to zstd/dict_tests/files/NetworkManager.service.zst diff --git a/ruzstd/dict_tests/files/auditd.service b/zstd/dict_tests/files/auditd.service similarity index 100% rename from ruzstd/dict_tests/files/auditd.service rename to zstd/dict_tests/files/auditd.service diff --git a/ruzstd/dict_tests/files/auditd.service.zst b/zstd/dict_tests/files/auditd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/auditd.service.zst rename to zstd/dict_tests/files/auditd.service.zst diff --git a/ruzstd/dict_tests/files/autovt@.service b/zstd/dict_tests/files/autovt@.service similarity index 100% rename from ruzstd/dict_tests/files/autovt@.service rename to zstd/dict_tests/files/autovt@.service diff --git a/ruzstd/dict_tests/files/autovt@.service.zst b/zstd/dict_tests/files/autovt@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/autovt@.service.zst rename to zstd/dict_tests/files/autovt@.service.zst diff --git a/ruzstd/dict_tests/files/avahi-daemon.service b/zstd/dict_tests/files/avahi-daemon.service similarity index 100% rename from ruzstd/dict_tests/files/avahi-daemon.service rename to zstd/dict_tests/files/avahi-daemon.service diff --git a/ruzstd/dict_tests/files/avahi-daemon.service.zst b/zstd/dict_tests/files/avahi-daemon.service.zst similarity index 100% rename from ruzstd/dict_tests/files/avahi-daemon.service.zst rename to zstd/dict_tests/files/avahi-daemon.service.zst diff --git a/ruzstd/dict_tests/files/avahi-dnsconfd.service b/zstd/dict_tests/files/avahi-dnsconfd.service similarity index 100% rename from ruzstd/dict_tests/files/avahi-dnsconfd.service rename to zstd/dict_tests/files/avahi-dnsconfd.service diff --git a/ruzstd/dict_tests/files/avahi-dnsconfd.service.zst b/zstd/dict_tests/files/avahi-dnsconfd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/avahi-dnsconfd.service.zst rename to zstd/dict_tests/files/avahi-dnsconfd.service.zst diff --git a/ruzstd/dict_tests/files/blk-availability.service b/zstd/dict_tests/files/blk-availability.service similarity index 100% rename from ruzstd/dict_tests/files/blk-availability.service rename to zstd/dict_tests/files/blk-availability.service diff --git a/ruzstd/dict_tests/files/blk-availability.service.zst b/zstd/dict_tests/files/blk-availability.service.zst similarity index 100% rename from ruzstd/dict_tests/files/blk-availability.service.zst rename to zstd/dict_tests/files/blk-availability.service.zst diff --git a/ruzstd/dict_tests/files/btrfs-scrub@.service b/zstd/dict_tests/files/btrfs-scrub@.service similarity index 100% rename from ruzstd/dict_tests/files/btrfs-scrub@.service rename to zstd/dict_tests/files/btrfs-scrub@.service diff --git a/ruzstd/dict_tests/files/btrfs-scrub@.service.zst b/zstd/dict_tests/files/btrfs-scrub@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/btrfs-scrub@.service.zst rename to zstd/dict_tests/files/btrfs-scrub@.service.zst diff --git a/ruzstd/dict_tests/files/canberra-system-bootup.service b/zstd/dict_tests/files/canberra-system-bootup.service similarity index 100% rename from ruzstd/dict_tests/files/canberra-system-bootup.service rename to zstd/dict_tests/files/canberra-system-bootup.service diff --git a/ruzstd/dict_tests/files/canberra-system-bootup.service.zst b/zstd/dict_tests/files/canberra-system-bootup.service.zst similarity index 100% rename from ruzstd/dict_tests/files/canberra-system-bootup.service.zst rename to zstd/dict_tests/files/canberra-system-bootup.service.zst diff --git a/ruzstd/dict_tests/files/canberra-system-shutdown-reboot.service b/zstd/dict_tests/files/canberra-system-shutdown-reboot.service similarity index 100% rename from ruzstd/dict_tests/files/canberra-system-shutdown-reboot.service rename to zstd/dict_tests/files/canberra-system-shutdown-reboot.service diff --git a/ruzstd/dict_tests/files/canberra-system-shutdown-reboot.service.zst b/zstd/dict_tests/files/canberra-system-shutdown-reboot.service.zst similarity index 100% rename from ruzstd/dict_tests/files/canberra-system-shutdown-reboot.service.zst rename to zstd/dict_tests/files/canberra-system-shutdown-reboot.service.zst diff --git a/ruzstd/dict_tests/files/canberra-system-shutdown.service b/zstd/dict_tests/files/canberra-system-shutdown.service similarity index 100% rename from ruzstd/dict_tests/files/canberra-system-shutdown.service rename to zstd/dict_tests/files/canberra-system-shutdown.service diff --git a/ruzstd/dict_tests/files/canberra-system-shutdown.service.zst b/zstd/dict_tests/files/canberra-system-shutdown.service.zst similarity index 100% rename from ruzstd/dict_tests/files/canberra-system-shutdown.service.zst rename to zstd/dict_tests/files/canberra-system-shutdown.service.zst diff --git a/ruzstd/dict_tests/files/clean-mount-point@.service b/zstd/dict_tests/files/clean-mount-point@.service similarity index 100% rename from ruzstd/dict_tests/files/clean-mount-point@.service rename to zstd/dict_tests/files/clean-mount-point@.service diff --git a/ruzstd/dict_tests/files/clean-mount-point@.service.zst b/zstd/dict_tests/files/clean-mount-point@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/clean-mount-point@.service.zst rename to zstd/dict_tests/files/clean-mount-point@.service.zst diff --git a/ruzstd/dict_tests/files/colord.service b/zstd/dict_tests/files/colord.service similarity index 100% rename from ruzstd/dict_tests/files/colord.service rename to zstd/dict_tests/files/colord.service diff --git a/ruzstd/dict_tests/files/colord.service.zst b/zstd/dict_tests/files/colord.service.zst similarity index 100% rename from ruzstd/dict_tests/files/colord.service.zst rename to zstd/dict_tests/files/colord.service.zst diff --git a/ruzstd/dict_tests/files/console-getty.service b/zstd/dict_tests/files/console-getty.service similarity index 100% rename from ruzstd/dict_tests/files/console-getty.service rename to zstd/dict_tests/files/console-getty.service diff --git a/ruzstd/dict_tests/files/console-getty.service.zst b/zstd/dict_tests/files/console-getty.service.zst similarity index 100% rename from ruzstd/dict_tests/files/console-getty.service.zst rename to zstd/dict_tests/files/console-getty.service.zst diff --git a/ruzstd/dict_tests/files/container-getty@.service b/zstd/dict_tests/files/container-getty@.service similarity index 100% rename from ruzstd/dict_tests/files/container-getty@.service rename to zstd/dict_tests/files/container-getty@.service diff --git a/ruzstd/dict_tests/files/container-getty@.service.zst b/zstd/dict_tests/files/container-getty@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/container-getty@.service.zst rename to zstd/dict_tests/files/container-getty@.service.zst diff --git a/ruzstd/dict_tests/files/cpupower.service b/zstd/dict_tests/files/cpupower.service similarity index 100% rename from ruzstd/dict_tests/files/cpupower.service rename to zstd/dict_tests/files/cpupower.service diff --git a/ruzstd/dict_tests/files/cpupower.service.zst b/zstd/dict_tests/files/cpupower.service.zst similarity index 100% rename from ruzstd/dict_tests/files/cpupower.service.zst rename to zstd/dict_tests/files/cpupower.service.zst diff --git a/ruzstd/dict_tests/files/dbus-org.freedesktop.hostname1.service b/zstd/dict_tests/files/dbus-org.freedesktop.hostname1.service similarity index 100% rename from ruzstd/dict_tests/files/dbus-org.freedesktop.hostname1.service rename to zstd/dict_tests/files/dbus-org.freedesktop.hostname1.service diff --git a/ruzstd/dict_tests/files/dbus-org.freedesktop.hostname1.service.zst b/zstd/dict_tests/files/dbus-org.freedesktop.hostname1.service.zst similarity index 100% rename from ruzstd/dict_tests/files/dbus-org.freedesktop.hostname1.service.zst rename to zstd/dict_tests/files/dbus-org.freedesktop.hostname1.service.zst diff --git a/ruzstd/dict_tests/files/dbus-org.freedesktop.import1.service b/zstd/dict_tests/files/dbus-org.freedesktop.import1.service similarity index 100% rename from ruzstd/dict_tests/files/dbus-org.freedesktop.import1.service rename to zstd/dict_tests/files/dbus-org.freedesktop.import1.service diff --git a/ruzstd/dict_tests/files/dbus-org.freedesktop.import1.service.zst b/zstd/dict_tests/files/dbus-org.freedesktop.import1.service.zst similarity index 100% rename from ruzstd/dict_tests/files/dbus-org.freedesktop.import1.service.zst rename to zstd/dict_tests/files/dbus-org.freedesktop.import1.service.zst diff --git a/ruzstd/dict_tests/files/dbus-org.freedesktop.locale1.service b/zstd/dict_tests/files/dbus-org.freedesktop.locale1.service similarity index 100% rename from ruzstd/dict_tests/files/dbus-org.freedesktop.locale1.service rename to zstd/dict_tests/files/dbus-org.freedesktop.locale1.service diff --git a/ruzstd/dict_tests/files/dbus-org.freedesktop.locale1.service.zst b/zstd/dict_tests/files/dbus-org.freedesktop.locale1.service.zst similarity index 100% rename from ruzstd/dict_tests/files/dbus-org.freedesktop.locale1.service.zst rename to zstd/dict_tests/files/dbus-org.freedesktop.locale1.service.zst diff --git a/ruzstd/dict_tests/files/dbus-org.freedesktop.login1.service b/zstd/dict_tests/files/dbus-org.freedesktop.login1.service similarity index 100% rename from ruzstd/dict_tests/files/dbus-org.freedesktop.login1.service rename to zstd/dict_tests/files/dbus-org.freedesktop.login1.service diff --git a/ruzstd/dict_tests/files/dbus-org.freedesktop.login1.service.zst b/zstd/dict_tests/files/dbus-org.freedesktop.login1.service.zst similarity index 100% rename from ruzstd/dict_tests/files/dbus-org.freedesktop.login1.service.zst rename to zstd/dict_tests/files/dbus-org.freedesktop.login1.service.zst diff --git a/ruzstd/dict_tests/files/dbus-org.freedesktop.machine1.service b/zstd/dict_tests/files/dbus-org.freedesktop.machine1.service similarity index 100% rename from ruzstd/dict_tests/files/dbus-org.freedesktop.machine1.service rename to zstd/dict_tests/files/dbus-org.freedesktop.machine1.service diff --git a/ruzstd/dict_tests/files/dbus-org.freedesktop.machine1.service.zst b/zstd/dict_tests/files/dbus-org.freedesktop.machine1.service.zst similarity index 100% rename from ruzstd/dict_tests/files/dbus-org.freedesktop.machine1.service.zst rename to zstd/dict_tests/files/dbus-org.freedesktop.machine1.service.zst diff --git a/ruzstd/dict_tests/files/dbus-org.freedesktop.portable1.service b/zstd/dict_tests/files/dbus-org.freedesktop.portable1.service similarity index 100% rename from ruzstd/dict_tests/files/dbus-org.freedesktop.portable1.service rename to zstd/dict_tests/files/dbus-org.freedesktop.portable1.service diff --git a/ruzstd/dict_tests/files/dbus-org.freedesktop.portable1.service.zst b/zstd/dict_tests/files/dbus-org.freedesktop.portable1.service.zst similarity index 100% rename from ruzstd/dict_tests/files/dbus-org.freedesktop.portable1.service.zst rename to zstd/dict_tests/files/dbus-org.freedesktop.portable1.service.zst diff --git a/ruzstd/dict_tests/files/dbus-org.freedesktop.timedate1.service b/zstd/dict_tests/files/dbus-org.freedesktop.timedate1.service similarity index 100% rename from ruzstd/dict_tests/files/dbus-org.freedesktop.timedate1.service rename to zstd/dict_tests/files/dbus-org.freedesktop.timedate1.service diff --git a/ruzstd/dict_tests/files/dbus-org.freedesktop.timedate1.service.zst b/zstd/dict_tests/files/dbus-org.freedesktop.timedate1.service.zst similarity index 100% rename from ruzstd/dict_tests/files/dbus-org.freedesktop.timedate1.service.zst rename to zstd/dict_tests/files/dbus-org.freedesktop.timedate1.service.zst diff --git a/ruzstd/dict_tests/files/dbus.service b/zstd/dict_tests/files/dbus.service similarity index 100% rename from ruzstd/dict_tests/files/dbus.service rename to zstd/dict_tests/files/dbus.service diff --git a/ruzstd/dict_tests/files/dbus.service.zst b/zstd/dict_tests/files/dbus.service.zst similarity index 100% rename from ruzstd/dict_tests/files/dbus.service.zst rename to zstd/dict_tests/files/dbus.service.zst diff --git a/ruzstd/dict_tests/files/debug-shell.service b/zstd/dict_tests/files/debug-shell.service similarity index 100% rename from ruzstd/dict_tests/files/debug-shell.service rename to zstd/dict_tests/files/debug-shell.service diff --git a/ruzstd/dict_tests/files/debug-shell.service.zst b/zstd/dict_tests/files/debug-shell.service.zst similarity index 100% rename from ruzstd/dict_tests/files/debug-shell.service.zst rename to zstd/dict_tests/files/debug-shell.service.zst diff --git a/ruzstd/dict_tests/files/dhcpcd.service b/zstd/dict_tests/files/dhcpcd.service similarity index 100% rename from ruzstd/dict_tests/files/dhcpcd.service rename to zstd/dict_tests/files/dhcpcd.service diff --git a/ruzstd/dict_tests/files/dhcpcd.service.zst b/zstd/dict_tests/files/dhcpcd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/dhcpcd.service.zst rename to zstd/dict_tests/files/dhcpcd.service.zst diff --git a/ruzstd/dict_tests/files/dhcpcd@.service b/zstd/dict_tests/files/dhcpcd@.service similarity index 100% rename from ruzstd/dict_tests/files/dhcpcd@.service rename to zstd/dict_tests/files/dhcpcd@.service diff --git a/ruzstd/dict_tests/files/dhcpcd@.service.zst b/zstd/dict_tests/files/dhcpcd@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/dhcpcd@.service.zst rename to zstd/dict_tests/files/dhcpcd@.service.zst diff --git a/ruzstd/dict_tests/files/dm-event.service b/zstd/dict_tests/files/dm-event.service similarity index 100% rename from ruzstd/dict_tests/files/dm-event.service rename to zstd/dict_tests/files/dm-event.service diff --git a/ruzstd/dict_tests/files/dm-event.service.zst b/zstd/dict_tests/files/dm-event.service.zst similarity index 100% rename from ruzstd/dict_tests/files/dm-event.service.zst rename to zstd/dict_tests/files/dm-event.service.zst diff --git a/ruzstd/dict_tests/files/dmraid.service b/zstd/dict_tests/files/dmraid.service similarity index 100% rename from ruzstd/dict_tests/files/dmraid.service rename to zstd/dict_tests/files/dmraid.service diff --git a/ruzstd/dict_tests/files/dmraid.service.zst b/zstd/dict_tests/files/dmraid.service.zst similarity index 100% rename from ruzstd/dict_tests/files/dmraid.service.zst rename to zstd/dict_tests/files/dmraid.service.zst diff --git a/ruzstd/dict_tests/files/dnsmasq.service b/zstd/dict_tests/files/dnsmasq.service similarity index 100% rename from ruzstd/dict_tests/files/dnsmasq.service rename to zstd/dict_tests/files/dnsmasq.service diff --git a/ruzstd/dict_tests/files/dnsmasq.service.zst b/zstd/dict_tests/files/dnsmasq.service.zst similarity index 100% rename from ruzstd/dict_tests/files/dnsmasq.service.zst rename to zstd/dict_tests/files/dnsmasq.service.zst diff --git a/ruzstd/dict_tests/files/e2scrub@.service b/zstd/dict_tests/files/e2scrub@.service similarity index 100% rename from ruzstd/dict_tests/files/e2scrub@.service rename to zstd/dict_tests/files/e2scrub@.service diff --git a/ruzstd/dict_tests/files/e2scrub@.service.zst b/zstd/dict_tests/files/e2scrub@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/e2scrub@.service.zst rename to zstd/dict_tests/files/e2scrub@.service.zst diff --git a/ruzstd/dict_tests/files/e2scrub_all.service b/zstd/dict_tests/files/e2scrub_all.service similarity index 100% rename from ruzstd/dict_tests/files/e2scrub_all.service rename to zstd/dict_tests/files/e2scrub_all.service diff --git a/ruzstd/dict_tests/files/e2scrub_all.service.zst b/zstd/dict_tests/files/e2scrub_all.service.zst similarity index 100% rename from ruzstd/dict_tests/files/e2scrub_all.service.zst rename to zstd/dict_tests/files/e2scrub_all.service.zst diff --git a/ruzstd/dict_tests/files/e2scrub_fail@.service b/zstd/dict_tests/files/e2scrub_fail@.service similarity index 100% rename from ruzstd/dict_tests/files/e2scrub_fail@.service rename to zstd/dict_tests/files/e2scrub_fail@.service diff --git a/ruzstd/dict_tests/files/e2scrub_fail@.service.zst b/zstd/dict_tests/files/e2scrub_fail@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/e2scrub_fail@.service.zst rename to zstd/dict_tests/files/e2scrub_fail@.service.zst diff --git a/ruzstd/dict_tests/files/e2scrub_reap.service b/zstd/dict_tests/files/e2scrub_reap.service similarity index 100% rename from ruzstd/dict_tests/files/e2scrub_reap.service rename to zstd/dict_tests/files/e2scrub_reap.service diff --git a/ruzstd/dict_tests/files/e2scrub_reap.service.zst b/zstd/dict_tests/files/e2scrub_reap.service.zst similarity index 100% rename from ruzstd/dict_tests/files/e2scrub_reap.service.zst rename to zstd/dict_tests/files/e2scrub_reap.service.zst diff --git a/ruzstd/dict_tests/files/ebtables.service b/zstd/dict_tests/files/ebtables.service similarity index 100% rename from ruzstd/dict_tests/files/ebtables.service rename to zstd/dict_tests/files/ebtables.service diff --git a/ruzstd/dict_tests/files/ebtables.service.zst b/zstd/dict_tests/files/ebtables.service.zst similarity index 100% rename from ruzstd/dict_tests/files/ebtables.service.zst rename to zstd/dict_tests/files/ebtables.service.zst diff --git a/ruzstd/dict_tests/files/emergency.service b/zstd/dict_tests/files/emergency.service similarity index 100% rename from ruzstd/dict_tests/files/emergency.service rename to zstd/dict_tests/files/emergency.service diff --git a/ruzstd/dict_tests/files/emergency.service.zst b/zstd/dict_tests/files/emergency.service.zst similarity index 100% rename from ruzstd/dict_tests/files/emergency.service.zst rename to zstd/dict_tests/files/emergency.service.zst diff --git a/ruzstd/dict_tests/files/fancontrol.service b/zstd/dict_tests/files/fancontrol.service similarity index 100% rename from ruzstd/dict_tests/files/fancontrol.service rename to zstd/dict_tests/files/fancontrol.service diff --git a/ruzstd/dict_tests/files/fancontrol.service.zst b/zstd/dict_tests/files/fancontrol.service.zst similarity index 100% rename from ruzstd/dict_tests/files/fancontrol.service.zst rename to zstd/dict_tests/files/fancontrol.service.zst diff --git a/ruzstd/dict_tests/files/firewalld.service b/zstd/dict_tests/files/firewalld.service similarity index 100% rename from ruzstd/dict_tests/files/firewalld.service rename to zstd/dict_tests/files/firewalld.service diff --git a/ruzstd/dict_tests/files/firewalld.service.zst b/zstd/dict_tests/files/firewalld.service.zst similarity index 100% rename from ruzstd/dict_tests/files/firewalld.service.zst rename to zstd/dict_tests/files/firewalld.service.zst diff --git a/ruzstd/dict_tests/files/fstrim.service b/zstd/dict_tests/files/fstrim.service similarity index 100% rename from ruzstd/dict_tests/files/fstrim.service rename to zstd/dict_tests/files/fstrim.service diff --git a/ruzstd/dict_tests/files/fstrim.service.zst b/zstd/dict_tests/files/fstrim.service.zst similarity index 100% rename from ruzstd/dict_tests/files/fstrim.service.zst rename to zstd/dict_tests/files/fstrim.service.zst diff --git a/ruzstd/dict_tests/files/ftpd.service b/zstd/dict_tests/files/ftpd.service similarity index 100% rename from ruzstd/dict_tests/files/ftpd.service rename to zstd/dict_tests/files/ftpd.service diff --git a/ruzstd/dict_tests/files/ftpd.service.zst b/zstd/dict_tests/files/ftpd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/ftpd.service.zst rename to zstd/dict_tests/files/ftpd.service.zst diff --git a/ruzstd/dict_tests/files/getty@.service b/zstd/dict_tests/files/getty@.service similarity index 100% rename from ruzstd/dict_tests/files/getty@.service rename to zstd/dict_tests/files/getty@.service diff --git a/ruzstd/dict_tests/files/getty@.service.zst b/zstd/dict_tests/files/getty@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/getty@.service.zst rename to zstd/dict_tests/files/getty@.service.zst diff --git a/ruzstd/dict_tests/files/git-daemon@.service b/zstd/dict_tests/files/git-daemon@.service similarity index 100% rename from ruzstd/dict_tests/files/git-daemon@.service rename to zstd/dict_tests/files/git-daemon@.service diff --git a/ruzstd/dict_tests/files/git-daemon@.service.zst b/zstd/dict_tests/files/git-daemon@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/git-daemon@.service.zst rename to zstd/dict_tests/files/git-daemon@.service.zst diff --git a/ruzstd/dict_tests/files/gluster-ta-volume.service b/zstd/dict_tests/files/gluster-ta-volume.service similarity index 100% rename from ruzstd/dict_tests/files/gluster-ta-volume.service rename to zstd/dict_tests/files/gluster-ta-volume.service diff --git a/ruzstd/dict_tests/files/gluster-ta-volume.service.zst b/zstd/dict_tests/files/gluster-ta-volume.service.zst similarity index 100% rename from ruzstd/dict_tests/files/gluster-ta-volume.service.zst rename to zstd/dict_tests/files/gluster-ta-volume.service.zst diff --git a/ruzstd/dict_tests/files/glusterd.service b/zstd/dict_tests/files/glusterd.service similarity index 100% rename from ruzstd/dict_tests/files/glusterd.service rename to zstd/dict_tests/files/glusterd.service diff --git a/ruzstd/dict_tests/files/glusterd.service.zst b/zstd/dict_tests/files/glusterd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/glusterd.service.zst rename to zstd/dict_tests/files/glusterd.service.zst diff --git a/ruzstd/dict_tests/files/glustereventsd.service b/zstd/dict_tests/files/glustereventsd.service similarity index 100% rename from ruzstd/dict_tests/files/glustereventsd.service rename to zstd/dict_tests/files/glustereventsd.service diff --git a/ruzstd/dict_tests/files/glustereventsd.service.zst b/zstd/dict_tests/files/glustereventsd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/glustereventsd.service.zst rename to zstd/dict_tests/files/glustereventsd.service.zst diff --git a/ruzstd/dict_tests/files/glusterfssharedstorage.service b/zstd/dict_tests/files/glusterfssharedstorage.service similarity index 100% rename from ruzstd/dict_tests/files/glusterfssharedstorage.service rename to zstd/dict_tests/files/glusterfssharedstorage.service diff --git a/ruzstd/dict_tests/files/glusterfssharedstorage.service.zst b/zstd/dict_tests/files/glusterfssharedstorage.service.zst similarity index 100% rename from ruzstd/dict_tests/files/glusterfssharedstorage.service.zst rename to zstd/dict_tests/files/glusterfssharedstorage.service.zst diff --git a/ruzstd/dict_tests/files/gpm.service b/zstd/dict_tests/files/gpm.service similarity index 100% rename from ruzstd/dict_tests/files/gpm.service rename to zstd/dict_tests/files/gpm.service diff --git a/ruzstd/dict_tests/files/gpm.service.zst b/zstd/dict_tests/files/gpm.service.zst similarity index 100% rename from ruzstd/dict_tests/files/gpm.service.zst rename to zstd/dict_tests/files/gpm.service.zst diff --git a/ruzstd/dict_tests/files/healthd.service b/zstd/dict_tests/files/healthd.service similarity index 100% rename from ruzstd/dict_tests/files/healthd.service rename to zstd/dict_tests/files/healthd.service diff --git a/ruzstd/dict_tests/files/healthd.service.zst b/zstd/dict_tests/files/healthd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/healthd.service.zst rename to zstd/dict_tests/files/healthd.service.zst diff --git a/ruzstd/dict_tests/files/hv_fcopy_daemon.service b/zstd/dict_tests/files/hv_fcopy_daemon.service similarity index 100% rename from ruzstd/dict_tests/files/hv_fcopy_daemon.service rename to zstd/dict_tests/files/hv_fcopy_daemon.service diff --git a/ruzstd/dict_tests/files/hv_fcopy_daemon.service.zst b/zstd/dict_tests/files/hv_fcopy_daemon.service.zst similarity index 100% rename from ruzstd/dict_tests/files/hv_fcopy_daemon.service.zst rename to zstd/dict_tests/files/hv_fcopy_daemon.service.zst diff --git a/ruzstd/dict_tests/files/hv_kvp_daemon.service b/zstd/dict_tests/files/hv_kvp_daemon.service similarity index 100% rename from ruzstd/dict_tests/files/hv_kvp_daemon.service rename to zstd/dict_tests/files/hv_kvp_daemon.service diff --git a/ruzstd/dict_tests/files/hv_kvp_daemon.service.zst b/zstd/dict_tests/files/hv_kvp_daemon.service.zst similarity index 100% rename from ruzstd/dict_tests/files/hv_kvp_daemon.service.zst rename to zstd/dict_tests/files/hv_kvp_daemon.service.zst diff --git a/ruzstd/dict_tests/files/hv_vss_daemon.service b/zstd/dict_tests/files/hv_vss_daemon.service similarity index 100% rename from ruzstd/dict_tests/files/hv_vss_daemon.service rename to zstd/dict_tests/files/hv_vss_daemon.service diff --git a/ruzstd/dict_tests/files/hv_vss_daemon.service.zst b/zstd/dict_tests/files/hv_vss_daemon.service.zst similarity index 100% rename from ruzstd/dict_tests/files/hv_vss_daemon.service.zst rename to zstd/dict_tests/files/hv_vss_daemon.service.zst diff --git a/ruzstd/dict_tests/files/initrd-cleanup.service b/zstd/dict_tests/files/initrd-cleanup.service similarity index 100% rename from ruzstd/dict_tests/files/initrd-cleanup.service rename to zstd/dict_tests/files/initrd-cleanup.service diff --git a/ruzstd/dict_tests/files/initrd-cleanup.service.zst b/zstd/dict_tests/files/initrd-cleanup.service.zst similarity index 100% rename from ruzstd/dict_tests/files/initrd-cleanup.service.zst rename to zstd/dict_tests/files/initrd-cleanup.service.zst diff --git a/ruzstd/dict_tests/files/initrd-parse-etc.service b/zstd/dict_tests/files/initrd-parse-etc.service similarity index 100% rename from ruzstd/dict_tests/files/initrd-parse-etc.service rename to zstd/dict_tests/files/initrd-parse-etc.service diff --git a/ruzstd/dict_tests/files/initrd-parse-etc.service.zst b/zstd/dict_tests/files/initrd-parse-etc.service.zst similarity index 100% rename from ruzstd/dict_tests/files/initrd-parse-etc.service.zst rename to zstd/dict_tests/files/initrd-parse-etc.service.zst diff --git a/ruzstd/dict_tests/files/initrd-switch-root.service b/zstd/dict_tests/files/initrd-switch-root.service similarity index 100% rename from ruzstd/dict_tests/files/initrd-switch-root.service rename to zstd/dict_tests/files/initrd-switch-root.service diff --git a/ruzstd/dict_tests/files/initrd-switch-root.service.zst b/zstd/dict_tests/files/initrd-switch-root.service.zst similarity index 100% rename from ruzstd/dict_tests/files/initrd-switch-root.service.zst rename to zstd/dict_tests/files/initrd-switch-root.service.zst diff --git a/ruzstd/dict_tests/files/initrd-udevadm-cleanup-db.service b/zstd/dict_tests/files/initrd-udevadm-cleanup-db.service similarity index 100% rename from ruzstd/dict_tests/files/initrd-udevadm-cleanup-db.service rename to zstd/dict_tests/files/initrd-udevadm-cleanup-db.service diff --git a/ruzstd/dict_tests/files/initrd-udevadm-cleanup-db.service.zst b/zstd/dict_tests/files/initrd-udevadm-cleanup-db.service.zst similarity index 100% rename from ruzstd/dict_tests/files/initrd-udevadm-cleanup-db.service.zst rename to zstd/dict_tests/files/initrd-udevadm-cleanup-db.service.zst diff --git a/ruzstd/dict_tests/files/ip6tables.service b/zstd/dict_tests/files/ip6tables.service similarity index 100% rename from ruzstd/dict_tests/files/ip6tables.service rename to zstd/dict_tests/files/ip6tables.service diff --git a/ruzstd/dict_tests/files/ip6tables.service.zst b/zstd/dict_tests/files/ip6tables.service.zst similarity index 100% rename from ruzstd/dict_tests/files/ip6tables.service.zst rename to zstd/dict_tests/files/ip6tables.service.zst diff --git a/ruzstd/dict_tests/files/iptables.service b/zstd/dict_tests/files/iptables.service similarity index 100% rename from ruzstd/dict_tests/files/iptables.service rename to zstd/dict_tests/files/iptables.service diff --git a/ruzstd/dict_tests/files/iptables.service.zst b/zstd/dict_tests/files/iptables.service.zst similarity index 100% rename from ruzstd/dict_tests/files/iptables.service.zst rename to zstd/dict_tests/files/iptables.service.zst diff --git a/ruzstd/dict_tests/files/kmod-static-nodes.service b/zstd/dict_tests/files/kmod-static-nodes.service similarity index 100% rename from ruzstd/dict_tests/files/kmod-static-nodes.service rename to zstd/dict_tests/files/kmod-static-nodes.service diff --git a/ruzstd/dict_tests/files/kmod-static-nodes.service.zst b/zstd/dict_tests/files/kmod-static-nodes.service.zst similarity index 100% rename from ruzstd/dict_tests/files/kmod-static-nodes.service.zst rename to zstd/dict_tests/files/kmod-static-nodes.service.zst diff --git a/ruzstd/dict_tests/files/krb5-kadmind.service b/zstd/dict_tests/files/krb5-kadmind.service similarity index 100% rename from ruzstd/dict_tests/files/krb5-kadmind.service rename to zstd/dict_tests/files/krb5-kadmind.service diff --git a/ruzstd/dict_tests/files/krb5-kadmind.service.zst b/zstd/dict_tests/files/krb5-kadmind.service.zst similarity index 100% rename from ruzstd/dict_tests/files/krb5-kadmind.service.zst rename to zstd/dict_tests/files/krb5-kadmind.service.zst diff --git a/ruzstd/dict_tests/files/krb5-kdc.service b/zstd/dict_tests/files/krb5-kdc.service similarity index 100% rename from ruzstd/dict_tests/files/krb5-kdc.service rename to zstd/dict_tests/files/krb5-kdc.service diff --git a/ruzstd/dict_tests/files/krb5-kdc.service.zst b/zstd/dict_tests/files/krb5-kdc.service.zst similarity index 100% rename from ruzstd/dict_tests/files/krb5-kdc.service.zst rename to zstd/dict_tests/files/krb5-kdc.service.zst diff --git a/ruzstd/dict_tests/files/krb5-kpropd.service b/zstd/dict_tests/files/krb5-kpropd.service similarity index 100% rename from ruzstd/dict_tests/files/krb5-kpropd.service rename to zstd/dict_tests/files/krb5-kpropd.service diff --git a/ruzstd/dict_tests/files/krb5-kpropd.service.zst b/zstd/dict_tests/files/krb5-kpropd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/krb5-kpropd.service.zst rename to zstd/dict_tests/files/krb5-kpropd.service.zst diff --git a/ruzstd/dict_tests/files/krb5-kpropd@.service b/zstd/dict_tests/files/krb5-kpropd@.service similarity index 100% rename from ruzstd/dict_tests/files/krb5-kpropd@.service rename to zstd/dict_tests/files/krb5-kpropd@.service diff --git a/ruzstd/dict_tests/files/krb5-kpropd@.service.zst b/zstd/dict_tests/files/krb5-kpropd@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/krb5-kpropd@.service.zst rename to zstd/dict_tests/files/krb5-kpropd@.service.zst diff --git a/ruzstd/dict_tests/files/ldconfig.service b/zstd/dict_tests/files/ldconfig.service similarity index 100% rename from ruzstd/dict_tests/files/ldconfig.service rename to zstd/dict_tests/files/ldconfig.service diff --git a/ruzstd/dict_tests/files/ldconfig.service.zst b/zstd/dict_tests/files/ldconfig.service.zst similarity index 100% rename from ruzstd/dict_tests/files/ldconfig.service.zst rename to zstd/dict_tests/files/ldconfig.service.zst diff --git a/ruzstd/dict_tests/files/libvirt-guests.service b/zstd/dict_tests/files/libvirt-guests.service similarity index 100% rename from ruzstd/dict_tests/files/libvirt-guests.service rename to zstd/dict_tests/files/libvirt-guests.service diff --git a/ruzstd/dict_tests/files/libvirt-guests.service.zst b/zstd/dict_tests/files/libvirt-guests.service.zst similarity index 100% rename from ruzstd/dict_tests/files/libvirt-guests.service.zst rename to zstd/dict_tests/files/libvirt-guests.service.zst diff --git a/ruzstd/dict_tests/files/libvirtd.service b/zstd/dict_tests/files/libvirtd.service similarity index 100% rename from ruzstd/dict_tests/files/libvirtd.service rename to zstd/dict_tests/files/libvirtd.service diff --git a/ruzstd/dict_tests/files/libvirtd.service.zst b/zstd/dict_tests/files/libvirtd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/libvirtd.service.zst rename to zstd/dict_tests/files/libvirtd.service.zst diff --git a/ruzstd/dict_tests/files/lm_sensors.service b/zstd/dict_tests/files/lm_sensors.service similarity index 100% rename from ruzstd/dict_tests/files/lm_sensors.service rename to zstd/dict_tests/files/lm_sensors.service diff --git a/ruzstd/dict_tests/files/lm_sensors.service.zst b/zstd/dict_tests/files/lm_sensors.service.zst similarity index 100% rename from ruzstd/dict_tests/files/lm_sensors.service.zst rename to zstd/dict_tests/files/lm_sensors.service.zst diff --git a/ruzstd/dict_tests/files/logrotate.service b/zstd/dict_tests/files/logrotate.service similarity index 100% rename from ruzstd/dict_tests/files/logrotate.service rename to zstd/dict_tests/files/logrotate.service diff --git a/ruzstd/dict_tests/files/logrotate.service.zst b/zstd/dict_tests/files/logrotate.service.zst similarity index 100% rename from ruzstd/dict_tests/files/logrotate.service.zst rename to zstd/dict_tests/files/logrotate.service.zst diff --git a/ruzstd/dict_tests/files/lvm2-lvmetad.service b/zstd/dict_tests/files/lvm2-lvmetad.service similarity index 100% rename from ruzstd/dict_tests/files/lvm2-lvmetad.service rename to zstd/dict_tests/files/lvm2-lvmetad.service diff --git a/ruzstd/dict_tests/files/lvm2-lvmetad.service.zst b/zstd/dict_tests/files/lvm2-lvmetad.service.zst similarity index 100% rename from ruzstd/dict_tests/files/lvm2-lvmetad.service.zst rename to zstd/dict_tests/files/lvm2-lvmetad.service.zst diff --git a/ruzstd/dict_tests/files/lvm2-lvmpolld.service b/zstd/dict_tests/files/lvm2-lvmpolld.service similarity index 100% rename from ruzstd/dict_tests/files/lvm2-lvmpolld.service rename to zstd/dict_tests/files/lvm2-lvmpolld.service diff --git a/ruzstd/dict_tests/files/lvm2-lvmpolld.service.zst b/zstd/dict_tests/files/lvm2-lvmpolld.service.zst similarity index 100% rename from ruzstd/dict_tests/files/lvm2-lvmpolld.service.zst rename to zstd/dict_tests/files/lvm2-lvmpolld.service.zst diff --git a/ruzstd/dict_tests/files/lvm2-monitor.service b/zstd/dict_tests/files/lvm2-monitor.service similarity index 100% rename from ruzstd/dict_tests/files/lvm2-monitor.service rename to zstd/dict_tests/files/lvm2-monitor.service diff --git a/ruzstd/dict_tests/files/lvm2-monitor.service.zst b/zstd/dict_tests/files/lvm2-monitor.service.zst similarity index 100% rename from ruzstd/dict_tests/files/lvm2-monitor.service.zst rename to zstd/dict_tests/files/lvm2-monitor.service.zst diff --git a/ruzstd/dict_tests/files/lvm2-pvscan@.service b/zstd/dict_tests/files/lvm2-pvscan@.service similarity index 100% rename from ruzstd/dict_tests/files/lvm2-pvscan@.service rename to zstd/dict_tests/files/lvm2-pvscan@.service diff --git a/ruzstd/dict_tests/files/lvm2-pvscan@.service.zst b/zstd/dict_tests/files/lvm2-pvscan@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/lvm2-pvscan@.service.zst rename to zstd/dict_tests/files/lvm2-pvscan@.service.zst diff --git a/ruzstd/dict_tests/files/man-db.service b/zstd/dict_tests/files/man-db.service similarity index 100% rename from ruzstd/dict_tests/files/man-db.service rename to zstd/dict_tests/files/man-db.service diff --git a/ruzstd/dict_tests/files/man-db.service.zst b/zstd/dict_tests/files/man-db.service.zst similarity index 100% rename from ruzstd/dict_tests/files/man-db.service.zst rename to zstd/dict_tests/files/man-db.service.zst diff --git a/ruzstd/dict_tests/files/mdadm-grow-continue@.service b/zstd/dict_tests/files/mdadm-grow-continue@.service similarity index 100% rename from ruzstd/dict_tests/files/mdadm-grow-continue@.service rename to zstd/dict_tests/files/mdadm-grow-continue@.service diff --git a/ruzstd/dict_tests/files/mdadm-grow-continue@.service.zst b/zstd/dict_tests/files/mdadm-grow-continue@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/mdadm-grow-continue@.service.zst rename to zstd/dict_tests/files/mdadm-grow-continue@.service.zst diff --git a/ruzstd/dict_tests/files/mdadm-last-resort@.service b/zstd/dict_tests/files/mdadm-last-resort@.service similarity index 100% rename from ruzstd/dict_tests/files/mdadm-last-resort@.service rename to zstd/dict_tests/files/mdadm-last-resort@.service diff --git a/ruzstd/dict_tests/files/mdadm-last-resort@.service.zst b/zstd/dict_tests/files/mdadm-last-resort@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/mdadm-last-resort@.service.zst rename to zstd/dict_tests/files/mdadm-last-resort@.service.zst diff --git a/ruzstd/dict_tests/files/mdmon@.service b/zstd/dict_tests/files/mdmon@.service similarity index 100% rename from ruzstd/dict_tests/files/mdmon@.service rename to zstd/dict_tests/files/mdmon@.service diff --git a/ruzstd/dict_tests/files/mdmon@.service.zst b/zstd/dict_tests/files/mdmon@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/mdmon@.service.zst rename to zstd/dict_tests/files/mdmon@.service.zst diff --git a/ruzstd/dict_tests/files/mdmonitor.service b/zstd/dict_tests/files/mdmonitor.service similarity index 100% rename from ruzstd/dict_tests/files/mdmonitor.service rename to zstd/dict_tests/files/mdmonitor.service diff --git a/ruzstd/dict_tests/files/mdmonitor.service.zst b/zstd/dict_tests/files/mdmonitor.service.zst similarity index 100% rename from ruzstd/dict_tests/files/mdmonitor.service.zst rename to zstd/dict_tests/files/mdmonitor.service.zst diff --git a/ruzstd/dict_tests/files/mkinitcpio-generate-shutdown-ramfs.service b/zstd/dict_tests/files/mkinitcpio-generate-shutdown-ramfs.service similarity index 100% rename from ruzstd/dict_tests/files/mkinitcpio-generate-shutdown-ramfs.service rename to zstd/dict_tests/files/mkinitcpio-generate-shutdown-ramfs.service diff --git a/ruzstd/dict_tests/files/mkinitcpio-generate-shutdown-ramfs.service.zst b/zstd/dict_tests/files/mkinitcpio-generate-shutdown-ramfs.service.zst similarity index 100% rename from ruzstd/dict_tests/files/mkinitcpio-generate-shutdown-ramfs.service.zst rename to zstd/dict_tests/files/mkinitcpio-generate-shutdown-ramfs.service.zst diff --git a/ruzstd/dict_tests/files/ndctl-monitor.service b/zstd/dict_tests/files/ndctl-monitor.service similarity index 100% rename from ruzstd/dict_tests/files/ndctl-monitor.service rename to zstd/dict_tests/files/ndctl-monitor.service diff --git a/ruzstd/dict_tests/files/ndctl-monitor.service.zst b/zstd/dict_tests/files/ndctl-monitor.service.zst similarity index 100% rename from ruzstd/dict_tests/files/ndctl-monitor.service.zst rename to zstd/dict_tests/files/ndctl-monitor.service.zst diff --git a/ruzstd/dict_tests/files/netcf-transaction.service b/zstd/dict_tests/files/netcf-transaction.service similarity index 100% rename from ruzstd/dict_tests/files/netcf-transaction.service rename to zstd/dict_tests/files/netcf-transaction.service diff --git a/ruzstd/dict_tests/files/netcf-transaction.service.zst b/zstd/dict_tests/files/netcf-transaction.service.zst similarity index 100% rename from ruzstd/dict_tests/files/netcf-transaction.service.zst rename to zstd/dict_tests/files/netcf-transaction.service.zst diff --git a/ruzstd/dict_tests/files/netctl-auto@.service b/zstd/dict_tests/files/netctl-auto@.service similarity index 100% rename from ruzstd/dict_tests/files/netctl-auto@.service rename to zstd/dict_tests/files/netctl-auto@.service diff --git a/ruzstd/dict_tests/files/netctl-auto@.service.zst b/zstd/dict_tests/files/netctl-auto@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/netctl-auto@.service.zst rename to zstd/dict_tests/files/netctl-auto@.service.zst diff --git a/ruzstd/dict_tests/files/netctl-ifplugd@.service b/zstd/dict_tests/files/netctl-ifplugd@.service similarity index 100% rename from ruzstd/dict_tests/files/netctl-ifplugd@.service rename to zstd/dict_tests/files/netctl-ifplugd@.service diff --git a/ruzstd/dict_tests/files/netctl-ifplugd@.service.zst b/zstd/dict_tests/files/netctl-ifplugd@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/netctl-ifplugd@.service.zst rename to zstd/dict_tests/files/netctl-ifplugd@.service.zst diff --git a/ruzstd/dict_tests/files/netctl-sleep.service b/zstd/dict_tests/files/netctl-sleep.service similarity index 100% rename from ruzstd/dict_tests/files/netctl-sleep.service rename to zstd/dict_tests/files/netctl-sleep.service diff --git a/ruzstd/dict_tests/files/netctl-sleep.service.zst b/zstd/dict_tests/files/netctl-sleep.service.zst similarity index 100% rename from ruzstd/dict_tests/files/netctl-sleep.service.zst rename to zstd/dict_tests/files/netctl-sleep.service.zst diff --git a/ruzstd/dict_tests/files/netctl-wait-online.service b/zstd/dict_tests/files/netctl-wait-online.service similarity index 100% rename from ruzstd/dict_tests/files/netctl-wait-online.service rename to zstd/dict_tests/files/netctl-wait-online.service diff --git a/ruzstd/dict_tests/files/netctl-wait-online.service.zst b/zstd/dict_tests/files/netctl-wait-online.service.zst similarity index 100% rename from ruzstd/dict_tests/files/netctl-wait-online.service.zst rename to zstd/dict_tests/files/netctl-wait-online.service.zst diff --git a/ruzstd/dict_tests/files/netctl.service b/zstd/dict_tests/files/netctl.service similarity index 100% rename from ruzstd/dict_tests/files/netctl.service rename to zstd/dict_tests/files/netctl.service diff --git a/ruzstd/dict_tests/files/netctl.service.zst b/zstd/dict_tests/files/netctl.service.zst similarity index 100% rename from ruzstd/dict_tests/files/netctl.service.zst rename to zstd/dict_tests/files/netctl.service.zst diff --git a/ruzstd/dict_tests/files/netctl@.service b/zstd/dict_tests/files/netctl@.service similarity index 100% rename from ruzstd/dict_tests/files/netctl@.service rename to zstd/dict_tests/files/netctl@.service diff --git a/ruzstd/dict_tests/files/netctl@.service.zst b/zstd/dict_tests/files/netctl@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/netctl@.service.zst rename to zstd/dict_tests/files/netctl@.service.zst diff --git a/ruzstd/dict_tests/files/nftables.service b/zstd/dict_tests/files/nftables.service similarity index 100% rename from ruzstd/dict_tests/files/nftables.service rename to zstd/dict_tests/files/nftables.service diff --git a/ruzstd/dict_tests/files/nftables.service.zst b/zstd/dict_tests/files/nftables.service.zst similarity index 100% rename from ruzstd/dict_tests/files/nftables.service.zst rename to zstd/dict_tests/files/nftables.service.zst diff --git a/ruzstd/dict_tests/files/ninfod.service b/zstd/dict_tests/files/ninfod.service similarity index 100% rename from ruzstd/dict_tests/files/ninfod.service rename to zstd/dict_tests/files/ninfod.service diff --git a/ruzstd/dict_tests/files/ninfod.service.zst b/zstd/dict_tests/files/ninfod.service.zst similarity index 100% rename from ruzstd/dict_tests/files/ninfod.service.zst rename to zstd/dict_tests/files/ninfod.service.zst diff --git a/ruzstd/dict_tests/files/nscd.service b/zstd/dict_tests/files/nscd.service similarity index 100% rename from ruzstd/dict_tests/files/nscd.service rename to zstd/dict_tests/files/nscd.service diff --git a/ruzstd/dict_tests/files/nscd.service.zst b/zstd/dict_tests/files/nscd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/nscd.service.zst rename to zstd/dict_tests/files/nscd.service.zst diff --git a/ruzstd/dict_tests/files/openvpn-client@.service b/zstd/dict_tests/files/openvpn-client@.service similarity index 100% rename from ruzstd/dict_tests/files/openvpn-client@.service rename to zstd/dict_tests/files/openvpn-client@.service diff --git a/ruzstd/dict_tests/files/openvpn-client@.service.zst b/zstd/dict_tests/files/openvpn-client@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/openvpn-client@.service.zst rename to zstd/dict_tests/files/openvpn-client@.service.zst diff --git a/ruzstd/dict_tests/files/openvpn-server@.service b/zstd/dict_tests/files/openvpn-server@.service similarity index 100% rename from ruzstd/dict_tests/files/openvpn-server@.service rename to zstd/dict_tests/files/openvpn-server@.service diff --git a/ruzstd/dict_tests/files/openvpn-server@.service.zst b/zstd/dict_tests/files/openvpn-server@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/openvpn-server@.service.zst rename to zstd/dict_tests/files/openvpn-server@.service.zst diff --git a/ruzstd/dict_tests/files/polkit.service b/zstd/dict_tests/files/polkit.service similarity index 100% rename from ruzstd/dict_tests/files/polkit.service rename to zstd/dict_tests/files/polkit.service diff --git a/ruzstd/dict_tests/files/polkit.service.zst b/zstd/dict_tests/files/polkit.service.zst similarity index 100% rename from ruzstd/dict_tests/files/polkit.service.zst rename to zstd/dict_tests/files/polkit.service.zst diff --git a/ruzstd/dict_tests/files/ppp@.service b/zstd/dict_tests/files/ppp@.service similarity index 100% rename from ruzstd/dict_tests/files/ppp@.service rename to zstd/dict_tests/files/ppp@.service diff --git a/ruzstd/dict_tests/files/ppp@.service.zst b/zstd/dict_tests/files/ppp@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/ppp@.service.zst rename to zstd/dict_tests/files/ppp@.service.zst diff --git a/ruzstd/dict_tests/files/quotaon.service b/zstd/dict_tests/files/quotaon.service similarity index 100% rename from ruzstd/dict_tests/files/quotaon.service rename to zstd/dict_tests/files/quotaon.service diff --git a/ruzstd/dict_tests/files/quotaon.service.zst b/zstd/dict_tests/files/quotaon.service.zst similarity index 100% rename from ruzstd/dict_tests/files/quotaon.service.zst rename to zstd/dict_tests/files/quotaon.service.zst diff --git a/ruzstd/dict_tests/files/rarpd@.service b/zstd/dict_tests/files/rarpd@.service similarity index 100% rename from ruzstd/dict_tests/files/rarpd@.service rename to zstd/dict_tests/files/rarpd@.service diff --git a/ruzstd/dict_tests/files/rarpd@.service.zst b/zstd/dict_tests/files/rarpd@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/rarpd@.service.zst rename to zstd/dict_tests/files/rarpd@.service.zst diff --git a/ruzstd/dict_tests/files/rdisc.service b/zstd/dict_tests/files/rdisc.service similarity index 100% rename from ruzstd/dict_tests/files/rdisc.service rename to zstd/dict_tests/files/rdisc.service diff --git a/ruzstd/dict_tests/files/rdisc.service.zst b/zstd/dict_tests/files/rdisc.service.zst similarity index 100% rename from ruzstd/dict_tests/files/rdisc.service.zst rename to zstd/dict_tests/files/rdisc.service.zst diff --git a/ruzstd/dict_tests/files/rescue.service b/zstd/dict_tests/files/rescue.service similarity index 100% rename from ruzstd/dict_tests/files/rescue.service rename to zstd/dict_tests/files/rescue.service diff --git a/ruzstd/dict_tests/files/rescue.service.zst b/zstd/dict_tests/files/rescue.service.zst similarity index 100% rename from ruzstd/dict_tests/files/rescue.service.zst rename to zstd/dict_tests/files/rescue.service.zst diff --git a/ruzstd/dict_tests/files/rfkill-block@.service b/zstd/dict_tests/files/rfkill-block@.service similarity index 100% rename from ruzstd/dict_tests/files/rfkill-block@.service rename to zstd/dict_tests/files/rfkill-block@.service diff --git a/ruzstd/dict_tests/files/rfkill-block@.service.zst b/zstd/dict_tests/files/rfkill-block@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/rfkill-block@.service.zst rename to zstd/dict_tests/files/rfkill-block@.service.zst diff --git a/ruzstd/dict_tests/files/rfkill-unblock@.service b/zstd/dict_tests/files/rfkill-unblock@.service similarity index 100% rename from ruzstd/dict_tests/files/rfkill-unblock@.service rename to zstd/dict_tests/files/rfkill-unblock@.service diff --git a/ruzstd/dict_tests/files/rfkill-unblock@.service.zst b/zstd/dict_tests/files/rfkill-unblock@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/rfkill-unblock@.service.zst rename to zstd/dict_tests/files/rfkill-unblock@.service.zst diff --git a/ruzstd/dict_tests/files/rlogin@.service b/zstd/dict_tests/files/rlogin@.service similarity index 100% rename from ruzstd/dict_tests/files/rlogin@.service rename to zstd/dict_tests/files/rlogin@.service diff --git a/ruzstd/dict_tests/files/rlogin@.service.zst b/zstd/dict_tests/files/rlogin@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/rlogin@.service.zst rename to zstd/dict_tests/files/rlogin@.service.zst diff --git a/ruzstd/dict_tests/files/rpcbind.service b/zstd/dict_tests/files/rpcbind.service similarity index 100% rename from ruzstd/dict_tests/files/rpcbind.service rename to zstd/dict_tests/files/rpcbind.service diff --git a/ruzstd/dict_tests/files/rpcbind.service.zst b/zstd/dict_tests/files/rpcbind.service.zst similarity index 100% rename from ruzstd/dict_tests/files/rpcbind.service.zst rename to zstd/dict_tests/files/rpcbind.service.zst diff --git a/ruzstd/dict_tests/files/rsh@.service b/zstd/dict_tests/files/rsh@.service similarity index 100% rename from ruzstd/dict_tests/files/rsh@.service rename to zstd/dict_tests/files/rsh@.service diff --git a/ruzstd/dict_tests/files/rsh@.service.zst b/zstd/dict_tests/files/rsh@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/rsh@.service.zst rename to zstd/dict_tests/files/rsh@.service.zst diff --git a/ruzstd/dict_tests/files/rtkit-daemon.service b/zstd/dict_tests/files/rtkit-daemon.service similarity index 100% rename from ruzstd/dict_tests/files/rtkit-daemon.service rename to zstd/dict_tests/files/rtkit-daemon.service diff --git a/ruzstd/dict_tests/files/rtkit-daemon.service.zst b/zstd/dict_tests/files/rtkit-daemon.service.zst similarity index 100% rename from ruzstd/dict_tests/files/rtkit-daemon.service.zst rename to zstd/dict_tests/files/rtkit-daemon.service.zst diff --git a/ruzstd/dict_tests/files/sddm.service b/zstd/dict_tests/files/sddm.service similarity index 100% rename from ruzstd/dict_tests/files/sddm.service rename to zstd/dict_tests/files/sddm.service diff --git a/ruzstd/dict_tests/files/sddm.service.zst b/zstd/dict_tests/files/sddm.service.zst similarity index 100% rename from ruzstd/dict_tests/files/sddm.service.zst rename to zstd/dict_tests/files/sddm.service.zst diff --git a/ruzstd/dict_tests/files/sensord.service b/zstd/dict_tests/files/sensord.service similarity index 100% rename from ruzstd/dict_tests/files/sensord.service rename to zstd/dict_tests/files/sensord.service diff --git a/ruzstd/dict_tests/files/sensord.service.zst b/zstd/dict_tests/files/sensord.service.zst similarity index 100% rename from ruzstd/dict_tests/files/sensord.service.zst rename to zstd/dict_tests/files/sensord.service.zst diff --git a/ruzstd/dict_tests/files/serial-getty@.service b/zstd/dict_tests/files/serial-getty@.service similarity index 100% rename from ruzstd/dict_tests/files/serial-getty@.service rename to zstd/dict_tests/files/serial-getty@.service diff --git a/ruzstd/dict_tests/files/serial-getty@.service.zst b/zstd/dict_tests/files/serial-getty@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/serial-getty@.service.zst rename to zstd/dict_tests/files/serial-getty@.service.zst diff --git a/ruzstd/dict_tests/files/shadow.service b/zstd/dict_tests/files/shadow.service similarity index 100% rename from ruzstd/dict_tests/files/shadow.service rename to zstd/dict_tests/files/shadow.service diff --git a/ruzstd/dict_tests/files/shadow.service.zst b/zstd/dict_tests/files/shadow.service.zst similarity index 100% rename from ruzstd/dict_tests/files/shadow.service.zst rename to zstd/dict_tests/files/shadow.service.zst diff --git a/ruzstd/dict_tests/files/spice-webdavd.service b/zstd/dict_tests/files/spice-webdavd.service similarity index 100% rename from ruzstd/dict_tests/files/spice-webdavd.service rename to zstd/dict_tests/files/spice-webdavd.service diff --git a/ruzstd/dict_tests/files/spice-webdavd.service.zst b/zstd/dict_tests/files/spice-webdavd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/spice-webdavd.service.zst rename to zstd/dict_tests/files/spice-webdavd.service.zst diff --git a/ruzstd/dict_tests/files/sshd.service b/zstd/dict_tests/files/sshd.service similarity index 100% rename from ruzstd/dict_tests/files/sshd.service rename to zstd/dict_tests/files/sshd.service diff --git a/ruzstd/dict_tests/files/sshd.service.zst b/zstd/dict_tests/files/sshd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/sshd.service.zst rename to zstd/dict_tests/files/sshd.service.zst diff --git a/ruzstd/dict_tests/files/sshdgenkeys.service b/zstd/dict_tests/files/sshdgenkeys.service similarity index 100% rename from ruzstd/dict_tests/files/sshdgenkeys.service rename to zstd/dict_tests/files/sshdgenkeys.service diff --git a/ruzstd/dict_tests/files/sshdgenkeys.service.zst b/zstd/dict_tests/files/sshdgenkeys.service.zst similarity index 100% rename from ruzstd/dict_tests/files/sshdgenkeys.service.zst rename to zstd/dict_tests/files/sshdgenkeys.service.zst diff --git a/ruzstd/dict_tests/files/syncthing-resume.service b/zstd/dict_tests/files/syncthing-resume.service similarity index 100% rename from ruzstd/dict_tests/files/syncthing-resume.service rename to zstd/dict_tests/files/syncthing-resume.service diff --git a/ruzstd/dict_tests/files/syncthing-resume.service.zst b/zstd/dict_tests/files/syncthing-resume.service.zst similarity index 100% rename from ruzstd/dict_tests/files/syncthing-resume.service.zst rename to zstd/dict_tests/files/syncthing-resume.service.zst diff --git a/ruzstd/dict_tests/files/syncthing@.service b/zstd/dict_tests/files/syncthing@.service similarity index 100% rename from ruzstd/dict_tests/files/syncthing@.service rename to zstd/dict_tests/files/syncthing@.service diff --git a/ruzstd/dict_tests/files/syncthing@.service.zst b/zstd/dict_tests/files/syncthing@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/syncthing@.service.zst rename to zstd/dict_tests/files/syncthing@.service.zst diff --git a/ruzstd/dict_tests/files/system-update-cleanup.service b/zstd/dict_tests/files/system-update-cleanup.service similarity index 100% rename from ruzstd/dict_tests/files/system-update-cleanup.service rename to zstd/dict_tests/files/system-update-cleanup.service diff --git a/ruzstd/dict_tests/files/system-update-cleanup.service.zst b/zstd/dict_tests/files/system-update-cleanup.service.zst similarity index 100% rename from ruzstd/dict_tests/files/system-update-cleanup.service.zst rename to zstd/dict_tests/files/system-update-cleanup.service.zst diff --git a/ruzstd/dict_tests/files/systemd-ask-password-console.service b/zstd/dict_tests/files/systemd-ask-password-console.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-ask-password-console.service rename to zstd/dict_tests/files/systemd-ask-password-console.service diff --git a/ruzstd/dict_tests/files/systemd-ask-password-console.service.zst b/zstd/dict_tests/files/systemd-ask-password-console.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-ask-password-console.service.zst rename to zstd/dict_tests/files/systemd-ask-password-console.service.zst diff --git a/ruzstd/dict_tests/files/systemd-ask-password-wall.service b/zstd/dict_tests/files/systemd-ask-password-wall.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-ask-password-wall.service rename to zstd/dict_tests/files/systemd-ask-password-wall.service diff --git a/ruzstd/dict_tests/files/systemd-ask-password-wall.service.zst b/zstd/dict_tests/files/systemd-ask-password-wall.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-ask-password-wall.service.zst rename to zstd/dict_tests/files/systemd-ask-password-wall.service.zst diff --git a/ruzstd/dict_tests/files/systemd-backlight@.service b/zstd/dict_tests/files/systemd-backlight@.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-backlight@.service rename to zstd/dict_tests/files/systemd-backlight@.service diff --git a/ruzstd/dict_tests/files/systemd-backlight@.service.zst b/zstd/dict_tests/files/systemd-backlight@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-backlight@.service.zst rename to zstd/dict_tests/files/systemd-backlight@.service.zst diff --git a/ruzstd/dict_tests/files/systemd-binfmt.service b/zstd/dict_tests/files/systemd-binfmt.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-binfmt.service rename to zstd/dict_tests/files/systemd-binfmt.service diff --git a/ruzstd/dict_tests/files/systemd-binfmt.service.zst b/zstd/dict_tests/files/systemd-binfmt.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-binfmt.service.zst rename to zstd/dict_tests/files/systemd-binfmt.service.zst diff --git a/ruzstd/dict_tests/files/systemd-bless-boot.service b/zstd/dict_tests/files/systemd-bless-boot.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-bless-boot.service rename to zstd/dict_tests/files/systemd-bless-boot.service diff --git a/ruzstd/dict_tests/files/systemd-bless-boot.service.zst b/zstd/dict_tests/files/systemd-bless-boot.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-bless-boot.service.zst rename to zstd/dict_tests/files/systemd-bless-boot.service.zst diff --git a/ruzstd/dict_tests/files/systemd-boot-check-no-failures.service b/zstd/dict_tests/files/systemd-boot-check-no-failures.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-boot-check-no-failures.service rename to zstd/dict_tests/files/systemd-boot-check-no-failures.service diff --git a/ruzstd/dict_tests/files/systemd-boot-check-no-failures.service.zst b/zstd/dict_tests/files/systemd-boot-check-no-failures.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-boot-check-no-failures.service.zst rename to zstd/dict_tests/files/systemd-boot-check-no-failures.service.zst diff --git a/ruzstd/dict_tests/files/systemd-boot-system-token.service b/zstd/dict_tests/files/systemd-boot-system-token.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-boot-system-token.service rename to zstd/dict_tests/files/systemd-boot-system-token.service diff --git a/ruzstd/dict_tests/files/systemd-boot-system-token.service.zst b/zstd/dict_tests/files/systemd-boot-system-token.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-boot-system-token.service.zst rename to zstd/dict_tests/files/systemd-boot-system-token.service.zst diff --git a/ruzstd/dict_tests/files/systemd-coredump@.service b/zstd/dict_tests/files/systemd-coredump@.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-coredump@.service rename to zstd/dict_tests/files/systemd-coredump@.service diff --git a/ruzstd/dict_tests/files/systemd-coredump@.service.zst b/zstd/dict_tests/files/systemd-coredump@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-coredump@.service.zst rename to zstd/dict_tests/files/systemd-coredump@.service.zst diff --git a/ruzstd/dict_tests/files/systemd-exit.service b/zstd/dict_tests/files/systemd-exit.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-exit.service rename to zstd/dict_tests/files/systemd-exit.service diff --git a/ruzstd/dict_tests/files/systemd-exit.service.zst b/zstd/dict_tests/files/systemd-exit.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-exit.service.zst rename to zstd/dict_tests/files/systemd-exit.service.zst diff --git a/ruzstd/dict_tests/files/systemd-firstboot.service b/zstd/dict_tests/files/systemd-firstboot.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-firstboot.service rename to zstd/dict_tests/files/systemd-firstboot.service diff --git a/ruzstd/dict_tests/files/systemd-firstboot.service.zst b/zstd/dict_tests/files/systemd-firstboot.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-firstboot.service.zst rename to zstd/dict_tests/files/systemd-firstboot.service.zst diff --git a/ruzstd/dict_tests/files/systemd-fsck-root.service b/zstd/dict_tests/files/systemd-fsck-root.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-fsck-root.service rename to zstd/dict_tests/files/systemd-fsck-root.service diff --git a/ruzstd/dict_tests/files/systemd-fsck-root.service.zst b/zstd/dict_tests/files/systemd-fsck-root.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-fsck-root.service.zst rename to zstd/dict_tests/files/systemd-fsck-root.service.zst diff --git a/ruzstd/dict_tests/files/systemd-fsck@.service b/zstd/dict_tests/files/systemd-fsck@.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-fsck@.service rename to zstd/dict_tests/files/systemd-fsck@.service diff --git a/ruzstd/dict_tests/files/systemd-fsck@.service.zst b/zstd/dict_tests/files/systemd-fsck@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-fsck@.service.zst rename to zstd/dict_tests/files/systemd-fsck@.service.zst diff --git a/ruzstd/dict_tests/files/systemd-halt.service b/zstd/dict_tests/files/systemd-halt.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-halt.service rename to zstd/dict_tests/files/systemd-halt.service diff --git a/ruzstd/dict_tests/files/systemd-halt.service.zst b/zstd/dict_tests/files/systemd-halt.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-halt.service.zst rename to zstd/dict_tests/files/systemd-halt.service.zst diff --git a/ruzstd/dict_tests/files/systemd-hibernate-resume@.service b/zstd/dict_tests/files/systemd-hibernate-resume@.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-hibernate-resume@.service rename to zstd/dict_tests/files/systemd-hibernate-resume@.service diff --git a/ruzstd/dict_tests/files/systemd-hibernate-resume@.service.zst b/zstd/dict_tests/files/systemd-hibernate-resume@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-hibernate-resume@.service.zst rename to zstd/dict_tests/files/systemd-hibernate-resume@.service.zst diff --git a/ruzstd/dict_tests/files/systemd-hibernate.service b/zstd/dict_tests/files/systemd-hibernate.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-hibernate.service rename to zstd/dict_tests/files/systemd-hibernate.service diff --git a/ruzstd/dict_tests/files/systemd-hibernate.service.zst b/zstd/dict_tests/files/systemd-hibernate.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-hibernate.service.zst rename to zstd/dict_tests/files/systemd-hibernate.service.zst diff --git a/ruzstd/dict_tests/files/systemd-hostnamed.service b/zstd/dict_tests/files/systemd-hostnamed.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-hostnamed.service rename to zstd/dict_tests/files/systemd-hostnamed.service diff --git a/ruzstd/dict_tests/files/systemd-hostnamed.service.zst b/zstd/dict_tests/files/systemd-hostnamed.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-hostnamed.service.zst rename to zstd/dict_tests/files/systemd-hostnamed.service.zst diff --git a/ruzstd/dict_tests/files/systemd-hwdb-update.service b/zstd/dict_tests/files/systemd-hwdb-update.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-hwdb-update.service rename to zstd/dict_tests/files/systemd-hwdb-update.service diff --git a/ruzstd/dict_tests/files/systemd-hwdb-update.service.zst b/zstd/dict_tests/files/systemd-hwdb-update.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-hwdb-update.service.zst rename to zstd/dict_tests/files/systemd-hwdb-update.service.zst diff --git a/ruzstd/dict_tests/files/systemd-hybrid-sleep.service b/zstd/dict_tests/files/systemd-hybrid-sleep.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-hybrid-sleep.service rename to zstd/dict_tests/files/systemd-hybrid-sleep.service diff --git a/ruzstd/dict_tests/files/systemd-hybrid-sleep.service.zst b/zstd/dict_tests/files/systemd-hybrid-sleep.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-hybrid-sleep.service.zst rename to zstd/dict_tests/files/systemd-hybrid-sleep.service.zst diff --git a/ruzstd/dict_tests/files/systemd-importd.service b/zstd/dict_tests/files/systemd-importd.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-importd.service rename to zstd/dict_tests/files/systemd-importd.service diff --git a/ruzstd/dict_tests/files/systemd-importd.service.zst b/zstd/dict_tests/files/systemd-importd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-importd.service.zst rename to zstd/dict_tests/files/systemd-importd.service.zst diff --git a/ruzstd/dict_tests/files/systemd-initctl.service b/zstd/dict_tests/files/systemd-initctl.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-initctl.service rename to zstd/dict_tests/files/systemd-initctl.service diff --git a/ruzstd/dict_tests/files/systemd-initctl.service.zst b/zstd/dict_tests/files/systemd-initctl.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-initctl.service.zst rename to zstd/dict_tests/files/systemd-initctl.service.zst diff --git a/ruzstd/dict_tests/files/systemd-journal-catalog-update.service b/zstd/dict_tests/files/systemd-journal-catalog-update.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-journal-catalog-update.service rename to zstd/dict_tests/files/systemd-journal-catalog-update.service diff --git a/ruzstd/dict_tests/files/systemd-journal-catalog-update.service.zst b/zstd/dict_tests/files/systemd-journal-catalog-update.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-journal-catalog-update.service.zst rename to zstd/dict_tests/files/systemd-journal-catalog-update.service.zst diff --git a/ruzstd/dict_tests/files/systemd-journal-flush.service b/zstd/dict_tests/files/systemd-journal-flush.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-journal-flush.service rename to zstd/dict_tests/files/systemd-journal-flush.service diff --git a/ruzstd/dict_tests/files/systemd-journal-flush.service.zst b/zstd/dict_tests/files/systemd-journal-flush.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-journal-flush.service.zst rename to zstd/dict_tests/files/systemd-journal-flush.service.zst diff --git a/ruzstd/dict_tests/files/systemd-journal-gatewayd.service b/zstd/dict_tests/files/systemd-journal-gatewayd.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-journal-gatewayd.service rename to zstd/dict_tests/files/systemd-journal-gatewayd.service diff --git a/ruzstd/dict_tests/files/systemd-journal-gatewayd.service.zst b/zstd/dict_tests/files/systemd-journal-gatewayd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-journal-gatewayd.service.zst rename to zstd/dict_tests/files/systemd-journal-gatewayd.service.zst diff --git a/ruzstd/dict_tests/files/systemd-journal-remote.service b/zstd/dict_tests/files/systemd-journal-remote.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-journal-remote.service rename to zstd/dict_tests/files/systemd-journal-remote.service diff --git a/ruzstd/dict_tests/files/systemd-journal-remote.service.zst b/zstd/dict_tests/files/systemd-journal-remote.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-journal-remote.service.zst rename to zstd/dict_tests/files/systemd-journal-remote.service.zst diff --git a/ruzstd/dict_tests/files/systemd-journal-upload.service b/zstd/dict_tests/files/systemd-journal-upload.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-journal-upload.service rename to zstd/dict_tests/files/systemd-journal-upload.service diff --git a/ruzstd/dict_tests/files/systemd-journal-upload.service.zst b/zstd/dict_tests/files/systemd-journal-upload.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-journal-upload.service.zst rename to zstd/dict_tests/files/systemd-journal-upload.service.zst diff --git a/ruzstd/dict_tests/files/systemd-journald.service b/zstd/dict_tests/files/systemd-journald.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-journald.service rename to zstd/dict_tests/files/systemd-journald.service diff --git a/ruzstd/dict_tests/files/systemd-journald.service.zst b/zstd/dict_tests/files/systemd-journald.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-journald.service.zst rename to zstd/dict_tests/files/systemd-journald.service.zst diff --git a/ruzstd/dict_tests/files/systemd-kexec.service b/zstd/dict_tests/files/systemd-kexec.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-kexec.service rename to zstd/dict_tests/files/systemd-kexec.service diff --git a/ruzstd/dict_tests/files/systemd-kexec.service.zst b/zstd/dict_tests/files/systemd-kexec.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-kexec.service.zst rename to zstd/dict_tests/files/systemd-kexec.service.zst diff --git a/ruzstd/dict_tests/files/systemd-localed.service b/zstd/dict_tests/files/systemd-localed.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-localed.service rename to zstd/dict_tests/files/systemd-localed.service diff --git a/ruzstd/dict_tests/files/systemd-localed.service.zst b/zstd/dict_tests/files/systemd-localed.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-localed.service.zst rename to zstd/dict_tests/files/systemd-localed.service.zst diff --git a/ruzstd/dict_tests/files/systemd-logind.service b/zstd/dict_tests/files/systemd-logind.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-logind.service rename to zstd/dict_tests/files/systemd-logind.service diff --git a/ruzstd/dict_tests/files/systemd-logind.service.zst b/zstd/dict_tests/files/systemd-logind.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-logind.service.zst rename to zstd/dict_tests/files/systemd-logind.service.zst diff --git a/ruzstd/dict_tests/files/systemd-machine-id-commit.service b/zstd/dict_tests/files/systemd-machine-id-commit.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-machine-id-commit.service rename to zstd/dict_tests/files/systemd-machine-id-commit.service diff --git a/ruzstd/dict_tests/files/systemd-machine-id-commit.service.zst b/zstd/dict_tests/files/systemd-machine-id-commit.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-machine-id-commit.service.zst rename to zstd/dict_tests/files/systemd-machine-id-commit.service.zst diff --git a/ruzstd/dict_tests/files/systemd-machined.service b/zstd/dict_tests/files/systemd-machined.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-machined.service rename to zstd/dict_tests/files/systemd-machined.service diff --git a/ruzstd/dict_tests/files/systemd-machined.service.zst b/zstd/dict_tests/files/systemd-machined.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-machined.service.zst rename to zstd/dict_tests/files/systemd-machined.service.zst diff --git a/ruzstd/dict_tests/files/systemd-modules-load.service b/zstd/dict_tests/files/systemd-modules-load.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-modules-load.service rename to zstd/dict_tests/files/systemd-modules-load.service diff --git a/ruzstd/dict_tests/files/systemd-modules-load.service.zst b/zstd/dict_tests/files/systemd-modules-load.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-modules-load.service.zst rename to zstd/dict_tests/files/systemd-modules-load.service.zst diff --git a/ruzstd/dict_tests/files/systemd-network-generator.service b/zstd/dict_tests/files/systemd-network-generator.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-network-generator.service rename to zstd/dict_tests/files/systemd-network-generator.service diff --git a/ruzstd/dict_tests/files/systemd-network-generator.service.zst b/zstd/dict_tests/files/systemd-network-generator.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-network-generator.service.zst rename to zstd/dict_tests/files/systemd-network-generator.service.zst diff --git a/ruzstd/dict_tests/files/systemd-networkd-wait-online.service b/zstd/dict_tests/files/systemd-networkd-wait-online.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-networkd-wait-online.service rename to zstd/dict_tests/files/systemd-networkd-wait-online.service diff --git a/ruzstd/dict_tests/files/systemd-networkd-wait-online.service.zst b/zstd/dict_tests/files/systemd-networkd-wait-online.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-networkd-wait-online.service.zst rename to zstd/dict_tests/files/systemd-networkd-wait-online.service.zst diff --git a/ruzstd/dict_tests/files/systemd-networkd.service b/zstd/dict_tests/files/systemd-networkd.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-networkd.service rename to zstd/dict_tests/files/systemd-networkd.service diff --git a/ruzstd/dict_tests/files/systemd-networkd.service.zst b/zstd/dict_tests/files/systemd-networkd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-networkd.service.zst rename to zstd/dict_tests/files/systemd-networkd.service.zst diff --git a/ruzstd/dict_tests/files/systemd-nspawn@.service b/zstd/dict_tests/files/systemd-nspawn@.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-nspawn@.service rename to zstd/dict_tests/files/systemd-nspawn@.service diff --git a/ruzstd/dict_tests/files/systemd-nspawn@.service.zst b/zstd/dict_tests/files/systemd-nspawn@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-nspawn@.service.zst rename to zstd/dict_tests/files/systemd-nspawn@.service.zst diff --git a/ruzstd/dict_tests/files/systemd-portabled.service b/zstd/dict_tests/files/systemd-portabled.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-portabled.service rename to zstd/dict_tests/files/systemd-portabled.service diff --git a/ruzstd/dict_tests/files/systemd-portabled.service.zst b/zstd/dict_tests/files/systemd-portabled.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-portabled.service.zst rename to zstd/dict_tests/files/systemd-portabled.service.zst diff --git a/ruzstd/dict_tests/files/systemd-poweroff.service b/zstd/dict_tests/files/systemd-poweroff.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-poweroff.service rename to zstd/dict_tests/files/systemd-poweroff.service diff --git a/ruzstd/dict_tests/files/systemd-poweroff.service.zst b/zstd/dict_tests/files/systemd-poweroff.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-poweroff.service.zst rename to zstd/dict_tests/files/systemd-poweroff.service.zst diff --git a/ruzstd/dict_tests/files/systemd-pstore.service b/zstd/dict_tests/files/systemd-pstore.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-pstore.service rename to zstd/dict_tests/files/systemd-pstore.service diff --git a/ruzstd/dict_tests/files/systemd-pstore.service.zst b/zstd/dict_tests/files/systemd-pstore.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-pstore.service.zst rename to zstd/dict_tests/files/systemd-pstore.service.zst diff --git a/ruzstd/dict_tests/files/systemd-quotacheck.service b/zstd/dict_tests/files/systemd-quotacheck.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-quotacheck.service rename to zstd/dict_tests/files/systemd-quotacheck.service diff --git a/ruzstd/dict_tests/files/systemd-quotacheck.service.zst b/zstd/dict_tests/files/systemd-quotacheck.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-quotacheck.service.zst rename to zstd/dict_tests/files/systemd-quotacheck.service.zst diff --git a/ruzstd/dict_tests/files/systemd-random-seed.service b/zstd/dict_tests/files/systemd-random-seed.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-random-seed.service rename to zstd/dict_tests/files/systemd-random-seed.service diff --git a/ruzstd/dict_tests/files/systemd-random-seed.service.zst b/zstd/dict_tests/files/systemd-random-seed.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-random-seed.service.zst rename to zstd/dict_tests/files/systemd-random-seed.service.zst diff --git a/ruzstd/dict_tests/files/systemd-reboot.service b/zstd/dict_tests/files/systemd-reboot.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-reboot.service rename to zstd/dict_tests/files/systemd-reboot.service diff --git a/ruzstd/dict_tests/files/systemd-reboot.service.zst b/zstd/dict_tests/files/systemd-reboot.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-reboot.service.zst rename to zstd/dict_tests/files/systemd-reboot.service.zst diff --git a/ruzstd/dict_tests/files/systemd-remount-fs.service b/zstd/dict_tests/files/systemd-remount-fs.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-remount-fs.service rename to zstd/dict_tests/files/systemd-remount-fs.service diff --git a/ruzstd/dict_tests/files/systemd-remount-fs.service.zst b/zstd/dict_tests/files/systemd-remount-fs.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-remount-fs.service.zst rename to zstd/dict_tests/files/systemd-remount-fs.service.zst diff --git a/ruzstd/dict_tests/files/systemd-resolved.service b/zstd/dict_tests/files/systemd-resolved.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-resolved.service rename to zstd/dict_tests/files/systemd-resolved.service diff --git a/ruzstd/dict_tests/files/systemd-resolved.service.zst b/zstd/dict_tests/files/systemd-resolved.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-resolved.service.zst rename to zstd/dict_tests/files/systemd-resolved.service.zst diff --git a/ruzstd/dict_tests/files/systemd-rfkill.service b/zstd/dict_tests/files/systemd-rfkill.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-rfkill.service rename to zstd/dict_tests/files/systemd-rfkill.service diff --git a/ruzstd/dict_tests/files/systemd-rfkill.service.zst b/zstd/dict_tests/files/systemd-rfkill.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-rfkill.service.zst rename to zstd/dict_tests/files/systemd-rfkill.service.zst diff --git a/ruzstd/dict_tests/files/systemd-suspend-then-hibernate.service b/zstd/dict_tests/files/systemd-suspend-then-hibernate.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-suspend-then-hibernate.service rename to zstd/dict_tests/files/systemd-suspend-then-hibernate.service diff --git a/ruzstd/dict_tests/files/systemd-suspend-then-hibernate.service.zst b/zstd/dict_tests/files/systemd-suspend-then-hibernate.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-suspend-then-hibernate.service.zst rename to zstd/dict_tests/files/systemd-suspend-then-hibernate.service.zst diff --git a/ruzstd/dict_tests/files/systemd-suspend.service b/zstd/dict_tests/files/systemd-suspend.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-suspend.service rename to zstd/dict_tests/files/systemd-suspend.service diff --git a/ruzstd/dict_tests/files/systemd-suspend.service.zst b/zstd/dict_tests/files/systemd-suspend.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-suspend.service.zst rename to zstd/dict_tests/files/systemd-suspend.service.zst diff --git a/ruzstd/dict_tests/files/systemd-sysctl.service b/zstd/dict_tests/files/systemd-sysctl.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-sysctl.service rename to zstd/dict_tests/files/systemd-sysctl.service diff --git a/ruzstd/dict_tests/files/systemd-sysctl.service.zst b/zstd/dict_tests/files/systemd-sysctl.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-sysctl.service.zst rename to zstd/dict_tests/files/systemd-sysctl.service.zst diff --git a/ruzstd/dict_tests/files/systemd-sysusers.service b/zstd/dict_tests/files/systemd-sysusers.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-sysusers.service rename to zstd/dict_tests/files/systemd-sysusers.service diff --git a/ruzstd/dict_tests/files/systemd-sysusers.service.zst b/zstd/dict_tests/files/systemd-sysusers.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-sysusers.service.zst rename to zstd/dict_tests/files/systemd-sysusers.service.zst diff --git a/ruzstd/dict_tests/files/systemd-time-wait-sync.service b/zstd/dict_tests/files/systemd-time-wait-sync.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-time-wait-sync.service rename to zstd/dict_tests/files/systemd-time-wait-sync.service diff --git a/ruzstd/dict_tests/files/systemd-time-wait-sync.service.zst b/zstd/dict_tests/files/systemd-time-wait-sync.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-time-wait-sync.service.zst rename to zstd/dict_tests/files/systemd-time-wait-sync.service.zst diff --git a/ruzstd/dict_tests/files/systemd-timedated.service b/zstd/dict_tests/files/systemd-timedated.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-timedated.service rename to zstd/dict_tests/files/systemd-timedated.service diff --git a/ruzstd/dict_tests/files/systemd-timedated.service.zst b/zstd/dict_tests/files/systemd-timedated.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-timedated.service.zst rename to zstd/dict_tests/files/systemd-timedated.service.zst diff --git a/ruzstd/dict_tests/files/systemd-timesyncd.service b/zstd/dict_tests/files/systemd-timesyncd.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-timesyncd.service rename to zstd/dict_tests/files/systemd-timesyncd.service diff --git a/ruzstd/dict_tests/files/systemd-timesyncd.service.zst b/zstd/dict_tests/files/systemd-timesyncd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-timesyncd.service.zst rename to zstd/dict_tests/files/systemd-timesyncd.service.zst diff --git a/ruzstd/dict_tests/files/systemd-tmpfiles-clean.service b/zstd/dict_tests/files/systemd-tmpfiles-clean.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-tmpfiles-clean.service rename to zstd/dict_tests/files/systemd-tmpfiles-clean.service diff --git a/ruzstd/dict_tests/files/systemd-tmpfiles-clean.service.zst b/zstd/dict_tests/files/systemd-tmpfiles-clean.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-tmpfiles-clean.service.zst rename to zstd/dict_tests/files/systemd-tmpfiles-clean.service.zst diff --git a/ruzstd/dict_tests/files/systemd-tmpfiles-setup-dev.service b/zstd/dict_tests/files/systemd-tmpfiles-setup-dev.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-tmpfiles-setup-dev.service rename to zstd/dict_tests/files/systemd-tmpfiles-setup-dev.service diff --git a/ruzstd/dict_tests/files/systemd-tmpfiles-setup-dev.service.zst b/zstd/dict_tests/files/systemd-tmpfiles-setup-dev.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-tmpfiles-setup-dev.service.zst rename to zstd/dict_tests/files/systemd-tmpfiles-setup-dev.service.zst diff --git a/ruzstd/dict_tests/files/systemd-tmpfiles-setup.service b/zstd/dict_tests/files/systemd-tmpfiles-setup.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-tmpfiles-setup.service rename to zstd/dict_tests/files/systemd-tmpfiles-setup.service diff --git a/ruzstd/dict_tests/files/systemd-tmpfiles-setup.service.zst b/zstd/dict_tests/files/systemd-tmpfiles-setup.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-tmpfiles-setup.service.zst rename to zstd/dict_tests/files/systemd-tmpfiles-setup.service.zst diff --git a/ruzstd/dict_tests/files/systemd-udev-settle.service b/zstd/dict_tests/files/systemd-udev-settle.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-udev-settle.service rename to zstd/dict_tests/files/systemd-udev-settle.service diff --git a/ruzstd/dict_tests/files/systemd-udev-settle.service.zst b/zstd/dict_tests/files/systemd-udev-settle.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-udev-settle.service.zst rename to zstd/dict_tests/files/systemd-udev-settle.service.zst diff --git a/ruzstd/dict_tests/files/systemd-udev-trigger.service b/zstd/dict_tests/files/systemd-udev-trigger.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-udev-trigger.service rename to zstd/dict_tests/files/systemd-udev-trigger.service diff --git a/ruzstd/dict_tests/files/systemd-udev-trigger.service.zst b/zstd/dict_tests/files/systemd-udev-trigger.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-udev-trigger.service.zst rename to zstd/dict_tests/files/systemd-udev-trigger.service.zst diff --git a/ruzstd/dict_tests/files/systemd-udevd.service b/zstd/dict_tests/files/systemd-udevd.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-udevd.service rename to zstd/dict_tests/files/systemd-udevd.service diff --git a/ruzstd/dict_tests/files/systemd-udevd.service.zst b/zstd/dict_tests/files/systemd-udevd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-udevd.service.zst rename to zstd/dict_tests/files/systemd-udevd.service.zst diff --git a/ruzstd/dict_tests/files/systemd-update-done.service b/zstd/dict_tests/files/systemd-update-done.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-update-done.service rename to zstd/dict_tests/files/systemd-update-done.service diff --git a/ruzstd/dict_tests/files/systemd-update-done.service.zst b/zstd/dict_tests/files/systemd-update-done.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-update-done.service.zst rename to zstd/dict_tests/files/systemd-update-done.service.zst diff --git a/ruzstd/dict_tests/files/systemd-update-utmp.service b/zstd/dict_tests/files/systemd-update-utmp.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-update-utmp.service rename to zstd/dict_tests/files/systemd-update-utmp.service diff --git a/ruzstd/dict_tests/files/systemd-update-utmp.service.zst b/zstd/dict_tests/files/systemd-update-utmp.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-update-utmp.service.zst rename to zstd/dict_tests/files/systemd-update-utmp.service.zst diff --git a/ruzstd/dict_tests/files/systemd-user-sessions.service b/zstd/dict_tests/files/systemd-user-sessions.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-user-sessions.service rename to zstd/dict_tests/files/systemd-user-sessions.service diff --git a/ruzstd/dict_tests/files/systemd-user-sessions.service.zst b/zstd/dict_tests/files/systemd-user-sessions.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-user-sessions.service.zst rename to zstd/dict_tests/files/systemd-user-sessions.service.zst diff --git a/ruzstd/dict_tests/files/systemd-vconsole-setup.service b/zstd/dict_tests/files/systemd-vconsole-setup.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-vconsole-setup.service rename to zstd/dict_tests/files/systemd-vconsole-setup.service diff --git a/ruzstd/dict_tests/files/systemd-vconsole-setup.service.zst b/zstd/dict_tests/files/systemd-vconsole-setup.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-vconsole-setup.service.zst rename to zstd/dict_tests/files/systemd-vconsole-setup.service.zst diff --git a/ruzstd/dict_tests/files/systemd-volatile-root.service b/zstd/dict_tests/files/systemd-volatile-root.service similarity index 100% rename from ruzstd/dict_tests/files/systemd-volatile-root.service rename to zstd/dict_tests/files/systemd-volatile-root.service diff --git a/ruzstd/dict_tests/files/systemd-volatile-root.service.zst b/zstd/dict_tests/files/systemd-volatile-root.service.zst similarity index 100% rename from ruzstd/dict_tests/files/systemd-volatile-root.service.zst rename to zstd/dict_tests/files/systemd-volatile-root.service.zst diff --git a/ruzstd/dict_tests/files/talk.service b/zstd/dict_tests/files/talk.service similarity index 100% rename from ruzstd/dict_tests/files/talk.service rename to zstd/dict_tests/files/talk.service diff --git a/ruzstd/dict_tests/files/talk.service.zst b/zstd/dict_tests/files/talk.service.zst similarity index 100% rename from ruzstd/dict_tests/files/talk.service.zst rename to zstd/dict_tests/files/talk.service.zst diff --git a/ruzstd/dict_tests/files/teamd@.service b/zstd/dict_tests/files/teamd@.service similarity index 100% rename from ruzstd/dict_tests/files/teamd@.service rename to zstd/dict_tests/files/teamd@.service diff --git a/ruzstd/dict_tests/files/teamd@.service.zst b/zstd/dict_tests/files/teamd@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/teamd@.service.zst rename to zstd/dict_tests/files/teamd@.service.zst diff --git a/ruzstd/dict_tests/files/telnet@.service b/zstd/dict_tests/files/telnet@.service similarity index 100% rename from ruzstd/dict_tests/files/telnet@.service rename to zstd/dict_tests/files/telnet@.service diff --git a/ruzstd/dict_tests/files/telnet@.service.zst b/zstd/dict_tests/files/telnet@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/telnet@.service.zst rename to zstd/dict_tests/files/telnet@.service.zst diff --git a/ruzstd/dict_tests/files/udisks2.service b/zstd/dict_tests/files/udisks2.service similarity index 100% rename from ruzstd/dict_tests/files/udisks2.service rename to zstd/dict_tests/files/udisks2.service diff --git a/ruzstd/dict_tests/files/udisks2.service.zst b/zstd/dict_tests/files/udisks2.service.zst similarity index 100% rename from ruzstd/dict_tests/files/udisks2.service.zst rename to zstd/dict_tests/files/udisks2.service.zst diff --git a/ruzstd/dict_tests/files/upower.service b/zstd/dict_tests/files/upower.service similarity index 100% rename from ruzstd/dict_tests/files/upower.service rename to zstd/dict_tests/files/upower.service diff --git a/ruzstd/dict_tests/files/upower.service.zst b/zstd/dict_tests/files/upower.service.zst similarity index 100% rename from ruzstd/dict_tests/files/upower.service.zst rename to zstd/dict_tests/files/upower.service.zst diff --git a/ruzstd/dict_tests/files/usbipd.service b/zstd/dict_tests/files/usbipd.service similarity index 100% rename from ruzstd/dict_tests/files/usbipd.service rename to zstd/dict_tests/files/usbipd.service diff --git a/ruzstd/dict_tests/files/usbipd.service.zst b/zstd/dict_tests/files/usbipd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/usbipd.service.zst rename to zstd/dict_tests/files/usbipd.service.zst diff --git a/ruzstd/dict_tests/files/usbmuxd.service b/zstd/dict_tests/files/usbmuxd.service similarity index 100% rename from ruzstd/dict_tests/files/usbmuxd.service rename to zstd/dict_tests/files/usbmuxd.service diff --git a/ruzstd/dict_tests/files/usbmuxd.service.zst b/zstd/dict_tests/files/usbmuxd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/usbmuxd.service.zst rename to zstd/dict_tests/files/usbmuxd.service.zst diff --git a/ruzstd/dict_tests/files/user-runtime-dir@.service b/zstd/dict_tests/files/user-runtime-dir@.service similarity index 100% rename from ruzstd/dict_tests/files/user-runtime-dir@.service rename to zstd/dict_tests/files/user-runtime-dir@.service diff --git a/ruzstd/dict_tests/files/user-runtime-dir@.service.zst b/zstd/dict_tests/files/user-runtime-dir@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/user-runtime-dir@.service.zst rename to zstd/dict_tests/files/user-runtime-dir@.service.zst diff --git a/ruzstd/dict_tests/files/user@.service b/zstd/dict_tests/files/user@.service similarity index 100% rename from ruzstd/dict_tests/files/user@.service rename to zstd/dict_tests/files/user@.service diff --git a/ruzstd/dict_tests/files/user@.service.zst b/zstd/dict_tests/files/user@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/user@.service.zst rename to zstd/dict_tests/files/user@.service.zst diff --git a/ruzstd/dict_tests/files/uuidd.service b/zstd/dict_tests/files/uuidd.service similarity index 100% rename from ruzstd/dict_tests/files/uuidd.service rename to zstd/dict_tests/files/uuidd.service diff --git a/ruzstd/dict_tests/files/uuidd.service.zst b/zstd/dict_tests/files/uuidd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/uuidd.service.zst rename to zstd/dict_tests/files/uuidd.service.zst diff --git a/ruzstd/dict_tests/files/virtinterfaced.service b/zstd/dict_tests/files/virtinterfaced.service similarity index 100% rename from ruzstd/dict_tests/files/virtinterfaced.service rename to zstd/dict_tests/files/virtinterfaced.service diff --git a/ruzstd/dict_tests/files/virtinterfaced.service.zst b/zstd/dict_tests/files/virtinterfaced.service.zst similarity index 100% rename from ruzstd/dict_tests/files/virtinterfaced.service.zst rename to zstd/dict_tests/files/virtinterfaced.service.zst diff --git a/ruzstd/dict_tests/files/virtlockd.service b/zstd/dict_tests/files/virtlockd.service similarity index 100% rename from ruzstd/dict_tests/files/virtlockd.service rename to zstd/dict_tests/files/virtlockd.service diff --git a/ruzstd/dict_tests/files/virtlockd.service.zst b/zstd/dict_tests/files/virtlockd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/virtlockd.service.zst rename to zstd/dict_tests/files/virtlockd.service.zst diff --git a/ruzstd/dict_tests/files/virtlogd.service b/zstd/dict_tests/files/virtlogd.service similarity index 100% rename from ruzstd/dict_tests/files/virtlogd.service rename to zstd/dict_tests/files/virtlogd.service diff --git a/ruzstd/dict_tests/files/virtlogd.service.zst b/zstd/dict_tests/files/virtlogd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/virtlogd.service.zst rename to zstd/dict_tests/files/virtlogd.service.zst diff --git a/ruzstd/dict_tests/files/virtlxcd.service b/zstd/dict_tests/files/virtlxcd.service similarity index 100% rename from ruzstd/dict_tests/files/virtlxcd.service rename to zstd/dict_tests/files/virtlxcd.service diff --git a/ruzstd/dict_tests/files/virtlxcd.service.zst b/zstd/dict_tests/files/virtlxcd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/virtlxcd.service.zst rename to zstd/dict_tests/files/virtlxcd.service.zst diff --git a/ruzstd/dict_tests/files/virtnetworkd.service b/zstd/dict_tests/files/virtnetworkd.service similarity index 100% rename from ruzstd/dict_tests/files/virtnetworkd.service rename to zstd/dict_tests/files/virtnetworkd.service diff --git a/ruzstd/dict_tests/files/virtnetworkd.service.zst b/zstd/dict_tests/files/virtnetworkd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/virtnetworkd.service.zst rename to zstd/dict_tests/files/virtnetworkd.service.zst diff --git a/ruzstd/dict_tests/files/virtnodedevd.service b/zstd/dict_tests/files/virtnodedevd.service similarity index 100% rename from ruzstd/dict_tests/files/virtnodedevd.service rename to zstd/dict_tests/files/virtnodedevd.service diff --git a/ruzstd/dict_tests/files/virtnodedevd.service.zst b/zstd/dict_tests/files/virtnodedevd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/virtnodedevd.service.zst rename to zstd/dict_tests/files/virtnodedevd.service.zst diff --git a/ruzstd/dict_tests/files/virtnwfilterd.service b/zstd/dict_tests/files/virtnwfilterd.service similarity index 100% rename from ruzstd/dict_tests/files/virtnwfilterd.service rename to zstd/dict_tests/files/virtnwfilterd.service diff --git a/ruzstd/dict_tests/files/virtnwfilterd.service.zst b/zstd/dict_tests/files/virtnwfilterd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/virtnwfilterd.service.zst rename to zstd/dict_tests/files/virtnwfilterd.service.zst diff --git a/ruzstd/dict_tests/files/virtproxyd.service b/zstd/dict_tests/files/virtproxyd.service similarity index 100% rename from ruzstd/dict_tests/files/virtproxyd.service rename to zstd/dict_tests/files/virtproxyd.service diff --git a/ruzstd/dict_tests/files/virtproxyd.service.zst b/zstd/dict_tests/files/virtproxyd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/virtproxyd.service.zst rename to zstd/dict_tests/files/virtproxyd.service.zst diff --git a/ruzstd/dict_tests/files/virtqemud.service b/zstd/dict_tests/files/virtqemud.service similarity index 100% rename from ruzstd/dict_tests/files/virtqemud.service rename to zstd/dict_tests/files/virtqemud.service diff --git a/ruzstd/dict_tests/files/virtqemud.service.zst b/zstd/dict_tests/files/virtqemud.service.zst similarity index 100% rename from ruzstd/dict_tests/files/virtqemud.service.zst rename to zstd/dict_tests/files/virtqemud.service.zst diff --git a/ruzstd/dict_tests/files/virtsecretd.service b/zstd/dict_tests/files/virtsecretd.service similarity index 100% rename from ruzstd/dict_tests/files/virtsecretd.service rename to zstd/dict_tests/files/virtsecretd.service diff --git a/ruzstd/dict_tests/files/virtsecretd.service.zst b/zstd/dict_tests/files/virtsecretd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/virtsecretd.service.zst rename to zstd/dict_tests/files/virtsecretd.service.zst diff --git a/ruzstd/dict_tests/files/virtstoraged.service b/zstd/dict_tests/files/virtstoraged.service similarity index 100% rename from ruzstd/dict_tests/files/virtstoraged.service rename to zstd/dict_tests/files/virtstoraged.service diff --git a/ruzstd/dict_tests/files/virtstoraged.service.zst b/zstd/dict_tests/files/virtstoraged.service.zst similarity index 100% rename from ruzstd/dict_tests/files/virtstoraged.service.zst rename to zstd/dict_tests/files/virtstoraged.service.zst diff --git a/ruzstd/dict_tests/files/virtvboxd.service b/zstd/dict_tests/files/virtvboxd.service similarity index 100% rename from ruzstd/dict_tests/files/virtvboxd.service rename to zstd/dict_tests/files/virtvboxd.service diff --git a/ruzstd/dict_tests/files/virtvboxd.service.zst b/zstd/dict_tests/files/virtvboxd.service.zst similarity index 100% rename from ruzstd/dict_tests/files/virtvboxd.service.zst rename to zstd/dict_tests/files/virtvboxd.service.zst diff --git a/ruzstd/dict_tests/files/wpa_supplicant-nl80211@.service b/zstd/dict_tests/files/wpa_supplicant-nl80211@.service similarity index 100% rename from ruzstd/dict_tests/files/wpa_supplicant-nl80211@.service rename to zstd/dict_tests/files/wpa_supplicant-nl80211@.service diff --git a/ruzstd/dict_tests/files/wpa_supplicant-nl80211@.service.zst b/zstd/dict_tests/files/wpa_supplicant-nl80211@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/wpa_supplicant-nl80211@.service.zst rename to zstd/dict_tests/files/wpa_supplicant-nl80211@.service.zst diff --git a/ruzstd/dict_tests/files/wpa_supplicant-wired@.service b/zstd/dict_tests/files/wpa_supplicant-wired@.service similarity index 100% rename from ruzstd/dict_tests/files/wpa_supplicant-wired@.service rename to zstd/dict_tests/files/wpa_supplicant-wired@.service diff --git a/ruzstd/dict_tests/files/wpa_supplicant-wired@.service.zst b/zstd/dict_tests/files/wpa_supplicant-wired@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/wpa_supplicant-wired@.service.zst rename to zstd/dict_tests/files/wpa_supplicant-wired@.service.zst diff --git a/ruzstd/dict_tests/files/wpa_supplicant.service b/zstd/dict_tests/files/wpa_supplicant.service similarity index 100% rename from ruzstd/dict_tests/files/wpa_supplicant.service rename to zstd/dict_tests/files/wpa_supplicant.service diff --git a/ruzstd/dict_tests/files/wpa_supplicant.service.zst b/zstd/dict_tests/files/wpa_supplicant.service.zst similarity index 100% rename from ruzstd/dict_tests/files/wpa_supplicant.service.zst rename to zstd/dict_tests/files/wpa_supplicant.service.zst diff --git a/ruzstd/dict_tests/files/wpa_supplicant@.service b/zstd/dict_tests/files/wpa_supplicant@.service similarity index 100% rename from ruzstd/dict_tests/files/wpa_supplicant@.service rename to zstd/dict_tests/files/wpa_supplicant@.service diff --git a/ruzstd/dict_tests/files/wpa_supplicant@.service.zst b/zstd/dict_tests/files/wpa_supplicant@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/wpa_supplicant@.service.zst rename to zstd/dict_tests/files/wpa_supplicant@.service.zst diff --git a/ruzstd/dict_tests/files/xfs_scrub@.service b/zstd/dict_tests/files/xfs_scrub@.service similarity index 100% rename from ruzstd/dict_tests/files/xfs_scrub@.service rename to zstd/dict_tests/files/xfs_scrub@.service diff --git a/ruzstd/dict_tests/files/xfs_scrub@.service.zst b/zstd/dict_tests/files/xfs_scrub@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/xfs_scrub@.service.zst rename to zstd/dict_tests/files/xfs_scrub@.service.zst diff --git a/ruzstd/dict_tests/files/xfs_scrub_all.service b/zstd/dict_tests/files/xfs_scrub_all.service similarity index 100% rename from ruzstd/dict_tests/files/xfs_scrub_all.service rename to zstd/dict_tests/files/xfs_scrub_all.service diff --git a/ruzstd/dict_tests/files/xfs_scrub_all.service.zst b/zstd/dict_tests/files/xfs_scrub_all.service.zst similarity index 100% rename from ruzstd/dict_tests/files/xfs_scrub_all.service.zst rename to zstd/dict_tests/files/xfs_scrub_all.service.zst diff --git a/ruzstd/dict_tests/files/xfs_scrub_fail@.service b/zstd/dict_tests/files/xfs_scrub_fail@.service similarity index 100% rename from ruzstd/dict_tests/files/xfs_scrub_fail@.service rename to zstd/dict_tests/files/xfs_scrub_fail@.service diff --git a/ruzstd/dict_tests/files/xfs_scrub_fail@.service.zst b/zstd/dict_tests/files/xfs_scrub_fail@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/xfs_scrub_fail@.service.zst rename to zstd/dict_tests/files/xfs_scrub_fail@.service.zst diff --git a/ruzstd/dict_tests/files/zram-setup@.service b/zstd/dict_tests/files/zram-setup@.service similarity index 100% rename from ruzstd/dict_tests/files/zram-setup@.service rename to zstd/dict_tests/files/zram-setup@.service diff --git a/ruzstd/dict_tests/files/zram-setup@.service.zst b/zstd/dict_tests/files/zram-setup@.service.zst similarity index 100% rename from ruzstd/dict_tests/files/zram-setup@.service.zst rename to zstd/dict_tests/files/zram-setup@.service.zst diff --git a/ruzstd/fuzz/.gitignore b/zstd/fuzz/.gitignore similarity index 100% rename from ruzstd/fuzz/.gitignore rename to zstd/fuzz/.gitignore diff --git a/ruzstd/fuzz/Cargo.toml b/zstd/fuzz/Cargo.toml similarity index 91% rename from ruzstd/fuzz/Cargo.toml rename to zstd/fuzz/Cargo.toml index 77448d6b..beac80ff 100644 --- a/ruzstd/fuzz/Cargo.toml +++ b/zstd/fuzz/Cargo.toml @@ -1,6 +1,6 @@ [package] -name = "ruzstd-fuzz" +name = "structured-zstd-fuzz" version = "0.0.1" authors = ["Automatically generated"] publish = false @@ -11,7 +11,7 @@ cargo-fuzz = true [dependencies] zstd = "0.5.1+zstd.1.4.4" -[dependencies.ruzstd] +[dependencies.structured-zstd] path = ".." features = ["fuzz_exports"] [dependencies.libfuzzer-sys] diff --git a/ruzstd/fuzz/artifacts/decode/crash-003e8871ae1b398af243ed3bdd895e6a9b417d09 b/zstd/fuzz/artifacts/decode/crash-003e8871ae1b398af243ed3bdd895e6a9b417d09 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-003e8871ae1b398af243ed3bdd895e6a9b417d09 rename to zstd/fuzz/artifacts/decode/crash-003e8871ae1b398af243ed3bdd895e6a9b417d09 diff --git a/ruzstd/fuzz/artifacts/decode/crash-06be9bcd30e08d36a1231291fdc393be2286ccd1 b/zstd/fuzz/artifacts/decode/crash-06be9bcd30e08d36a1231291fdc393be2286ccd1 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-06be9bcd30e08d36a1231291fdc393be2286ccd1 rename to zstd/fuzz/artifacts/decode/crash-06be9bcd30e08d36a1231291fdc393be2286ccd1 diff --git a/ruzstd/fuzz/artifacts/decode/crash-0b8dd1ec99c11d29f489b7ed1ea0a641b22f1c4b b/zstd/fuzz/artifacts/decode/crash-0b8dd1ec99c11d29f489b7ed1ea0a641b22f1c4b similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-0b8dd1ec99c11d29f489b7ed1ea0a641b22f1c4b rename to zstd/fuzz/artifacts/decode/crash-0b8dd1ec99c11d29f489b7ed1ea0a641b22f1c4b diff --git a/ruzstd/fuzz/artifacts/decode/crash-0e471543b70867a4e3d6884e281e504018f6a4e0 b/zstd/fuzz/artifacts/decode/crash-0e471543b70867a4e3d6884e281e504018f6a4e0 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-0e471543b70867a4e3d6884e281e504018f6a4e0 rename to zstd/fuzz/artifacts/decode/crash-0e471543b70867a4e3d6884e281e504018f6a4e0 diff --git a/ruzstd/fuzz/artifacts/decode/crash-13621a677af75daa6007d30f8e91a6706ce8b2b7 b/zstd/fuzz/artifacts/decode/crash-13621a677af75daa6007d30f8e91a6706ce8b2b7 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-13621a677af75daa6007d30f8e91a6706ce8b2b7 rename to zstd/fuzz/artifacts/decode/crash-13621a677af75daa6007d30f8e91a6706ce8b2b7 diff --git a/ruzstd/fuzz/artifacts/decode/crash-1f4e23456d1aa3bcd5a13947ba1b71536c479a3a b/zstd/fuzz/artifacts/decode/crash-1f4e23456d1aa3bcd5a13947ba1b71536c479a3a similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-1f4e23456d1aa3bcd5a13947ba1b71536c479a3a rename to zstd/fuzz/artifacts/decode/crash-1f4e23456d1aa3bcd5a13947ba1b71536c479a3a diff --git a/ruzstd/fuzz/artifacts/decode/crash-285afb3e50455f20ba4f19ffdd3ca2767771d67c b/zstd/fuzz/artifacts/decode/crash-285afb3e50455f20ba4f19ffdd3ca2767771d67c similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-285afb3e50455f20ba4f19ffdd3ca2767771d67c rename to zstd/fuzz/artifacts/decode/crash-285afb3e50455f20ba4f19ffdd3ca2767771d67c diff --git a/ruzstd/fuzz/artifacts/decode/crash-2a4da82402386b074fd8be53271812ce2d8e2b18 b/zstd/fuzz/artifacts/decode/crash-2a4da82402386b074fd8be53271812ce2d8e2b18 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-2a4da82402386b074fd8be53271812ce2d8e2b18 rename to zstd/fuzz/artifacts/decode/crash-2a4da82402386b074fd8be53271812ce2d8e2b18 diff --git a/ruzstd/fuzz/artifacts/decode/crash-2ec60cbc7b68479802290177232e2472625d5e5d b/zstd/fuzz/artifacts/decode/crash-2ec60cbc7b68479802290177232e2472625d5e5d similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-2ec60cbc7b68479802290177232e2472625d5e5d rename to zstd/fuzz/artifacts/decode/crash-2ec60cbc7b68479802290177232e2472625d5e5d diff --git a/ruzstd/fuzz/artifacts/decode/crash-2f47b61c081dfbce296e9674cae4448f7bfa1277 b/zstd/fuzz/artifacts/decode/crash-2f47b61c081dfbce296e9674cae4448f7bfa1277 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-2f47b61c081dfbce296e9674cae4448f7bfa1277 rename to zstd/fuzz/artifacts/decode/crash-2f47b61c081dfbce296e9674cae4448f7bfa1277 diff --git a/ruzstd/fuzz/artifacts/decode/crash-3151768e96e3ce234cc8304da8fa51c65ec2bfb6 b/zstd/fuzz/artifacts/decode/crash-3151768e96e3ce234cc8304da8fa51c65ec2bfb6 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-3151768e96e3ce234cc8304da8fa51c65ec2bfb6 rename to zstd/fuzz/artifacts/decode/crash-3151768e96e3ce234cc8304da8fa51c65ec2bfb6 diff --git a/ruzstd/fuzz/artifacts/decode/crash-3d348c53c3db2c13e65f6a8ea95848fc9ddfaf01 b/zstd/fuzz/artifacts/decode/crash-3d348c53c3db2c13e65f6a8ea95848fc9ddfaf01 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-3d348c53c3db2c13e65f6a8ea95848fc9ddfaf01 rename to zstd/fuzz/artifacts/decode/crash-3d348c53c3db2c13e65f6a8ea95848fc9ddfaf01 diff --git a/ruzstd/fuzz/artifacts/decode/crash-431e8c5fa22def362a489a04e4f9470d9409f111 b/zstd/fuzz/artifacts/decode/crash-431e8c5fa22def362a489a04e4f9470d9409f111 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-431e8c5fa22def362a489a04e4f9470d9409f111 rename to zstd/fuzz/artifacts/decode/crash-431e8c5fa22def362a489a04e4f9470d9409f111 diff --git a/ruzstd/fuzz/artifacts/decode/crash-49bec46e6271a44740b1ab82e79e9b371d832b8c b/zstd/fuzz/artifacts/decode/crash-49bec46e6271a44740b1ab82e79e9b371d832b8c similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-49bec46e6271a44740b1ab82e79e9b371d832b8c rename to zstd/fuzz/artifacts/decode/crash-49bec46e6271a44740b1ab82e79e9b371d832b8c diff --git a/ruzstd/fuzz/artifacts/decode/crash-4d0dfb5fcd91a4c960619fdb17364f34d05f7310 b/zstd/fuzz/artifacts/decode/crash-4d0dfb5fcd91a4c960619fdb17364f34d05f7310 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-4d0dfb5fcd91a4c960619fdb17364f34d05f7310 rename to zstd/fuzz/artifacts/decode/crash-4d0dfb5fcd91a4c960619fdb17364f34d05f7310 diff --git a/ruzstd/fuzz/artifacts/decode/crash-4fda2fa7e33a2589cc514990dd9fe7ab03bf985a b/zstd/fuzz/artifacts/decode/crash-4fda2fa7e33a2589cc514990dd9fe7ab03bf985a similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-4fda2fa7e33a2589cc514990dd9fe7ab03bf985a rename to zstd/fuzz/artifacts/decode/crash-4fda2fa7e33a2589cc514990dd9fe7ab03bf985a diff --git a/ruzstd/fuzz/artifacts/decode/crash-50f1812780e355be23520eb604bcc18df1c222bb b/zstd/fuzz/artifacts/decode/crash-50f1812780e355be23520eb604bcc18df1c222bb similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-50f1812780e355be23520eb604bcc18df1c222bb rename to zstd/fuzz/artifacts/decode/crash-50f1812780e355be23520eb604bcc18df1c222bb diff --git a/ruzstd/fuzz/artifacts/decode/crash-663779067554d3f2a8c56ffc939cc7e842ed63ec b/zstd/fuzz/artifacts/decode/crash-663779067554d3f2a8c56ffc939cc7e842ed63ec similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-663779067554d3f2a8c56ffc939cc7e842ed63ec rename to zstd/fuzz/artifacts/decode/crash-663779067554d3f2a8c56ffc939cc7e842ed63ec diff --git a/ruzstd/fuzz/artifacts/decode/crash-7eb5677508a2696ad1f778c464a38303267ab4ee b/zstd/fuzz/artifacts/decode/crash-7eb5677508a2696ad1f778c464a38303267ab4ee similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-7eb5677508a2696ad1f778c464a38303267ab4ee rename to zstd/fuzz/artifacts/decode/crash-7eb5677508a2696ad1f778c464a38303267ab4ee diff --git a/ruzstd/fuzz/artifacts/decode/crash-8373dd7d83fda197b92858a7dfc101c3208c1238 b/zstd/fuzz/artifacts/decode/crash-8373dd7d83fda197b92858a7dfc101c3208c1238 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-8373dd7d83fda197b92858a7dfc101c3208c1238 rename to zstd/fuzz/artifacts/decode/crash-8373dd7d83fda197b92858a7dfc101c3208c1238 diff --git a/ruzstd/fuzz/artifacts/decode/crash-adb83ab8f58b2724f649a0cea5a5ed2004fa25c5 b/zstd/fuzz/artifacts/decode/crash-adb83ab8f58b2724f649a0cea5a5ed2004fa25c5 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-adb83ab8f58b2724f649a0cea5a5ed2004fa25c5 rename to zstd/fuzz/artifacts/decode/crash-adb83ab8f58b2724f649a0cea5a5ed2004fa25c5 diff --git a/ruzstd/fuzz/artifacts/decode/crash-b5e12760caa036f8467d9f9963606e675f913ce1 b/zstd/fuzz/artifacts/decode/crash-b5e12760caa036f8467d9f9963606e675f913ce1 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-b5e12760caa036f8467d9f9963606e675f913ce1 rename to zstd/fuzz/artifacts/decode/crash-b5e12760caa036f8467d9f9963606e675f913ce1 diff --git a/ruzstd/fuzz/artifacts/decode/crash-bacc82e4bc4975593010cae0002c55d0967da6a3 b/zstd/fuzz/artifacts/decode/crash-bacc82e4bc4975593010cae0002c55d0967da6a3 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-bacc82e4bc4975593010cae0002c55d0967da6a3 rename to zstd/fuzz/artifacts/decode/crash-bacc82e4bc4975593010cae0002c55d0967da6a3 diff --git a/ruzstd/fuzz/artifacts/decode/crash-bbead0dbe38036346fb694ad1893cec85a0b8700 b/zstd/fuzz/artifacts/decode/crash-bbead0dbe38036346fb694ad1893cec85a0b8700 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-bbead0dbe38036346fb694ad1893cec85a0b8700 rename to zstd/fuzz/artifacts/decode/crash-bbead0dbe38036346fb694ad1893cec85a0b8700 diff --git a/ruzstd/fuzz/artifacts/decode/crash-bc1ef1499329fe12f4ba10998c86778a3102452d b/zstd/fuzz/artifacts/decode/crash-bc1ef1499329fe12f4ba10998c86778a3102452d similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-bc1ef1499329fe12f4ba10998c86778a3102452d rename to zstd/fuzz/artifacts/decode/crash-bc1ef1499329fe12f4ba10998c86778a3102452d diff --git a/ruzstd/fuzz/artifacts/decode/crash-c11a4207fca22f987266fe797c83eb0bb2c9fbc4 b/zstd/fuzz/artifacts/decode/crash-c11a4207fca22f987266fe797c83eb0bb2c9fbc4 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-c11a4207fca22f987266fe797c83eb0bb2c9fbc4 rename to zstd/fuzz/artifacts/decode/crash-c11a4207fca22f987266fe797c83eb0bb2c9fbc4 diff --git a/ruzstd/fuzz/artifacts/decode/crash-c746b132a6561becc94bbaf80f0fcd22c805ae7e b/zstd/fuzz/artifacts/decode/crash-c746b132a6561becc94bbaf80f0fcd22c805ae7e similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-c746b132a6561becc94bbaf80f0fcd22c805ae7e rename to zstd/fuzz/artifacts/decode/crash-c746b132a6561becc94bbaf80f0fcd22c805ae7e diff --git a/ruzstd/fuzz/artifacts/decode/crash-ca663bc7ccd4c4e6e7a02651bc06236b11e20170 b/zstd/fuzz/artifacts/decode/crash-ca663bc7ccd4c4e6e7a02651bc06236b11e20170 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-ca663bc7ccd4c4e6e7a02651bc06236b11e20170 rename to zstd/fuzz/artifacts/decode/crash-ca663bc7ccd4c4e6e7a02651bc06236b11e20170 diff --git a/ruzstd/fuzz/artifacts/decode/crash-cb08bdd38c7904891e88d217fe105a0c7102cf46 b/zstd/fuzz/artifacts/decode/crash-cb08bdd38c7904891e88d217fe105a0c7102cf46 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-cb08bdd38c7904891e88d217fe105a0c7102cf46 rename to zstd/fuzz/artifacts/decode/crash-cb08bdd38c7904891e88d217fe105a0c7102cf46 diff --git a/ruzstd/fuzz/artifacts/decode/crash-cb2b9b0b711020aad1153f8a6fff1b5dfbf0e084 b/zstd/fuzz/artifacts/decode/crash-cb2b9b0b711020aad1153f8a6fff1b5dfbf0e084 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-cb2b9b0b711020aad1153f8a6fff1b5dfbf0e084 rename to zstd/fuzz/artifacts/decode/crash-cb2b9b0b711020aad1153f8a6fff1b5dfbf0e084 diff --git a/ruzstd/fuzz/artifacts/decode/crash-cddb11de78f42d894d9b15b23bbad791b06a7c75 b/zstd/fuzz/artifacts/decode/crash-cddb11de78f42d894d9b15b23bbad791b06a7c75 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-cddb11de78f42d894d9b15b23bbad791b06a7c75 rename to zstd/fuzz/artifacts/decode/crash-cddb11de78f42d894d9b15b23bbad791b06a7c75 diff --git a/ruzstd/fuzz/artifacts/decode/crash-d5f00d39b2b269f380d4ffc5dd40c76acf43ac13 b/zstd/fuzz/artifacts/decode/crash-d5f00d39b2b269f380d4ffc5dd40c76acf43ac13 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-d5f00d39b2b269f380d4ffc5dd40c76acf43ac13 rename to zstd/fuzz/artifacts/decode/crash-d5f00d39b2b269f380d4ffc5dd40c76acf43ac13 diff --git a/ruzstd/fuzz/artifacts/decode/crash-d7a5385da30608d3ea21916c0291e3592a627c48 b/zstd/fuzz/artifacts/decode/crash-d7a5385da30608d3ea21916c0291e3592a627c48 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-d7a5385da30608d3ea21916c0291e3592a627c48 rename to zstd/fuzz/artifacts/decode/crash-d7a5385da30608d3ea21916c0291e3592a627c48 diff --git a/ruzstd/fuzz/artifacts/decode/crash-d8943dbbbf4f0a40fdaef7375207c7778b333864 b/zstd/fuzz/artifacts/decode/crash-d8943dbbbf4f0a40fdaef7375207c7778b333864 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-d8943dbbbf4f0a40fdaef7375207c7778b333864 rename to zstd/fuzz/artifacts/decode/crash-d8943dbbbf4f0a40fdaef7375207c7778b333864 diff --git a/ruzstd/fuzz/artifacts/decode/crash-d95d11d3a0d91d39c1d5ba9added01f249b39b82 b/zstd/fuzz/artifacts/decode/crash-d95d11d3a0d91d39c1d5ba9added01f249b39b82 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-d95d11d3a0d91d39c1d5ba9added01f249b39b82 rename to zstd/fuzz/artifacts/decode/crash-d95d11d3a0d91d39c1d5ba9added01f249b39b82 diff --git a/ruzstd/fuzz/artifacts/decode/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 b/zstd/fuzz/artifacts/decode/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 rename to zstd/fuzz/artifacts/decode/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 diff --git a/ruzstd/fuzz/artifacts/decode/crash-efefea0a61c8cab9ec201ca547ec55924b51547e b/zstd/fuzz/artifacts/decode/crash-efefea0a61c8cab9ec201ca547ec55924b51547e similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-efefea0a61c8cab9ec201ca547ec55924b51547e rename to zstd/fuzz/artifacts/decode/crash-efefea0a61c8cab9ec201ca547ec55924b51547e diff --git a/ruzstd/fuzz/artifacts/decode/crash-f02fdd84d0bc12c221de04a60c81993a6bb56467 b/zstd/fuzz/artifacts/decode/crash-f02fdd84d0bc12c221de04a60c81993a6bb56467 similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-f02fdd84d0bc12c221de04a60c81993a6bb56467 rename to zstd/fuzz/artifacts/decode/crash-f02fdd84d0bc12c221de04a60c81993a6bb56467 diff --git a/ruzstd/fuzz/artifacts/decode/crash-f2c779cdf7827b4827e33eb5510e9e2d3d83371f b/zstd/fuzz/artifacts/decode/crash-f2c779cdf7827b4827e33eb5510e9e2d3d83371f similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-f2c779cdf7827b4827e33eb5510e9e2d3d83371f rename to zstd/fuzz/artifacts/decode/crash-f2c779cdf7827b4827e33eb5510e9e2d3d83371f diff --git a/ruzstd/fuzz/artifacts/decode/crash-fb4314c59f9013d610ac2b8d698c97e518fa095e b/zstd/fuzz/artifacts/decode/crash-fb4314c59f9013d610ac2b8d698c97e518fa095e similarity index 100% rename from ruzstd/fuzz/artifacts/decode/crash-fb4314c59f9013d610ac2b8d698c97e518fa095e rename to zstd/fuzz/artifacts/decode/crash-fb4314c59f9013d610ac2b8d698c97e518fa095e diff --git a/ruzstd/fuzz/artifacts/fse/crash-16fdc285684fe17e4a84ff6605c7f0e362af3dfa b/zstd/fuzz/artifacts/fse/crash-16fdc285684fe17e4a84ff6605c7f0e362af3dfa similarity index 100% rename from ruzstd/fuzz/artifacts/fse/crash-16fdc285684fe17e4a84ff6605c7f0e362af3dfa rename to zstd/fuzz/artifacts/fse/crash-16fdc285684fe17e4a84ff6605c7f0e362af3dfa diff --git a/ruzstd/fuzz/artifacts/fse/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 b/zstd/fuzz/artifacts/fse/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 similarity index 100% rename from ruzstd/fuzz/artifacts/fse/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 rename to zstd/fuzz/artifacts/fse/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 diff --git a/ruzstd/fuzz/artifacts/fse/crash-e587fc04ebe1b7e97d0aa916ef8d3f2cc92fb4b1 b/zstd/fuzz/artifacts/fse/crash-e587fc04ebe1b7e97d0aa916ef8d3f2cc92fb4b1 similarity index 100% rename from ruzstd/fuzz/artifacts/fse/crash-e587fc04ebe1b7e97d0aa916ef8d3f2cc92fb4b1 rename to zstd/fuzz/artifacts/fse/crash-e587fc04ebe1b7e97d0aa916ef8d3f2cc92fb4b1 diff --git a/ruzstd/fuzz/artifacts/huff0/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 b/zstd/fuzz/artifacts/huff0/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 similarity index 100% rename from ruzstd/fuzz/artifacts/huff0/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 rename to zstd/fuzz/artifacts/huff0/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 diff --git a/ruzstd/fuzz/artifacts/huff0/crash-e7d75b9bfbab3e8e4df53bb28b87a1a01ee99d3d b/zstd/fuzz/artifacts/huff0/crash-e7d75b9bfbab3e8e4df53bb28b87a1a01ee99d3d similarity index 100% rename from ruzstd/fuzz/artifacts/huff0/crash-e7d75b9bfbab3e8e4df53bb28b87a1a01ee99d3d rename to zstd/fuzz/artifacts/huff0/crash-e7d75b9bfbab3e8e4df53bb28b87a1a01ee99d3d diff --git a/ruzstd/fuzz/artifacts/interop/crash-5ba93c9db0cff93f52b521d7420e43f6eda2784f b/zstd/fuzz/artifacts/interop/crash-5ba93c9db0cff93f52b521d7420e43f6eda2784f similarity index 100% rename from ruzstd/fuzz/artifacts/interop/crash-5ba93c9db0cff93f52b521d7420e43f6eda2784f rename to zstd/fuzz/artifacts/interop/crash-5ba93c9db0cff93f52b521d7420e43f6eda2784f diff --git a/ruzstd/fuzz/artifacts/interop/crash-a9f55c479d7c420764bde5bd6c666a7997d79d26 b/zstd/fuzz/artifacts/interop/crash-a9f55c479d7c420764bde5bd6c666a7997d79d26 similarity index 100% rename from ruzstd/fuzz/artifacts/interop/crash-a9f55c479d7c420764bde5bd6c666a7997d79d26 rename to zstd/fuzz/artifacts/interop/crash-a9f55c479d7c420764bde5bd6c666a7997d79d26 diff --git a/ruzstd/fuzz/fuzz_targets/decode.rs b/zstd/fuzz/fuzz_targets/decode.rs similarity index 66% rename from ruzstd/fuzz/fuzz_targets/decode.rs rename to zstd/fuzz/fuzz_targets/decode.rs index 9fff7b81..205e418a 100644 --- a/ruzstd/fuzz/fuzz_targets/decode.rs +++ b/zstd/fuzz/fuzz_targets/decode.rs @@ -1,11 +1,11 @@ #![no_main] #[macro_use] extern crate libfuzzer_sys; -extern crate ruzstd; + use std::io::Read; fuzz_target!(|data: &[u8]| { - if let Ok(mut decoder) = ruzstd::decoding::StreamingDecoder::new(data) { + if let Ok(mut decoder) = structured_zstd::decoding::StreamingDecoder::new(data) { let mut output = Vec::new(); _ = decoder.read_to_end(&mut output); } diff --git a/ruzstd/fuzz/fuzz_targets/encode.rs b/zstd/fuzz/fuzz_targets/encode.rs similarity index 71% rename from ruzstd/fuzz/fuzz_targets/encode.rs rename to zstd/fuzz/fuzz_targets/encode.rs index 8f287463..81392466 100644 --- a/ruzstd/fuzz/fuzz_targets/encode.rs +++ b/zstd/fuzz/fuzz_targets/encode.rs @@ -1,21 +1,21 @@ #![no_main] #[macro_use] extern crate libfuzzer_sys; -extern crate ruzstd; -use ruzstd::encoding::{CompressionLevel, compress_to_vec}; + +use structured_zstd::encoding::{CompressionLevel, compress_to_vec}; fuzz_target!(|data: &[u8]| { let output = compress_to_vec(data, CompressionLevel::Uncompressed); let mut decoded = Vec::with_capacity(data.len()); - let mut decoder = ruzstd::decoding::FrameDecoder::new(); + let mut decoder = structured_zstd::decoding::FrameDecoder::new(); decoder.decode_all_to_vec(&output, &mut decoded).unwrap(); assert_eq!(data, &decoded); let output = compress_to_vec(data, CompressionLevel::Fastest); let mut decoded = Vec::with_capacity(data.len()); - let mut decoder = ruzstd::decoding::FrameDecoder::new(); + let mut decoder = structured_zstd::decoding::FrameDecoder::new(); decoder.decode_all_to_vec(&output, &mut decoded).unwrap(); assert_eq!(data, &decoded); }); diff --git a/ruzstd/fuzz/fuzz_targets/fse.rs b/zstd/fuzz/fuzz_targets/fse.rs similarity index 68% rename from ruzstd/fuzz/fuzz_targets/fse.rs rename to zstd/fuzz/fuzz_targets/fse.rs index b7e34e15..30d20a40 100644 --- a/ruzstd/fuzz/fuzz_targets/fse.rs +++ b/zstd/fuzz/fuzz_targets/fse.rs @@ -1,8 +1,8 @@ #![no_main] #[macro_use] extern crate libfuzzer_sys; -extern crate ruzstd; -use ruzstd::fse::round_trip; + +use structured_zstd::fse::round_trip; fuzz_target!(|data: &[u8]| { round_trip(data); diff --git a/ruzstd/fuzz/fuzz_targets/huff0.rs b/zstd/fuzz/fuzz_targets/huff0.rs similarity index 67% rename from ruzstd/fuzz/fuzz_targets/huff0.rs rename to zstd/fuzz/fuzz_targets/huff0.rs index 66ef425b..54dc8682 100644 --- a/ruzstd/fuzz/fuzz_targets/huff0.rs +++ b/zstd/fuzz/fuzz_targets/huff0.rs @@ -1,8 +1,8 @@ #![no_main] #[macro_use] extern crate libfuzzer_sys; -extern crate ruzstd; -use ruzstd::huff0::round_trip; + +use structured_zstd::huff0::round_trip; fuzz_target!(|data: &[u8]| { round_trip(data); diff --git a/ruzstd/fuzz/fuzz_targets/interop.rs b/zstd/fuzz/fuzz_targets/interop.rs similarity index 69% rename from ruzstd/fuzz/fuzz_targets/interop.rs rename to zstd/fuzz/fuzz_targets/interop.rs index d7b0f7a6..95804729 100644 --- a/ruzstd/fuzz/fuzz_targets/interop.rs +++ b/zstd/fuzz/fuzz_targets/interop.rs @@ -1,26 +1,26 @@ #![no_main] #[macro_use] extern crate libfuzzer_sys; -extern crate ruzstd; + use std::io::Read; -use ruzstd::encoding::{CompressionLevel, compress_to_vec}; +use structured_zstd::encoding::{CompressionLevel, compress_to_vec}; -fn decode_ruzstd(data: &mut dyn std::io::Read) -> Vec { - let mut decoder = ruzstd::decoding::StreamingDecoder::new(data).unwrap(); +fn decode_szstd(data: &mut dyn std::io::Read) -> Vec { + let mut decoder = structured_zstd::decoding::StreamingDecoder::new(data).unwrap(); let mut result: Vec = Vec::new(); decoder.read_to_end(&mut result).expect("Decoding failed"); result } -fn decode_ruzstd_writer(mut data: impl Read) -> Vec { - let mut decoder = ruzstd::decoding::FrameDecoder::new(); +fn decode_szstd_writer(mut data: impl Read) -> Vec { + let mut decoder = structured_zstd::decoding::FrameDecoder::new(); decoder.reset(&mut data).unwrap(); let mut result = vec![]; while !decoder.is_finished() || decoder.can_collect() > 0 { decoder .decode_blocks( &mut data, - ruzstd::decoding::BlockDecodingStrategy::UptoBytes(1024 * 1024), + structured_zstd::decoding::BlockDecodingStrategy::UptoBytes(1024 * 1024), ) .unwrap(); decoder.collect_to_writer(&mut result).unwrap(); @@ -32,13 +32,13 @@ fn encode_zstd(data: &[u8]) -> Result, std::io::Error> { zstd::stream::encode_all(std::io::Cursor::new(data), 3) } -fn encode_ruzstd_uncompressed(data: &mut dyn std::io::Read) -> Vec { +fn encode_szstd_uncompressed(data: &mut dyn std::io::Read) -> Vec { let mut input = Vec::new(); data.read_to_end(&mut input).unwrap(); compress_to_vec(data, CompressionLevel::Uncompressed) } -fn encode_ruzstd_compressed(data: &mut dyn std::io::Read) -> Vec { +fn encode_szstd_compressed(data: &mut dyn std::io::Read) -> Vec { let mut input = Vec::new(); data.read_to_end(&mut input).unwrap(); compress_to_vec(data, CompressionLevel::Uncompressed) @@ -53,8 +53,8 @@ fn decode_zstd(data: &[u8]) -> Result, std::io::Error> { fuzz_target!(|data: &[u8]| { // Decoding let compressed = encode_zstd(data).unwrap(); - let decoded = decode_ruzstd(&mut compressed.as_slice()); - let decoded2 = decode_ruzstd_writer(&mut compressed.as_slice()); + let decoded = decode_szstd(&mut compressed.as_slice()); + let decoded2 = decode_szstd_writer(&mut compressed.as_slice()); assert!( decoded == data, "Decoded data did not match the original input during decompression" @@ -67,7 +67,7 @@ fuzz_target!(|data: &[u8]| { // Encoding // Uncompressed encoding let mut input = data; - let compressed = encode_ruzstd_uncompressed(&mut input); + let compressed = encode_szstd_uncompressed(&mut input); let decoded = decode_zstd(&compressed).unwrap(); assert_eq!( decoded, data, @@ -75,7 +75,7 @@ fuzz_target!(|data: &[u8]| { ); // Compressed encoding let mut input = data; - let compressed = encode_ruzstd_compressed(&mut input); + let compressed = encode_szstd_compressed(&mut input); let decoded = decode_zstd(&compressed).unwrap(); assert_eq!( decoded, data, diff --git a/ruzstd/src/bit_io/bit_reader.rs b/zstd/src/bit_io/bit_reader.rs similarity index 100% rename from ruzstd/src/bit_io/bit_reader.rs rename to zstd/src/bit_io/bit_reader.rs diff --git a/ruzstd/src/bit_io/bit_reader_reverse.rs b/zstd/src/bit_io/bit_reader_reverse.rs similarity index 100% rename from ruzstd/src/bit_io/bit_reader_reverse.rs rename to zstd/src/bit_io/bit_reader_reverse.rs diff --git a/ruzstd/src/bit_io/bit_writer.rs b/zstd/src/bit_io/bit_writer.rs similarity index 100% rename from ruzstd/src/bit_io/bit_writer.rs rename to zstd/src/bit_io/bit_writer.rs diff --git a/ruzstd/src/bit_io/mod.rs b/zstd/src/bit_io/mod.rs similarity index 100% rename from ruzstd/src/bit_io/mod.rs rename to zstd/src/bit_io/mod.rs diff --git a/ruzstd/src/blocks/block.rs b/zstd/src/blocks/block.rs similarity index 100% rename from ruzstd/src/blocks/block.rs rename to zstd/src/blocks/block.rs diff --git a/ruzstd/src/blocks/literals_section.rs b/zstd/src/blocks/literals_section.rs similarity index 100% rename from ruzstd/src/blocks/literals_section.rs rename to zstd/src/blocks/literals_section.rs diff --git a/ruzstd/src/blocks/mod.rs b/zstd/src/blocks/mod.rs similarity index 100% rename from ruzstd/src/blocks/mod.rs rename to zstd/src/blocks/mod.rs diff --git a/ruzstd/src/blocks/sequence_section.rs b/zstd/src/blocks/sequence_section.rs similarity index 100% rename from ruzstd/src/blocks/sequence_section.rs rename to zstd/src/blocks/sequence_section.rs diff --git a/ruzstd/src/common/mod.rs b/zstd/src/common/mod.rs similarity index 100% rename from ruzstd/src/common/mod.rs rename to zstd/src/common/mod.rs diff --git a/ruzstd/src/decoding/block_decoder.rs b/zstd/src/decoding/block_decoder.rs similarity index 100% rename from ruzstd/src/decoding/block_decoder.rs rename to zstd/src/decoding/block_decoder.rs diff --git a/ruzstd/src/decoding/decode_buffer.rs b/zstd/src/decoding/decode_buffer.rs similarity index 100% rename from ruzstd/src/decoding/decode_buffer.rs rename to zstd/src/decoding/decode_buffer.rs diff --git a/ruzstd/src/decoding/dictionary.rs b/zstd/src/decoding/dictionary.rs similarity index 100% rename from ruzstd/src/decoding/dictionary.rs rename to zstd/src/decoding/dictionary.rs diff --git a/ruzstd/src/decoding/errors.rs b/zstd/src/decoding/errors.rs similarity index 100% rename from ruzstd/src/decoding/errors.rs rename to zstd/src/decoding/errors.rs diff --git a/ruzstd/src/decoding/frame.rs b/zstd/src/decoding/frame.rs similarity index 100% rename from ruzstd/src/decoding/frame.rs rename to zstd/src/decoding/frame.rs diff --git a/ruzstd/src/decoding/frame_decoder.rs b/zstd/src/decoding/frame_decoder.rs similarity index 99% rename from ruzstd/src/decoding/frame_decoder.rs rename to zstd/src/decoding/frame_decoder.rs index f60b5a0a..ca89326c 100644 --- a/ruzstd/src/decoding/frame_decoder.rs +++ b/zstd/src/decoding/frame_decoder.rs @@ -29,18 +29,18 @@ const MAXIMUM_ALLOWED_WINDOW_SIZE: u64 = 1024 * 1024 * 100; /// /// Workflow is as follows: /// ``` -/// use ruzstd::decoding::BlockDecodingStrategy; +/// use structured_zstd::decoding::BlockDecodingStrategy; /// /// # #[cfg(feature = "std")] /// use std::io::{Read, Write}; /// /// // no_std environments can use the crate's own Read traits /// # #[cfg(not(feature = "std"))] -/// use ruzstd::io::{Read, Write}; +/// use structured_zstd::io::{Read, Write}; /// /// fn decode_this(mut file: impl Read) { /// //Create a new decoder -/// let mut frame_dec = ruzstd::decoding::FrameDecoder::new(); +/// let mut frame_dec = structured_zstd::decoding::FrameDecoder::new(); /// let mut result = Vec::new(); /// /// // Use reset or init to make the decoder ready to decode the frame from the io::Read diff --git a/ruzstd/src/decoding/literals_section_decoder.rs b/zstd/src/decoding/literals_section_decoder.rs similarity index 100% rename from ruzstd/src/decoding/literals_section_decoder.rs rename to zstd/src/decoding/literals_section_decoder.rs diff --git a/ruzstd/src/decoding/mod.rs b/zstd/src/decoding/mod.rs similarity index 100% rename from ruzstd/src/decoding/mod.rs rename to zstd/src/decoding/mod.rs diff --git a/ruzstd/src/decoding/ringbuffer.rs b/zstd/src/decoding/ringbuffer.rs similarity index 100% rename from ruzstd/src/decoding/ringbuffer.rs rename to zstd/src/decoding/ringbuffer.rs diff --git a/ruzstd/src/decoding/scratch.rs b/zstd/src/decoding/scratch.rs similarity index 100% rename from ruzstd/src/decoding/scratch.rs rename to zstd/src/decoding/scratch.rs diff --git a/ruzstd/src/decoding/sequence_execution.rs b/zstd/src/decoding/sequence_execution.rs similarity index 100% rename from ruzstd/src/decoding/sequence_execution.rs rename to zstd/src/decoding/sequence_execution.rs diff --git a/ruzstd/src/decoding/sequence_section_decoder.rs b/zstd/src/decoding/sequence_section_decoder.rs similarity index 100% rename from ruzstd/src/decoding/sequence_section_decoder.rs rename to zstd/src/decoding/sequence_section_decoder.rs diff --git a/ruzstd/src/decoding/streaming_decoder.rs b/zstd/src/decoding/streaming_decoder.rs similarity index 98% rename from ruzstd/src/decoding/streaming_decoder.rs rename to zstd/src/decoding/streaming_decoder.rs index 8c10ba71..856a9241 100644 --- a/ruzstd/src/decoding/streaming_decoder.rs +++ b/zstd/src/decoding/streaming_decoder.rs @@ -33,7 +33,7 @@ use crate::io::{Error, Read}; /// { /// use std::fs::File; /// use std::io::Read; -/// use ruzstd::decoding::StreamingDecoder; +/// use structured_zstd::decoding::StreamingDecoder; /// /// // Read a Zstandard archive from the filesystem then decompress it into a vec. /// let mut f: File = todo!("Read a .zstd archive from somewhere"); diff --git a/ruzstd/src/dictionary/cover.rs b/zstd/src/dictionary/cover.rs similarity index 96% rename from ruzstd/src/dictionary/cover.rs rename to zstd/src/dictionary/cover.rs index 093b8b65..fa448a2d 100644 --- a/ruzstd/src/dictionary/cover.rs +++ b/zstd/src/dictionary/cover.rs @@ -28,7 +28,7 @@ pub struct Segment { /// A measure of how "ideal" a given segment would be to include in the dictionary /// /// Higher is better, there's no upper limit. This number is determined by - /// estimating the number of occurances in a given epoch + /// estimating the number of occurrences in a given epoch pub score: usize, } @@ -56,7 +56,7 @@ impl Ord for Segment { /// A re-usable allocation containing large allocations /// that are used multiple times during dictionary construction (once per epoch) pub struct Context { - /// Keeps track of the number of occurances of a particular k-mer within an epoch. + /// Keeps track of the number of occurrences of a particular k-mer within an epoch. /// /// Reset for each epoch. pub frequencies: HashMap, diff --git a/ruzstd/src/dictionary/frequency.rs b/zstd/src/dictionary/frequency.rs similarity index 67% rename from ruzstd/src/dictionary/frequency.rs rename to zstd/src/dictionary/frequency.rs index 074e7383..26085c4a 100644 --- a/ruzstd/src/dictionary/frequency.rs +++ b/zstd/src/dictionary/frequency.rs @@ -6,43 +6,49 @@ /// Computes a best effort guess as to how many times `pattern` occurs within /// `body`. While not 100% accurate, it will be accurate the vast majority of time pub fn estimate_frequency(pattern: &[u8], body: &[u8]) -> usize { + if pattern.is_empty() { + return 0; + } assert!(body.len() >= pattern.len()); // A prime number for modulo operations to reduce collisions (q) - const PRIME: isize = 2654435761; + const PRIME: i64 = 2654435761; // Number of characters in the input alphabet (d) - const ALPHABET_SIZE: isize = 256; + const ALPHABET_SIZE: i64 = 256; // Hash of input pattern (p) - let mut pattern_hash: isize = 0; + let mut pattern_hash: i64 = 0; // Hash of the current window of text (t) - let mut window_hash: isize = 0; - // High-order digit multiplier (h) - let mut h: isize = 1; - - // Precompute h (?) - h = (h * ALPHABET_SIZE) % PRIME; + let mut window_hash: i64 = 0; + // High-order digit multiplier: h = ALPHABET_SIZE^(pattern.len()-1) mod PRIME + let mut h: i64 = 1; + for _ in 0..pattern.len().saturating_sub(1) { + h = (h * ALPHABET_SIZE) % PRIME; + } // Compute initial hash values for i in 0..pattern.len() { - pattern_hash = (ALPHABET_SIZE * pattern_hash + pattern[i] as isize) % PRIME; - window_hash = (ALPHABET_SIZE * window_hash + body[i] as isize) % PRIME; + pattern_hash = (ALPHABET_SIZE * pattern_hash + pattern[i] as i64) % PRIME; + window_hash = (ALPHABET_SIZE * window_hash + body[i] as i64) % PRIME; } - let mut num_occurances = 0; + let mut num_occurrences = 0; for i in 0..=body.len() - pattern.len() { - // There's *probably* a match if these two match if pattern_hash == window_hash { - num_occurances += 1; + num_occurrences += 1; } - // Compute hash values for next window + // Compute hash for next window using rolling hash if i < body.len() - pattern.len() { - window_hash = (ALPHABET_SIZE * (window_hash - body[i] as isize * h) - + body[i + pattern.len()] as isize) + window_hash = (ALPHABET_SIZE * (window_hash - body[i] as i64 * h) + + body[i + pattern.len()] as i64) % PRIME; + // Ensure non-negative (Euclidean modulo) + if window_hash < 0 { + window_hash += PRIME; + } } } - num_occurances + num_occurrences } #[cfg(test)] diff --git a/ruzstd/src/dictionary/mod.rs b/zstd/src/dictionary/mod.rs similarity index 98% rename from ruzstd/src/dictionary/mod.rs rename to zstd/src/dictionary/mod.rs index 322f68c9..3dfd287e 100644 --- a/ruzstd/src/dictionary/mod.rs +++ b/zstd/src/dictionary/mod.rs @@ -16,7 +16,7 @@ // This segment scoring algorithm operates as follows: // For a given epoch: // - Run a reservoir sampler over the entire epoch, creating a -// reservoir of n/t, where `t` is the desired number of occurances +// reservoir of n/t, where `t` is the desired number of occurrences // we want the most common k-mers to have // - Have the ability to estimate // the frequency of a given k-mer: `f(w: k-mer)` calculates @@ -72,7 +72,7 @@ pub(super) struct DictParams { /// // Create a roughly 1mb dictionary, training off of file in `sample_files` /// let input_folder = "sample_files/"; /// let mut output = File::create("output.dict").unwrap(); -/// ruzstd::dictionary::create_raw_dict_from_dir(input_folder, &mut output, 1_000_000); +/// structured_zstd::dictionary::create_raw_dict_from_dir(input_folder, &mut output, 1_000_000); /// ``` pub fn create_raw_dict_from_dir, W: io::Write>( path: P, diff --git a/ruzstd/src/dictionary/reservoir.rs b/zstd/src/dictionary/reservoir.rs similarity index 100% rename from ruzstd/src/dictionary/reservoir.rs rename to zstd/src/dictionary/reservoir.rs diff --git a/ruzstd/src/encoding/block_header.rs b/zstd/src/encoding/block_header.rs similarity index 100% rename from ruzstd/src/encoding/block_header.rs rename to zstd/src/encoding/block_header.rs diff --git a/ruzstd/src/encoding/blocks/compressed.rs b/zstd/src/encoding/blocks/compressed.rs similarity index 100% rename from ruzstd/src/encoding/blocks/compressed.rs rename to zstd/src/encoding/blocks/compressed.rs diff --git a/ruzstd/src/encoding/blocks/mod.rs b/zstd/src/encoding/blocks/mod.rs similarity index 100% rename from ruzstd/src/encoding/blocks/mod.rs rename to zstd/src/encoding/blocks/mod.rs diff --git a/ruzstd/src/encoding/frame_compressor.rs b/zstd/src/encoding/frame_compressor.rs similarity index 96% rename from ruzstd/src/encoding/frame_compressor.rs rename to zstd/src/encoding/frame_compressor.rs index 650dce25..231885c3 100644 --- a/ruzstd/src/encoding/frame_compressor.rs +++ b/zstd/src/encoding/frame_compressor.rs @@ -24,7 +24,7 @@ use crate::io::{Read, Write}; /// /// # Examples /// ``` -/// use ruzstd::encoding::{FrameCompressor, CompressionLevel}; +/// use structured_zstd::encoding::{FrameCompressor, CompressionLevel}; /// let mock_data: &[_] = &[0x1, 0x2, 0x3, 0x4]; /// let mut output = std::vec::Vec::new(); /// // Initialize a compressor. @@ -435,14 +435,14 @@ mod tests { #[test] fn fuzz_targets() { use std::io::Read; - fn decode_ruzstd(data: &mut dyn std::io::Read) -> Vec { + fn decode_szstd(data: &mut dyn std::io::Read) -> Vec { let mut decoder = crate::decoding::StreamingDecoder::new(data).unwrap(); let mut result: Vec = Vec::new(); decoder.read_to_end(&mut result).expect("Decoding failed"); result } - fn decode_ruzstd_writer(mut data: impl Read) -> Vec { + fn decode_szstd_writer(mut data: impl Read) -> Vec { let mut decoder = crate::decoding::FrameDecoder::new(); decoder.reset(&mut data).unwrap(); let mut result = vec![]; @@ -462,7 +462,7 @@ mod tests { zstd::stream::encode_all(std::io::Cursor::new(data), 3) } - fn encode_ruzstd_uncompressed(data: &mut dyn std::io::Read) -> Vec { + fn encode_szstd_uncompressed(data: &mut dyn std::io::Read) -> Vec { let mut input = Vec::new(); data.read_to_end(&mut input).unwrap(); @@ -472,7 +472,7 @@ mod tests { ) } - fn encode_ruzstd_compressed(data: &mut dyn std::io::Read) -> Vec { + fn encode_szstd_compressed(data: &mut dyn std::io::Read) -> Vec { let mut input = Vec::new(); data.read_to_end(&mut input).unwrap(); @@ -494,8 +494,8 @@ mod tests { let data = data.as_slice(); // Decoding let compressed = encode_zstd(data).unwrap(); - let decoded = decode_ruzstd(&mut compressed.as_slice()); - let decoded2 = decode_ruzstd_writer(&mut compressed.as_slice()); + let decoded = decode_szstd(&mut compressed.as_slice()); + let decoded2 = decode_szstd_writer(&mut compressed.as_slice()); assert!( decoded == data, "Decoded data did not match the original input during decompression" @@ -508,7 +508,7 @@ mod tests { // Encoding // Uncompressed encoding let mut input = data; - let compressed = encode_ruzstd_uncompressed(&mut input); + let compressed = encode_szstd_uncompressed(&mut input); let decoded = decode_zstd(&compressed).unwrap(); assert_eq!( decoded, data, @@ -516,7 +516,7 @@ mod tests { ); // Compressed encoding let mut input = data; - let compressed = encode_ruzstd_compressed(&mut input); + let compressed = encode_szstd_compressed(&mut input); let decoded = decode_zstd(&compressed).unwrap(); assert_eq!( decoded, data, diff --git a/ruzstd/src/encoding/frame_header.rs b/zstd/src/encoding/frame_header.rs similarity index 100% rename from ruzstd/src/encoding/frame_header.rs rename to zstd/src/encoding/frame_header.rs diff --git a/ruzstd/src/encoding/levels/fastest.rs b/zstd/src/encoding/levels/fastest.rs similarity index 100% rename from ruzstd/src/encoding/levels/fastest.rs rename to zstd/src/encoding/levels/fastest.rs diff --git a/ruzstd/src/encoding/levels/mod.rs b/zstd/src/encoding/levels/mod.rs similarity index 100% rename from ruzstd/src/encoding/levels/mod.rs rename to zstd/src/encoding/levels/mod.rs diff --git a/ruzstd/src/encoding/match_generator.rs b/zstd/src/encoding/match_generator.rs similarity index 100% rename from ruzstd/src/encoding/match_generator.rs rename to zstd/src/encoding/match_generator.rs diff --git a/ruzstd/src/encoding/mod.rs b/zstd/src/encoding/mod.rs similarity index 97% rename from ruzstd/src/encoding/mod.rs rename to zstd/src/encoding/mod.rs index 5cac66e5..17a4a6f0 100644 --- a/ruzstd/src/encoding/mod.rs +++ b/zstd/src/encoding/mod.rs @@ -16,7 +16,7 @@ use alloc::vec::Vec; /// Convenience function to compress some source into a target without reusing any resources of the compressor /// ```rust -/// use ruzstd::encoding::{compress, CompressionLevel}; +/// use structured_zstd::encoding::{compress, CompressionLevel}; /// let data: &[u8] = &[0,0,0,0,0,0,0,0,0,0,0,0]; /// let mut target = Vec::new(); /// compress(data, &mut target, CompressionLevel::Fastest); @@ -30,7 +30,7 @@ pub fn compress(source: R, target: W, level: CompressionLevel /// Convenience function to compress some source into a Vec without reusing any resources of the compressor /// ```rust -/// use ruzstd::encoding::{compress_to_vec, CompressionLevel}; +/// use structured_zstd::encoding::{compress_to_vec, CompressionLevel}; /// let data: &[u8] = &[0,0,0,0,0,0,0,0,0,0,0,0]; /// let compressed = compress_to_vec(data, CompressionLevel::Fastest); /// ``` diff --git a/ruzstd/src/encoding/util.rs b/zstd/src/encoding/util.rs similarity index 100% rename from ruzstd/src/encoding/util.rs rename to zstd/src/encoding/util.rs diff --git a/ruzstd/src/fse/fse_decoder.rs b/zstd/src/fse/fse_decoder.rs similarity index 100% rename from ruzstd/src/fse/fse_decoder.rs rename to zstd/src/fse/fse_decoder.rs diff --git a/ruzstd/src/fse/fse_encoder.rs b/zstd/src/fse/fse_encoder.rs similarity index 100% rename from ruzstd/src/fse/fse_encoder.rs rename to zstd/src/fse/fse_encoder.rs diff --git a/ruzstd/src/fse/mod.rs b/zstd/src/fse/mod.rs similarity index 100% rename from ruzstd/src/fse/mod.rs rename to zstd/src/fse/mod.rs diff --git a/ruzstd/src/huff0/huff0_decoder.rs b/zstd/src/huff0/huff0_decoder.rs similarity index 100% rename from ruzstd/src/huff0/huff0_decoder.rs rename to zstd/src/huff0/huff0_decoder.rs diff --git a/ruzstd/src/huff0/huff0_encoder.rs b/zstd/src/huff0/huff0_encoder.rs similarity index 100% rename from ruzstd/src/huff0/huff0_encoder.rs rename to zstd/src/huff0/huff0_encoder.rs diff --git a/ruzstd/src/huff0/mod.rs b/zstd/src/huff0/mod.rs similarity index 100% rename from ruzstd/src/huff0/mod.rs rename to zstd/src/huff0/mod.rs diff --git a/ruzstd/src/io_nostd.rs b/zstd/src/io_nostd.rs similarity index 100% rename from ruzstd/src/io_nostd.rs rename to zstd/src/io_nostd.rs diff --git a/ruzstd/src/io_std.rs b/zstd/src/io_std.rs similarity index 100% rename from ruzstd/src/io_std.rs rename to zstd/src/io_std.rs diff --git a/ruzstd/src/lib.rs b/zstd/src/lib.rs similarity index 97% rename from ruzstd/src/lib.rs rename to zstd/src/lib.rs index 0f85407a..5df815a2 100644 --- a/ruzstd/src/lib.rs +++ b/zstd/src/lib.rs @@ -10,7 +10,7 @@ //! Compression can be achieved by using the [`encoding::compress`]/[`encoding::compress_to_vec`] //! functions or [`encoding::FrameCompressor`] //! -#![doc = include_str!("../Readme.md")] +#![doc = include_str!("../../README.md")] #![no_std] #![deny(trivial_casts, trivial_numeric_casts, rust_2018_idioms)] diff --git a/ruzstd/src/tests/bit_reader.rs b/zstd/src/tests/bit_reader.rs similarity index 100% rename from ruzstd/src/tests/bit_reader.rs rename to zstd/src/tests/bit_reader.rs diff --git a/ruzstd/src/tests/decode_corpus.rs b/zstd/src/tests/decode_corpus.rs similarity index 100% rename from ruzstd/src/tests/decode_corpus.rs rename to zstd/src/tests/decode_corpus.rs diff --git a/ruzstd/src/tests/dict_test.rs b/zstd/src/tests/dict_test.rs similarity index 100% rename from ruzstd/src/tests/dict_test.rs rename to zstd/src/tests/dict_test.rs diff --git a/ruzstd/src/tests/encode_corpus.rs b/zstd/src/tests/encode_corpus.rs similarity index 100% rename from ruzstd/src/tests/encode_corpus.rs rename to zstd/src/tests/encode_corpus.rs diff --git a/ruzstd/src/tests/fuzz_regressions.rs b/zstd/src/tests/fuzz_regressions.rs similarity index 100% rename from ruzstd/src/tests/fuzz_regressions.rs rename to zstd/src/tests/fuzz_regressions.rs diff --git a/ruzstd/src/tests/mod.rs b/zstd/src/tests/mod.rs similarity index 99% rename from ruzstd/src/tests/mod.rs rename to zstd/src/tests/mod.rs index 13090296..6cacdaa5 100644 --- a/ruzstd/src/tests/mod.rs +++ b/zstd/src/tests/mod.rs @@ -579,6 +579,9 @@ pub mod dict_test; #[cfg(feature = "std")] pub mod encode_corpus; pub mod fuzz_regressions; +#[cfg(feature = "std")] +#[allow(dead_code)] +pub mod roundtrip_integrity; #[cfg(feature = "std")] #[test] diff --git a/zstd/src/tests/roundtrip_integrity.rs b/zstd/src/tests/roundtrip_integrity.rs new file mode 100644 index 00000000..b246ced8 --- /dev/null +++ b/zstd/src/tests/roundtrip_integrity.rs @@ -0,0 +1,132 @@ +//! Roundtrip integrity tests: compress → decompress → verify data unchanged. +//! +//! Tests run 1000 iterations with random data of varying sizes and patterns +//! to ensure no data corruption in the compress/decompress pipeline. + +extern crate std; + +#[allow(unused_imports)] +use alloc::vec; +use alloc::vec::Vec; + +use crate::decoding::StreamingDecoder; +use crate::encoding::{compress_to_vec, CompressionLevel, FrameCompressor}; +use crate::io::Read; + +/// Generate deterministic pseudo-random data using a simple LCG. +fn generate_data(seed: u64, len: usize) -> Vec { + let mut state = seed; + let mut data = Vec::with_capacity(len); + for _ in 0..len { + state = state + .wrapping_mul(6364136223846793005) + .wrapping_add(1442695040888963407); + data.push((state >> 33) as u8); + } + data +} + +/// Generate highly compressible data (repeating patterns). +fn generate_compressible(seed: u64, len: usize) -> Vec { + let pattern_len = ((seed % 16) + 1) as usize; + let pattern = generate_data(seed, pattern_len); + let mut data = Vec::with_capacity(len); + for i in 0..len { + data.push(pattern[i % pattern_len]); + } + data +} + +/// Roundtrip using compress_to_vec (simple API). +fn roundtrip_simple(data: &[u8]) -> Vec { + let compressed = compress_to_vec(data, CompressionLevel::Fastest); + let mut decoder = StreamingDecoder::new(compressed.as_slice()).unwrap(); + let mut result = Vec::new(); + decoder.read_to_end(&mut result).unwrap(); + result +} + +/// Roundtrip using FrameCompressor (streaming API). +fn roundtrip_streaming(data: &[u8]) -> Vec { + let mut compressed = Vec::new(); + let mut compressor = FrameCompressor::new(CompressionLevel::Fastest); + compressor.set_source(data); + compressor.set_drain(&mut compressed); + compressor.compress(); + + let mut decoder = StreamingDecoder::new(compressed.as_slice()).unwrap(); + let mut result = Vec::new(); + decoder.read_to_end(&mut result).unwrap(); + result +} + +// Cross-validation tests (pure Rust ↔ C FFI) are in tests/cross_validation.rs +// because dev-dependencies (zstd) aren't available in library test modules. + +#[test] +fn roundtrip_random_data_1000_iterations() { + for i in 0..1000u64 { + // Vary data sizes: 0 to ~64KB + let len = (i * 67 % 65536) as usize; + let data = generate_data(i, len); + + let result = roundtrip_simple(&data); + assert_eq!( + data, result, + "Simple API roundtrip failed at iteration {i}, len={len}" + ); + } +} + +#[test] +fn roundtrip_compressible_data_1000_iterations() { + for i in 0..1000u64 { + let len = (i * 131 % 65536) as usize; + let data = generate_compressible(i, len); + + let result = roundtrip_simple(&data); + assert_eq!( + data, result, + "Compressible roundtrip failed at iteration {i}, len={len}" + ); + } +} + +#[test] +fn roundtrip_streaming_api_1000_iterations() { + for i in 0..1000u64 { + let len = (i * 97 % 32768) as usize; + let data = generate_data(i.wrapping_add(0xDEAD), len); + + let result = roundtrip_streaming(&data); + assert_eq!( + data, result, + "Streaming API roundtrip failed at iteration {i}, len={len}" + ); + } +} + +#[test] +fn roundtrip_edge_cases() { + // Empty data + assert_eq!(roundtrip_simple(&[]), vec![]); + + // Single byte + assert_eq!(roundtrip_simple(&[0x42]), vec![0x42]); + + // All zeros (maximally compressible) + let zeros = vec![0u8; 100_000]; + assert_eq!(roundtrip_simple(&zeros), zeros); + + // All 0xFF + let ones = vec![0xFFu8; 100_000]; + assert_eq!(roundtrip_simple(&ones), ones); + + // Ascending bytes (moderately compressible) + let ascending: Vec = (0..=255u8).cycle().take(100_000).collect(); + assert_eq!(roundtrip_simple(&ascending), ascending); + + // 1 byte repeated (RLE-like) + let rle = vec![0xABu8; 1_000_000]; + assert_eq!(roundtrip_simple(&rle), rle); +} diff --git a/ruzstd/test_fixtures/abc.txt.zst b/zstd/test_fixtures/abc.txt.zst similarity index 100% rename from ruzstd/test_fixtures/abc.txt.zst rename to zstd/test_fixtures/abc.txt.zst diff --git a/zstd/tests/cross_validation.rs b/zstd/tests/cross_validation.rs new file mode 100644 index 00000000..619521d0 --- /dev/null +++ b/zstd/tests/cross_validation.rs @@ -0,0 +1,54 @@ +//! Cross-validation: structured-zstd ↔ C FFI zstd roundtrip integrity. +//! +//! Tests 1000 iterations in both directions: +//! - Pure Rust compress → C FFI decompress +//! - C FFI compress → Pure Rust decompress + +use structured_zstd::decoding::StreamingDecoder; +use structured_zstd::encoding::{compress_to_vec, CompressionLevel}; +use structured_zstd::io::Read; + +/// Generate deterministic pseudo-random data using a simple LCG. +fn generate_data(seed: u64, len: usize) -> Vec { + let mut state = seed; + let mut data = Vec::with_capacity(len); + for _ in 0..len { + state = state + .wrapping_mul(6364136223846793005) + .wrapping_add(1442695040888963407); + data.push((state >> 33) as u8); + } + data +} + +#[test] +fn cross_rust_compress_ffi_decompress_1000() { + for i in 0..1000u64 { + let len = (i * 89 % 16384) as usize; + let data = generate_data(i, len); + + let compressed = compress_to_vec(&data[..], CompressionLevel::Fastest); + let result = zstd::decode_all(compressed.as_slice()).unwrap(); + assert_eq!( + data, result, + "rust→ffi roundtrip failed at iteration {i}, len={len}" + ); + } +} + +#[test] +fn cross_ffi_compress_rust_decompress_1000() { + for i in 0..1000u64 { + let len = (i * 89 % 16384) as usize; + let data = generate_data(i.wrapping_add(0xBEEF), len); + + let compressed = zstd::encode_all(&data[..], 1).unwrap(); + let mut decoder = StreamingDecoder::new(compressed.as_slice()).unwrap(); + let mut result = Vec::new(); + decoder.read_to_end(&mut result).unwrap(); + assert_eq!( + data, result, + "ffi→rust roundtrip failed at iteration {i}, len={len}" + ); + } +}