Skip to content

Repository files navigation

PureIME

PureIME is a local-first Chinese input method. The current validation target supports Full Pinyin and Flypy Shuangpin on Apple silicon Macs running macOS 26 or newer.

The repository currently contains:

  • ime-core: canonical pinyin, Full Pinyin and Flypy parsing, dictionary decoding, ranking, personal preferences, and the synchronous session state machine.
  • ime-tools: dictionary compiler, interactive REPL, and benchmarks.
  • ime-ffi: the narrow C ABI used by native platform adapters.
  • platforms/macos: the Swift/AppKit/InputMethodKit adapter.

The macOS settings UI manages a PureIME-owned catalog of optional extension dictionaries. First selection downloads and verifies an immutable artifact; supplemental dictionaries remain independent mmap layers selected per engine session. The bundled base dictionary is always enabled.

The Rust engine never performs network access. The macOS shell uses the network only when the user explicitly installs a managed extension dictionary. PureIME does not include an in-app updater.

Quick start

cargo run --locked -p ime-tools -- dict compile \
  dictionary/source/minimal.tsv \
  dictionary/generated/base.imelex
cargo run --locked -p ime-tools -- repl dictionary/generated/base.imelex
cargo run --locked --release -p ime-tools -- bench dictionary/generated/base.imelex

To build the pinned Wanxiang full dictionary and the native macOS bundle:

scripts/build-wanxiang-dictionary.sh
platforms/macos/build.sh

For the local development loop, build and atomically replace the installed input method, or run both engine and real InputMethodKit performance gates:

scripts/install-local-input-method.sh
scripts/validate-performance.sh

Signed release archives use the native Xcode target and the maintainer's local Automatic Signing identity:

scripts/prepare_macos_release.sh

See the macOS release guide for the tagging and publication boundary.

For private quality experiments, ime-tools can compile user-supplied Rime table dictionaries without downloading or committing them:

cargo run --locked -p ime-tools -- dict import-rime-local \
  /absolute/path/to/rime-dictionary-or-directory \
  dictionary/generated/rime-local.imelex \
  dictionary/generated/rime-local-report.json

A directory import reads its top-level *.dict.yaml files in stable filename order. It accepts the standard text, space-separated pinyin code, and numeric or percentage weight columns; unsupported rows are listed in the report. It does not resolve Rime schemas, import_tables, Lua filters, OpenCC, or language models.

Imported data keeps its original license. Local compiled output is for private testing and must not be committed or redistributed unless every source passes the project data intake policy in docs/references/rime-ecosystem.md.

License

Code and project-owned data are licensed under Apache-2.0. Third-party data keeps its original license and provenance; see docs/data-provenance.md.

About

A local-first Chinese input method with a Rust core for macOS 26

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages