|
2 | 2 |
|
3 | 3 | All notable changes to this project will be documented in this file. |
4 | 4 |
|
5 | | -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 5 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), |
6 | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
7 | 7 |
|
8 | 8 | ## [Unreleased] |
9 | 9 |
|
| 10 | +## [0.3.43] Better llama.cpp ABI Compatibility, MTMD Performance and Extension API Support |
| 11 | + |
| 12 | +- patch(Gemma4ChatHandler): Synchronize huggingface gemma4 latest chat template |
| 13 | + - fix: chat template — null handling, reasoning preservation, turn-tag balance, input validation |
| 14 | + - https://huggingface.co/google/gemma-4-31B-it/commit/68abe48010cbe15293462fa11e901a60639a44e5 |
| 15 | + |
| 16 | +- feat(llama_ext): support optional llama-ext.h API bindings |
| 17 | + - Add Python ctypes bindings for the experimental APIs exposed by |
| 18 | + llama-ext.h, including NextN/MTP embeddings, and model metadata extraction. |
| 19 | + - Extension symbols are loaded optionally to handle ABI changes, renamed |
| 20 | + symbols, and builds that do not export experimental APIs without breaking |
| 21 | + the main Python bindings. |
| 22 | + |
| 23 | +- feat(ctypes): handle missing optional symbols gracefully |
| 24 | + - Allow ctypes bindings to mark symbols as optional through the `required` |
| 25 | + flag. |
| 26 | + - Missing symbols caused by ABI naming differences, API changes, or experimental |
| 27 | + extensions will no longer break library loading. Optional APIs emit diagnostic |
| 28 | + warnings and provide runtime unavailable stubs instead. |
| 29 | + |
| 30 | +- fix(ctypes): validate argument types before binding shared library functions |
| 31 | + - Add explicit validation for ctypes function argument declarations before |
| 32 | + assigning them to the loaded shared library function. |
| 33 | + - This provides clearer error messages when invalid Python types are passed |
| 34 | + to `argtypes`, instead of exposing the internal ctypes error about missing |
| 35 | + `from_param()` methods. |
| 36 | + |
| 37 | +- fix(ctypes): validate argument types before binding shared library functions |
| 38 | + - Add explicit validation for ctypes function argument declarations before |
| 39 | + assigning them to the loaded shared library function. |
| 40 | + - This provides clearer error messages when invalid Python types are passed |
| 41 | + to `argtypes`, instead of exposing the internal ctypes error about missing |
| 42 | + `from_param()` methods. |
| 43 | + |
| 44 | +- feat(ctypes): support ABI-compatible symbol aliases |
| 45 | + - Allow ctypes_function_for_shared_library to accept either a single |
| 46 | + symbol name or an ordered iterable of ABI-compatible aliases. |
| 47 | + - Resolve aliases in order and bind the first exported symbol found while |
| 48 | + preserving the selected symbol name for runtime diagnostics. Also improve |
| 49 | + error reporting for empty alias lists and missing symbols. |
| 50 | + |
| 51 | +- refactor(mtmd): cache Generic MTMD chat template resolution for accelerate the processing speed of `__call__`. |
| 52 | + - Refactor MTMD chat template handling to resolve and analyze the chat template only |
| 53 | + once per handler instance instead of on every request. |
| 54 | + - Add template initialization state, cache parsed media placeholder tags, and support |
| 55 | + explicit chat template overrides through a dedicated field. Improve lifecycle cleanup |
| 56 | + by resetting cached template state and MTMD resources during handler close. |
| 57 | + - This keeps `GenericMTMDChatHandler` runtime processing focused on message rendering and media tokenization |
| 58 | + while avoiding repeated chat template resolution overhead. |
| 59 | + |
| 60 | +- fix(mtmd): preserve subclass chat format during MTMD initialization |
| 61 | + - Ensure MTMDChatHandler initialization remains compatible with specialized chat |
| 62 | + handlers that define their own chat_format before calling super().__init__(). |
| 63 | + - Initialize chat_format only when it is not already provided by the subclass, |
| 64 | + then apply chat_format_override or fallback to the built-in MTMD template. |
| 65 | + This prevents AttributeError during inherited handler initialization while |
| 66 | + keeping template override behavior unchanged. |
| 67 | + |
| 68 | +- refactor(embedding): rename `llama_cpp` import alias to `llama_cpp_lib` |
| 69 | + - Rename the `llama_cpp.llama_cpp` import alias to `llama_cpp_lib` to avoid potential namespace conflicts with the local `.llama_cpp` imports. Update all affected call sites in `llama_embedding.py`. |
| 70 | + |
| 71 | +- patch(Llama): Increase chunk preview limit to 128 in Llama.eval exception |
| 72 | + - Raises the maximum tokens captured for the error message preview from 16 to 128, improving visibility into the offending chunk during fatal backend crashes. |
| 73 | + |
| 74 | +- ci(metal): get package version from importlib metadata |
| 75 | + * Avoid importing llama_cpp when detecting the package version. |
| 76 | + * This prevents initialization side effects and keeps CI version extraction reliable. |
| 77 | + |
| 78 | +- feat: Update llama.cpp to [ggml-org/llama.cpp/commit/86d86ed4396b4130922f7b9af26e3d9fc11a591b](https://github.com/ggml-org/llama.cpp/commit/86d86ed4396b4130922f7b9af26e3d9fc11a591b) |
| 79 | + |
| 80 | +- feat: Sync llama.cpp llama/mtmd/ggml API Binding 20260716 |
| 81 | + |
| 82 | +More information see: https://github.com/JamePeng/llama-cpp-python/compare/e522cecb93907c67ffe2e339b7009c93d3fb0f59...a64128351a1d04c6dd644e3908070f7ea2002f20 |
| 83 | + |
10 | 84 | ## [0.3.42] More Reliable Dynamic Backend Loading, Safer MTMD Processing, and Advanced Batch Support |
11 | 85 |
|
12 | 86 | - fix(loader): improve Windows DLL search path handling and diagnostics |
|
0 commit comments