Format v4 (docs/FORMAT_V4.md): one union CHD MPHF over 226,791 stroke keys from Plover (147,424) + Lapwing (114,885), sections distributed across halves. Left blob 387KB (displacements log-class Huffman 59KB, membership 57KB, fingerprints 113KB, conflicts 9.6KB, value-index slice 157KB); right blob 515KB (strings front-coded+deflate 193KB, value-index remainder 324KB, conflicts dup). Shared string table: 73,464 unique translations, Lapwing 93% subset of Plover. - tools/compile_v4.py: encoder + full verification (all 262,309 entries byte-exact through cold decode path; hard error if either blob exceeds budget — never trims) - src/dict_v4.c/.h: decoder — canonical Huffman displacement decode, conflict binary search, FC block walk, 2-block LRU cache - src/behavior_steno.c: Plover-style sliding longest-match with retrace replaces multi-stroke timeout + prefix checks - src/split_dict.c/.h: protocol v4 — GET_STRING(string_id) / RESOLVE(slot, dict); decisions are 100% left-local, BLE only for translation text - CMake/Kconfig: STENO_DICT_BOTH default, one compiler run emits both half blobs; legacy MPHF path kept behind STENO_DICT_V4=n - Host round-trip test: 42,000 vectors left→right split path, 0 mismatches (tests/test_dict_v4.c)
30 lines
856 B
ArmAsm
30 lines
856 B
ArmAsm
/*
|
|
* Copyright (c) 2024 Afiq Zudin Hadi
|
|
* SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
|
|
*
|
|
* Embeds the compiled dictionary blob selected by the build system.
|
|
* steno_dict_path.h is generated by CMake and names the blob for this
|
|
* half (v4: steno_v4_left.bin / steno_v4_right.bin; legacy MPHF:
|
|
* steno_dict.bin). Both symbol spellings are exported: legacy code
|
|
* uses _steno_dict_start/_steno_dict_end, dict_v4.c uses
|
|
* steno_dict_start/steno_dict_end.
|
|
*/
|
|
|
|
#include "steno_dict_path.h"
|
|
|
|
.section .rodata.steno_dict, "a", %progbits
|
|
.global _steno_dict_start
|
|
.global _steno_dict_end
|
|
.global steno_dict_start
|
|
.global steno_dict_end
|
|
|
|
.balign 4
|
|
_steno_dict_start:
|
|
steno_dict_start:
|
|
#ifdef STENO_DICT_BIN_PATH
|
|
.incbin STENO_DICT_BIN_PATH
|
|
#else
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
#endif
|
|
_steno_dict_end:
|
|
steno_dict_end:
|