Cim 2.0.0 Released
Cim 2.0.0 Released
On December 7, 2025, Cim (Common Input Method) version 2.0.0 was released. This update marks a major version change, featuring ABI (Application Binary Interface) changes in libcim, the addition of Qt6 support, and a refactoring of the plugin architecture.
Key changes are as follows:
1. Support for Qt6 Input Method Module
Configuration support for the Qt6 environment (detection of core, gui, and widgets paths) has been added. The configure script now detects platform-specific paths for Qt6 on FreeBSD and Linux distributions.
- The
libqt6im-cim.solibrary has been implemented to bridge Qt6 events to Cim viaQPlatformInputContext. - The
CimQicclass has been implemented to handle preedit drawing, committing, surrounding text processing, and cursor updates. - Qt6 support can be disabled via the
--disable-qt6option during build configuration.
2. Core Architecture Refactoring and ABI Changes
The major version of the libcim library has been bumped to 2, breaking ABI compatibility with previous versions.
- Introduction of Opaque Handles: The
CimIcstruct has been refactored to use an opaque handle (CimIcHandle) and a virtual function table (vtable) to hide implementation details. - Dynamic Dispatch:
CimIcVTableandCimPluginstructs have been introduced to support dynamic dispatch for plugins. - API Naming Convention Changes: Instance creation and destruction functions have been changed from
cim_ic_new/freetocim_ic_create/destroy.
3. Data Type and API Standardization
Data type clarity has been improved across the API.
- The API has been updated to use
uint32_tfor sizes and counts, andint32_tfor coordinates. - Callback signatures have been standardized, and consistent use of
nullptrhas been applied.
4. Other Improvements
- C Standard: Support for the C2x (C23) standard is enabled by default and can be disabled via the
--disable-c2xoption. - Safety Enhancements: Safety has been improved with zero size checks in
c_memfunctions and updates toc_utf8_strncpy. - Ruby Bindings:
libcim/cim.rbhas been added to facilitate Cim testing via Fiddle. - String Utility: An implementation of
c_str_sprintfhas been added.
This release focuses on structural modernization and scalability for the Qt6 environment. Existing users may need to modify their code due to API and ABI changes.
Cim source code can be downloaded from https://nimfsoft.art/cim/