NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #4734 most downloaded on crates.io
Correctly encode and decode HTML entities in UTF-8
Last release 5 months ago
13 Apr 2026
Release timing varies
gaps range from 3 weeks to 3.0 years
Most releases are documented
notes for 9 of 11 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
11 releases · first in 2019
Major performance improvements when unescaping text in many cases (for both the unescape and unescape_fast features).
unescape and unescape_fast features).unescape_fast features (went from 8 seconds to 3 seconds on my laptop).BARE_ENTITY_MAX_LENGTH constant that contains the length of the longest entity without a semicolon (enabled with feature entities).One column per quarter.
Switch dependency from paste , which is no longer maintained, to a new fork, pastey , which is.
Exclude more files from final package to significantly reduce package size.
Upgrade indirect dependency rustix to fix a security vulnerability in directory iterators. This does not affect htmlize, since rustix is only used by…
Enabled feature marks on docs.rs to make it clearer what features are required by what functions.
Fix building with unescape feature but not unescape_fast . Added tests for a few common feature flags — in addition to --all-features — to the CI chec
unescape feature but not unescape_fast. Added tests for--all-features — to the CI checkFix docs.rs build to enable the unescape and entities features.
unescape and entities features.unescape and entities features.Hid unescape() behind unescape feature. This allows users to avoid the dependency on phf and the build dependency on serde_json , which cuts build tim
unescape() behind unescape feature. This allows users to avoid theENTITIES behind entities features for the same reason I added theunescape feature. Note that the unescape feature automatically enablesentities feature, but unescape_faster does not.Cow<'a, str> for inputunescape_faster feature for even faster unescaping at the cost ofunescape_attribute() to handle the special rules for dealing withunescape_in(), whichContext::Attribute orContext::General (for everything else).unescape_bytes_in() to work on [u8] rather than str.escape_..._bytes() functions to work on [u8] rather than str.phf_map! macro.ENTITIES to indicate that it’s a Map, not justunescape() incorrectly outputted the replacement character (U+FFFD “�”) for
certain numeric entities:
0x0D (carriage return)A close reading of the spec and some browser testing shows that behavior to
be incorrect. Those characters are now outputted as themselves.
unescape() incorrectly outputted long numeric entities as the literal text
of the entity.
A close reading of the spec and some browser testing shows that behavior to
be incorrect. Those long entities are now outputted as the replacement
character (U+FFFD “�”).
Switched from assertify (deprecated) to assert2 for testing.
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →