pkg.soopen package index

project history

The history of ICU

ICU4C is the C and C++ side of International Components for Unicode, the Unicode project's portable globalization library family. The 78 series matters to package maintainers because it pairs ABI-sensitive native libraries and command-line data tools with Unicode 17 and CLDR 48 data, so runtime consumers often need coordinated rebuilds when the formula changes.

history

Project history and usage

ICU4C is the C and C++ side of International Components for Unicode, the Unicode project's portable globalization library family. The 78 series matters to package maintainers because it pairs ABI-sensitive native libraries and command-line data tools with Unicode 17 and CLDR 48 data, so runtime consumers often need coordinated rebuilds when the formula changes.

Project history

ICU traces back to internationalization classes developed at Taligent. The Taligent team later became IBM's Unicode group in Cupertino; Java classes from that work went into JDK 1.1, and the functionality was then ported to C++ and C. ICU4J and ICU4C kept shared goals: track Java internationalization APIs, implement released Unicode standards, and keep a portable source base.

The project was open sourced in 1999 with CVS and Jitterbug, moved to Subversion and Trac on 2006-11-30, and moved again in July 2018 to GitHub and Atlassian Cloud Jira. That migration path is part of why package metadata often has old ICU4C, ICU4J, SVN, GitHub, and Unicode project URLs mixed together.

Adoption history

ICU became a standard dependency for software that needs Unicode text processing, locale data, collation, normalization, message formatting, calendar behavior, and character conversion across platforms. The project documentation describes ICU services as reusable internationalization components that hide locale-specific complexity for applications.

For package ecosystems, ICU is notable less as an end-user program and more as a shared native dependency. A Homebrew versioned formula such as icu4c@78 gives downstream packages a stable ICU major line while the unversioned formula can move to another ABI.

How it is used

The package includes libraries plus developer and data utilities such as uconv, genrb, icupkg, pkgdata, makeconv, and icuinfo. Consumers use the libraries for Unicode-aware C and C++ applications, while maintainers and builders use the tools to build, package, inspect, and convert ICU data.

ICU 78.1 was released on 2025-10-30. The 78 line updated to Unicode 17 and CLDR 48, added ICU4C APIs for UTF-8/16/32 code point iteration, and later maintenance releases updated CLDR and timezone data.

Why package nerds care

ICU is a classic rebuild trigger: small-looking version bumps can affect many reverse dependencies because the library ABI and bundled locale data travel together. Versioned formulae let package managers keep older dependents building while newer ICU lines roll forward.

The package also exposes the quiet infrastructure behind internationalized software. If sorting, casing, IDNA, segmentation, calendars, or locale-specific formatting works outside ASCII-centric cases, ICU or a sibling data project is often somewhere in the dependency graph.

Timeline

  • 1999: ICU was first open sourced using CVS and Jitterbug.
  • 2006-11-30: ICU moved from CVS/Jitterbug to Subversion and Trac.
  • 2016-05-18: ICU moved from IBM stewardship into the Unicode project governance structure.
  • 2018-07: ICU source moved from Subversion to Git on GitHub, and issue tracking moved from Trac to Atlassian Cloud Jira.
  • 2025-10-30: ICU 78.1 was released with Unicode 17 and CLDR 48 data.
  • 2026-01-08: ICU 78.2 updated to CLDR 48.1 and timezone data 2025c.
  • 2026-03-17: ICU 78.3 updated to CLDR 48.2 and timezone data 2026a.

Related projects

  • ICU4J is the Java sibling maintained in the same repository. CLDR supplies the locale data that ICU packages into runtime form. Unicode standards and data releases drive much of ICU's release cadence.
  • Package-manager dependents commonly include language runtimes, databases, browsers, text processing libraries, and desktop software that need stable Unicode behavior across operating systems.

Sources