Skip to content

Releases: chewing/libchewing

v0.11.0

10 Jan 02:08
v0.11.0
a6a8fa4

Choose a tag to compare

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() and chewing_get_defaultDictonaryNames() can be
      used to initialize a chewing context with specific dictionaries enabled.
    • New boolean config option chewing.sort_candidates_by_frequency can 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).
  • 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.
  • 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

Full Changelog: v0.10.3...v0.11.0

v0.10.3

23 Aug 23:59
v0.10.3
93a9a24

Choose a tag to compare

What's New in libchewing 0.10.3 (August 24, 2025)

  • Bug Fixes

    • Fix quick symbol menu for |(introduced in 0.8.0) (#737)
  • Dictionary

    • Remove some incorrect phrase-bopomofo mapping entries

Full Changelog: v0.10.2...v0.10.3

v0.10.2

14 Aug 12:29
v0.10.2
162e9cd

Choose a tag to compare

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

02 Aug 07:46
v0.10.1
a8a5f73

Choose a tag to compare

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

26 Jul 01:46
v0.10.0
05d948b

Choose a tag to compare

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 safe chewing_bopomofo_String_static.
    • New API chewing_cand_string_by_index() can be used in UILess mode to query candidate string from candidate list.
  • 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

Full Changelog: v0.9.1...v0.10.0

v0.9.1

26 Oct 07:54
v0.9.1
bab0250

Choose a tag to compare

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)
  • Build

    • Statically link C runtime on Windows
    • Use vcpkg on Windows

Full Changelog: v0.9.0...v0.9.1

v0.9.0

10 Aug 22:35
v0.9.0
83e03cc

Choose a tag to compare

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.
  • 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.
  • 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 describe to version string for unreleased version.
  • New Contributors

Full Changelog: v0.8.5...v0.9.0

v0.9.0-rc.3

27 Jul 23:21
v0.9.0-rc.3
f189488

Choose a tag to compare

v0.9.0-rc.3 Pre-release
Pre-release

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 describe to version string for unreleased version.

Full Changelog: v0.9.0-rc.2...v0.9.0-rc.3

v0.9.0-rc.2

21 Jul 22:50
v0.9.0-rc.2
d2e1118

Choose a tag to compare

v0.9.0-rc.2 Pre-release
Pre-release

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

Full Changelog: v0.9.0-rc.1...v0.9.0-rc.2

v0.9.0-rc.1

16 Jul 12:32
v0.9.0-rc.1
a77806d

Choose a tag to compare

v0.9.0-rc.1 Pre-release
Pre-release

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
  • 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.
  • 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

Full Changelog: v0.8.5...v0.9.0-rc.1