Repository navigation
docs: shorter README, new benchmark charts, MIT OR Apache-2.0 license - #43
Merged
Merged
Conversation
The old benchmark parsed the Kyber performance tests only and its figures came from a debug build. benchmark.py now times ML_KEM_* and Kyber* directly (median of 7 rounds of 500 calls), writes results.json, and draws two charts that replace the four old ones. make benchmark builds the release extension first. The chart dependency is in performance-tests/requirements.txt, not in requirements-dev.txt. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CXWjkNs3Htog36snV9FcXb
Same facts, fewer words: install, quick start, a shorter class tour, sizes, errors, the Kyber deprecation, security status and the new benchmark table and charts. Every Python block in it was run, and the error message it shows is the real one. The performance section now says what was measured and on what. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CXWjkNs3Htog36snV9FcXb
Adds LICENSE-MIT and LICENSE-APACHE (the Apache text is the apache.org file, 11358 bytes, SHA-256 cfc7749b...523d30) and removes LICENSE. Sets license = "MIT OR Apache-2.0" in Cargo.toml and pyproject.toml, with license-files, and drops the Public Domain classifier. The built wheel's METADATA has License-Expression: MIT OR Apache-2.0 and ships both files. Releases up to 1.0.5 stay under the Unlicense; the README, CONTRIBUTING.md, the changelog and the agent notes say so. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CXWjkNs3Htog36snV9FcXb
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ents file Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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.
This shortens the README, replaces the benchmark and its charts, and moves the project from the Unlicense to MIT OR Apache-2.0. No source code under src/ or python/ changes, so no Kyber or ML-KEM output changes either.
Commits, in order
The benchmark
The old script only parsed the Kyber performance tests, and its figures looked like they came from a debug build (Kyber768 key generation at 0.76 ms). benchmark.py now times ML_KEM_* and Kyber* directly through the public API, as the median of 7 rounds of 500 calls, and writes performance-tests/results.json. It draws two charts, latency.png and ml_kem_vs_kyber.png, in place of the four old ones. make benchmark builds the release extension first. matplotlib is listed in performance-tests/requirements.txt so CI and requirements-dev.txt do not pull it in. The chart colors passed the dataviz skill's color-blind and contrast check on a white background.
On an Intel Core i7-7700 with Python 3.14, ML_KEM_768 takes 0.052 ms for key generation, 0.058 ms for encapsulation and 0.071 ms for decapsulation. ML-KEM and the Kyber classes are within about 10 percent of each other. This is one machine and one run, and the README says so.
The README
Same facts, fewer words, about two thirds of the old length. I ran every Python block in it, and the error message it shows is the one the library raises. The security section keeps the earlier wording: the ML-KEM code passes ACVP, CCTV and Wycheproof, nobody outside the project has audited it, and there is no constant-time claim. It now points to SECURITY.md for what is open, including the Keccak stack copies.
The license
LICENSE-MIT and LICENSE-APACHE are added and LICENSE is removed. The Apache text is the file from apache.org (11358 bytes, SHA-256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30). Cargo.toml and pyproject.toml say MIT OR Apache-2.0, pyproject.toml lists both files in license-files, and the Public Domain classifier is gone. A wheel built from this branch has License-Expression: MIT OR Apache-2.0 in METADATA and contains both license files. The README, CONTRIBUTING.md, the changelog, CLAUDE.md, AGENTS.md and PLAN-2.0.md are updated. Releases up to 1.0.5 stay under the Unlicense, and the README says so.
Things to check
Verified
Not verified
Generated with Claude Code
https://claude.ai/code/session_01CXWjkNs3Htog36snV9FcXb