Skip to content

kernel-builder: add hash subcommand and hook up in Nix#618

Merged
danieldk merged 2 commits into
mainfrom
kernel-digest
Jun 5, 2026
Merged

kernel-builder: add hash subcommand and hook up in Nix#618
danieldk merged 2 commits into
mainfrom
kernel-digest

Conversation

@danieldk

@danieldk danieldk commented Jun 4, 2026

Copy link
Copy Markdown
Member

This change adds a hash subcommand to kernel-builder that computes the hashes of all kernel files and stores it in metadata.json. The hash of the metadata itself is not computed (since it could only be hashed without the hashes stored) and will be protected by a detached signature.

Also hook up this command in the Nix builder, so that all kernels will have file hashes going forward.

Python bindings will follow in later PRs (done already, but I'm breaking it up in smaller, reviewable parts).

@HuggingFaceDocBuilderDev

Copy link
Copy Markdown

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.

This change adds a `hash` subcommand to `kernel-builder` that computes
the hashes of all kernel files and stores it in `metadata.json`. The
hash of the metadata itself is not computed (since it could only be
hashed without the hashes stored) and will be protected by a detached
signature.

Also hook up this command in the Nix builder, so that all kernels will
have file hashes going forward.
@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown

Coverage report — kernels/

Measured on: Python 3.10 / Torch 2.12.0.
Other CI configurations are not included in this number.
Hardware-gated code paths (ROCm/XPU/NPU/Darwin/Windows) are excluded or unreachable on the Linux+CUDA runner.

Total coverage: 83.4% — threshold: 80% — ✅

Per-file breakdown
Name Stmts Miss Cover Missing
src/kernels/__init__.py 10 0 100%
src/kernels/_system.py 6 1 83% 10
src/kernels/_versions.py 63 7 89% 46, 49, 52-53, 56-57, 100
src/kernels/backends.py 194 55 72% 40, 44, 48-51, 68, 90, 108, 117, 121, 125-127, 148, 170, 181, 188-191, 201, 205-225, 233, 256-276
src/kernels/compat.py 8 1 88% 5
src/kernels/deps.py 54 4 93% 58-59, 95, 98
src/kernels/layer/__init__.py 6 0 100%
src/kernels/layer/_interval_tree.py 103 4 96% 23, 52, 147, 150
src/kernels/layer/device.py 48 14 71% 42, 47-49, 91, 96-98, 101, 149, 152, 155-157
src/kernels/layer/func.py 93 7 92% 72, 100, 154, 257, 263, 272, 290
src/kernels/layer/globals.py 5 0 100%
src/kernels/layer/kernelize.py 73 8 89% 255, 273, 281-282, 288, 292, 308-310
src/kernels/layer/layer.py 174 15 91% 166, 209, 215, 228, 320-321, 333, 342, 350, 361, 390, 394, 407, 460, 490
src/kernels/layer/mode.py 14 0 100%
src/kernels/layer/repos.py 130 34 74% 27, 33, 36-41, 61-62, 68, 71-74, 88, 92, 101-102, 108, 111-114, 121-122, 128, 131-134, 141-142, 148, 151-154, 235
src/kernels/lockfile.py 69 44 36% 37-98, 102-125
src/kernels/status.py 49 2 96% 23, 81
src/kernels/utils.py 298 60 80% 59, 71-75, 81-82, 211, 215, 218, 280, 288, 325-326, 364, 393, 398, 432, 609-614, 640, 643, 645, 651, 664-665, 686-695, 699-706, 714, 718-728, 732-739, 777, 781, 800, 802
src/kernels/variants.py 262 19 93% 56, 87, 108, 138, 247-248, 289, 291, 371-378, 384-390, 421-427, 439-445, 534-536
TOTAL 1659 275 83%

Updated by the Test kernels workflow on commit da367c1ffff5334ae45bb9081ab844e290faf6cb.

sayakpaul
sayakpaul previously approved these changes Jun 5, 2026

@sayakpaul sayakpaul left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Beautiful. Such a clean PR!

Comment thread docs/source/kernel-requirements.md Outdated
this build variant supports.
- `python-depends` (`list[str]`, optional): list of Python dependencies
from a curated set of Python dependencies.
- `digest` (`Digest`, required): hash digest of the kernel files.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(nit): required dependencies could come before optionals.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good idea, fixed.

@sayakpaul sayakpaul left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🌪️

@danieldk danieldk merged commit ae36559 into main Jun 5, 2026
54 checks passed
@danieldk danieldk deleted the kernel-digest branch June 5, 2026 11:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants