Repository navigation
Conversation
clippy 1.99 (useless_borrows_in_formatting) denies these under -D warnings; local pre-push CI runs clippy with a newer toolchain than the one that last touched src/ui.rs, so the hook fails on main without this.
setup_label embeds ANSI styling via tier_token, so asserting on the raw string fails on terminals that force colors (CLICOLOR_FORCE=1), e.g. when the pre-push hook runs cargo test from an interactive shell. Strip the escape codes before asserting.
Vulkan builds forced bindgen at build time (upstream 6a52094) to pick up the ggml_backend_vk_* symbols. That regeneration is untrustworthy on modern libclang: with clang >= 22, bindgen cannot lay out whisper_full_params (nested anonymous structs) and emits an opaque { _address: u8 } stub, corrupting the params ABI passed to whisper_full (known issue, see e.g. meetily#428; clang 23.1.3 reproduces). GitHub CI's ubuntu-latest ships clang 18 and does not hit this, which is why the regeneration path looked healthy there. Instead, bake the ggml_backend_vk_* declarations into the bundled bindings: regenerate src/bindings.rs once with bindgen 0.71.1 + libclang 18.1.1 (instructions in build.rs) and commit it. This keeps upstream's intent (vk symbols available) without any build-time bindgen. The diff vs the previous bundled bindings is limited to the ggml-vulkan additions and glibc 2.44-vs-2.41 header noise (_IO_FILE tail fields, _POSIX_C_SOURCE); no whisper.h structure changed and none of the glibc-touched fields are ever dereferenced. Verified on RADV RDNA4: device enumeration and end-to-end transcription with GPU acceleration. Also allow the rustc 1.99 unnecessary_transmutes lint for the generated bitfield accessors (bindgen 0.71 still emits transmute style; switching to cast_unsigned would raise the toolchain floor above the crate's declared MSRV).
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
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.
Summary
Vulkan builds force bindgen at build time (since 6a52094) to pick up the
ggml_backend_vk_*symbols. That regeneration is untrustworthy on modern libclang: with clang >= 22, bindgen cannot lay outwhisper_full_params(nested anonymous structs) and emits an opaque{ _address: u8 }stub, which corrupts the params ABI passed towhisper_full(known issue, see e.g. Zackriya-Solutions/meetily#428; clang 23.1.3 reproduces). GitHub CI (ubuntu-latest, clang 18) does not hit this, which is why the regeneration path looks healthy there, but it breaks vulkan builds for users on rolling distros (Arch etc.).This keeps the intent of 6a52094 (vk symbols available to whisper-rs) but bakes them in instead:
src/bindings.rsregenerated once with bindgen 0.71.1 + libclang 18.1.1 and committed. No build-time bindgen, no hand-written FFI. Regeneration instructions are documented inbuild.rs.The diff vs the previous bundled bindings is limited to the ggml-vulkan additions and glibc 2.44-vs-2.41 header noise (
_IO_FILEtail fields,_POSIX_C_SOURCE); nowhisper.hstructure changed and none of the glibc-touched fields are ever dereferenced.Also allows the rustc 1.99
unnecessary_transmuteslint for the generated bitfield accessors: bindgen 0.71 still emits transmute style, and switching tocast_unsignedwould raise the toolchain floor above the crate's declared MSRV (cast_unsigned stabilized in 1.87 > MSRV 1.85).Verification
Stack note: This is one of four single-commit PRs reviewed bottom-up:
Until the lower PRs merge, "Files changed" also shows their commits. The stacking exists because the local pre-push hook runs full CI on the working tree: on clang >= 22 machines the vulkan feature check cannot build without PR 3, and clippy 1.99 fails without PR 1, so each branch needs the ones below it to be locally verifiable. PRs 1–2 are independently green on GitHub CI (clang 18).