Repository navigation
Conversation
Quest-Claim: 0a9138ef58d17faa
…s issue Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
|
Closing: the maintainer dropped this quest on 2026-11-07 (let projects pull rind rather than send them patches). moq-dev/rind#471 deletes it with the others. (Written by Claude Opus 5.5 with high) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Claims quest/m2/adoption/iggy.md.
The Apache Iggy patch is built, tested, and benchmarked. Nothing was posted to apache/iggy. Iggy wants an approved issue assigned to the PR's author before any code, with the rationale in that person's own words, so opening it is the maintainer's step. This PR only rewrites the quest to what remains.
Waiting
gh issue list -R apache/iggy --author @me --search rind. Once you're assigned, open the PR from the patch (git am), filling in Iggy's PR template, including its AI Usage section.The patch
patches/1-rind.patchon thescratch/iggy-benchbranch, one commit on apache/iggy1fb58a6. Delete that branch once the Iggy PR is open.iggy_common'sAes256GcmEncryptor(the SDK's and CLI's client-side encryption) and the server's stream-key envelope (KeyEncryptionKey) seal and open withrind::aead::AES_256_GCM. Nonces come fromrind::rand::fill.aes-gcmdrops to a dev-dependency, kept for the bench's raw row and for two new tests showing that payloads and envelopes sealed byaes-gcmopen under rind and the other way round, so stored data and old clients keep working.aes-gcm-sivis untouched.Keyisn'tClone, so it sits behind anArc. That made the GCM variant 8 bytes next to SIV's 480, soEncryptorKindtakes#[allow(clippy::large_enum_variant)], as two other Iggy enums already do. The alternative, droppingClone, would break the API.Co-Authored-By: Claude Opus 5.5trailer, which the ASF generative-tooling guidance recommends.Facts for the issue
Facts only; Iggy wants the rationale in the author's words.
Iggy's AES-256-GCM paths: client-side encryption (
EncryptorKind::Aes256Gcm, the CLI's--encryption-key) and the stream-key envelope. Per-stream server-side encryption from apache/iggy#4615 uses AES-256-GCM-SIV, which rind lacks and which this change leaves alone.stream_encryptionbench,current-wrapperrow (Aes256GcmEncryptor), median of 3 interleaved runs pinned to one core on GitHub runners (run), encrypt / decrypt ns per op:Up to 3.6x faster on x86_64 and 1.9x on arm64. The raw RustCrypto rows, built the same both times, moved under 7% across all six runs while the wrapper moved up to 3.6x.
At 64 bytes, encrypting is mostly the per-message
getrandomnonce: RustCrypto's in-place seal takes 128 ns, its whole encrypt-with-nonce 506 ns.The cipher alone, sealing in place (local-only comparison bench, not in the patch), ns at 64 B / 16 KiB: x86_64 RustCrypto 128 / 4763, ring 77 / 2020, rind 46 / 1216. arm64 RustCrypto 138 / 6721, ring 71 / 5267, rind 61 / 4022.
iggy_commonalready links ring, so a reviewer may ask why not ring. rind is 1.3x to 1.7x faster than ring at 16 KiB.Same bench run, for context: the SIV wrapper encrypts 16 KiB in 5094 ns (x86_64) and 7822 ns (arm64), about where the old GCM wrapper was, so after this change it runs 2.9x and 1.7x slower than GCM.
Platforms: rind builds only on x86_64, aarch64, and 32-bit arm, and fails to compile elsewhere. Iggy ships x86_64 and aarch64 wheels and binaries, but
iggy_commonsits under the crates.ioiggySDK, so an SDK user on another architecture would lose the build.Licenses: rind is
(Apache-2.0 OR ISC OR MIT-0) AND (Apache-2.0 OR ISC OR MIT) AND Apache-2.0 AND ISC AND BSD-3-Clause, all withinabout.toml's accepted list. On x86_64 and aarch64 it compiles onlycfg-ifandgetrandom.Cargo.lockgains 20 entries that Iggy never builds: rind's armv7 backend (libcrux, hax-lib, fiat-crypto, curve25519-dalek 5) and its test-onlycrabgrindfeature (bindgen).Validation
Against apache/iggy
1fb58a6, with rustc 1.98.1 (Iggy pins 1.99.1, which I don't have locally):cargo test -p iggy_common --lib: 523 passed, including the 2 new compatibility tests.cargo test -p iggy --lib: 760 passed.cargo fmt --all;cargo clippy -p iggy_common --no-deps --all-features --all-targets -- -D warnings: clean. The full-workspace clippy stops onclippy::too_long_first_doc_paragraphiniggy_binary_protocol, which this patch doesn't touch; it's likely a 1.98-vs-1.99.1 lint difference.prek,cargo sort,cargo machete,taplo,typos, the license-header and third-party-license scripts, and the Docker-backed integration tests. Iggy wantsprek runand a local run before the PR opens, so whoever opens it runs them.gpt-6.1-solat medium effort (quest review --size S, round 1): score 10, no findings. Record skipped, since there is no PR for it.just checkpasses.quest check: 146 documents ok.Choices made without asking
iggy_commonhas one AES-GCM implementation.aes-gcmstays as a dev-dependency for the bench comparison and the compatibility tests.nixoswas at load 86 anddesktopwas unreachable.scratch/iggy-benchrather than a fork of apache/iggy, so nothing gets created outside moq-dev.Suggested follow-ups
crabgrinddependency out of consumers' lockfiles. Every adoption PR'sCargo.lockpicks up bindgen and clang-sys from it, which reviewers who audit dependencies will question.Models
Size: S
Implementer: Claude Code, claude-opus-5-5, high effort
Review
Not run on this branch: it only rewrites the quest, and the PR stays a draft until the maintainer acts.
🤖 Generated with Claude Code
(Written by Claude Opus 5.5 with high)