Skip to content

Consider switching away from PyICU as a dependency #18282

@reivilibre

Description

@reivilibre

PyICU is a bit of a painful dependency:

  • upstream does not ship wheels
  • locally-built wheels become tied to the shared library version of ICU installed on your system
    • if you later update ICU, you need to rebuild and reinstall these wheels, but the wheel's build is often cached, which makes this process difficult
  • because no wheels are available, it adds to build time and makes cross-compiling builds at release time more difficult

It could be argued that the cost to benefit ratio of this dependency has been quite high since its introduction.

We could instead consider using the ICU4X project (which I believe is the successor to ICU), which is written in Rust and could therefore be used a dependency in the Rust component of Synapse.
Rust crates are generally pretty predictable in how they are packaged and built, so this would turn ICU from less of a special snowflake dependency into something less painful.

See:

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions