Packages

Optional GNU libiconv extra and platform codecs for Iconvex

Current section

Files

Jump to
iconvex_extras CHANGELOG.md
Raw

CHANGELOG.md

# Changelog
## 0.1.2
- Add the complete generated 86-codec catalog to the Hex README, including all
256 aliases and stateful markers.
## 0.1.1
- Publish the first post-split Extras release. The final runtime package set
exposes 2,105 unique canonical codecs; the unpublished research/integration
workspace owns no runtime registry routes.
- Replace the separate table-provider and managed-set startup sequence with one
`Iconvex.Extension.register/2` transaction. One opaque token atomically owns
all 86 codec routes and the `:euc_jisx0213` provider across collision
rollback, stop/restart, and registry-worker restart.
- Raise the managed Extras priority to 300 so every GNU compatibility spelling
remains bound to its GNU codec when ordinary source leaves are also running;
canonical-kind claims and Core built-ins retain precedence.
- Separate calibration from final measurement in both BEAM and GNU timers.
At each doubling, the fastest of three calibration probes must reach the
10 ms minimum, so one scheduler-preempted probe cannot freeze a batch that is
too small. The fastest of three final batches then uses that one fixed
iteration count, retaining fractional per-conversion timings and the
unchanged independent 30x directional gate.
- Require Iconvex Core `~> 0.1.1` and retain Extras as a Core-only leaf
dependency.
- Rebind the final Core-plus-Extras runtime to a fresh GNU libiconv 1.19
differential over every code point from U+0000 through U+10FFFF. All 198
codecs remain byte-exact in both directions and both cross-decodes, with
zero breaches of the independent 30x directional ceiling.
- Make DEC-HANYU, EUC-JISX0213, and ISO-2022-JP-3 policy recovery consume a
reported terminal incomplete sequence as one codec-native unit. Invalid-byte
callbacks now fire once, discard cannot reinterpret a malformed suffix,
replacement occurs once, and byte substitution still renders every consumed
source byte.
- Replace biased GNU CLI wall-clock denominators with an offline C11 helper
linked to the exact GNU libiconv 1.19 installation selected by `--iconv`.
Correctness still comes from byte-comparing pinned CLI output; engine timing
excludes process startup, file I/O, and stdout, uses fractional microseconds
from calibrated 10 ms batches, and remains independently gated in both
directions without a denominator clamp.
- Add bounded dense decode caches for CP943 and EUC-JISX0213 plus a range-aware
EUC-JISX0213 encoder. Their complete all-codepoint hotspot smoke now passes
the fair 30x engine gate in both directions with zero mismatches.
- Extend the combined GNU libiconv 1.19 differential to every Unicode code
point U+0000..U+10FFFF. The UCS-4BE corpus includes all 2,048 non-scalar
surrogate code points in forward, reverse, and both cross-decode comparisons
while retaining the independent 30x directional performance gates.
- Make the directional performance gate repeatable by recording the fastest of
three isolated samples while retaining every sample in total wall time.
- Gate the exhaustive GNU performance ceiling independently for forward and
reverse conversion, and report both directional ratios alongside their
worst-case value so a fast direction cannot mask a breach in the other.
- Register all 86 codecs as one atomic managed set. The historical monolithic
workspace coexistence audit covered all 227 overlapping normalized names
using deterministic canonical-first/package-priority selection.
- Preserve all package registrations and ownership tokens across a supervised
Iconvex registry-worker restart.
- Add true incremental source and target streaming for ISO-2022-JP-3, including
designation state and two-codepoint mapping lookahead across chunk boundaries.
- Bind every full Core-plus-Extras GNU libiconv 1.19 differential to the exact
runtime, runner, helper source, compiled helper, and linked library artifacts.
## 0.1.0
- Add the exact 86-codec complement of Iconvex's GNU-default 112 codecs.
- Auto-register 85 packed-table codecs and ISO-2022-JP-3 through the public
external codec API.
- Port all applicable GNU mapping, inverse, stateful, EBCDIC, and discard tests.
- Add every-Unicode-scalar GNU differential verification and paired core/extras
performance benchmarks.