Hi developers,

I would like to let you know about API/ABI incompatibility on
uim 1.5.0 and expected future change. Please let me know if
something is bad.

There are only 3 categories and 5 entries of ABI-incompatible
little libuim API changes. See doc/COMPATIBILITY for further
information.

  http://uim.googlecode.com/svn/trunk/doc/COMPATIBILITY

- API bug fixes
  * "Fix invalid type assumption on PIDs"
  * "Change return type of uim_set_candidate_selector_cb() to void"

- non-core API removal
  * "uim_symbol_value_str removal"
  * "uim_iconv_open() privatization"

- incompatible ABI changes
  * "Deprecation of UKey_Shift_key and so on"

"API bug fixes" are required to fix invalid API definition about
its types. But the API invocation will probably not affected.

"non-core API removal" is aimed to make uim API set
proper. Although we can keep them remained as deprecated API/ABI
for backward compatibility, I simply removed them since:

  - libuim ABI is already incompatible because of the "API bug
    fixes". So we don't have the motivation to keep the ABI

  - Invocations of them should be replaced with more proper
    ones, to make libuim responsibility clear

The change of "incompatible ABI changes" is just a enum
renumbering. It is not required, but since libuim ABI is already
incompatible because of the "API bug fixes", it is good time to
renumber them.

If you want to keep the API/ABI of "non-core API removal" and
"incompatible ABI changes" remained for backward-compatibility,
Please let me know the reason.


In addition to libuim API/ABI changes, there are a lot of
uim-scm API/ABI changes.

- incompatible changes on uim-scm API/ABI
  * "uim-scm API reorganization in uim 1.5.0"
  * "uim-scm API truth predicates reorganization in uim 1.5.0"
  * "Bit width extension of uim_scm_c_bool() and uim_scm_make_bool()"

But since they are regarded as semi-internal interfaces of uim,
and declared as "unstable interfaces", I don't hesitate to
revise them.

And to make libuim ABI number inaffected from the uim-scm ABI
changes, I'm going to separate uim-scm as libuim-scm from libuim
in uim 1.5.0.


After the libuim-scm separation, further API/ABI changes up to
uim 2.0 are expected as follows:

  - Keep libuim-scm API/ABI unchanged on uim 2.0

  - Change libuim API/ABIs step by step until uim 2.0, or at
    once on uim 2.0

    * Remove uim_ipc_*() (misnamed: actually popen(3) like
      utility of uim) and turned it into a Scheme utility
      procedure

    * Replace Helper-protocol dependent and string-based
      "Property API" with pure C interface like "mode API"

    * Separate uim-helper facility and uim_helper_*() functions
      from libuim, and replaced with bridge-dependent IPC such
      as D-Bus on UNIX desktop, and no IPC on Qtopia

    * Replace im-switcher API with the "Property API" successor

    * Revise overall uim API on uim 2.0

Please let me know your opinion about it. If nobody objected,
uim 2.0 may be reorganized as follows. But since keeping the
libuim compatibility layer is painful, I want to select the
strategy rewriting all bridges into libuim2-based, and discard
the old interfaces. Please let me know if you have a reason to
keep libuim compatibility provided even if all bridges are
rewritten for the new interfaces.


uim 1.5:
+-------------------------+
|         bridges         |
+-------------------------+
|  libuim  :  uim-helper  | <--> uim-helper-server
+----------+--------------+

uim 2.0:
+------------------------+
|       new bridges      |
+-----------+--+---------+----------------------+
|  libuim2  |  |  bridge-dependent IPC (D-Bus)  | <--> a msg bus for uim
+-----------+  +--------------------------------+

uim 2.0 (legacy interface):
+----------------------------------+
|  legacy bridges with uim-helper  |
+----------------------------------+
|   libuim (compatibility layer)   | <--> uim-helper-server
+----------------------------------+
|             libuim2              |
+----------------------------------+

------------------------------------------------
YAMAMOTO Kengo / YamaKen  [EMAIL PROTECTED]
FAMILY   Given / Nick
http://en.wikipedia.org/wiki/Japanese_name

--~--~---------~--~----~------------~-------~--~----~
Google Groups "uim-en" group
uim-en@googlegroups.com
http://groups.google.com/group/uim-en/about
-~----------~----~----~----~------~----~------~--~---

Reply via email to