v3.14.4
Zero product changes. This release updates the legacy-encoding detection library and fixes a misleading comment; nothing about what EC detects, converts, refuses, or reports has moved.
What changed
UTF.Unknown(the legacy charset detection library) is updated from 2.6.0 to 2.7.0, which adds .NET 10 support and aDetectFromBytes(ReadOnlySpan<byte>)overload.TextEncoding.csnow calls that overload directly instead of first copying the sample into abyte[]. Detection policy is unchanged.- Fixes EC-17: the comment beside the control/private-use character check in
TextValidation.cssaid these characters are "ignored" in the printable-text ratio. They are not — they count toward the denominator but never the numerator, which lowers the ratio. Comment-only; the calculation itself is untouched. This file is parity-checked byte-identical across EncodingChecker, LineEndingNormalizer and CorpusTesters, so the same fix landed in all three.
Full details: RELEASE-NOTES-v3.14.4.md.
Compatibility
Nothing changes. Conversion semantics stay at 7, the plan schema at 6, the journal schema at 6. Plans and journals from any 3.14.x release still apply unchanged.
Safety record
Audit record → · Release notes → · Defect ledger →
A four-corpus regression audit was run, because this release changes a detection dependency. 5,078 files across UnicodeTestSuite v3.0, chardet test-data, the char-dataset corpus, and UTF.unknown's own 2.6 test corpus were compared between a build on UTF.Unknown 2.6.0 (baseline) and a build on 2.7.0 (this release): 0 changed / 0 improved / 0 regressed / 0 lateral outcomes across all four fidelity metrics (DetectionAccuracy, StrictDecoding, CodecConformance, TextPreservation). Source corpora were left unmodified; the audit's own integrity checks reported zero defects on both runs.
The published executables reproduce byte-for-byte from their tag. Both the framework-dependent and self-contained executables inside the release archives match a rebuild from a clean checkout of v3.14.4:
- Framework-dependent:
322f28f63420c0b20efcdee24b1d2bd29e7981edb94c690d1b573f0c862c2449 - Self-contained:
5cc5a3ec2c9d5f3e9a7372466eca80209539d3d96d362ccf7cd320ad17d2ae7d
To verify it yourself, rebuild with .NET 10.0.401. A framework-dependent single-file executable embeds the apphost of the runtime it was built with, so a different patch version produces different bytes for the same source:
git checkout v3.14.4
dotnet publish sources/EncodingChecker/EncodingChecker.csproj -p:PublishProfile=FolderProfile
Both released archives' SHA-256 digests were also verified against a local download rather than trusting GitHub's reported values:
EncodingChecker-3.14.4-framework-dependent.zip:47fcf7020f87aac9a85465ae7b3c423c677f4f04571c048f6a0c70637a08527aEncodingChecker-3.14.4-win-x64-self-contained.zip:5549cc7c52ee856d29a5b50f5b28e991916589c2b84c69a4a7466a2368d9b9fc
Code signing did not run. The signing secrets are not configured, so the step was skipped and the archives below are unsigned, as in every prior release.
No accessibility spot check is recorded for this release.
What's Changed
- Record the v3.14.3 audit entry by @amrali-eg in #114
- Remove unused coverlet.collector; bump test SDK and xUnit adapter by @amrali-eg in #115
- Update UTF.Unknown to 2.7.0; fix EC-17's backwards comment by @amrali-eg in #116
- Bump version to 3.14.4 and write release notes by @amrali-eg in #117
Full Changelog: v3.14.3...v3.14.4