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 can opt into a separately compiled software-development terminology dictionary. Supplemental dictionaries remain independent mmap layers and are selected per engine session.
The Rust engine never performs network access. The macOS shell accesses the network only through Sparkle when checking for signed application updates.
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.imelexTo build the pinned AOSP dictionary and the native macOS bundle:
scripts/build-aosp-dictionary.sh
platforms/macos/build.shSigned release archives use the native Xcode target and the maintainer's local Automatic Signing identity:
scripts/prepare_macos_release.shSee 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.jsonA 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.
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.