This version of the ICU4C project contains customized extensions for use by the Foundation package. It is automatically extracted from Apple OSS Distribution's ICU to add Swift Package Manager support. Improvements to ICU's core functionality should be proposed to the upstream ICU4C library and not to this package.
- Sources: https://github.com/apple/swift-foundation-icu
- API Docs: https://unicode-org.github.io/icu/userguide/icu4c/
See the following version matrix:
FoundationICU version |
ICU version |
---|---|
0.0.2 and below |
70.1 |
0.0.3 ~ 0.0.9 |
72.1 |
0.0.10 and above |
74.0 |
⚠️ This package is intended to be a dependency for the Foundation package. It is not useful as a "general purpose" ICU4C library because all files irrelevant to the SwiftPM build are removed. The package is considered a private implementation detail of Foundation, and its API surface and structure is likely to change between major versions.
To use the FoundationICU
library in a SwiftPM project, add the following lines to the dependencies in your Package.swift
file:
.package(url: "https://github.com/apple/swift-foundation-icu", from: "0.0.3"),
Include "FoundationICU"
as a dependency for your target:
.target(name: "<target>", dependencies: [
.product(name: "FoundationICU", package: "swift-foundation-icu"),
]),
Finally, add import FoundationICU
to your source code. You should now be able to directly use/extend ICU types:
import FoundationICU
extension UCalendarAttribute {
static let lenient = UCAL_LENIENT
static let firstDayOfWeek = UCAL_FIRST_DAY_OF_WEEK
static let minimalDaysInFirstWeek = UCAL_MINIMAL_DAYS_IN_FIRST_WEEK
}
- Data file handling: currently, the data file is embedded in the embedded in the binary itself as
[uint8_t]
(seeicu_packaged_data.h
). In the future, we would like to check in the source files instead and build the data as a shared library to avoid the need to maintain and load a separate data file.