开源llama.cpp Releases·原文 2026年10月26日

llama.cpp b11897重构test-llama-archs,Windows共享库构建测试限制解除

该版本把测试对内部libllama符号的依赖改为通过llama-ext.h中的llama_arch_* 包装接口,并将四个测试移出“非Win32或非共享库”的构建限制。

AI解读:本次在暂存头文件llama-ext.h中声明了围绕内部llm_ arch查询函数的llama_arch_* 包装,以及llama_arch_kv_name() 和llama_arch_supports_save()。

测试中的fixture-writer部分被移到tests/test-llama-archs.cpp成为本地kv_writer,llama_model_saver精简为llama_model_save_to_file() 的私有实现。

往返保存测试改用公开的llama_model_save_to_file() 写入临时路径,同时移除了tmpfile() 的文件描述符泄漏及其Windows变通处理。

test-llama-archs、test-generate-models、test-llama-context和test-fusion被移出NOT WIN32 OR NOT BUILD_SHARED_LIBS守卫,这是提交说明中列出的直接结果。

llama.cpp发布构建b11897,核心变更是重构test-llama-archs,使其不再链接libllama的内部符号。提交说明称,该测试此前包含src/llama-arch.h和src/llama-model-saver.h,所用符号没有从DLL导出,导致在Windows共享库配置下无法构建。

同一版本仍照常提供macOS、Linux、Windows、Android等平台的预编译包,包括CUDA 12.8/13.4、Vulkan、ROCm 10.0、OpenVINO 2026.4.1、SYCL等后端。

Windows共享库构建的符号问题如何被绕开

按照提交说明,改动在暂存头文件llama-ext.h中声明了围绕内部llm_ arch查询函数的llama_arch_* 包装,并加入llama_arch_kv_name() 与llama_arch_supports_save()。这样测试不再需要直接引用未导出的内部符号。

  • test-llama-archs原先包含src/llama-arch.h、src/llama-model-saver.h
  • 问题在于这些符号未从DLL导出,Windows共享库构建失败
  • 新增llama_arch_* 包装及llama_arch_kv_name()、llama_arch_supports_save()

测试保存逻辑改用公开接口

llama_model_saver被精简为llama_model_save_to_file() 的私有实现;原测试使用的fixture-writer部分移入tests/test-llama-archs.cpp,成为本地kv_writer。往返保存测试不再使用saver,而是调用公开的llama_model_save_to_file() 写入临时路径。提交说明称,这一替换同时消除了tmpfile() 的文件描述符泄漏及其Windows变通处理。

  • 测试改用公开llama_model_save_to_file() 写临时路径
  • 移除tmpfile() fd泄漏与对应Windows变通
  • llama_model_saver仅保留私有实现部分

四个测试移出平台与构建类型守卫

提交说明列出,test-llama-archs、test-generate-models、test-llama-context和test-fusion被移出NOT WIN32 OR NOT BUILD_SHARED_LIBS守卫。这是上述符号与保存逻辑调整后带来的直接构建范围变化。

  • 移出守卫的测试:test-llama-archs、test-generate-models、test-llama-context、test-fusion
  • 提交说明未给出这些测试在Windows共享库配置下的运行结果数据

信息来源

llama.cpp Releases原始来源

更多

新闻专题
外观