Skip to content
AI NEWS JOURNAL
llama.cpp releasesAI NEWS / JOURNAL

b11888

common, grammar: add recursive depth limit, make it a requirement (#31153) * common, grammar: add recursive depth limit, make it a requirement * catch more recursive functions * common : tidy up peg parser changes * grammar : reject candidates in a loop, without a depth limit The depth limit in llama_grammar_reject_candidates_for_stack counted the code points of a vocab token, so any token of 256 chars or more was always rejected under a grammar, such as the 512-space token of GLM-4.7-Flash or the long space tokens of Laguna-S-2.1. The rejection now walks the code points with its own stack of levels instead of recursing: there is no limit and no stack risk, whatever the length of a token from the GGUF, and the masks match master. * grammar : track rejected candidates as indices into the in

common, grammar: add recursive depth limit, make it a requirement (#31153)

* common, grammar: add recursive depth limit, make it a requirement

* catch more recursive functions

* common : tidy up peg parser changes

* grammar : reject candidates in a loop, without a depth limit

The depth limit in llama_grammar_reject_candidates_for_stack counted

the code points of a vocab token, so any token of 256 chars or more

was always rejected under a grammar, such as the 512-space token of

GLM-4.7-Flash or the long space tokens of Laguna-S-2.1.

The rejection now walks the code points with its own stack of levels

instead of recursing: there is no limit and no stack risk, whatever

the length of a token from the GGUF, and the masks match master.

* grammar : track rejected candidates as indices into the input

At a given code point a candidate only differs from its input by the

position of its code point pointer, so the levels now carry indices

into the input candidates instead of copies. The first level needs no

special case and the rejects map back to the input directly.

Grammar sampling gets faster than master on GLM-4.7, Laguna, Qwen3.6

and gemma-4 with the json, list and spaces grammars, same masks.

* nit : shorten the comment of llama_grammar_reject_step

* common : add depth_guard for schema walks

* grammar : move GRAMMAR_RECURSIVE_LIMIT into the .cpp

* common : reduce recursion limit for peg parser

* improve

---------

Co-authored-by: Alde Rojas

Co-authored-by: Pascal

**Website:**

-

**Attestations:**

-

**macOS/iOS:**

- [macOS Apple Silicon (arm64)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-macos-arm64.tar.gz)

- macOS Apple Silicon (arm64, KleidiAI enabled) [DISABLED](https://github.com/ggml-org/llama.cpp/pull/23780)

- [macOS Intel (x64)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-macos-x64.tar.gz)

- [iOS XCFramework](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-xcframework.zip)

**Linux:**

- [Ubuntu x64 (CPU)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-ubuntu-x64.tar.gz)

- [Ubuntu arm64 (CPU)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-ubuntu-arm64.tar.gz)

- [Ubuntu s390x (CPU)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-ubuntu-s390x.tar.gz)

- [Ubuntu x64 (Vulkan)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-ubuntu-vulkan-x64.tar.gz)

- [Ubuntu arm64 (Vulkan)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-ubuntu-vulkan-arm64.tar.gz)

- [Ubuntu x64 (CUDA 12)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-ubuntu-cuda-12.8-x64.tar.gz) - [CUDA 12.8 libraries](https://github.com/ggml-org/llama.cpp/releases/download/b11888/cudart-llama-b11888-bin-ubuntu-cuda-12.8-x64.tar.gz)

- [Ubuntu x64 (CUDA 13)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-ubuntu-cuda-13.4-x64.tar.gz) - [CUDA 13.4 libraries](https://github.com/ggml-org/llama.cpp/releases/download/b11888/cudart-llama-b11888-bin-ubuntu-cuda-13.4-x64.tar.gz)

- [Ubuntu arm64 (CUDA 13)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-ubuntu-cuda-13.4-arm64.tar.gz) - [CUDA 13.4 libraries](https://github.com/ggml-org/llama.cpp/releases/download/b11888/cudart-llama-b11888-bin-ubuntu-cuda-13.4-arm64.tar.gz)

- [Ubuntu x64 (ROCm 10.0)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-ubuntu-rocm-10.0-x64.tar.gz)

- [Ubuntu x64 (OpenVINO)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-ubuntu-openvino-2026.4.1-x64.tar.gz)

- [Ubuntu x64 (SYCL FP32)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-ubuntu-sycl-fp32-x64.tar.gz)

- [Ubuntu x64 (SYCL FP16)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-ubuntu-sycl-fp16-x64.tar.gz)

- [Linux arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-linux-arm64-snapdragon.tar.gz) - [setup guide](https://github.com/ggml-org/llama.cpp/blob/master/docs/backend/snapdragon/linux.md)

**Android:**

- [Android arm64 (CPU)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-android-arm64.tar.gz)

- [Android arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-android-arm64-snapdragon.tar.gz) - [setup guide](https://github.com/ggml-org/llama.cpp/blob/master/docs/backend/snapdragon/README.md)

**Windows:**

- [Windows x64 (CPU)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-win-cpu-x64.zip)

- [Windows arm64 (CPU)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-win-cpu-arm64.zip)

- [Windows arm64 (OpenCL Adreno)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-win-opencl-adreno-arm64.zip)

- [Windows x64 (CUDA 12)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-win-cuda-12.4-x64.zip) - [CUDA 12.4 DLLs](https://github.com/ggml-org/llama.cpp/releases/download/b11888/cudart-llama-bin-win-cuda-12.4-x64.zip)

- [Windows x64 (CUDA 13)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-win-cuda-13.4-x64.zip) - [CUDA 13.4 DLLs](https://github.com/ggml-org/llama.cpp/releases/download/b11888/cudart-llama-bin-win-cuda-13.4-x64.zip)

- [Windows arm64 (CUDA 13)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-win-cuda-13.4-arm64.zip) - [CUDA 13.4 DLLs](https://github.com/ggml-org/llama.cpp/releases/download/b11888/cudart-llama-bin-win-cuda-13.4-arm64.zip)

- [Windows x64 (Vulkan)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-win-vulkan-x64.zip)

- [Windows arm64 (Vulkan)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-win-vulkan-arm64.zip)

- [Windows x64 (OpenVINO)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-win-openvino-2026.4.1-x64.zip)

- [Windows x64 (SYCL)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-win-sycl-x64.zip)

- [Windows x64 (ROCm 10.0)](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-bin-win-rocm-10.0-x64.zip)

**openEuler:**

- [DISABLED](https://github.com/ggml-org/llama.cpp/pull/23705)

- openEuler x86 (310p)

- openEuler x86 (910b, ACL Graph)

- openEuler aarch64 (310p)

- openEuler aarch64 (910b, ACL Graph)

**UI:**

- [UI](https://github.com/ggml-org/llama.cpp/releases/download/b11888/llama-b11888-ui.tar.gz)

Sources

llama.cpp releases
← Continue to all updates