Repository navigation
deps: whisper.cpp 1.9.5 - #87
Merged
Merged
Conversation
Merged
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.
Before
The NIF builds whisper.cpp v1.9.4 from the
vendor/whisper-rs-0.16.0-patchedbranch of this repo. ggml-org/whisper.cpp released v1.9.5 on 2026-10-06.Problem
v1.9.4 ignores the abort callback during the language auto-detection, and it reads out of bounds on a model file with an invalid tensor type or a VAD model with an encoder layer count other than 4.
transcribe/3andload_model/2reach all three.After
The vendor branch carries whisper.cpp v1.9.5 (ggml 0.26.0), and both
[patch.crates-io]entries point at that commit.Vendor commit, a fast-forward that keeps the old rev reachable: 9a4232f...1f3c84e
927cfce3)d1be6fde)9a4232f1f3c84ewhisper-rs/whisper-rs-sysWhat we read, what we took, and the checks
The vendor commit moves the
sys/whisper.cppsubmodule to v1.9.5 and regeneratessys/src/bindings.rs, the fallback for a failed bindgen run, with bindgen 0.72.1 and libclang 23.whisper.hdid not change. ggml addsGGML_PREC_*values and four functions that the NIF does not call.sys/build.rsneeds no change.Upstream changes in
src/andinclude/that reach the NIF:whisper_full_with_statepasses the abort callback to the language auto-detection. The NIF runs the detection insidestate.fullwhen the language isnilor"auto"on a multilingual model, so an:abort_handlenow stops it too. An abort there makesfull()fail, andtranscribe.rsalready returns the partial result when the flag is set.0..GGML_TYPE_COUNT. Before, a malformed file indexedtype_traits[]out of bounds inload_model/2.n_encoder_layersother than 4. Before, a VAD model with fewer layers read past a heap array through:vad_model_path.whisper_full_parallel, which the NIF does not call.ANEFORGE_ENCODER, and it loads its dylib withdlopen, so the link inputs of the Metal build do not change. The changelog says so.The rest of v1.9.5 is ggml backend work (CUDA, Vulkan, Metal, SYCL, WebGPU). The CPU baseline flags are the same:
Adding CPU backend variant ggml-cpu: -msse4.2;-mf16c;-mfma;-mbmi2;-mavx;-mavx2.Skipped: no refactor applies. The NIF never calls the language-detection API directly, and whisper-rs gets no new API.
Upstream whisper-rs is still at 0.16.0 of 2026-03-12, with #277, #278, and #271 open, so issue #26 stays open.
Only the CPU variant was built locally. The CUDA, HIP, and Metal builds at v1.9.5 run in the release matrix, which is their gate.
Checks with
WHISPER_CPP_BUILD=1andGGML_NATIVE=OFF, against the pushed vendor rev:task check(format, compile, Credo, Clippy, 62 Elixir tests, 33 Rust tests, zizmor) andtask test:integration(86 tests with real inference onggml-tiny.enandggml-tiny) pass.