Repository navigation
Improve Unicode support and terminal-width policies - #99
Closed
reneleonhardt wants to merge 4 commits into
Closed
reneleonhardt wants to merge 4 commits into
reneleonhardt wants to merge 4 commits into
Conversation
reneleonhardt
force-pushed
the
feat/improve-unicode-support
branch
2 times, most recently
from
October 20, 2026 14:09
bec8ed6 to
16a9c95
Compare
Read property fields independently of comments and apply ordered missing defaults before explicit values. Validate cached Unicode releases. Preserve the Lamed state for its canonical Hebrew presentation form and exclude empty decompositions from solidus transparency. Add focused generator and width regressions, and compare scanner states in normalization tests.
Name the Unicode rules and terminal policies used for width estimates. Cover variation-selector and emoji fallbacks and build docs in both feature configurations. Reuse buffers and iterators in width tests, remove debug output, and fail benchmarks when their input files are missing.
Force the generated lookup functions to inline and add representative long and short Unicode benchmarks. Paired comparisons measured about 8-20% less time on selected long Unicode samples. Sample scanner code grew by about 0.4-1.3 KB. Some tiny ASCII, CRLF, and mixed Unicode inputs took about 0.2-0.7 ns longer. Results depend on input and calling context.
Gate the ASCII byte shortcut behind the default-off ascii-fast-path feature. Remove the short-string cutoff, document feature unification and the iterator bypass, and test both opt-in combinations in CI. Check the feature in MSRV CI. The 5,760-byte ASCII sample took about 20 times less time with the feature. Sampled short Unicode and CRLF inputs took about 0.5-1.5 ns longer, and a 63-byte mixed label took about 5% longer. Disabled builds omit these checks.
reneleonhardt
force-pushed
the
feat/improve-unicode-support
branch
from
October 20, 2026 15:53
16a9c95 to
d10a502
Compare
Member
|
This appears to be doing a ton of different changes with very little coherent story of what's going on. There's code cleanups mixed with docs changes mixed with behavior changes. Mixing behavior changes like this is just generally bad form in open source. I don't have time to disentangle this. Separate well-scoped PRs might work, but also I don't really know what you're trying to do here. If this was LLM done; please consider first talking to the maintainers about your desires and making sure we're on the same page. We have LLMs too; someone without any background on the crate proposing a pile of changes is strictly worse than us doing it ourselves. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Changes
@missingdefaults before explicit values.ascii-fast-pathfeature for ASCII-heavy workloads. CI tests it with and without CJK support.Validation
Performance
ascii-fast-path. The default build omits every ASCII shortcut check.The Old Korean extension was rejected because no net benefit for common workloads was proven.