src/icu78/UPSTREAM.md

ICU4C 78.3 provenance

The runtime source and data come from the official ICU4C 78.3 release:

common/, i18n/, and stubdata/ contain every .cpp and .h runtime file from the corresponding official source directories. unicode/ combines the public headers from common/unicode/ and i18n/unicode/. These 965 files were imported from the official archive. Charr carries twelve source adjustments for CRAN compiler diagnostics and platform compatibility, listed under "Source-package adjustments" below.

Package-specific static-build settings are supplied by src/Makevars, src/Makevars.win, and src/uconfig_local.h. The last also defines ICU's UPRV_UNREACHABLE_EXIT and double-conversion's DOUBLE_CONVERSION_UNIMPLEMENTED() and DOUBLE_CONVERSION_UNREACHABLE(), which upstream expand to abort(), as calls to charr's handler in src/shared/icu_fatal.cpp; ICU's sources are unchanged, and tools/charr-lint/fatal-sites.tsv lists every expansion. Bundled symbols are suffixed ..._78_charr. DECNUMDIGITS=4 is a build define rather than a modification to ICU's decNumber.h.

The full little-endian data archive in the official source release is icu/source/data/in/icudt78l.dat. It is 33,107,232 bytes with SHA-256 d5cf2a40dccbe471781ec7af85693bff542ff12f0b670c9630c4e72d60714b8b. tools/trim-icudt.R reduces it to the services reachable through charr's API. The resulting 13,478,992-byte archive has SHA-256 0f40045bffbcc40bf53e05198282af67a5cda820388a1d9b04ed36f1dcf55338; the checked-in data/icudt78l.dat.xz has SHA-256 2682cdd764b5e2b36d81bc9f6292035b2cb340896603e3e8ba3197fbada2c0cb.

The full and trimmed 78.3 archives passed the same ICU service canaries and produced no trimming-specific failure in the wider backend comparison.

Source-package adjustments

The bundled runtime sources come from the official ICU4C 78.3 archive, with twelve small changes for CRAN compiler diagnostics and platform compatibility:

The platform-specific optimization and macro-state pragmas remain unchanged; they do not suppress compiler diagnostics.

ICU's deprecation attribute is disabled only while compiling bundled ICU objects. ICU 78.3 still calls deprecated public entry points inside its own implementation, and some replacement APIs call these older routines too. Charr's objects retain the annotations, and other compiler diagnostics remain enabled.



Try the charr package in your browser

Any scripts or data that you put into this service are public.

charr documentation built on Nov. 7, 2026, 9:06 a.m.