| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| 2026.07.07 source code.tar.gz | 2026-07-07 | 36.2 MB | |
| 2026.07.07 source code.zip | 2026-07-07 | 36.6 MB | |
| README.md | 2026-07-07 | 5.7 kB | |
| Totals: 3 Items | 72.8 MB | 1 | |
This release introduces a major overhaul of the local AI subsystem, adding support for Llama.cpp and the IBM Granite model, alongside extensive naming standardization and build system improvements. A new abstract AI runner interface unifies inference backends, while rigorous snake_case normalization aligns the entire codebase with the project's coding guidelines.
The llama hums, a granite sound,
With abstract runners all around.
The names in snakes now coil and sleep,
While docs and tests more vigil keep.
A modular heart, a cleaner choice,
DocWire finds its stronger voice.
🦙🧠🔧📚
- Features
- Llama.cpp Integration: Added an optional Llama.cpp backend (
docwire_ai_llama) for running GGUF-based models. A newllama_runnerclass implements the abstractai_runnerinterface, providingprocess()andembed()methods with thread-safe backend management. - IBM Granite Model Support: The new
local-ai-model-granitefeature installs the IBM Granite 4.0 1B Q8_0 GGUF model, making a compact yet capable LLM available out of the box. - Abstract AI Runner Interface: Introduced
docwire::ai::ai_runner– a pure virtual base that definesprocess(),embed(), andunload()for all local AI backends. Backends guarantee thread safety and deterministic teardown. - Modular AI Backends: Split the local AI runtime into separate optional libraries:
docwire_ai_ct2(CTranslate2) anddocwire_ai_llama(Llama.cpp). A commondocwire_ailibrary now contains shared components such asai::task,ai::summarize,ai::translate, andai::embed. - High-Level Local AI API: New convenience classes in the
ai::localnamespace (summarize,translate,task,passage::embedder,query::embedder) automatically select a default backend model, simplifying the most common use cases. -
Documentation: Added the DocWire SDK Manifesto and Coding Guidelines to the repository documentation (
doc/manifesto.md,doc/coding_guidelines.md), outlining the project’s philosophy and architectural rules. -
Improvements
- Naming Normalization: All class/struct/enum names have been converted to
snake_caseaccording to the new coding guidelines. Publicly visible types such asChainElement,PlainTextExporter,HtmlWriter,ParsingChain,TransformerFunc,FileStream,ZipReader, etc., are nowchain_element,plain_text_exporter,html_writer,parsing_chain,transformer_func,file_stream,zip_reader, and so on. Document element tags (document::Text→document::text,mail::Mail→mail::mail, …) have been similarly renamed. - Enum Names Standardized: Enumerations such as
Model,ImageDetail,Language,output_typeetc., inside various namespaces now follow snake_case (e.g.,openai::model,openai::image_detail, etc.). - Upgraded libbfio to version
20260623for improved stability and compatibility. - ASan Fix for Recent MSVC: Added
_DISABLE_OPTIONAL_ANNOTATIONto prevent link errors when building with AddressSanitizer on MSVC. - CTranslate2 Build Fix: The custom
spdlogsubmodule has been replaced by the standard vcpkgspdlogport, resolving spdlog‑related build errors. - Vcpkg Conflict Resolution: Fixed a file installation conflict between the
ctranslate2andnlohmann-jsonports. -
Mailio Crash Prevention: The EML parser’s
BoundaryTrackernow handles prematurely closed multipart sections and injects empty parts when necessary, preventing a crash in the underlyingmailiolibrary. -
Refactor
- Backend Separation: The former monolithic
local_ailibrary has been split intodocwire_ai_ct2(CTranslate2 runner, tokenizer) anddocwire_ai_llama(Llama.cpp runner). Thedocwire_local_ailibrary becomes a convenience layer that links the chosen backends. - Namespace & Module Reorganization:
- CTranslate2‑specific classes moved into
docwire::ai::ct2(ct2_runner,tokenizer). - Llama.cpp‑specific code lives in
docwire::ai::llama. - Shared AI chain elements reside directly in
docwire::ai. - Local default wrappers moved to
docwire::ai::local.
- CTranslate2‑specific classes moved into
- Configuration Strong Types: Introduced
strong_typeand several dedicated types (context_size,thread_count,token_limit,temperature,min_p,batch_size) inmodel_inference_config.hfor safer Llama parameter passing. -
Build System Restructuring: New CMake options
DOCWIRE_CT2andDOCWIRE_LLAMAcontrol optional compilation of the respective backends. Feature flagslocal-ai-ct2,local-ai-llama, andlocal-ai-model-graniteare exposed in the vcpkg port. -
Tests
- Backend Integration Tests: Added
local_ai_ct2_integrationandlocal_ai_llama_integrationtests that execute a full pipeline (document parsing → text extraction → local AI task) to validate the new backends. - More Forgiving AI Tests: Local AI summarization tests now use fuzzy matching instead of exact string comparison, reducing flakiness due to model output variation.
- EML Robustness Tests: New test cases (
endboundary_first.eml,missing_inner_closing_boundary.eml,nested_multiparts_missing.eml,valid_format.eml) ensure correct handling of malformed or non‑standard MIME boundaries. - Test Infrastructure Fixes: Added a GoogleTest
PrintTostringification for theContentTypeTestCasestruct, resolving formatting issues in parameterized content‑type tests. - Build Guard: Example tests that require local AI libraries are conditionally compiled only when the corresponding targets are available.