File: README.md

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (51 lines) | stat: -rw-r--r-- 2,322 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# Foundation ICU

This version of the [ICU4C](https://icu.unicode.org/) project contains customized extensions for use by the [Foundation package](https://github.com/apple/swift-foundation). It is automatically extracted from [Apple OSS Distribution's ICU](https://github.com/apple-oss-distributions/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/

## Versioning

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` |


## Adding FoundationICU as a Dependency

> :warning: This package is intended to be a dependency for the [Foundation package](https://github.com/apple/swift-foundation). 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:

```swift
.package(url: "https://github.com/apple/swift-foundation-icu", from: "0.0.3"),
```

Include `"FoundationICU"` as a dependency for your target:

```swift
.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:

```swift
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
}
```

## Future Improvements

- **Data file handling**: currently, the data file is embedded in the embedded in the binary itself as `[uint8_t]` (see `icu_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.