Releases: chewing/libchewing
Releases · chewing/libchewing
v0.11.0
What's New in libchewing 0.11.0 (January 10, 2026)
-
Features
- cli: Now outputs and reads dictionary metadata in source file
- cli: Detects mismatched phrase word count and syllable count
- cli: Ignores empty line or line starts with # when processing dictionary
- editor: Support optional sorting candidates by frequency. Previously the
candidates are always sorted by their order in the dictionary.
-
Developer Features
- New API
chewing_handle_KeyboardEvent()can be used to support any
keyboard layout combination without updating libchewing. Other keyboard
handling API will be deprecated in future release. - New API
chewing_new3()andchewing_get_defaultDictonaryNames()can be
used to initialize a chewing context with specific dictionaries enabled. - New boolean config option
chewing.sort_candidates_by_frequencycan be
set to enable sorting candidates by frequency. - Rust type SyllableSlice is removed from public interfaces.
- Provide libchewing as a Swift package (C based API only).
- New API
-
Bug Fixes
- Auto shift cursor after candidate selection now moves the cursor to the
next phrase instead of the next word. - Fixed a bug when switching input mode from Chinese to English, the state
can be stuck in entering bopomofo. - Fixed the frequency estimation function used by phrase learning to really
take last used time into consideration. Also assign higher frequency to
newly learned phrases.
- Auto shift cursor after candidate selection now moves the cursor to the
-
Changes
- SQLite support is now fully optional and disabled by default
- rust: new sqlite-bundled feature can be used to build with bundled sqlite
to simplify the build configuration on Windows - cli: will try to migrate to new schema when dumping chewing.sqlite3 file
- Use less heuristic when calculating phrase segmentation score.
- Reimplement scoring algorithm to use conditional probability.
- cli: init-database will no longer normalize the frequency of single word
phrase to zero. - autolearn: new phrases with break words inside will be learned both with
and without the break word. - rust: simplified dictionary API.
- rust: the DictionaryMut trait is merged back to the Dictionary trait.
- rust: the Editor::set_editor_options now accepts a closure for setting
options in place.
-
Dictionary
- Default symbols.dat now includes commonly used emojis.
- Dictionary data are built directly from the libchewing-data repository
-
Build
- Bump MSRV to 1.88
New Contributors
- @winterheart made their first contribution in #748
- @eagleoflqj made their first contribution in #759
- @ShikiSuen made their first contribution in #790
Full Changelog: v0.10.3...v0.11.0
v0.10.3
v0.10.2
What's New in libchewing 0.10.2 (August 14, 2025)
-
Bug Fixes
- Fix ㄈㄥ was incorrectly mapped to 風靡
-
Dictionary
- Added missing bopomofo for 風靡
Full Changelog: v0.10.1...v0.10.2
v0.10.1
What's New in libchewing 0.10.1 (August 2, 2025)
-
Features
- cli: Ignore empty lines or lines starts with # when processing dictionary
-
Bug Fixes
- Add missing bopomofo mapping to the GinYieh layout
- Correct IBM layout mapping
-
Dictionary
- Import improvements from libchewing-data
Full Changelog: v0.10.0...v0.10.1
v0.10.0
What's New in libchewing 0.10.0 (July 26, 2025)
-
Features
- New keyboard layout Colemak.
- cli: New --fix option enables auto correction for simple tsi.src errors
- cli: Allow multiple whitespace in dictionary source file
-
Developer Features
- New API
chewing_bopomofo_String()can be used to retrieve current bopomofo string in the buffer. This deprecates the old non-thread safechewing_bopomofo_String_static. - New API
chewing_cand_string_by_index()can be used in UILess mode to query candidate string from candidate list.
- New API
-
Changes
- BREAKING: System dictionary loader now loads base and extra dictionary separately. (Rust)
- Simple mode now always auto-commit after candidate selection to align with ㄅ/半 experience.
-
Bug Fixes
chewing_keystroke_CheckAbsorb()correctly return true when a keystroke was absorbed due to error.chewing_commit_preedit_buf()does not return error when the bopomofo buffer is empty, to match previous behavior.chewing_clean_preedit_buf()does not return error when the bopomofo buffer is empty, to match previous behavior.- Avoid panics in
chewing_new() - Don't panic when conversion fails
- Don't panic when symbols table contains empty line
- Avoid opening empty symbol table
- Skip malformed lines in abbrev table
- Handle special symbol input normally when easy symbol is enabled
- Ignore zero-length phrases
- Use correct %AppData% path on Windows
- Fallback to Windows default sys path
- Use correct search path separator on Windows
- Check file existence with Windows quirks
- Ensure to reload dictionary after flush buffers
- Esc key clears buffer in simple mode
- Correctly allocate and free array returned to C FFI
- Initialize learned user phrase freq with orig_freq
- Ensure user phrase takes precedence
-
Dictionary
- Add alternative sound for 麼
- Removed some inconsistent phrases (#709)
-
Build
- Do not link to libcmtd on Windows
- Bump corrosion to 0.5.1 to fix rustup breaking change
- Bump MSRV to 1.85
- Bump tools and testhelper to 2024 edition
- Stop updating mini.dat for every build
- Move C headers to the capi module
- Remove unused cargo-vet settings
- Clean-up porting layer usage in tests
- Add upper bound to cmake_minimum_required version
- Enable cli test
- Stop depending on the directories crate
New Contributors
- @shawn111 made their first contribution in #667
- @New9c made their first contribution in #674
- @xunil-cloud made their first contribution in #679
Full Changelog: v0.9.1...v0.10.0
v0.9.1
What's New in libchewing 0.9.1 (October 26, 2024)
-
Bug Fixes
- Disable automatic selections snapshot which introduced more problems then
what it tried to solve. (introduced in v0.9.0)
- Disable automatic selections snapshot which introduced more problems then
-
Build
- Statically link C runtime on Windows
- Use vcpkg on Windows
Full Changelog: v0.9.0...v0.9.1
v0.9.0
What's New in libchewing 0.9.0 (August 11, 2024)
-
Features
- Support two new input modes:
- Fuzzy mode - support prefix search, partial zhuyin search, toneless input.
- Simple mode - like the traditional input method on Windows 95 which does
not perform any intelligent phrasing.
- Allow space key for pagination regardless of space_is_select_key mode.
- Merge DOWN and SPACE key behavior in pagination.
- A new option to disable fullwidth toggle key.
- Workman layout support.
- Load embedded mini dictionary if system dictionaries were not found.
- Automatically load extra dictionaries found in search path
- ${CHEWING_PATH}/dictionary.d/*.dat
- Automatic snapshot selections when the curser is moved.
- Support two new input modes:
-
Developer Features
- BREAKING: Remove language_mode and character_form methods (Rust).
- BREAKING: Remove unused pinyin.tab file
- BREAKING: Remove most unused C code but keep compat C headers.
- Bump minimum supported Rust version to 1.77
- Enable ELF symbol versioning. All existing symbols are marked as version
CHEWING_0.5 and new symbols from this release are marked as CHEWING_0.9. - A new set of configuration API:
- chewing_config_has_option
- chewing_config_get_int
- chewing_config_set_int
- chewing_config_get_str
- chewing_config_set_str
- New API to get runtime library version:
- chewing_version
- chewing_version_major
- chewing_version_minor
- chewing_version_patch
- chewing_version_extra
- New API to acknowledge output buffers:
- chewing_ack
- Define version macros
- CHEWING_VERSION_MAJOR
- CHEWING_VERSION_MINOR
- CHEWING_VERSION_PATCH
-
Bug Fixes
- Separate special handling by pinyin variants (#298)
- Panic when selecting phrases backwards at the end of buffer. (introduced in
v0.8.0)
-
Dictionary
- Default dictionary updates and fixes (#331)
-
Performance
- Optimize K shortest path algorithm to handle long pre-edit buffer. This
allowed us to remove the special DP algorithm and keep only the graph search
based algorithm in conversion.
- Optimize K shortest path algorithm to handle long pre-edit buffer. This
-
Testing
- Add benchmarks for the conversion module
- Add tests for options and default values
- Add test for chewing_config_set_str
- Test chewing_config_set_str with chewing.keyboard_type
- Allow switching keyboard layout in genkeystroke
- Add test for simple engine symbol input
- Support new editor options in the fuzzer.
- Generate test cases from fuzzer input.
-
Miscellaneous Tasks
- Drop outdated ChangeLog
- Add option to turn off tests run
- Use system corrosion if available
- Regenerate chewing.h using latest cbindgen
- Include CTest and use the built-in BUILD_TESTING option
- Manage SQLite dependency with CMake
- Print status about SQLite3 module
- Remove unused test files
- Bump Corrosion to v0.5
- Fix building without using CMake presets
- Force linking chewing_version obj file
- Append
git describeto version string for unreleased version.
-
New Contributors
- @chenrui333 made their first contribution in #560
- @wusyong made their first contribution in #582
Full Changelog: v0.8.5...v0.9.0
v0.9.0-rc.3
What's New in libchewing 0.9.0-rc.3 (July 28, 2024)
-
Bug fixes
- Add back 0.5.x compat C headers. (introduced in v0.9.0-rc.1)
- Panic when connecting symbol to symbol or symbol to phrase. (introduced in v0.9.0-rc.1)
- Panic when selecting phrases backwards at the end of buffer. (introduced in v0.8.0)
- Panic when autocommit in select mode triggered by the simple engine. (introduced in v0.9.0-rc.2)
-
Testing
- Support new editor options in the fuzzer.
- Generate test cases from fuzzer input.
-
Misc
- Append
git describeto version string for unreleased version.
- Append
Full Changelog: v0.9.0-rc.2...v0.9.0-rc.3
v0.9.0-rc.2
What's New in libchewing 0.9.0-rc.2 (July 22, 2024)
- Features
- Revert mode switch notifications change.
- Make simple engine compatiable with Plain Zhuyin in ibus-chewing.
- Automatic snapshot selections when the curser is moved.
- Developer Features
- Define version macros
- CHEWING_VERSION_MAJOR
- CHEWING_VERSION_MINOR
- CHEWING_VERSION_PATCH
- Define version macros
Full Changelog: v0.9.0-rc.1...v0.9.0-rc.2
v0.9.0-rc.1
What's New in libchewing 0.9.0-rc.1 (July 16, 2024)
-
Features
- Support two new input modes:
- Fuzzy mode - support prefix search, partial zhuyin search, toneless input.
- Simple mode - like the traditional input method on Windows 95 which does
not perform any intelligent phrasing.
- Allow space key for pagination regardless of space_is_select_key mode.
- Merge DOWN and SPACE key behavior in pagination.
- A new option to disable fullwidth toggle key.
- Workman layout support.
- Load embedded mini dictionary if system dictionaries were not found.
- Show notification about mode switches triggered by input.
- Automatically load extra dictionaries found in search path
- ${CHEWING_PATH}/dictionary.d/*.dat
- Support two new input modes:
-
Developer Features
- BREAKING: Remove language_mode and character_form methods
- BREAKING: Remove unused pinyin.tab file
- BREAKING: Remove most unused C code
- Bump minimum supported Rust version to 1.77
- Enable ELF symbol versioning. All existing symbols are marked as version
CHEWING_0.5 and new symbols from this release are marked as CHEWING_0.9. - A new set of configuration API:
- chewing_config_has_option
- chewing_config_get_int
- chewing_config_set_int
- chewing_config_get_str
- chewing_config_set_str
- New API to get runtime library version:
- chewing_version
- chewing_version_major
- chewing_version_minor
- chewing_version_patch
- chewing_version_extra
- New API to acknowledge output buffers:
- chewing_ack
-
Bug Fixes
- Separate special handling by pinyin variants (#298)
-
Dictionary
- Default dictionary updates and fixes (#331)
-
Performance
- Optimize K shortest path algorithm to handle long pre-edit buffer. This
allowed us to remove the special DP algorithm and keep only the graph search
based algorithm in conversion.
- Optimize K shortest path algorithm to handle long pre-edit buffer. This
-
Testing
- Add benchmarks for the conversion module
- Add tests for options and default values
- Add test for chewing_config_set_str
- Test chewing_config_set_str with chewing.keyboard_type
- Allow switching keyboard layout in genkeystroke
- Add test for simple engine symbol input
-
Miscellaneous Tasks
- Drop outdated ChangeLog
- Add option to turn off tests run
- Use system corrosion if available
- Regenerate chewing.h using latest cbindgen
- Include CTest and use the built-in BUILD_TESTING option
- Manage SQLite dependency with CMake
- Print status about SQLite3 module
- Remove unused test files
- Bump Corrosion to v0.5
- Fix building without using CMake presets
- Force linking chewing_version obj file
-
New Contributors
- @chenrui333 made their first contribution in #560
- @wusyong made their first contribution in #582
Full Changelog: v0.8.5...v0.9.0-rc.1