llguidance 0.7.18__tar.gz → 0.7.20__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {llguidance-0.7.18 → llguidance-0.7.20}/.github/workflows/rust.yml +17 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/CHANGELOG.md +11 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/Cargo.lock +17 -43
- {llguidance-0.7.18 → llguidance-0.7.20}/PKG-INFO +1 -1
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/Cargo.toml +2 -2
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/build.rs +1 -1
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/llguidance.h +1 -1
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/earley/lexer.rs +2 -2
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/earley/regexvec.rs +7 -5
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/ffi.rs +7 -4
- {llguidance-0.7.18 → llguidance-0.7.20}/pyproject.toml +1 -1
- {llguidance-0.7.18 → llguidance-0.7.20}/python_ext/Cargo.toml +1 -1
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/tests/test_ll.rs +49 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie/Cargo.toml +1 -1
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie_hf_downloader/Cargo.toml +1 -1
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie_hf_tokenizers/Cargo.toml +5 -2
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie_hf_tokenizers/src/lib.rs +3 -1
- {llguidance-0.7.18 → llguidance-0.7.20}/.github/workflows/wheels.yml +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/.gitignore +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/CODE_OF_CONDUCT.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/Cargo.toml +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/LICENSE +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/README.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/SECURITY.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/SUPPORT.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/c_sample/Makefile +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/c_sample/README.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/c_sample/c_sample.cpp +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/docs/fast_forward.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/docs/json_schema.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/docs/mask_plot.png +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/docs/optimizations.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/docs/special_tokens.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/docs/syntax.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/docs/toktrie.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/json_stats/Cargo.toml +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/json_stats/expected_maskbench.json +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/json_stats/jstats.sh +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/json_stats/scripts/split-stats.sh +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/json_stats/scripts/split_plot.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/json_stats/src/json_stats.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/json_stats/src/lib.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/json_stats/src/stats.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/LICENSE +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/README.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/cbindgen.toml +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/grammars/character.json +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/grammars/json.json +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/api.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/constraint.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/earley/from_guidance.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/earley/grammar.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/earley/lexerspec.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/earley/mod.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/earley/parser.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/earley/perf.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/earley/slicer.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/factory.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/ffi_par.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/grammar_builder.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/json/README.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/json/compiler.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/json/context_ref.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/json/context_simple/context.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/json/context_simple/draft.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/json/context_simple/mod.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/json/formats.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/json/mod.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/json/numeric.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/json/schema.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/json/shared_context.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/json_validation.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/lark/README.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/lark/ast.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/lark/common.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/lark/compiler.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/lark/lexer.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/lark/mod.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/lark/parser.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/lib.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/logging.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/matcher.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/output.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/panic_utils.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/regex_rewrite.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/stop_controller.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/substring.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/tokenizer_json.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/parser/src/tokenparser.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/plan.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/llguidance/__init__.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/llguidance/_grammar_from.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/llguidance/_lib.pyi +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/llguidance/_struct_tag.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/llguidance/_tokenizer.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/llguidance/_util.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/llguidance/cli.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/llguidance/gbnf_to_lark.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/llguidance/hf.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/llguidance/mlx.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/llguidance/numpy.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/llguidance/py.typed +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/llguidance/torch.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/mypy.ini +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/torch_tests/__init__.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/torch_tests/test_bitmask.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/torch_tests/test_hf.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python/torch_tests/test_matcher.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python_ext/src/lib.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python_ext/src/llinterpreter.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python_ext/src/llmatcher.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python_ext/src/parserlimits.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python_ext/src/py.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/python_ext/src/pyjson.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/Cargo.toml +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/README.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/cli.sh +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/blog.sample.json +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/blog.schema.json +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/blog.schema.ll.json +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/from-llama.cpp/README.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/from-llama.cpp/arithmetic.gbnf +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/from-llama.cpp/c.gbnf +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/from-llama.cpp/chess.gbnf +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/from-llama.cpp/english.gbnf +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/from-llama.cpp/japanese.gbnf +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/from-llama.cpp/json.gbnf +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/from-llama.cpp/json_arr.gbnf +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/from-llama.cpp/list.gbnf +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/from-llama.cpp/vllm-sql.gbnf +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/lark.lark +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/rfc.lark +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/rfc.xml +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/data/ulysses.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/gtest.sh +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/lark.sh +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/run.sh +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/src/lib.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/src/minimal.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/src/sample_parser.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/tests/test_lark.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/tests/test_raw_parser.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/sample_parser/tests/test_stop.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/annotate_asm.js +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/bump.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/cbindgen.sh +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/checklinks.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/checklinks.sh +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/ci-publish.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/disasm.sh +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/gbnf_to_lark.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/gen-testcase.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/git-version.sh +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/install-deps.sh +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/jsonschema-stats.js +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/remote-guidance-test.sh +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/rust-size.js +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/rust_size.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/test-guidance.sh +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/tokenizer_test.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/scripts/update-git.py +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie/LICENSE +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie/README.md +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie/src/bytes.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie/src/lib.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie/src/recognizer.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie/src/rng.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie/src/svob.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie/src/tokenv.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie/src/toktree.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie/tests/test_svob.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie_hf_downloader/LICENSE +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie_hf_downloader/src/lib.rs +0 -0
- {llguidance-0.7.18 → llguidance-0.7.20}/toktrie_hf_tokenizers/LICENSE +0 -0
|
@@ -52,3 +52,20 @@ jobs:
|
|
|
52
52
|
with:
|
|
53
53
|
name: wheels
|
|
54
54
|
path: target/wheels/*
|
|
55
|
+
|
|
56
|
+
msrv:
|
|
57
|
+
name: MSRV Check
|
|
58
|
+
|
|
59
|
+
runs-on: ubuntu-latest
|
|
60
|
+
|
|
61
|
+
steps:
|
|
62
|
+
- uses: actions/checkout@v4
|
|
63
|
+
|
|
64
|
+
- name: Set up Rust
|
|
65
|
+
uses: dtolnay/rust-toolchain@1.80.0
|
|
66
|
+
with:
|
|
67
|
+
components: clippy
|
|
68
|
+
|
|
69
|
+
- name: Build parser
|
|
70
|
+
run: cargo build --verbose --locked
|
|
71
|
+
working-directory: parser
|
|
@@ -4,6 +4,17 @@ All notable changes to this project will be documented in this file. Dates are d
|
|
|
4
4
|
|
|
5
5
|
If a release doesn't introduce any interesting changes (build fixes etc.), it's skipped.
|
|
6
6
|
|
|
7
|
+
|
|
8
|
+
#### [0.7.20](https://github.com/guidance-ai/llguidance/compare/v0.7.19...0.7.20) 2025-05-15
|
|
9
|
+
|
|
10
|
+
- use fancy-regex instead of onig as tokenizers regex library [`#172`](https://github.com/guidance-ai/llguidance/pull/172)
|
|
11
|
+
- fixes compilation on GCC 15, thanks [@Slowki](https://github.com/Slowki)
|
|
12
|
+
- msrv 1.80 support (incl. derivre bump) [`c89e386`](https://github.com/guidance-ai/llguidance/commit/c89e386685cd911a89fd47df225de88f88c10883), thank you [@nteodosio](https://github.com/nteodosio) for initial [PR](https://github.com/guidance-ai/llguidance/pull/170)!
|
|
13
|
+
|
|
14
|
+
#### [0.7.19](https://github.com/guidance-ai/llguidance/compare/v0.7.18...0.7.19) 2025-04-24
|
|
15
|
+
|
|
16
|
+
- fix a numeric token bug [`1f59edf`](https://github.com/guidance-ai/llguidance/commit/1f59edfc49b44cfba74b2380f34874a0778d9441)
|
|
17
|
+
|
|
7
18
|
#### [0.7.18](https://github.com/guidance-ai/llguidance/compare/v0.7.17...0.7.18) 2025-04-22
|
|
8
19
|
|
|
9
20
|
- apply x-guidance also in %json{} [`2627891`](https://github.com/guidance-ai/llguidance/commit/2627891c72c7e38062cd3e052f1de146d2e21635)
|
|
@@ -150,12 +150,6 @@ version = "0.8.0"
|
|
|
150
150
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
151
151
|
checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
|
|
152
152
|
|
|
153
|
-
[[package]]
|
|
154
|
-
name = "bitflags"
|
|
155
|
-
version = "1.3.2"
|
|
156
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
157
|
-
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
|
158
|
-
|
|
159
153
|
[[package]]
|
|
160
154
|
name = "bitflags"
|
|
161
155
|
version = "2.9.0"
|
|
@@ -401,9 +395,9 @@ dependencies = [
|
|
|
401
395
|
|
|
402
396
|
[[package]]
|
|
403
397
|
name = "derivre"
|
|
404
|
-
version = "0.3.
|
|
398
|
+
version = "0.3.8"
|
|
405
399
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
406
|
-
checksum = "
|
|
400
|
+
checksum = "786c7c65c4ef0c7deb05de3005e01991612a8f09fe0844fc0969c68b90468ba8"
|
|
407
401
|
dependencies = [
|
|
408
402
|
"ahash",
|
|
409
403
|
"anyhow",
|
|
@@ -672,8 +666,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
672
666
|
checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
|
|
673
667
|
dependencies = [
|
|
674
668
|
"cfg-if",
|
|
669
|
+
"js-sys",
|
|
675
670
|
"libc",
|
|
676
671
|
"wasi 0.11.0+wasi-snapshot-preview1",
|
|
672
|
+
"wasm-bindgen",
|
|
677
673
|
]
|
|
678
674
|
|
|
679
675
|
[[package]]
|
|
@@ -1160,7 +1156,7 @@ version = "0.1.3"
|
|
|
1160
1156
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1161
1157
|
checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
|
|
1162
1158
|
dependencies = [
|
|
1163
|
-
"bitflags
|
|
1159
|
+
"bitflags",
|
|
1164
1160
|
"libc",
|
|
1165
1161
|
]
|
|
1166
1162
|
|
|
@@ -1178,7 +1174,7 @@ checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856"
|
|
|
1178
1174
|
|
|
1179
1175
|
[[package]]
|
|
1180
1176
|
name = "llguidance"
|
|
1181
|
-
version = "0.7.
|
|
1177
|
+
version = "0.7.20"
|
|
1182
1178
|
dependencies = [
|
|
1183
1179
|
"anyhow",
|
|
1184
1180
|
"derivre",
|
|
@@ -1197,7 +1193,7 @@ dependencies = [
|
|
|
1197
1193
|
|
|
1198
1194
|
[[package]]
|
|
1199
1195
|
name = "llguidance_py"
|
|
1200
|
-
version = "0.7.
|
|
1196
|
+
version = "0.7.20"
|
|
1201
1197
|
dependencies = [
|
|
1202
1198
|
"anyhow",
|
|
1203
1199
|
"bytemuck",
|
|
@@ -1446,35 +1442,13 @@ version = "1.21.3"
|
|
|
1446
1442
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1447
1443
|
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
|
|
1448
1444
|
|
|
1449
|
-
[[package]]
|
|
1450
|
-
name = "onig"
|
|
1451
|
-
version = "6.4.0"
|
|
1452
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1453
|
-
checksum = "8c4b31c8722ad9171c6d77d3557db078cab2bd50afcc9d09c8b315c59df8ca4f"
|
|
1454
|
-
dependencies = [
|
|
1455
|
-
"bitflags 1.3.2",
|
|
1456
|
-
"libc",
|
|
1457
|
-
"once_cell",
|
|
1458
|
-
"onig_sys",
|
|
1459
|
-
]
|
|
1460
|
-
|
|
1461
|
-
[[package]]
|
|
1462
|
-
name = "onig_sys"
|
|
1463
|
-
version = "69.8.1"
|
|
1464
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1465
|
-
checksum = "7b829e3d7e9cc74c7e315ee8edb185bf4190da5acde74afd7fc59c35b1f086e7"
|
|
1466
|
-
dependencies = [
|
|
1467
|
-
"cc",
|
|
1468
|
-
"pkg-config",
|
|
1469
|
-
]
|
|
1470
|
-
|
|
1471
1445
|
[[package]]
|
|
1472
1446
|
name = "openssl"
|
|
1473
1447
|
version = "0.10.72"
|
|
1474
1448
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1475
1449
|
checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da"
|
|
1476
1450
|
dependencies = [
|
|
1477
|
-
"bitflags
|
|
1451
|
+
"bitflags",
|
|
1478
1452
|
"cfg-if",
|
|
1479
1453
|
"foreign-types",
|
|
1480
1454
|
"libc",
|
|
@@ -1747,7 +1721,7 @@ version = "0.5.11"
|
|
|
1747
1721
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1748
1722
|
checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3"
|
|
1749
1723
|
dependencies = [
|
|
1750
|
-
"bitflags
|
|
1724
|
+
"bitflags",
|
|
1751
1725
|
]
|
|
1752
1726
|
|
|
1753
1727
|
[[package]]
|
|
@@ -1897,7 +1871,7 @@ version = "1.0.5"
|
|
|
1897
1871
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1898
1872
|
checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf"
|
|
1899
1873
|
dependencies = [
|
|
1900
|
-
"bitflags
|
|
1874
|
+
"bitflags",
|
|
1901
1875
|
"errno",
|
|
1902
1876
|
"libc",
|
|
1903
1877
|
"linux-raw-sys",
|
|
@@ -1992,7 +1966,7 @@ version = "2.11.1"
|
|
|
1992
1966
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1993
1967
|
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
|
|
1994
1968
|
dependencies = [
|
|
1995
|
-
"bitflags
|
|
1969
|
+
"bitflags",
|
|
1996
1970
|
"core-foundation",
|
|
1997
1971
|
"core-foundation-sys",
|
|
1998
1972
|
"libc",
|
|
@@ -2185,7 +2159,7 @@ version = "0.6.1"
|
|
|
2185
2159
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2186
2160
|
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
|
|
2187
2161
|
dependencies = [
|
|
2188
|
-
"bitflags
|
|
2162
|
+
"bitflags",
|
|
2189
2163
|
"core-foundation",
|
|
2190
2164
|
"system-configuration-sys",
|
|
2191
2165
|
]
|
|
@@ -2278,13 +2252,13 @@ dependencies = [
|
|
|
2278
2252
|
"aho-corasick",
|
|
2279
2253
|
"derive_builder",
|
|
2280
2254
|
"esaxx-rs",
|
|
2255
|
+
"fancy-regex",
|
|
2281
2256
|
"getrandom 0.2.15",
|
|
2282
2257
|
"itertools 0.13.0",
|
|
2283
2258
|
"lazy_static",
|
|
2284
2259
|
"log",
|
|
2285
2260
|
"macro_rules_attribute",
|
|
2286
2261
|
"monostate",
|
|
2287
|
-
"onig",
|
|
2288
2262
|
"paste",
|
|
2289
2263
|
"rand",
|
|
2290
2264
|
"rayon",
|
|
@@ -2362,7 +2336,7 @@ dependencies = [
|
|
|
2362
2336
|
|
|
2363
2337
|
[[package]]
|
|
2364
2338
|
name = "toktrie"
|
|
2365
|
-
version = "0.7.
|
|
2339
|
+
version = "0.7.20"
|
|
2366
2340
|
dependencies = [
|
|
2367
2341
|
"anyhow",
|
|
2368
2342
|
"bytemuck",
|
|
@@ -2373,7 +2347,7 @@ dependencies = [
|
|
|
2373
2347
|
|
|
2374
2348
|
[[package]]
|
|
2375
2349
|
name = "toktrie_hf_downloader"
|
|
2376
|
-
version = "0.7.
|
|
2350
|
+
version = "0.7.20"
|
|
2377
2351
|
dependencies = [
|
|
2378
2352
|
"anyhow",
|
|
2379
2353
|
"hf-hub",
|
|
@@ -2384,7 +2358,7 @@ dependencies = [
|
|
|
2384
2358
|
|
|
2385
2359
|
[[package]]
|
|
2386
2360
|
name = "toktrie_hf_tokenizers"
|
|
2387
|
-
version = "0.7.
|
|
2361
|
+
version = "0.7.20"
|
|
2388
2362
|
dependencies = [
|
|
2389
2363
|
"anyhow",
|
|
2390
2364
|
"log",
|
|
@@ -2987,7 +2961,7 @@ version = "0.39.0"
|
|
|
2987
2961
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2988
2962
|
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
|
|
2989
2963
|
dependencies = [
|
|
2990
|
-
"bitflags
|
|
2964
|
+
"bitflags",
|
|
2991
2965
|
]
|
|
2992
2966
|
|
|
2993
2967
|
[[package]]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "llguidance"
|
|
3
|
-
version = "0.7.
|
|
3
|
+
version = "0.7.20"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
license = "MIT"
|
|
6
6
|
description = "Super-fast Structured Outputs"
|
|
@@ -8,7 +8,7 @@ repository = "https://github.com/guidance-ai/llguidance"
|
|
|
8
8
|
|
|
9
9
|
[dependencies]
|
|
10
10
|
toktrie = { workspace = true }
|
|
11
|
-
derivre = { version = "=0.3.
|
|
11
|
+
derivre = { version = "=0.3.8", default-features = false, features = ["compress"] }
|
|
12
12
|
serde = { version = "1.0.217", features = ["derive"] }
|
|
13
13
|
serde_json = { version = "1.0.138", features = ["preserve_order"] }
|
|
14
14
|
anyhow = "1.0.95"
|
|
@@ -494,7 +494,7 @@ int32_t llg_matcher_compute_mask(struct LlgMatcher *matcher);
|
|
|
494
494
|
const uint32_t *llg_matcher_get_mask(struct LlgMatcher *matcher);
|
|
495
495
|
|
|
496
496
|
/**
|
|
497
|
-
* Return
|
|
497
|
+
* Return the size of the mask in bytes.
|
|
498
498
|
*/
|
|
499
499
|
size_t llg_matcher_get_mask_byte_size(struct LlgMatcher *matcher);
|
|
500
500
|
|
|
@@ -221,8 +221,8 @@ impl Lexer {
|
|
|
221
221
|
if enable_logging {
|
|
222
222
|
let info = self.state_info(state);
|
|
223
223
|
debug!(
|
|
224
|
-
"lex: {:?} -{:?}-> {:?}, acpt={:?}",
|
|
225
|
-
prev, byte as char, state, info.greedy_accepting
|
|
224
|
+
"lex: {:?} -{:?}-> {:?}, acpt={:?}/{:?}",
|
|
225
|
+
prev, byte as char, state, info.greedy_accepting, info.lazy_accepting
|
|
226
226
|
);
|
|
227
227
|
}
|
|
228
228
|
|
|
@@ -407,14 +407,18 @@ impl RegexVec {
|
|
|
407
407
|
for (idx, e) in iter_state(&self.rx_sets, desc.state) {
|
|
408
408
|
// If this lexeme is not a match. (If the derivative at this point is nullable,
|
|
409
409
|
// there is a match, so if it is not nullable, there is no match.)
|
|
410
|
+
// println!("idx: {:?} e: {:?} {:?}", idx, e,self.special_token_rx);
|
|
410
411
|
if !self.exprs.is_nullable(e) {
|
|
411
412
|
// No match, so not at end of lexeme
|
|
412
413
|
all_eoi = false;
|
|
413
414
|
continue;
|
|
414
|
-
} else if Some(
|
|
415
|
+
} else if Some(self.get_rx(idx)) == self.special_token_rx {
|
|
415
416
|
// the regex is /\xFF\[[0-9]+\]/ so it's guaranteed not to conflict with anything
|
|
416
417
|
// else (starts with non-unicode byte); thus we ignore the rest of processing
|
|
418
|
+
// when has_special_token is set, we just need to make sure lazy_accepting is non-empty,
|
|
419
|
+
// the actual value is not important
|
|
417
420
|
desc.lazy_accepting = MatchingLexemes::One(idx);
|
|
421
|
+
desc.has_special_token = true;
|
|
418
422
|
return;
|
|
419
423
|
}
|
|
420
424
|
|
|
@@ -424,9 +428,6 @@ impl RegexVec {
|
|
|
424
428
|
if lazies.is_none() {
|
|
425
429
|
all_eoi = false;
|
|
426
430
|
hidden_len = self.exprs.possible_lookahead_len(e) as u32;
|
|
427
|
-
if Some(self.get_rx(idx)) == self.special_token_rx {
|
|
428
|
-
desc.has_special_token = true;
|
|
429
|
-
}
|
|
430
431
|
}
|
|
431
432
|
lazies.add(idx);
|
|
432
433
|
continue;
|
|
@@ -711,7 +712,8 @@ impl RegexVec {
|
|
|
711
712
|
|
|
712
713
|
self.lowest_match_inner(&mut res);
|
|
713
714
|
|
|
714
|
-
//
|
|
715
|
+
// println!("state {:?} desc: {:?}", state, res);
|
|
716
|
+
|
|
715
717
|
res
|
|
716
718
|
}
|
|
717
719
|
|
|
@@ -554,9 +554,12 @@ pub extern "C" fn llg_get_temperature(cc: &LlgConstraint) -> f32 {
|
|
|
554
554
|
/// Check if constraint is stopped (cannot be extended further).
|
|
555
555
|
#[no_mangle]
|
|
556
556
|
pub extern "C" fn llg_is_stopped(cc: &LlgConstraint) -> bool {
|
|
557
|
-
cc.constraint
|
|
558
|
-
.
|
|
559
|
-
|
|
557
|
+
if let Some(c) = &cc.constraint {
|
|
558
|
+
c.step_result().is_stop()
|
|
559
|
+
} else {
|
|
560
|
+
// if there is no constraint, we consider it stopped
|
|
561
|
+
true
|
|
562
|
+
}
|
|
560
563
|
}
|
|
561
564
|
|
|
562
565
|
/// Compute mask for the next token sampling
|
|
@@ -1102,7 +1105,7 @@ pub extern "C" fn llg_matcher_get_mask(matcher: &mut LlgMatcher) -> *const u32 {
|
|
|
1102
1105
|
.map_or(std::ptr::null(), |m| m.as_ptr())
|
|
1103
1106
|
}
|
|
1104
1107
|
|
|
1105
|
-
/// Return
|
|
1108
|
+
/// Return the size of the mask in bytes.
|
|
1106
1109
|
#[no_mangle]
|
|
1107
1110
|
pub extern "C" fn llg_matcher_get_mask_byte_size(matcher: &mut LlgMatcher) -> usize {
|
|
1108
1111
|
matcher.mask_elts() * 4
|
|
@@ -1262,3 +1262,52 @@ fn test_ll_tool_str_spec() {
|
|
|
1262
1262
|
|
|
1263
1263
|
check_lark_grammar(TOOL_STR_SPEC_GRAMMAR, tool_chk);
|
|
1264
1264
|
}
|
|
1265
|
+
|
|
1266
|
+
#[test]
|
|
1267
|
+
fn test_ll_numeric_bug() {
|
|
1268
|
+
check_lark_grammar(
|
|
1269
|
+
r#"
|
|
1270
|
+
start: text
|
|
1271
|
+
text: (text_tokens)* <[33000]> ap
|
|
1272
|
+
ap: <[33001]> (atok*)
|
|
1273
|
+
atok: <[400-410]>
|
|
1274
|
+
text_tokens: <[300-310]>
|
|
1275
|
+
"#,
|
|
1276
|
+
&[
|
|
1277
|
+
"",
|
|
1278
|
+
"<[300]>‧<[33000]>",
|
|
1279
|
+
"<[33001]>",
|
|
1280
|
+
"<[401]>‧<[402]>‧≺EOS≻",
|
|
1281
|
+
],
|
|
1282
|
+
);
|
|
1283
|
+
|
|
1284
|
+
check_lark_grammar(
|
|
1285
|
+
r#"
|
|
1286
|
+
start: text
|
|
1287
|
+
text: (text_tokens)* ( (<[33000]> ap) | (<[33002]> (atok*)) )
|
|
1288
|
+
ap: <[33001]> (atok*)
|
|
1289
|
+
atok: <[400-410]>
|
|
1290
|
+
text_tokens: <[300-310]>
|
|
1291
|
+
"#,
|
|
1292
|
+
&[
|
|
1293
|
+
"",
|
|
1294
|
+
"<[300]>‧<[33000]>",
|
|
1295
|
+
"<[33001]>",
|
|
1296
|
+
"<[401]>‧<[402]>‧≺EOS≻",
|
|
1297
|
+
],
|
|
1298
|
+
);
|
|
1299
|
+
|
|
1300
|
+
check_lark_grammar(
|
|
1301
|
+
r#"
|
|
1302
|
+
start: text
|
|
1303
|
+
text: (text_tokens)* ( (<[33000]> ap) | (<[33002]> (atok*)) )
|
|
1304
|
+
ap: <[33001,33003]> (atok*)
|
|
1305
|
+
atok: <[400-410]>
|
|
1306
|
+
text_tokens: <[300-310]>
|
|
1307
|
+
"#,
|
|
1308
|
+
&[
|
|
1309
|
+
"",
|
|
1310
|
+
"✖<[33001]>‧<[300]>‧<[33000]>✖<[33002]>✖<[300]>‧<[33001]>✖<[33002]>✖<[300]>‧<[401]>‧<[402]>‧≺EOS≻",
|
|
1311
|
+
],
|
|
1312
|
+
);
|
|
1313
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "toktrie_hf_tokenizers"
|
|
3
|
-
version = "0.7.
|
|
3
|
+
version = "0.7.20"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
license = "MIT"
|
|
6
6
|
description = "HuggingFace tokenizers library support for toktrie and llguidance"
|
|
@@ -11,5 +11,8 @@ toktrie = { workspace = true }
|
|
|
11
11
|
serde = { version = "1.0.217", features = ["derive"] }
|
|
12
12
|
serde_json = "1.0.138"
|
|
13
13
|
anyhow = "1.0.95"
|
|
14
|
-
tokenizers = { version = ">=0.20.0, <1.0.0", default-features = false, features = [
|
|
14
|
+
tokenizers = { version = ">=0.20.0, <1.0.0", default-features = false, features = [
|
|
15
|
+
"unstable_wasm",
|
|
16
|
+
"fancy-regex",
|
|
17
|
+
] }
|
|
15
18
|
log = "0.4.25"
|
|
@@ -213,7 +213,9 @@ impl ByteTokenizerEnv {
|
|
|
213
213
|
bail!("vocab size too small; {} vs {}", n_vocab, token_bytes.len());
|
|
214
214
|
}
|
|
215
215
|
while n_vocab > token_bytes.len() {
|
|
216
|
-
token_bytes.
|
|
216
|
+
let mut name = format!(".<[{}]>", token_bytes.len()).into_bytes();
|
|
217
|
+
name[0] = TokTrie::SPECIAL_TOKEN_MARKER;
|
|
218
|
+
token_bytes.push(name);
|
|
217
219
|
}
|
|
218
220
|
info.vocab_size = n_vocab as u32;
|
|
219
221
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|