tokensim 1.0.0__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.
- tokensim-1.0.0/.github/workflows/ci.yml +49 -0
- tokensim-1.0.0/.github/workflows/pages.yml +126 -0
- tokensim-1.0.0/.github/workflows/release.yml +72 -0
- tokensim-1.0.0/BENCHMARKS.md +3382 -0
- tokensim-1.0.0/CMakeLists.txt +383 -0
- tokensim-1.0.0/LICENSE +21 -0
- tokensim-1.0.0/PKG-INFO +283 -0
- tokensim-1.0.0/README.md +265 -0
- tokensim-1.0.0/TECHNICAL-REPORT.md +710 -0
- tokensim-1.0.0/benchmarks/bench_parallel.c +233 -0
- tokensim-1.0.0/benchmarks/bench_pretokenizer.c +114 -0
- tokensim-1.0.0/benchmarks/bench_utf8simd.cpp +156 -0
- tokensim-1.0.0/bindings/... +0 -0
- tokensim-1.0.0/bindings/python/test_tsimd.py +139 -0
- tokensim-1.0.0/bindings/python/tsimd_module.c +299 -0
- tokensim-1.0.0/bindings/rust/Cargo.lock +32 -0
- tokensim-1.0.0/bindings/rust/Cargo.toml +28 -0
- tokensim-1.0.0/bindings/rust/README.md +98 -0
- tokensim-1.0.0/bindings/rust/build.rs +140 -0
- tokensim-1.0.0/bindings/rust/csrc/LICENSE +21 -0
- tokensim-1.0.0/bindings/rust/csrc/VERSION +1 -0
- tokensim-1.0.0/bindings/rust/csrc/include/allocator.h +27 -0
- tokensim-1.0.0/bindings/rust/csrc/include/batch.h +19 -0
- tokensim-1.0.0/bindings/rust/csrc/include/bpe.h +630 -0
- tokensim-1.0.0/bindings/rust/csrc/include/input.h +21 -0
- tokensim-1.0.0/bindings/rust/csrc/include/pretokenizer.h +110 -0
- tokensim-1.0.0/bindings/rust/csrc/include/simd.h +37 -0
- tokensim-1.0.0/bindings/rust/csrc/include/spm_tie_rule.h +20 -0
- tokensim-1.0.0/bindings/rust/csrc/include/tokenizer.h +206 -0
- tokensim-1.0.0/bindings/rust/csrc/include/tokensimd_sys.h +39 -0
- tokensim-1.0.0/bindings/rust/csrc/include/tokensimd_version.h +9 -0
- tokensim-1.0.0/bindings/rust/csrc/include/trie.h +78 -0
- tokensim-1.0.0/bindings/rust/csrc/include/unicode.h +49 -0
- tokensim-1.0.0/bindings/rust/csrc/include/vocabulary.h +181 -0
- tokensim-1.0.0/bindings/rust/csrc/src/allocator.c +140 -0
- tokensim-1.0.0/bindings/rust/csrc/src/bpe.c +3743 -0
- tokensim-1.0.0/bindings/rust/csrc/src/byte_unicode.c +30 -0
- tokensim-1.0.0/bindings/rust/csrc/src/byte_unicode.h +12 -0
- tokensim-1.0.0/bindings/rust/csrc/src/input.c +112 -0
- tokensim-1.0.0/bindings/rust/csrc/src/json.c +437 -0
- tokensim-1.0.0/bindings/rust/csrc/src/json.h +54 -0
- tokensim-1.0.0/bindings/rust/csrc/src/metaspace.c +428 -0
- tokensim-1.0.0/bindings/rust/csrc/src/model_gpt2.c +201 -0
- tokensim-1.0.0/bindings/rust/csrc/src/model_internal.c +38 -0
- tokensim-1.0.0/bindings/rust/csrc/src/model_internal.h +29 -0
- tokensim-1.0.0/bindings/rust/csrc/src/model_spm.c +459 -0
- tokensim-1.0.0/bindings/rust/csrc/src/model_tokjson.c +730 -0
- tokensim-1.0.0/bindings/rust/csrc/src/nfc.c +369 -0
- tokensim-1.0.0/bindings/rust/csrc/src/nfc_internal.h +43 -0
- tokensim-1.0.0/bindings/rust/csrc/src/nfc_tables.c +12707 -0
- tokensim-1.0.0/bindings/rust/csrc/src/parallel.c +2896 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/cl100k.c +40 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/cl100k_masks.c +1276 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/cl100k_match.h +117 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/deepseek.c +252 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/deepseek_masks.c +1285 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/gpt2.c +101 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/gpt2_masks.c +1200 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/internal.h +123 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/kimi.c +249 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/kimi_masks.c +308 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/nemo_masks.c +1321 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/o200k.c +136 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/o200k_masks.c +1634 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/o200k_match.h +413 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/pretokenizer.c +147 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/safe_split.c +43 -0
- tokensim-1.0.0/bindings/rust/csrc/src/pretokenizer/simd_pretok.c +806 -0
- tokensim-1.0.0/bindings/rust/csrc/src/serve_x86.cpp +170 -0
- tokensim-1.0.0/bindings/rust/csrc/src/simd/blocks_avx2.c +88 -0
- tokensim-1.0.0/bindings/rust/csrc/src/simd/blocks_avx512.c +81 -0
- tokensim-1.0.0/bindings/rust/csrc/src/simd/blocks_scalar.c +42 -0
- tokensim-1.0.0/bindings/rust/csrc/src/simd/blocks_sse2.c +86 -0
- tokensim-1.0.0/bindings/rust/csrc/src/simd/dispatch.c +177 -0
- tokensim-1.0.0/bindings/rust/csrc/src/simd/simd_internal.h +51 -0
- tokensim-1.0.0/bindings/rust/csrc/src/spm_charmap.h +6072 -0
- tokensim-1.0.0/bindings/rust/csrc/src/spm_seqmap.h +16066 -0
- tokensim-1.0.0/bindings/rust/csrc/src/spm_tie_rule.c +44 -0
- tokensim-1.0.0/bindings/rust/csrc/src/sys.c +197 -0
- tokensim-1.0.0/bindings/rust/csrc/src/tokenizer.c +1890 -0
- tokensim-1.0.0/bindings/rust/csrc/src/trie.c +301 -0
- tokensim-1.0.0/bindings/rust/csrc/src/unicode.c +58 -0
- tokensim-1.0.0/bindings/rust/csrc/src/unicode_tables.c +9192 -0
- tokensim-1.0.0/bindings/rust/csrc/src/vocabulary.c +1074 -0
- tokensim-1.0.0/bindings/rust/examples/bench.rs +50 -0
- tokensim-1.0.0/bindings/rust/src/lib.rs +358 -0
- tokensim-1.0.0/cmake/tokensimd-config.cmake.in +3 -0
- tokensim-1.0.0/cmake/tokensimd.pc.in +11 -0
- tokensim-1.0.0/include/allocator.h +27 -0
- tokensim-1.0.0/include/batch.h +19 -0
- tokensim-1.0.0/include/bpe.h +630 -0
- tokensim-1.0.0/include/input.h +21 -0
- tokensim-1.0.0/include/pretokenizer.h +110 -0
- tokensim-1.0.0/include/simd.h +37 -0
- tokensim-1.0.0/include/spm_tie_rule.h +20 -0
- tokensim-1.0.0/include/tokenizer.h +206 -0
- tokensim-1.0.0/include/tokensimd_sys.h +39 -0
- tokensim-1.0.0/include/tokensimd_version.h +9 -0
- tokensim-1.0.0/include/trie.h +78 -0
- tokensim-1.0.0/include/unicode.h +49 -0
- tokensim-1.0.0/include/vocabulary.h +181 -0
- tokensim-1.0.0/proof/Tokensim/Bpe.lean +588 -0
- tokensim-1.0.0/proof/Tokensim.lean +1 -0
- tokensim-1.0.0/proof/lake-manifest.json +6 -0
- tokensim-1.0.0/proof/lakefile.toml +6 -0
- tokensim-1.0.0/proof/lean-toolchain +1 -0
- tokensim-1.0.0/pyproject.toml +76 -0
- tokensim-1.0.0/scripts/README.md +32 -0
- tokensim-1.0.0/scripts/ab_test.py +128 -0
- tokensim-1.0.0/scripts/bench_baseline.json +5 -0
- tokensim-1.0.0/scripts/bench_python.py +71 -0
- tokensim-1.0.0/scripts/bench_python_arm.py +55 -0
- tokensim-1.0.0/scripts/bench_scalar_baseline.py +43 -0
- tokensim-1.0.0/scripts/bench_track.py +95 -0
- tokensim-1.0.0/scripts/bench_wrappers.sh +88 -0
- tokensim-1.0.0/scripts/bisect_thread_diff.sh +34 -0
- tokensim-1.0.0/scripts/bisect_thread_prefix.sh +23 -0
- tokensim-1.0.0/scripts/check_avx512_sde.sh +37 -0
- tokensim-1.0.0/scripts/check_clang.sh +18 -0
- tokensim-1.0.0/scripts/check_gpt2_files.py +62 -0
- tokensim-1.0.0/scripts/check_lean_axioms.sh +23 -0
- tokensim-1.0.0/scripts/check_versions.sh +21 -0
- tokensim-1.0.0/scripts/chunk_bisect.c +148 -0
- tokensim-1.0.0/scripts/compare_reference.py +258 -0
- tokensim-1.0.0/scripts/corpus_hash.c +129 -0
- tokensim-1.0.0/scripts/deepseek_seam_repro.py +19 -0
- tokensim-1.0.0/scripts/deepseek_span_probe.c +70 -0
- tokensim-1.0.0/scripts/derive_corpus_hash.py +78 -0
- tokensim-1.0.0/scripts/derive_gate_hash.py +36 -0
- tokensim-1.0.0/scripts/diag_compare.c +84 -0
- tokensim-1.0.0/scripts/diff_fuzz.py +76 -0
- tokensim-1.0.0/scripts/exhaustive_algebra.c +220 -0
- tokensim-1.0.0/scripts/findc_stress.sh +32 -0
- tokensim-1.0.0/scripts/full_corpus_parity.sh +35 -0
- tokensim-1.0.0/scripts/gate_parity.sh +35 -0
- tokensim-1.0.0/scripts/gem4_batch_bisect.c +95 -0
- tokensim-1.0.0/scripts/gem4_profile.c +311 -0
- tokensim-1.0.0/scripts/gemma_parity.py +72 -0
- tokensim-1.0.0/scripts/gemma_unit_probe.c +69 -0
- tokensim-1.0.0/scripts/gemma_window_probe.c +130 -0
- tokensim-1.0.0/scripts/gen_golden.py +90 -0
- tokensim-1.0.0/scripts/gen_model_fixtures.py +96 -0
- tokensim-1.0.0/scripts/gen_nfc_qc.py +15 -0
- tokensim-1.0.0/scripts/gen_nfc_tables.py +151 -0
- tokensim-1.0.0/scripts/gen_spm_seqmap.py +305 -0
- tokensim-1.0.0/scripts/gen_tie_expected.py +12 -0
- tokensim-1.0.0/scripts/gen_unicode_tables.py +190 -0
- tokensim-1.0.0/scripts/gt_drive.py +36 -0
- tokensim-1.0.0/scripts/gt_drive2.py +52 -0
- tokensim-1.0.0/scripts/ids_parity.c +103 -0
- tokensim-1.0.0/scripts/kimi_span_diff.c +80 -0
- tokensim-1.0.0/scripts/ladder_encode.c +144 -0
- tokensim-1.0.0/scripts/ladder_giga.py +110 -0
- tokensim-1.0.0/scripts/leak_probe.c +98 -0
- tokensim-1.0.0/scripts/make_unk_surface_fixture.py +60 -0
- tokensim-1.0.0/scripts/measure_at_insert.c +85 -0
- tokensim-1.0.0/scripts/microbench_windows.c +51 -0
- tokensim-1.0.0/scripts/ms_bench.c +61 -0
- tokensim-1.0.0/scripts/ms_diff_probe.c +196 -0
- tokensim-1.0.0/scripts/nemo_fill_diff.c +102 -0
- tokensim-1.0.0/scripts/nemo_parity.py +72 -0
- tokensim-1.0.0/scripts/nemo_spin_probe.c +104 -0
- tokensim-1.0.0/scripts/nfkc_sweep.c +31 -0
- tokensim-1.0.0/scripts/par_arms_ab.py +129 -0
- tokensim-1.0.0/scripts/probe_transform.c +12 -0
- tokensim-1.0.0/scripts/repro_artifact.sh +25 -0
- tokensim-1.0.0/scripts/run_exhaustive.sh +7 -0
- tokensim-1.0.0/scripts/run_full_battery.sh +52 -0
- tokensim-1.0.0/scripts/run_fuzz.sh +40 -0
- tokensim-1.0.0/scripts/run_ladder.sh +54 -0
- tokensim-1.0.0/scripts/run_leak_check.sh +28 -0
- tokensim-1.0.0/scripts/run_matrix.sh +45 -0
- tokensim-1.0.0/scripts/run_microbench.sh +10 -0
- tokensim-1.0.0/scripts/run_sanitize.sh +44 -0
- tokensim-1.0.0/scripts/run_wholechain_bench.sh +13 -0
- tokensim-1.0.0/scripts/seam_diff_probe.c +112 -0
- tokensim-1.0.0/scripts/seed_probe.c +57 -0
- tokensim-1.0.0/scripts/span_probe.c +133 -0
- tokensim-1.0.0/scripts/spm_norm_probe.py +169 -0
- tokensim-1.0.0/scripts/spm_parity.py +119 -0
- tokensim-1.0.0/scripts/strip_comments.c +150 -0
- tokensim-1.0.0/scripts/strip_comments.py +77 -0
- tokensim-1.0.0/scripts/sync_crate.sh +15 -0
- tokensim-1.0.0/scripts/tiktoken_parity.py +88 -0
- tokensim-1.0.0/scripts/tokjson_parity.py +88 -0
- tokensim-1.0.0/scripts/uni_boundary_probe.c +125 -0
- tokensim-1.0.0/scripts/uni_cutclass_probe.c +119 -0
- tokensim-1.0.0/scripts/uni_dp_diff.c +74 -0
- tokensim-1.0.0/scripts/uni_first_diff.c +101 -0
- tokensim-1.0.0/scripts/uni_norm_diff.c +70 -0
- tokensim-1.0.0/scripts/uni_par_probe.c +101 -0
- tokensim-1.0.0/scripts/uni_target_diff.c +75 -0
- tokensim-1.0.0/scripts/unit_perf_probe.c +46 -0
- tokensim-1.0.0/scripts/wholechain_bench.c +122 -0
- tokensim-1.0.0/src/allocator.c +140 -0
- tokensim-1.0.0/src/bpe.c +3751 -0
- tokensim-1.0.0/src/byte_unicode.c +30 -0
- tokensim-1.0.0/src/byte_unicode.h +12 -0
- tokensim-1.0.0/src/input.c +112 -0
- tokensim-1.0.0/src/json.c +437 -0
- tokensim-1.0.0/src/json.h +54 -0
- tokensim-1.0.0/src/metaspace.c +428 -0
- tokensim-1.0.0/src/model_gpt2.c +201 -0
- tokensim-1.0.0/src/model_internal.c +38 -0
- tokensim-1.0.0/src/model_internal.h +29 -0
- tokensim-1.0.0/src/model_spm.c +459 -0
- tokensim-1.0.0/src/model_tokjson.c +730 -0
- tokensim-1.0.0/src/nfc.c +369 -0
- tokensim-1.0.0/src/nfc_internal.h +43 -0
- tokensim-1.0.0/src/nfc_tables.c +12707 -0
- tokensim-1.0.0/src/parallel.c +2914 -0
- tokensim-1.0.0/src/pretokenizer/cl100k.c +40 -0
- tokensim-1.0.0/src/pretokenizer/cl100k_masks.c +1276 -0
- tokensim-1.0.0/src/pretokenizer/cl100k_match.h +117 -0
- tokensim-1.0.0/src/pretokenizer/deepseek.c +252 -0
- tokensim-1.0.0/src/pretokenizer/deepseek_masks.c +1285 -0
- tokensim-1.0.0/src/pretokenizer/gpt2.c +101 -0
- tokensim-1.0.0/src/pretokenizer/gpt2_masks.c +1200 -0
- tokensim-1.0.0/src/pretokenizer/internal.h +123 -0
- tokensim-1.0.0/src/pretokenizer/kimi.c +249 -0
- tokensim-1.0.0/src/pretokenizer/kimi_masks.c +308 -0
- tokensim-1.0.0/src/pretokenizer/nemo_masks.c +1321 -0
- tokensim-1.0.0/src/pretokenizer/o200k.c +136 -0
- tokensim-1.0.0/src/pretokenizer/o200k_masks.c +1634 -0
- tokensim-1.0.0/src/pretokenizer/o200k_match.h +413 -0
- tokensim-1.0.0/src/pretokenizer/pretokenizer.c +147 -0
- tokensim-1.0.0/src/pretokenizer/safe_split.c +43 -0
- tokensim-1.0.0/src/pretokenizer/simd_pretok.c +806 -0
- tokensim-1.0.0/src/serve_x86.cpp +170 -0
- tokensim-1.0.0/src/simd/blocks_avx2.c +88 -0
- tokensim-1.0.0/src/simd/blocks_avx512.c +81 -0
- tokensim-1.0.0/src/simd/blocks_scalar.c +42 -0
- tokensim-1.0.0/src/simd/blocks_sse2.c +86 -0
- tokensim-1.0.0/src/simd/dispatch.c +177 -0
- tokensim-1.0.0/src/simd/simd_internal.h +51 -0
- tokensim-1.0.0/src/spm_charmap.h +6072 -0
- tokensim-1.0.0/src/spm_seqmap.h +16066 -0
- tokensim-1.0.0/src/spm_tie_rule.c +44 -0
- tokensim-1.0.0/src/sys.c +197 -0
- tokensim-1.0.0/src/tokenizer.c +1890 -0
- tokensim-1.0.0/src/trie.c +301 -0
- tokensim-1.0.0/src/unicode.c +58 -0
- tokensim-1.0.0/src/unicode_tables.c +9192 -0
- tokensim-1.0.0/src/vocabulary.c +1074 -0
- tokensim-1.0.0/style.css +68 -0
- tokensim-1.0.0/tests/fixtures/gemma3_4b_chunk6_seam.bin +7646 -0
- tokensim-1.0.0/tests/fixtures/gemma3_4b_seam.bin +8414 -0
- tokensim-1.0.0/tests/fixtures/golden_pretokens_cl100k.tsv +25 -0
- tokensim-1.0.0/tests/fixtures/golden_pretokens_gpt2.tsv +25 -0
- tokensim-1.0.0/tests/fixtures/golden_tokens_cl100k.tsv +25 -0
- tokensim-1.0.0/tests/fixtures/golden_tokens_gpt2.tsv +25 -0
- tokensim-1.0.0/tests/fixtures/mini.tiktoken +260 -0
- tokensim-1.0.0/tests/fixtures/mini_encoder.json +1 -0
- tokensim-1.0.0/tests/fixtures/mini_tokenizer.json +1 -0
- tokensim-1.0.0/tests/fixtures/mini_vocab.bpe +5 -0
- tokensim-1.0.0/tests/fixtures/par_unigram_divergence/README.md +55 -0
- tokensim-1.0.0/tests/fixtures/par_unigram_divergence/gemma3-4b_par_half.bin +1 -0
- tokensim-1.0.0/tests/fixtures/par_unigram_divergence/gemma4_par_short.bin +1 -0
- tokensim-1.0.0/tests/fixtures/par_unigram_divergence/kimi_qs_span.bin +1 -0
- tokensim-1.0.0/tests/fixtures/par_unigram_divergence/mistral_giant_word_cliff.bin +0 -0
- tokensim-1.0.0/tests/fixtures/par_unigram_divergence/mistral_par_trunc.bin +1 -0
- tokensim-1.0.0/tests/fixtures/t5_fuzz_mismatch.bin +1 -0
- tokensim-1.0.0/tests/fixtures/t5_fuzz_mismatch.expected +1 -0
- tokensim-1.0.0/tests/fixtures/t5_tie_negative.bin +1 -0
- tokensim-1.0.0/tests/fixtures/t5_tie_negative.expected +1 -0
- tokensim-1.0.0/tests/fixtures/t5_unk_surface.model +0 -0
- tokensim-1.0.0/tests/fixtures/tsimd_guard_raw.tiktoken +256 -0
- tokensim-1.0.0/tests/fuzz/fuzz_tokenizer.c +133 -0
- tokensim-1.0.0/tests/fuzz_all_models.c +375 -0
- tokensim-1.0.0/tests/fuzz_decode_roundtrip.c +46 -0
- tokensim-1.0.0/tests/fuzz_encode_vs_oracle.c +98 -0
- tokensim-1.0.0/tests/fuzz_encode_vs_oracle_cl100k.c +99 -0
- tokensim-1.0.0/tests/fuzz_encode_vs_oracle_gpt2.c +100 -0
- tokensim-1.0.0/tests/fuzz_par_parity.c +131 -0
- tokensim-1.0.0/tests/fuzz_pretokenize.c +62 -0
- tokensim-1.0.0/tests/test_added_scan.c +416 -0
- tokensim-1.0.0/tests/test_avx512_probe.c +40 -0
- tokensim-1.0.0/tests/test_batch_fused.c +80 -0
- tokensim-1.0.0/tests/test_batch_nfc.c +96 -0
- tokensim-1.0.0/tests/test_batch_scale.c +207 -0
- tokensim-1.0.0/tests/test_bcls_tables.c +145 -0
- tokensim-1.0.0/tests/test_bmp_props.c +69 -0
- tokensim-1.0.0/tests/test_bpe.c +162 -0
- tokensim-1.0.0/tests/test_bpe_heap_oracle.c +209 -0
- tokensim-1.0.0/tests/test_bpe_path_agreement.c +734 -0
- tokensim-1.0.0/tests/test_bpe_seam.c +146 -0
- tokensim-1.0.0/tests/test_bpe_short.c +138 -0
- tokensim-1.0.0/tests/test_byte_ids_fallback.c +121 -0
- tokensim-1.0.0/tests/test_cache_state.c +172 -0
- tokensim-1.0.0/tests/test_cache_stress.c +622 -0
- tokensim-1.0.0/tests/test_cl100k_masks.c +442 -0
- tokensim-1.0.0/tests/test_cls_table.c +142 -0
- tokensim-1.0.0/tests/test_decode.c +221 -0
- tokensim-1.0.0/tests/test_deepseek_attach.c +114 -0
- tokensim-1.0.0/tests/test_deepseek_masks.c +607 -0
- tokensim-1.0.0/tests/test_dispatch.c +91 -0
- tokensim-1.0.0/tests/test_dual_cursor.c +95 -0
- tokensim-1.0.0/tests/test_encode_into.c +231 -0
- tokensim-1.0.0/tests/test_fill_tail_guard.c +245 -0
- tokensim-1.0.0/tests/test_fuzz.c +168 -0
- tokensim-1.0.0/tests/test_gemma_added_par.c +198 -0
- tokensim-1.0.0/tests/test_gemma_metaspace.c +96 -0
- tokensim-1.0.0/tests/test_giant_word_cliff.c +61 -0
- tokensim-1.0.0/tests/test_gpt2_masks.c +434 -0
- tokensim-1.0.0/tests/test_gpt2d_spanner.c +282 -0
- tokensim-1.0.0/tests/test_hi_algebra.c +211 -0
- tokensim-1.0.0/tests/test_hugepage_tables.c +98 -0
- tokensim-1.0.0/tests/test_ignore_merges.c +70 -0
- tokensim-1.0.0/tests/test_insert_slot.c +127 -0
- tokensim-1.0.0/tests/test_json.c +96 -0
- tokensim-1.0.0/tests/test_kimi.c +131 -0
- tokensim-1.0.0/tests/test_kimi_masks.c +175 -0
- tokensim-1.0.0/tests/test_kimi_par_race.c +71 -0
- tokensim-1.0.0/tests/test_mask_stats_gate.c +79 -0
- tokensim-1.0.0/tests/test_merge_id_probe.c +247 -0
- tokensim-1.0.0/tests/test_model_formats.c +269 -0
- tokensim-1.0.0/tests/test_nemo_masks.c +481 -0
- tokensim-1.0.0/tests/test_nemotron.c +98 -0
- tokensim-1.0.0/tests/test_nfc.c +459 -0
- tokensim-1.0.0/tests/test_nfc_reuse.c +166 -0
- tokensim-1.0.0/tests/test_nfc_seg.c +190 -0
- tokensim-1.0.0/tests/test_nfkc.c +343 -0
- tokensim-1.0.0/tests/test_nul_keys.c +58 -0
- tokensim-1.0.0/tests/test_o200k_marks.c +88 -0
- tokensim-1.0.0/tests/test_o200k_masks.c +745 -0
- tokensim-1.0.0/tests/test_par_split.c +230 -0
- tokensim-1.0.0/tests/test_parallel.c +749 -0
- tokensim-1.0.0/tests/test_parallel_into.c +224 -0
- tokensim-1.0.0/tests/test_parallel_nfc.c +88 -0
- tokensim-1.0.0/tests/test_pcache_grow.c +103 -0
- tokensim-1.0.0/tests/test_pcache_race.c +202 -0
- tokensim-1.0.0/tests/test_pcache_serve.c +149 -0
- tokensim-1.0.0/tests/test_pcache_upgrade.c +178 -0
- tokensim-1.0.0/tests/test_pin_fault.c +49 -0
- tokensim-1.0.0/tests/test_pool_cache_bits.c +41 -0
- tokensim-1.0.0/tests/test_pretokenizer.c +319 -0
- tokensim-1.0.0/tests/test_qwen25_serve.c +160 -0
- tokensim-1.0.0/tests/test_qwen3_nfc_speed.c +130 -0
- tokensim-1.0.0/tests/test_reconstruct_order.c +60 -0
- tokensim-1.0.0/tests/test_scheme_guard.c +99 -0
- tokensim-1.0.0/tests/test_serve_batched.c +164 -0
- tokensim-1.0.0/tests/test_serve_routes.c +186 -0
- tokensim-1.0.0/tests/test_shared_fallback.c +80 -0
- tokensim-1.0.0/tests/test_shared_publish.c +75 -0
- tokensim-1.0.0/tests/test_short_skip.c +134 -0
- tokensim-1.0.0/tests/test_simd.c +458 -0
- tokensim-1.0.0/tests/test_spm_cache.c +226 -0
- tokensim-1.0.0/tests/test_spm_integration.c +88 -0
- tokensim-1.0.0/tests/test_spm_normalize.c +124 -0
- tokensim-1.0.0/tests/test_spm_par_degenerate.c +103 -0
- tokensim-1.0.0/tests/test_spm_tie_rule.c +122 -0
- tokensim-1.0.0/tests/test_spm_tiebreak.c +106 -0
- tokensim-1.0.0/tests/test_spm_trie.c +446 -0
- tokensim-1.0.0/tests/test_spm_word_seam.c +146 -0
- tokensim-1.0.0/tests/test_sys.c +100 -0
- tokensim-1.0.0/tests/test_tokenizer.c +213 -0
- tokensim-1.0.0/tests/test_unicode.c +84 -0
- tokensim-1.0.0/tests/test_unigram.c +296 -0
- tokensim-1.0.0/tests/test_unigram_chunk.c +281 -0
- tokensim-1.0.0/tests/test_unigram_memo.c +99 -0
- tokensim-1.0.0/tests/test_unigram_memo_corpus.c +134 -0
- tokensim-1.0.0/tests/test_unigram_memo_det.c +120 -0
- tokensim-1.0.0/tests/test_unigram_par.c +66 -0
- tokensim-1.0.0/tests/test_vocabulary.c +265 -0
- tokensim-1.0.0/tests/test_wholepiece_sim.c +181 -0
- tokensim-1.0.0/tests/test_worker_caps.c +73 -0
- tokensim-1.0.0/tests/util.c +122 -0
- tokensim-1.0.0/tests/util.h +36 -0
- tokensim-1.0.0/tools/bench_encode.c +225 -0
- tokensim-1.0.0/tools/bench_phases.c +365 -0
- tokensim-1.0.0/tools/bench_pretok_mt.c +116 -0
- tokensim-1.0.0/tools/encode_probe.c +74 -0
- tokensim-1.0.0/tools/spm_probe.c +60 -0
- tokensim-1.0.0/tools/tokenize_file.c +301 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
name: ci
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
pull_request:
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
versions:
|
|
8
|
+
runs-on: ubuntu-latest
|
|
9
|
+
steps:
|
|
10
|
+
- uses: actions/checkout@v5
|
|
11
|
+
- name: version lockstep
|
|
12
|
+
run: bash scripts/check_versions.sh
|
|
13
|
+
|
|
14
|
+
build-test:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
strategy:
|
|
17
|
+
matrix:
|
|
18
|
+
compiler: [gcc, clang]
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v5
|
|
21
|
+
- name: configure
|
|
22
|
+
run: |
|
|
23
|
+
if [ "${{ matrix.compiler }}" = "clang" ]; then
|
|
24
|
+
cmake -S . -B build-clang -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
|
|
25
|
+
else
|
|
26
|
+
cmake -S . -B build
|
|
27
|
+
fi
|
|
28
|
+
- name: build
|
|
29
|
+
run: |
|
|
30
|
+
if [ "${{ matrix.compiler }}" = "clang" ]; then
|
|
31
|
+
cmake --build build-clang -j 4
|
|
32
|
+
else
|
|
33
|
+
cmake --build build -j 4
|
|
34
|
+
fi
|
|
35
|
+
- name: model-free smoke ctest
|
|
36
|
+
run: |
|
|
37
|
+
B=build; [ "${{ matrix.compiler }}" = "clang" ] && B=build-clang
|
|
38
|
+
cd $B && ctest -R "test_unicode|test_json|test_bpe_short|test_cls_table|test_scheme_guard|test_avx512_probe|test_spm_tie_rule|test_decode" --output-on-failure
|
|
39
|
+
|
|
40
|
+
avx512-sde:
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@v5
|
|
44
|
+
- name: build
|
|
45
|
+
run: cmake -S . -B build && cmake --build build -j 4
|
|
46
|
+
- name: SDE clone + the avx512 battery
|
|
47
|
+
run: |
|
|
48
|
+
git clone --depth 1 https://github.com/rapidfuzz/intel-sde /tmp/sde-mirror
|
|
49
|
+
bash scripts/check_avx512_sde.sh
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
name: pages
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches: [main]
|
|
5
|
+
permissions:
|
|
6
|
+
contents: read
|
|
7
|
+
pages: write
|
|
8
|
+
id-token: write
|
|
9
|
+
concurrency:
|
|
10
|
+
group: pages
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
jobs:
|
|
13
|
+
deploy:
|
|
14
|
+
environment:
|
|
15
|
+
name: github-pages
|
|
16
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v5
|
|
20
|
+
- name: install pandoc
|
|
21
|
+
run: sudo apt-get update && sudo apt-get install -y pandoc
|
|
22
|
+
- name: render the markdown
|
|
23
|
+
run: |
|
|
24
|
+
mkdir -p site
|
|
25
|
+
for f in README.md TECHNICAL-REPORT.md BENCHMARKS.md; do
|
|
26
|
+
pandoc "$f" -f gfm -t html5 -o "site/${f%.md}.frag"
|
|
27
|
+
done
|
|
28
|
+
python3 <<'PYEOF'
|
|
29
|
+
import os
|
|
30
|
+
css = """
|
|
31
|
+
body {
|
|
32
|
+
max-width: 52rem;
|
|
33
|
+
margin: 2rem auto;
|
|
34
|
+
padding: 0 1.5rem 0 2rem;
|
|
35
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
|
|
36
|
+
font-size: 16px;
|
|
37
|
+
line-height: 1.7;
|
|
38
|
+
color: #3d3d4e;
|
|
39
|
+
background: #faf6ee;
|
|
40
|
+
}
|
|
41
|
+
h1, h2, h3, h4 {
|
|
42
|
+
color: #2a2a3a;
|
|
43
|
+
margin-top: 2rem;
|
|
44
|
+
margin-left: -0.5rem;
|
|
45
|
+
border-bottom: 1px solid #d8cfc0;
|
|
46
|
+
padding-bottom: 0.3rem;
|
|
47
|
+
padding-left: 0.5rem;
|
|
48
|
+
}
|
|
49
|
+
h1 { font-size: 2rem; }
|
|
50
|
+
h2 { font-size: 1.4rem; }
|
|
51
|
+
h3 { font-size: 1.15rem; }
|
|
52
|
+
p { padding-left: 5px; }
|
|
53
|
+
code, pre {
|
|
54
|
+
background: #f0ece4;
|
|
55
|
+
border-radius: 6px;
|
|
56
|
+
font-family: "SF Mono", Consolas, "Liberation Mono", monospace;
|
|
57
|
+
}
|
|
58
|
+
code { padding: 0.15em 0.4em; font-size: 0.9em; }
|
|
59
|
+
pre {
|
|
60
|
+
padding: 1rem;
|
|
61
|
+
overflow-x: auto;
|
|
62
|
+
line-height: 1.45;
|
|
63
|
+
}
|
|
64
|
+
pre code { padding: 0; background: none; }
|
|
65
|
+
table {
|
|
66
|
+
border-collapse: collapse;
|
|
67
|
+
width: 100%;
|
|
68
|
+
margin: 1.5rem 0;
|
|
69
|
+
}
|
|
70
|
+
th, td {
|
|
71
|
+
border: 1px solid #d8cfc0;
|
|
72
|
+
padding: 0.5rem 0.8rem;
|
|
73
|
+
text-align: left;
|
|
74
|
+
}
|
|
75
|
+
th { background: #f0ece4; font-weight: 600; }
|
|
76
|
+
blockquote {
|
|
77
|
+
border-left: 4px solid #8a7a5c;
|
|
78
|
+
margin: 1rem 0;
|
|
79
|
+
padding: 0.5rem 1rem;
|
|
80
|
+
color: #5a5548;
|
|
81
|
+
background: #f5f0e6;
|
|
82
|
+
border-radius: 0 6px 6px 0;
|
|
83
|
+
}
|
|
84
|
+
a { color: #7a6a3a; }
|
|
85
|
+
a:hover { color: #5a4a2a; text-decoration: underline; }
|
|
86
|
+
hr { border: none; border-top: 2px solid #d8cfc0; margin: 2rem 0; }
|
|
87
|
+
.repo-link {
|
|
88
|
+
display: inline-block;
|
|
89
|
+
margin-bottom: 1.5rem;
|
|
90
|
+
font-size: 0.9em;
|
|
91
|
+
color: #7a6a3a;
|
|
92
|
+
text-decoration: none;
|
|
93
|
+
font-weight: 500;
|
|
94
|
+
}
|
|
95
|
+
.repo-link:hover { text-decoration: underline; }
|
|
96
|
+
"""
|
|
97
|
+
for md in ["README", "TECHNICAL-REPORT", "BENCHMARKS"]:
|
|
98
|
+
frag = f"site/{md}.frag"
|
|
99
|
+
if not os.path.isfile(frag):
|
|
100
|
+
continue
|
|
101
|
+
body = open(frag).read()
|
|
102
|
+
link = '<a class="repo-link" href="https://github.com/SudoEvrything/tokensim">tokensim on GitHub</a>\n'
|
|
103
|
+
body = body.replace('<h2', link + '<h2', 1)
|
|
104
|
+
html = f"""<!DOCTYPE html>
|
|
105
|
+
<html>
|
|
106
|
+
<head>
|
|
107
|
+
<meta charset="utf-8">
|
|
108
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
109
|
+
<style>{css}</style>
|
|
110
|
+
</head>
|
|
111
|
+
<body>
|
|
112
|
+
{body}
|
|
113
|
+
</body>
|
|
114
|
+
</html>"""
|
|
115
|
+
open(f"site/{md}.html", "w").write(html)
|
|
116
|
+
os.remove(frag)
|
|
117
|
+
open("site/index.html", "w").write(
|
|
118
|
+
'<!DOCTYPE html><html><head><meta charset="utf-8">'
|
|
119
|
+
'<meta http-equiv="refresh" content="0;url=TECHNICAL-REPORT.html">'
|
|
120
|
+
'</head><body></body></html>')
|
|
121
|
+
PYEOF
|
|
122
|
+
- uses: actions/upload-pages-artifact@v3
|
|
123
|
+
with:
|
|
124
|
+
path: site
|
|
125
|
+
- id: deployment
|
|
126
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
name: release
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
tags: ["v*"]
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
sdist:
|
|
8
|
+
runs-on: ubuntu-latest
|
|
9
|
+
steps:
|
|
10
|
+
- uses: actions/checkout@v5
|
|
11
|
+
- uses: actions/setup-python@v6
|
|
12
|
+
with: {python-version: "3.12"}
|
|
13
|
+
- run: pip install build
|
|
14
|
+
- run: python3 -m build --sdist
|
|
15
|
+
- uses: actions/upload-artifact@v5
|
|
16
|
+
with: {name: sdist, path: dist/*.tar.gz}
|
|
17
|
+
|
|
18
|
+
wheels:
|
|
19
|
+
needs: [sdist, versions]
|
|
20
|
+
runs-on: ${{ matrix.os }}
|
|
21
|
+
strategy:
|
|
22
|
+
matrix:
|
|
23
|
+
os: [ubuntu-latest, macos-15]
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v5
|
|
26
|
+
- name: cibuildwheel
|
|
27
|
+
uses: pypa/cibuildwheel@v4.3.4
|
|
28
|
+
env:
|
|
29
|
+
CIBW_ARCHS_LINUX: x86_64
|
|
30
|
+
CIBW_ARCHS_MACOS: x86_64
|
|
31
|
+
CIBW_BUILD: "cp39-* cp310-* cp311-* cp312-* cp313-*"
|
|
32
|
+
CIBW_SKIP: "*-musllinux_*"
|
|
33
|
+
- uses: actions/upload-artifact@v5
|
|
34
|
+
with:
|
|
35
|
+
name: wheels-${{ matrix.os }}
|
|
36
|
+
path: wheelhouse/*.whl
|
|
37
|
+
|
|
38
|
+
versions:
|
|
39
|
+
runs-on: ubuntu-latest
|
|
40
|
+
steps:
|
|
41
|
+
- uses: actions/checkout@v5
|
|
42
|
+
- run: bash scripts/check_versions.sh
|
|
43
|
+
|
|
44
|
+
publish-pypi:
|
|
45
|
+
needs: [wheels, sdist]
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
environment: pypi
|
|
48
|
+
permissions:
|
|
49
|
+
id-token: write
|
|
50
|
+
steps:
|
|
51
|
+
- uses: actions/download-artifact@v5
|
|
52
|
+
with: {path: artifacts}
|
|
53
|
+
- name: stage
|
|
54
|
+
run: |
|
|
55
|
+
mkdir -p dist
|
|
56
|
+
find artifacts -type f \( -name "*.whl" -o -name "*.tar.gz" \) -exec cp {} dist/ \;
|
|
57
|
+
ls -la dist/
|
|
58
|
+
- name: publish
|
|
59
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
60
|
+
with:
|
|
61
|
+
packages-dir: dist/
|
|
62
|
+
|
|
63
|
+
publish-crates:
|
|
64
|
+
needs: [versions]
|
|
65
|
+
runs-on: ubuntu-latest
|
|
66
|
+
steps:
|
|
67
|
+
- uses: actions/checkout@v5
|
|
68
|
+
- run: bash scripts/sync_crate.sh
|
|
69
|
+
- name: publish
|
|
70
|
+
env:
|
|
71
|
+
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
|
72
|
+
run: cargo publish --allow-dirty --manifest-path bindings/rust/Cargo.toml || echo "already published at this version"
|