Concedo
b8409d6ce4
Merge commit ' de5122d879' into concedo_experimental
...
# Conflicts:
# .github/workflows/behavior-check.yml
# .github/workflows/build-apple.yml
# ci/run.sh
# docs/backend/OPENCL.md
# docs/backend/snapdragon/README.md
# ggml/src/ggml-hexagon/ggml-hexagon.cpp
# ggml/src/ggml-hexagon/htp/htp_iface.idl
# ggml/src/ggml-hexagon/htp/main.c
# ggml/src/ggml-hexagon/htp/matmul-ops.c
# ggml/src/ggml-opencl/CMakeLists.txt
# ggml/src/ggml-opencl/ggml-opencl.cpp
# ggml/src/ggml-opencl/kernels/cvt.cl
# ggml/src/ggml-opencl/kernels/moe_add_id_glu.cl
# ggml/src/ggml-opencl/kernels/moe_combine.cl
# ggml/src/ggml-opencl/kernels/moe_sort_by_expert.cl
# ggml/src/ggml-sycl/concat.cpp
# ggml/src/ggml-sycl/ggml-sycl.cpp
# ggml/src/ggml-sycl/mmvq.cpp
# ggml/src/ggml-webgpu/ggml-webgpu.cpp
# skills/code-review/SKILL.md
# src/llama-grammar.cpp
# tests/CMakeLists.txt
# tests/llama-context/cases-kv.cpp
# tests/llama-context/cases-rs.cpp
# tests/peg-parser/test-json-parser.cpp
# tests/snapshots/deepseek-v3.1.schema
# tests/test-backend-ops.cpp
# tests/test-grammar-integration.cpp
# tests/test-grammar-parser.cpp
# tests/test-jinja.cpp
# tests/test-json-schema-to-grammar.cpp
# tests/test-llama-archs.cpp
# tests/test-llama-context.cpp
# tests/test-model-resolution.cpp
# tests/test-server-component.cpp
# tools/server/README.md
2026-10-28 21:28:24 +08:00
Concedo
8cfef66579
Merge commit ' fa3645feb5' into concedo_experimental
...
# Conflicts:
# .github/workflows/build-apple.yml
# .github/workflows/build-cmake-pkg.yml
# .github/workflows/build-sanitize.yml
# .github/workflows/ci-self-hosted-cpu.yml
# .github/workflows/ci-self-hosted-metal.yml
# .github/workflows/ci-self-hosted-vulkan.yml
# .github/workflows/ci-self-hosted-webgpu.yml
# ci/run.sh
# ggml/src/ggml-cuda/mmq.cuh
# ggml/src/ggml-hexagon/ggml-hexagon.cpp
# ggml/src/ggml-hexagon/htp-common.h
# ggml/src/ggml-hexagon/htp-fusion.cpp
# ggml/src/ggml-hexagon/htp-kparams.cpp
# ggml/src/ggml-hexagon/htp-kparams.h
# ggml/src/ggml-hexagon/htp/flash-attn-ops.c
# ggml/src/ggml-hexagon/htp/flash-attn-ops.h
# ggml/src/ggml-hexagon/htp/matmul-ops.c
# ggml/src/ggml-hexagon/htp/matmul-ops.h
# ggml/src/ggml-hexagon/htp/unary-ops.c
# ggml/src/ggml-hexagon/htp/unary-ops.h
# ggml/src/ggml-opencl/CMakeLists.txt
# ggml/src/ggml-opencl/ggml-opencl.cpp
# ggml/src/ggml-opencl/kernels/add_id.cl
# ggml/src/ggml-opencl/kernels/cvt.cl
# ggml/src/ggml-opencl/kernels/gemv_moe_mxfp4_f32_ns.cl
# ggml/src/ggml-opencl/kernels/gemv_moe_q4_0_f32_ns.cl
# ggml/src/ggml-opencl/kernels/gemv_moe_q4_1_f32_ns.cl
# ggml/src/ggml-opencl/kernels/gemv_moe_q4_k_f32_ns.cl
# ggml/src/ggml-opencl/kernels/gemv_moe_q5_0_f32_ns.cl
# ggml/src/ggml-opencl/kernels/gemv_moe_q5_1_f32_ns.cl
# ggml/src/ggml-opencl/kernels/gemv_moe_q5_k_f32_ns.cl
# ggml/src/ggml-opencl/kernels/gemv_moe_q6_k_f32_ns.cl
# ggml/src/ggml-opencl/kernels/moe_sort_by_expert.cl
# ggml/src/ggml-opencl/kernels/mul_mv_id_mxfp4_f32.cl
# ggml/src/ggml-opencl/kernels/mul_mv_id_mxfp4_f32_flat.cl
# ggml/src/ggml-opencl/kernels/mul_mv_id_q4_0_f32_8x_flat.cl
# ggml/src/ggml-opencl/kernels/mul_mv_id_q8_0_f32.cl
# ggml/src/ggml-opencl/kernels/mul_mv_id_q8_0_f32_flat.cl
# ggml/src/ggml-openvino/openvino/op/add_id.cpp
# ggml/src/ggml-sycl/add-id.cpp
# ggml/src/ggml-sycl/ggml-sycl.cpp
# ggml/src/ggml-sycl/mmvq.cpp
# ggml/src/ggml-webgpu/ggml-webgpu.cpp
# ggml/src/ggml-webgpu/wgsl-shaders/add_id.wgsl
# ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_id_gather.wgsl
# ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_id_vec.wgsl
# ggml/src/ggml-zendnn/ggml-zendnn.cpp
# scripts/snapdragon/ggml-hexagon-profile.py
# tests/CMakeLists.txt
# tests/fusion/MTL.csv
# tests/test-backend-ops.cpp
# tests/test-chat.cpp
# tests/test-jinja.cpp
# tests/test-llama-archs.cpp
# tests/test-llama-context.cpp
# tests/test-server-component.cpp
2026-10-28 18:24:47 +08:00
Xuan-Son Nguyen
48c9f08b7b
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 <hello@alde.dev>
Co-authored-by: Pascal <admin@serveurperso.com>
2026-10-25 23:53:08 +01:00
Yuri Khrustalev
b3fa69955e
chat : reject JSON nested more than 128 levels before walking it ( #30242 )
...
* chat : reject JSON nested more than 128 levels before walking it
The schema builder, the jinja engine and the decision code walk request
JSON with recursion. A request nested deep enough overflows the stack of
the HTTP thread and llama-server dies (SIGBUS on macOS, SIGSEGV on Linux):
for a tool schema from a few hundred levels on macOS and about 10000 on
Linux.
Check the depth first and answer 400 past 128 levels: the chat inputs in
common_chat_templates_apply (tools, tool-call arguments,
chat_template_kwargs, json_schema), the json_schema of /completion, and the
whole /v1/systemone body. A gemma4 tool result that is too deep stays text.
* fix the root, not the call side
---------
Co-authored-by: Xuan Son Nguyen <son@huggingface.co>
2026-10-25 06:46:35 +01:00
Joseph Patricio
d327bf1f07
jinja : fix select and selectattr argument handling ( #31059 )
...
* jinja : fix select and selectattr argument handling
* jinja : address review feedback
* jinja : Simplified test attr
2026-10-24 22:54:46 +02:00
Concedo
4224e52453
Merge branch 'upstream' into concedo_experimental
...
# Conflicts:
# .flake8
# .github/workflows/build-and-test-snapdragon.yml
# .github/workflows/build-webgpu.yml
# .github/workflows/release.yml
# CMakeLists.txt
# cmake/common.cmake
# docs/backend/snapdragon/README.md
# docs/backend/snapdragon/linux.md
# docs/backend/snapdragon/windows.md
# docs/backend/zDNN.md
# docs/build.md
# ggml/cmake/common.cmake
# ggml/src/ggml-hexagon/CMakeLists.txt
# ggml/src/ggml-hexagon/ggml-hexagon.cpp
# ggml/src/ggml-hexagon/htp-repack.cpp
# ggml/src/ggml-hexagon/htp/CMakeLists.txt
# ggml/src/ggml-hexagon/htp/main.c
# ggml/src/ggml-hexagon/libggml-htp.inf
# ggml/src/ggml-opencl/CMakeLists.txt
# ggml/src/ggml-opencl/ggml-opencl.cpp
# ggml/src/ggml-opencl/kernels/gemm_noshuffle_q4_0_q8_1_dp4a.cl
# ggml/src/ggml-opencl/kernels/gemm_noshuffle_q4_k_q8_1_dp4a.cl
# ggml/src/ggml-opencl/kernels/gemm_noshuffle_q5_k_q8_1_dp4a.cl
# ggml/src/ggml-opencl/kernels/gemm_noshuffle_q6_k_q8_1_dp4a.cl
# ggml/src/ggml-opencl/kernels/gemm_noshuffle_q8_0_q8_1_dp4a.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q1_0_f32.cl
# ggml/src/ggml-opencl/kernels/mul_mm_f16_f32_l4_lm.cl
# ggml/src/ggml-opencl/kernels/mul_mv_mxfp4_f32_flat.cl
# ggml/src/ggml-opencl/kernels/rope.cl
# ggml/src/ggml-sycl/CMakeLists.txt
# ggml/src/ggml-sycl/concat.cpp
# ggml/src/ggml-sycl/convert.cpp
# ggml/src/ggml-sycl/count-equal.cpp
# ggml/src/ggml-sycl/dequantize.hpp
# ggml/src/ggml-sycl/dpct/helper.hpp
# ggml/src/ggml-sycl/element_wise.cpp
# ggml/src/ggml-sycl/fattn-common.hpp
# ggml/src/ggml-sycl/fattn-sparse.cpp
# ggml/src/ggml-sycl/fattn-tile.cpp
# ggml/src/ggml-sycl/fattn.cpp
# ggml/src/ggml-sycl/fused-gemm.cpp
# ggml/src/ggml-sycl/fused-gemm.hpp
# ggml/src/ggml-sycl/getrows.cpp
# ggml/src/ggml-sycl/ggml-sycl.cpp
# ggml/src/ggml-sycl/gla.cpp
# ggml/src/ggml-sycl/mem.cpp
# ggml/src/ggml-sycl/mmq.cpp
# ggml/src/ggml-sycl/topk-moe.cpp
# ggml/src/ggml-sycl/upscale.cpp
# ggml/src/ggml-sycl/vecdotq.hpp
# ggml/src/ggml-zdnn/common.hpp
# ggml/src/ggml-zdnn/ggml-zdnn.cpp
# ggml/src/ggml-zdnn/mmq.cpp
# scripts/check-apiabi-compat.sh
# scripts/snapdragon/build.py
# scripts/snapdragon/ggml-hexagon-inspect.py
# scripts/snapdragon/run.py
# scripts/snapdragon/sdk.py
# skills/slice-model/slice_model.py
# src/llama-vocab.cpp
# tests/CMakeLists.txt
# tests/fusion/MTL.csv
# tests/test-backend-ops.cpp
# tests/test-jinja.cpp
# tests/test-llama-archs.cpp
# tests/test-mtmd-impl.cpp
# tools/CMakeLists.txt
# tools/cli/README.md
# tools/completion/README.md
# tools/mtmd/CMakeLists.txt
# tools/server/CMakeLists.txt
# tools/server/README.md
# ty.toml
2026-10-24 12:02:00 +08:00
Concedo
dff7b54b77
Merge commit ' 1b29621bac' into concedo_experimental
...
# Conflicts:
# .github/workflows/build-ibm.yml
# ggml/src/ggml-cann/ggml-cann.cpp
# ggml/src/ggml-hexagon/ggml-hexagon.cpp
# ggml/src/ggml-hexagon/htp/flash-attn-ops.c
# ggml/src/ggml-hexagon/htp/flash-attn-ops.h
# ggml/src/ggml-opencl/CMakeLists.txt
# ggml/src/ggml-opencl/ggml-opencl.cpp
# ggml/src/ggml-opencl/kernels/cpy.cl
# ggml/src/ggml-opencl/kernels/get_rows.cl
# ggml/src/ggml-opencl/kernels/quant_a_q8_1.cl
# ggml/src/ggml-webgpu/ggml-webgpu.cpp
# scripts/pr2wt.sh
# scripts/sync_vendor.py
# scripts/wc2wt.sh
# tests/fusion/MTL.csv
# tests/test-backend-ops.cpp
# tests/test-jinja.cpp
# tools/export-lora/export-lora.cpp
2026-10-22 16:20:34 +08:00
Tarek Dakhran
99fb997184
jinja : fix namespace attributes shadowed by dict methods ( #30941 )
2026-10-21 23:06:56 +02:00
Aldehir Rojas
0ce8cd1141
jinja : implement unique filter ( #30819 )
...
* jinja : implement `unique` filter
* cont : inline key_of
* cont : fix alignment
2026-10-19 12:18:24 -05:00
Concedo
7c97f0148e
Merge branch 'upstream' into concedo_experimental
...
# Conflicts:
# .devops/intel.Dockerfile
# .flake8
# .github/workflows/build-and-test-snapdragon.yml
# .github/workflows/make-release.yml
# .pi/gg/SYSTEM.md
# AGENTS.md
# docs/backend/snapdragon/developer.md
# examples/llama-eval/README.md
# examples/llama-eval/llama-eval.py
# examples/llama-eval/llama-server-simulator.py
# ggml/src/ggml-hexagon/ggml-hexagon.cpp
# ggml/src/ggml-hexagon/htp-opnode.h
# ggml/src/ggml-hexagon/htp-repack.cpp
# ggml/src/ggml-hexagon/htp-repack.h
# ggml/src/ggml-hexagon/htp/flash-attn-ops.c
# ggml/src/ggml-hexagon/htp/get-rows-ops.c
# ggml/src/ggml-hexagon/htp/get-rows-ops.h
# ggml/src/ggml-hexagon/htp/hmx-mm-kernels-tiled.h
# ggml/src/ggml-hexagon/htp/htp-ops.h
# ggml/src/ggml-hexagon/htp/htp-tensor.h
# ggml/src/ggml-hexagon/htp/hvx-mm-kernels-tiled.h
# ggml/src/ggml-hexagon/htp/hvx-quant.h
# ggml/src/ggml-hexagon/htp/main.c
# ggml/src/ggml-hexagon/htp/matmul-ops.c
# ggml/src/ggml-hexagon/htp/matmul-ops.h
# ggml/src/ggml-hexagon/htp/unary-ops.c
# ggml/src/ggml-hexagon/htp/unary-ops.h
# ggml/src/ggml-opencl/CMakeLists.txt
# ggml/src/ggml-opencl/ggml-opencl.cpp
# ggml/src/ggml-sycl/common.cpp
# ggml/src/ggml-sycl/common.hpp
# ggml/src/ggml-sycl/convert.cpp
# ggml/src/ggml-sycl/cpy.cpp
# ggml/src/ggml-sycl/dequantize.hpp
# ggml/src/ggml-sycl/dmmv.cpp
# ggml/src/ggml-sycl/dmmv.hpp
# ggml/src/ggml-sycl/fusion.cpp
# ggml/src/ggml-sycl/ggml-sycl.cpp
# ggml/src/ggml-sycl/roll.cpp
# scripts/check-release-apiabi.sh
# tests/fusion/MTL.csv
# tests/fusion/README.md
# tests/test-backend-ops.cpp
# tests/test-fusion.cpp
# tests/test-jinja.cpp
# tests/test-llama-archs.cpp
# tests/test-model-resolution.cpp
# tools/server/README.md
# ty.toml
2026-10-19 22:48:10 +08:00
Daniel Han
01fc3aae84
model: add Beam (Reflection) ( #30670 )
2026-10-17 00:07:55 +02:00
Concedo
8826b9c532
Merge branch 'upstream' into concedo_experimental
...
# Conflicts:
# .devops/cann.Dockerfile
# .devops/cpu.Dockerfile
# .devops/cuda.Dockerfile
# .devops/intel.Dockerfile
# .devops/musa.Dockerfile
# .devops/rocm.Dockerfile
# .devops/vulkan.Dockerfile
# .devops/zendnn.Dockerfile
# .github/workflows/build-sycl.yml
# .github/workflows/python-type-check.yml
# .github/workflows/release.yml
# .pi/gg/SYSTEM.md
# CMakeLists.txt
# docs/backend/snapdragon/developer.md
# docs/backend/zDNN.md
# examples/sycl/build.sh
# examples/sycl/win-build-sycl.bat
# ggml/CMakeLists.txt
# ggml/src/ggml-hexagon/CMakeLists.txt
# ggml/src/ggml-hexagon/ggml-hexagon.cpp
# ggml/src/ggml-hexagon/htp-opnode.h
# ggml/src/ggml-hexagon/htp/CMakeLists.txt
# ggml/src/ggml-hexagon/htp/flash-attn-ops.c
# ggml/src/ggml-hexagon/htp/get-rows-ops.c
# ggml/src/ggml-hexagon/htp/get-rows-ops.h
# ggml/src/ggml-hexagon/htp/hmx-mm-kernels-tiled.h
# ggml/src/ggml-hexagon/htp/htp-ctx.h
# ggml/src/ggml-hexagon/htp/htp-dcache.c
# ggml/src/ggml-hexagon/htp/htp-ops.h
# ggml/src/ggml-hexagon/htp/htp-tensor.h
# ggml/src/ggml-hexagon/htp/hvx-mm-kernels-float.h
# ggml/src/ggml-hexagon/htp/hvx-mm-kernels-tiled.h
# ggml/src/ggml-hexagon/htp/hvx-quant.h
# ggml/src/ggml-hexagon/htp/main.c
# ggml/src/ggml-hexagon/htp/matmul-ops.c
# ggml/src/ggml-hexagon/htp/matmul-ops.h
# ggml/src/ggml-metal/CMakeLists.txt
# ggml/src/ggml-opencl/ggml-opencl.cpp
# ggml/src/ggml-opencl/kernels/clamp.cl
# ggml/src/ggml-opencl/kernels/flash_attn_f16.cl
# ggml/src/ggml-opencl/kernels/flash_attn_f32.cl
# ggml/src/ggml-opencl/kernels/flash_attn_f32_f16.cl
# ggml/src/ggml-opencl/kernels/flash_attn_f32_q4_0.cl
# ggml/src/ggml-opencl/kernels/flash_attn_f32_q8_0.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_iq4_nl_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q1_0_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q4_0_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q4_0_f32_spec.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q4_1_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q4_k_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q4_k_f32_o4.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q5_0_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q5_1_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q5_k_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q6_k_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q6_k_f32_o4.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q8_0_f32.cl
# ggml/src/ggml-openvino/openvino/op/glu_swiglu.cpp
# ggml/src/ggml-sycl/CMakeLists.txt
# ggml/src/ggml-sycl/convert.cpp
# ggml/src/ggml-sycl/dequantize.hpp
# ggml/src/ggml-sycl/ggml-sycl.cpp
# ggml/src/ggml-sycl/mmvq.cpp
# ggml/src/ggml-sycl/quants.hpp
# ggml/src/ggml-sycl/vecdotq.hpp
# scripts/server-bench.py
# scripts/snapdragon/run.py
# scripts/sync-ggml.last
# src/llama-vocab.cpp
# tests/llama-context/cases-kv.cpp
# tests/test-backend-ops.cpp
# tests/test-chat.cpp
# tests/test-jinja.cpp
# tests/test-llama-archs.cpp
# tests/test-mtmd-impl.cpp
# tests/test-thread-safety.cpp
# tests/test-unicode.cpp
# tools/cli/README.md
# tools/mtmd/CMakeLists.txt
# tools/server/README.md
2026-10-16 13:43:20 +08:00
Concedo
c1ecdb2a78
Merge commit ' 5cdadfc326' into concedo_experimental
...
# Conflicts:
# docs/backend/SYCL.md
# docs/backend/snapdragon/README.md
# docs/ops.md
# docs/ops/zDNN.csv
# docs/speculative.md
# examples/diffusion/diffusion-cli.cpp
# examples/sycl/build.sh
# ggml/src/ggml-cpu/CMakeLists.txt
# ggml/src/ggml-cpu/kleidiai/kernels.cpp
# ggml/src/ggml-cpu/kleidiai/kernels.h
# ggml/src/ggml-cpu/kleidiai/kleidiai.cpp
# ggml/src/ggml-hexagon/ggml-hexagon.cpp
# ggml/src/ggml-hexagon/htp/htp-ops.h
# ggml/src/ggml-hexagon/htp/htp_iface.idl
# ggml/src/ggml-hexagon/htp/main.c
# ggml/src/ggml-opencl/ggml-opencl.cpp
# ggml/src/ggml-opencl/kernels/gemm_moe_q8_1_dp4a.cl
# ggml/src/ggml-opencl/kernels/moe_sort_by_expert.cl
# ggml/src/ggml-rpc/CMakeLists.txt
# ggml/src/ggml-webgpu/ggml-webgpu-shader-lib.hpp
# ggml/src/ggml-webgpu/ggml-webgpu.cpp
# ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_id.wgsl
# ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_id_gather.wgsl
# ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_id_vec.wgsl
# scripts/gen-unicode-data.py
# scripts/snapdragon/run.py
# scripts/sync_vendor.py
# skills/code-review/SKILL.md
# tests/CMakeLists.txt
# tests/test-arg-parser.cpp
# tests/test-backend-ops.cpp
# tests/test-chat-auto-parser.cpp
# tests/test-chat-template.cpp
# tests/test-chat.cpp
# tests/test-jinja.cpp
# tests/test-server-component.cpp
# tests/test-unicode.cpp
# tools/cli/README.md
# tools/server/README.md
2026-10-16 13:26:05 +08:00
Yuri Khrustalev
82e1e2fd84
jinja : write nan and inf in tojson as json.dumps does ( #30483 )
...
tojson wrote nan, inf and -inf for these floats, as values and as dict
keys; json.dumps writes NaN, Infinity and -Infinity. The string and safe
filters of a float keep nan and inf, as Python's str() does, so they no
longer use the tojson function. float_to_json is renamed float_repr, as
it now gives str(); float_json gives the json.dumps text.
Also say in a comment why a last digit 9 is not bumped at a power of 2.
2026-10-15 10:49:40 +02:00
Yuri Khrustalev
77390baa18
jinja : write floats in tojson as Python does ( #30362 )
...
tojson printed floats through a C++ stream (6 significant digits, no
".0"), so 48.858844 became 48.8588 and 1.0 became 1 in tool definitions,
tool-call arguments and other template output. Write the shortest digits
that read back as the same value, as json.dumps does. The string and safe
filters of a float use the same code.
2026-10-14 09:18:38 +03:00
Concedo
d808d30a9a
Merge commit ' 05af0d2b13' into concedo_experimental
...
# Conflicts:
# CODEOWNERS
# examples/model-conversion/scripts/causal/run-org-model.py
# ggml/src/ggml-et/ggml-et.cpp
# ggml/src/ggml-openvino/ggml-decoder.cpp
# ggml/src/ggml-openvino/ggml-openvino.cpp
# ggml/src/ggml-openvino/openvino/op/get_rows.cpp
# ggml/src/ggml-sycl/ggml-sycl.cpp
# ggml/src/ggml-zdnn/ggml-zdnn.cpp
# tests/fusion/MTL.csv
# tests/test-backend-ops.cpp
# tests/test-jinja.cpp
# tests/test-llama-archs.cpp
2026-10-03 01:01:03 +08:00
Sigbjørn Skjæret
ca2e2037b6
jinja : support coerced array attributes ( #29574 )
...
* support coerced array attributes
* add tests
2026-09-30 15:33:26 +02:00
Concedo
3cee526a68
Merge branch 'upstream' into concedo_experimental
...
# Conflicts:
# .devops/musa.Dockerfile
# .github/workflows/build-apple.yml
# .github/workflows/build-cpu.yml
# .github/workflows/build-vulkan.yml
# .github/workflows/python-type-check.yml
# CODEOWNERS
# docs/backend/snapdragon/CMakeUserPresets.json
# docs/build.md
# docs/docker.md
# docs/ops.md
# docs/ops/Hexagon.csv
# ggml/cmake/common.cmake
# ggml/src/ggml-cpu/CMakeLists.txt
# ggml/src/ggml-cpu/ggml-cpu.c
# ggml/src/ggml-cuda/CMakeLists.txt
# ggml/src/ggml-hexagon/CMakeLists.txt
# ggml/src/ggml-hexagon/ggml-hexagon.cpp
# ggml/src/ggml-hexagon/htp-opnode.h
# ggml/src/ggml-hexagon/htp/argsort-ops.c
# ggml/src/ggml-hexagon/htp/binary-ops.c
# ggml/src/ggml-hexagon/htp/binary-ops.h
# ggml/src/ggml-hexagon/htp/cpy-ops.c
# ggml/src/ggml-hexagon/htp/dma-queue.h
# ggml/src/ggml-hexagon/htp/get-rows-ops.c
# ggml/src/ggml-hexagon/htp/get-rows-ops.h
# ggml/src/ggml-hexagon/htp/htp-ctx.h
# ggml/src/ggml-hexagon/htp/htp-ops.h
# ggml/src/ggml-hexagon/htp/hvx-arith.h
# ggml/src/ggml-hexagon/htp/hvx-base.h
# ggml/src/ggml-hexagon/htp/hvx-reduce.h
# ggml/src/ggml-hexagon/htp/main.c
# ggml/src/ggml-hexagon/htp/sum-rows-ops.c
# ggml/src/ggml-hexagon/htp/unary-ops.c
# ggml/src/ggml-hexagon/htp/unary-ops.h
# ggml/src/ggml-opencl/ggml-opencl.cpp
# ggml/src/ggml-sycl/fwht.cpp
# ggml/src/ggml-webgpu/ggml-webgpu.cpp
# scripts/hip/gcn-cdna-vgpr-check.py
# scripts/snapdragon/ggml-hexagon-inspect.py
# tests/CMakeLists.txt
# tests/test-backend-ops.cpp
# tests/test-jinja.cpp
# tests/test-recurrent-state-rollback.cpp
# tests/test-save-load-state.cpp
# tests/test-state-restore-fragmented.cpp
# tools/llama-bench/README.md
# tools/llama-bench/llama-bench.cpp
# tools/mtmd/CMakeLists.txt
2026-09-29 23:24:34 +08:00
Sigbjørn Skjæret
33c923db1b
jinja : add support for dict builtin ( #29477 )
...
* add support for dict builtin
* add tests
2026-09-27 13:41:50 +02:00
Sigbjørn Skjæret
81bc6b83f8
jinja : implement sameas test ( #29448 )
...
* implement sameas test
* add tests
2026-09-26 10:14:58 +02:00
Concedo
4447017602
Merge branch 'upstream' into concedo_experimental
...
# Conflicts:
# .github/actions/ccache-clear/action.yml
# .github/workflows/build-apple.yml
# .github/workflows/build-cpu.yml
# .github/workflows/build-cuda-ubuntu.yml
# .github/workflows/build-opencl.yml
# .github/workflows/build-openvino.yml
# .github/workflows/build-sycl.yml
# .github/workflows/build-vulkan.yml
# .github/workflows/build-wasm.yml
# .github/workflows/build-webgpu.yml
# .github/workflows/hip-quality-check.yml
# .github/workflows/server.yml
# CONTRIBUTING.md
# README.md
# ci/run.sh
# common/CMakeLists.txt
# common/chat.cpp
# docs/autoparser.md
# ggml/src/ggml-webgpu/wgsl-shaders/flash_attn.wgsl
# ggml/src/ggml-webgpu/wgsl-shaders/flash_attn_tile.wgsl
# ggml/src/ggml-webgpu/wgsl-shaders/flash_attn_vec_split.wgsl
# scripts/sync_vendor.py
# tests/CMakeLists.txt
# tests/peg-parser/test-json-serialization.cpp
# tests/peg-parser/tests.h
# tests/test-chat-auto-parser.cpp
# tests/test-chat-peg-parser.cpp
# tests/test-chat-template.cpp
# tests/test-chat.cpp
# tests/test-grammar-integration.cpp
# tests/test-jinja.cpp
# tests/test-json-schema-to-grammar.cpp
# tests/test-llama-archs.cpp
# tests/test-model-resolution.cpp
# tests/test-recurrent-state-rollback.cpp
# tools/CMakeLists.txt
2026-08-25 20:44:34 +08:00
Xuan-Son Nguyen
d9f918d2d0
common: add json.h abstraction ( #27511 )
...
* add common/json
* migrate common
* adapt jinja
* migrate server
* big wip
* migrate tests
* wip
* revert some excessive changes
* wip
* wip 2
* revert redundant changes
* fix server crash
* various fixes
* fix ci
* harden a bit
* clean up
* rm json-shim
* add some comments
* rm redundant decl
2026-08-22 16:28:28 +02:00
Concedo
9001369da0
Merge branch 'upstream' into concedo_experimental
...
# Conflicts:
# ggml/src/ggml-cpu/CMakeLists.txt
# ggml/src/ggml-cpu/kleidiai/kernels.cpp
# ggml/src/ggml-cpu/kleidiai/kernels.h
# ggml/src/ggml-cpu/kleidiai/kleidiai.cpp
# ggml/src/ggml-cpu/ops.cpp
# ggml/src/ggml-cuda/mmq.cuh
# ggml/src/ggml-hexagon/htp/hmx-queue.c
# ggml/src/ggml-opencl/ggml-opencl.cpp
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_iq4_nl_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q1_0_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q4_0_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q4_0_f32_spec.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q4_1_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q4_k_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q5_0_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q5_1_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q5_k_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q6_k_f32.cl
# ggml/src/ggml-opencl/kernels/gemv_noshuffle_q8_0_f32.cl
# ggml/src/ggml-opencl/kernels/mul_mv_f16_f16.cl
# ggml/src/ggml-opencl/kernels/mul_mv_f16_f32.cl
# ggml/src/ggml-opencl/kernels/mul_mv_f16_f32_1row.cl
# ggml/src/ggml-sycl/fattn-vec.hpp
# tests/test-backend-ops.cpp
# tests/test-chat-auto-parser.cpp
# tests/test-export-graph-ops.cpp
# tests/test-jinja.cpp
# tests/test-llama-archs.cpp
# tools/tokenize/tokenize.cpp
2026-07-15 15:39:31 +08:00
Satinder Grewal
2969d6d15d
model: add Hy3 (hy_v3) support with MTP speculative decoding ( #25395 )
...
* model: add Hy3 (hy_v3) architecture support
Adds Tencent Hunyuan 3 (HF architecture HYV3ForCausalLM, GGUF arch
hy_v3): a MoE decoder stack with per-head Q/K RMSNorm, a sigmoid
router with expert selection bias, an always-active ungated shared
expert, and leading dense block(s) (first_k_dense_replace).
The base implementation is ported from charlie12345's fork
(https://github.com/charlie12345/ROCmFPX , src/models/hyv3.cpp),
adapted to current mainline APIs (hparams.n_layer(), build_qkv,
build_moe_ffn with fused gate_up + scale tensors, output_s).
Note: blk.N.exp_probs_b is stored without a .bias suffix for
compatibility with existing hy_v3 GGUFs produced by that fork.
Co-Authored-By: charlie12345 <charlie12345@users.noreply.github.com>
Co-authored-by: Piotr Wilkin <ilintar@gmail.com>
Assisted-by: Claude Fable 5
2026-07-14 00:31:04 +02:00
Concedo
61ad97cbc1
Merge commit ' 8c146a8366' into concedo_experimental
...
# Conflicts:
# src/CMakeLists.txt
# tests/test-llama-archs.cpp
2026-06-30 22:00:03 +08:00
Concedo
3b867bd4b1
Merge branch 'upstream' into concedo_experimental
...
# Conflicts:
# .github/workflows/release.yml
# SECURITY.md
# common/CMakeLists.txt
# docs/speculative.md
# ggml/src/ggml-opencl/CMakeLists.txt
# ggml/src/ggml-opencl/ggml-opencl.cpp
# ggml/src/ggml-opencl/kernels/cvt.cl
# ggml/src/ggml-opencl/kernels/flash_attn_f16.cl
# ggml/src/ggml-opencl/kernels/flash_attn_f32.cl
# ggml/src/ggml-opencl/kernels/flash_attn_f32_f16.cl
# ggml/src/ggml-opencl/kernels/set_rows.cl
# ggml/src/ggml-openvino/ggml-openvino.cpp
# ggml/src/ggml-sycl/norm.cpp
# tests/CMakeLists.txt
# tests/test-backend-ops.cpp
# tests/test-chat-template.cpp
# tests/test-chat.cpp
# tests/test-export-graph-ops.cpp
# tests/test-jinja.cpp
# tests/test-llama-archs.cpp
# tools/rpc/CMakeLists.txt
# tools/rpc/README.md
2026-06-29 16:43:44 +08:00
Aldehir Rojas
c818263f2a
chat : implement minicpm5 parser ( #24889 )
...
* Add minicpm5 tool call parser
* Refactor MiniCPM5 PEG parser per review feedback
* Fix jinja min/max API to match Jinja2
* modify by review
* MiniCPM5: use autoparser for XML tool calls and fix grammar preserved-token triggers
* MiniCPM5: fix streaming tool-arg placeholder and remove alt XML markers
* skip min/max attribute tests in -py mode
* test-jinja: use real expected output for min/max attribute tests
* MiniCPM5: revert shared mapper and history fallbacks per review
Drop streaming tool-arg placeholder workarounds from the generic PEG
mapper and restore strict tool-call argument JSON parsing so MiniCPM5
support stays limited to autoparser/diff-analyzer changes.
* chat : refactor minicpm5 back to dedicated parser
* cont : simplify grammar
* cont : refactor
* cont : fixes
* cont : rename template to openbmb-MiniCPM5-1B.jinja
* cont : add message delimiters
* cont : fix tests
---------
Co-authored-by: zhangtao <zhangtao2@modelbest.cn>
Co-authored-by: 张涛 <>
2026-06-28 16:53:32 +02:00
Concedo
ea0351c71a
Merge branch 'upstream' into concedo_experimental
...
# Conflicts:
# .github/workflows/release.yml
# .github/workflows/ui-build-self-hosted.yml
# .github/workflows/ui-build.yml
# .github/workflows/ui-publish.yml
# .github/workflows/ui-self-hosted.yml
# .github/workflows/ui.yml
# .gitignore
# README.md
# docs/ops.md
# docs/ops/Vulkan.csv
# ggml/CMakeLists.txt
# scripts/sync-ggml.last
# scripts/sync_vendor.py
# scripts/ui-assets.cmake
# tests/test-jinja.cpp
# tests/test-llama-archs.cpp
2026-06-14 11:26:16 +08:00
Sigbjørn Skjæret
f05cf4676a
jinja : fix negative step slice with start/stop values ( #24580 )
2026-06-13 18:28:40 +02:00
Sigbjørn Skjæret
341babcf73
jinja : fix split and replace with empty first arg ( #24574 )
...
* fix split and replace with empty first arg
* fix reserve size
2026-06-13 16:56:59 +02:00
Concedo
340b22283e
Merge branch 'upstream' into concedo_experimental
...
# Conflicts:
# .devops/intel.Dockerfile
# .github/workflows/build-android.yml
# .github/workflows/build.yml
# .github/workflows/release.yml
# .gitignore
# docs/backend/SYCL.md
# docs/backend/snapdragon/README.md
# examples/model-conversion/scripts/causal/convert-model.sh
# ggml/CMakeLists.txt
# ggml/src/CMakeLists.txt
# ggml/src/ggml-hexagon/ggml-hexagon.cpp
# ggml/src/ggml-hexagon/htp/CMakeLists.txt
# ggml/src/ggml-hexagon/htp/hex-utils.h
# ggml/src/ggml-hexagon/htp/hmx-matmul-ops.c
# ggml/src/ggml-hexagon/htp/htp-ctx.h
# ggml/src/ggml-hexagon/htp/htp-ops.h
# ggml/src/ggml-hexagon/htp/htp_iface.idl
# ggml/src/ggml-hexagon/htp/hvx-base.h
# ggml/src/ggml-hexagon/htp/main.c
# ggml/src/ggml-hexagon/htp/matmul-ops.c
# ggml/src/ggml-hexagon/libggml-htp.inf
# ggml/src/ggml-sycl/ggml-sycl.cpp
# ggml/src/ggml-sycl/mmvq.cpp
# ggml/src/ggml-sycl/mmvq.hpp
# ggml/src/ggml-webgpu/ggml-webgpu-shader-lib.hpp
# ggml/src/ggml-webgpu/ggml-webgpu.cpp
# ggml/src/ggml-webgpu/wgsl-shaders/flash_attn.wgsl
# ggml/src/ggml-webgpu/wgsl-shaders/flash_attn_vec_blk.wgsl
# ggml/src/ggml-webgpu/wgsl-shaders/flash_attn_vec_split.wgsl
# scripts/server-test-structured.py
# scripts/snapdragon/adb/run-bench.sh
# scripts/snapdragon/adb/run-cli.sh
# scripts/snapdragon/adb/run-completion.sh
# scripts/snapdragon/adb/run-mtmd.sh
# scripts/snapdragon/adb/run-tool.sh
# scripts/snapdragon/qdc/requirements.txt
# scripts/snapdragon/windows/run-bench.ps1
# scripts/snapdragon/windows/run-cli.ps1
# scripts/snapdragon/windows/run-completion.ps1
# scripts/snapdragon/windows/run-mtmd.ps1
# scripts/snapdragon/windows/run-tool.ps1
# tests/test-backend-ops.cpp
# tools/cli/cli.cpp
# ty.toml
2026-04-25 12:13:14 +08:00
Adrien Gallouët
dc80c5252a
common : fix jinja warnings with clang 21 ( #22313 )
...
Signed-off-by: Adrien Gallouët <angt@huggingface.co>
2026-04-24 12:36:02 +02:00
Concedo
63ce8ae64e
fix tool builds
2026-04-12 02:36:30 +08:00
Kwa Jie Hao
243532e556
jinja : support ensure_ascii=true, string repetition and int/float self-filtering ( #21623 )
...
* feat: jinja engine improvements for reka-edge
Port three Jinja engine improvements needed for the reka-edge model:
1. Python-style string repetition ("ab" * 3 → "ababab")
2. ensure_ascii=true support for tojson filter (escapes non-ASCII to \uXXXX)
3. int() builtin on value_int_t (identity, needed for Reka Edge template)
* fix: escape invalid utf8 bytes when ensure_ascii=true
The json_ensure_ascii_preserving_format function does not correctly
handle an edge case where if UTF-8 parsing fails, it adds the non-ascii
character back to the output as a raw byte.
This commit fixes that by adding the unicode standard replacement
character \\ufffd to the output instead. This is the standard behavior
for various programming languages like Python, Rust, Go, etc.
* chore: address PR comments
1. Add todo comment for supporting string repetition for array/tuples
2. Add support for float identity operation
3. Move invalid ascii test case to test_fuzzing
* chore: accept suggestion for common/jinja/value.cpp
Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
---------
Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
2026-04-09 11:28:33 +02:00
Sigbjørn Skjæret
1f34806c44
jinja: coerce input for string-specific filters ( #21370 )
2026-04-03 15:03:33 +02:00
Xuan-Son Nguyen
5452d736f8
jinja: correct stats for tojson and string filters ( #19785 )
2026-02-22 21:08:23 +01:00
Piotr Wilkin (ilintar)
8a70973557
Add Jinja support for "indent" string filter ( #19529 )
...
Check Pre-Tokenizer Hashes / pre-tokenizer-hashes (push) Waiting to run
Python check requirements.txt / check-requirements (push) Waiting to run
Python Type-Check / pyright type-check (push) Waiting to run
* Add partial Jinja support for "indent" string filter
* Fully implement indent
* Add tests for all width variants.
* Update tests/test-jinja.cpp
Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
* Fix getline ignoring trailing newlines
* Update common/jinja/value.cpp
Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
* fix first indent condition
---------
Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
2026-02-19 00:25:52 +01:00
Sid Mohan
0dfcd3b607
jinja : add missing 'in' test to template engine ( #19004 ) ( #19239 )
...
* jinja : add missing 'in' test to template engine (#19004 )
The jinja template parser was missing the 'in' test from
global_builtins(), causing templates using reject("in", ...),
select("in", ...), or 'x is in(y)' to fail with
"selectattr: unknown test 'in'".
This broke tool-calling for Qwen3-Coder and any other model
whose chat template uses the 'in' test.
Added test_is_in supporting array, string, and object containment
checks, mirroring the existing 'in' operator logic in runtime.cpp.
Includes test cases for all three containment types plus
reject/select filter usage.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* reuse test_is_in in binary op
---------
Co-authored-by: Sid Mohan <sidmohan0@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Xuan Son Nguyen <son@huggingface.co>
2026-02-02 21:00:55 +01:00
Sigbjørn Skjæret
b45ef2702c
jinja : do not pass empty tools and add some none filters ( #19176 )
Check Pre-Tokenizer Hashes / pre-tokenizer-hashes (push) Waiting to run
Python check requirements.txt / check-requirements (push) Waiting to run
Python Type-Check / pyright type-check (push) Waiting to run
Update Operations Documentation / update-ops-docs (push) Waiting to run
2026-01-29 14:06:54 +01:00
Sigbjørn Skjæret
60368e1d73
jinja : undefined should be treated as sequence/iterable (return string/array) by filters/tests ( #19147 )
...
* undefined is treated as iterable (string/array) by filters
`tojson` is not a supported `undefined` filter
* add tests
* add sequence and iterable tests
keep it DRY and fix some types
2026-01-28 14:40:29 +01:00
Sigbjørn Skjæret
2b4cbd2834
jinja : implement mixed type object keys ( #18955 )
...
* implement mixed type object keys
* add tests
* refactor
* minor fixes
* massive refactor
* add more tests
* forgotten tuples
* fix array/object is_hashable
* correct (albeit broken) jinja responses
verified with transformers
* improved hashing and equality
* refactor hash function
* more exhausive test case
* clean up
* cont
* cont (2)
* missing cstring
---------
Co-authored-by: Xuan Son Nguyen <son@huggingface.co>
2026-01-27 19:50:42 +01:00
Piotr Wilkin (ilintar)
c301172f66
jinja: support none|string ( #18995 )
...
* jinja: support none|string
* Update common/jinja/value.cpp
Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
* Update tests/test-jinja.cpp
Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
* Add as_string()
---------
Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
2026-01-21 19:24:37 +01:00
Sigbjørn Skjæret
bbcdac0189
jinja : fix object item order (and properly implement dictsort) ( #18904 )
...
* fix object item order
* as_ordered_object
* copy whole object
2026-01-18 03:40:06 +01:00
Sigbjørn Skjæret
d03c45c9c5
jinja : attribute support for join, map and sort ( #18883 )
...
* support negative array index and default value
* attribute support (int and str) for join, map and sort
* add tests
* update CODEOWNERS
* improve fixme sorting comment
2026-01-18 02:53:01 +01:00
Sigbjørn Skjæret
10c98cbdf6
jinja : add missing tojson filter for bool ( #18900 )
...
* add missing tojson for bool
* add more literal tests
2026-01-18 01:05:09 +01:00
Xuan-Son Nguyen
f55b033ae6
jinja: correct member access rule ( #18905 )
2026-01-18 00:48:55 +01:00
Xuan-Son Nguyen
c15395f73c
common : implement new jinja template engine ( #18462 )
...
* jinja vm
* lexer
* add vm types
* demo
* clean up
* parser ok
* binary_expression::execute
* shadow naming
* bin ops works!
* fix map object
* add string builtins
* add more builtins
* wip
* use mk_val
* eval with is_user_input
* render gemma tmpl ok
* track input string even after transformations
* support binded functions
* keyword arguments and slicing array
* use shared_ptr for values
* add mk_stmt
* allow print source on exception
* fix negate test
* testing more templates
* mostly works
* add filter_statement
* allow func to access ctx
* add jinja-value.cpp
* impl global_from_json
* a lot of fixes
* more tests
* more fix, more tests
* more fixes
* rm workarounds
* demo: type inferrence
* add placeholder for tojson
* improve function args handling
* rm type inference
* no more std::regex
* trailing spaces
* make testing more flexible
* make output a bit cleaner
* (wip) redirect minja calls
* test: add --output
* fix crash on macro kwargs
* add minimal caps system
* add some workarounds
* rm caps_apply_workarounds
* get rid of preprocessing
* more fixes
* fix test-chat-template
* move test-chat-jinja into test-chat-template
* rm test-chat-jinja from cmake
* test-chat-template: use common
* fix build
* fix build (2)
* rename vm --> interpreter
* improve error reporting
* correct lstrip behavior
* add tojson
* more fixes
* disable tests for COMMON_CHAT_FORMAT_GENERIC
* make sure tojson output correct order
* add object.length
* fully functional selectattr / rejectattr
* improve error reporting
* more builtins added, more fixes
* create jinja rendering tests
* fix testing.h path
* adjust whitespace rules
* more fixes
* temporary disable test for ibm-granite
* r/lstrip behavior matched with hf.js
* minimax, glm4.5 ok
* add append and pop
* kimi-k2 ok
* test-chat passed
* fix lstrip_block
* add more jinja tests
* cast to unsigned char
* allow dict key to be numeric
* nemotron: rm windows newline
* tests ok
* fix test
* rename interpreter --> runtime
* fix build
* add more checks
* bring back generic format support
* fix Apertus
* [json.exception.out_of_range.403] key 'content' not found
* rm generic test
* refactor input marking
* add docs
* fix windows build
* clarify error message
* improved tests
* split/rsplit with maxsplit
* non-inverse maxsplit
forgot to change after simplifying
* implement separators for tojson and fix indent
* i like to move it move it
* rename null -- > none
* token::eof
* some nits + comments
* add exception classes for lexer and parser
* null -> none
* rename global -> env
* rm minja
* update docs
* docs: add input marking caveats
* imlement missing jinja-tests functions
* oops
* support trim filter with args, remove bogus to_json reference
* numerous argument fixes
* updated tests
* implement optional strip chars parameter
* use new chars parameter
* float filter also has default
* always leave at least one decimal in float string
* jinja : static analysis + header cleanup + minor fixes
* add fuzz test
* add string.cpp
* fix chat_template_kwargs
* nits
* fix build
* revert
* unrevert
sorry :)
* add fuzz func_args, refactor to be safer
* fix array.map()
* loosen ensure_vals max count condition, add not impl for map(int)
* hopefully fix windows
* check if empty first
* normalize newlines
---------
Co-authored-by: Alde Rojas <hello@alde.dev>
Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
2026-01-16 11:22:06 +01:00