You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit a17ac74
Browse filesBrowse the repository at this point in the historyBrowse files
feat(char): D-561 — Character/getName + codePointOf over the generated UCD name table
Smell-audited: 2: the first fixed-width index cost +394KB and was
reworked to a delta-varint wire form BEFORE landing (measure-first,
ADR-0172 discipline); final delta mac +279KB (7.35MB) with the README
claim moved to "about 7.8 MB" and the ADR-0172 revision noting Linux at
~94% of ceiling (next size-relevant work measures Linux first).
- scripts/gen_unicode_names.py: UCD 16.0.0 → word-indexed name table
(40,013 per-cp names; frequency-ordered dict; CPHEX sentinel folds
the hex-suffixed families' own-hex tokens out of the dictionary;
pre-compressed raw-deflate blobs — matches the runtime's flate; the
index is a delta-varint stream decoded once into fixed records).
- src/runtime/char_name.zig: process-lifetime lazy tables + JVM-oracle-
exact semantics — stored names; pinned control aliases
(scripts/data/jvm_control_names.txt, captured from live clj 1.12:
the JVM mixes control-type aliases with abbreviations, 0x01="START OF
HEADING" but 0x07="BEL"); assigned-but-unnamed = "<BLOCK NAME> <HEX>"
("TANGUT 17000" — the JVM does NOT synthesize UCD algorithmic names);
unassigned nil. codePointOf = trimmed case-insensitive inverse
accepting exactly getName's output forms (block-hex confirmed by
forward equality; "HANGUL SYLLABLE GA" rejected like the JVM).
- Character.zig: getName realized (the last feature_not_supported stub
on the class), codePointOf added; compat_tiers row updated (the
member gate enforced it). Corpus char_names.txt 10/10; unit tests on
the oracle values incl. controls + block-hex + unassigned.
- D-561 discharged (active -> discharged).
decode in a new charset helper; JVM parity incl. nil for unassigned.
63
-
Weigh the ~100-200KB binary cost against gap area II (Wasm/edge binary
64
-
size) before landing — if the cost is judged not worth it, re-classify
65
-
as an AD-NNN accepted divergence instead (the raise is explicit, not
66
-
silent).
67
-
category: "host-surface"
68
-
barrier: "none — implementable any time; the open question is the binary-size trade (gap area II), not a technical blocker"
69
-
last_reviewed: "2026-07-15"
70
52
- id: "D-560"
71
53
status: |-
72
54
open (2026-07-13, ADR-0150 am1 accepted-cost row). The D-559 fix (the
@@ -2394,6 +2376,12 @@ standing:
2394
2376
barrier: "open after the D-440 arc completes (R4 + R5 must first rewrite the bulk of 'Phase N' citations to gap-area terms). Premature adoption = ~70 dangling citations with no 1:1 redirect. Trigger: D-440 R4/R5 done + a user nod to re-architect the planning axis (it is depth-4, the project's organizing metaphor)."
2395
2377
last_reviewed: "2026-06-15"
2396
2378
discharged:
2379
+
- id: "D-561"
2380
+
status: |-
2381
+
DISCHARGED 2026-07-17 — Character/getName + codePointOf land on the generated UCD 16.0.0 word-indexed name table (scripts/gen_unicode_names.py → unicode_names.zig, pre-compressed raw-deflate blobs + delta-varint index, decoded once per process in char_name.zig). JVM-oracle-exact semantics: stored names, pinned control aliases (scripts/data/jvm_control_names.txt), assigned-but-unnamed = "<BLOCK> <HEX>" (the JVM does NOT synthesize UCD algorithmic names), unassigned nil; codePointOf = trimmed case-insensitive inverse accepting exactly getName output forms. Corpus char_names.txt 10/10. Size: mac +279KB (7.35MB; ADR-0172 revision — README claim 7.8MB; Linux ~94% of ceiling, next size work measures Linux first).
2382
+
category: "host-surface"
2383
+
barrier: "none — implementable any time; the open question is the binary-size trade (gap area II), not a technical blocker"
2384
+
last_reviewed: "2026-07-17"
2397
2385
- id: "D-563"
2398
2386
status: |-
2399
2387
DISCHARGED 2026-07-17 (all sub-items resolved: a/a2/b/c landed, d = AD-043). ORIGINAL: open (2026-07-16, the D-562 inventory's enumerated residuals — each
@@ -6607,7 +6595,6 @@ discharged:
6607
6595
decompress); varint operands + cross-region constant-pool dedup evaluated in
6608
6596
the same pass (compaction shrinks with NO decompression copy). est -0.9-1.1MB.
6609
6597
last_reviewed: "2026-07-16"
6610
-
6611
6598
conventions: |-
6612
6599
- Structure: two top-level lists — `active:` and `discharged:`. Active entries carry id / status / category / barrier (+ optional quality_floor / last_reviewed); discharged entries carry id / discharged_at / resolution. Edit as YAML (no Markdown table to align).
6613
6600
- New debt: grep `.dev/debt.yaml` for class-overlap before adding (per `.claude/rules/debt_dedup.md`).
0 commit comments