What's New in libchewing 0.6.0 (Jan 27, 2024)
---------------------------------------------------------

This release contains many improvements and bug fixes. It's the first
release since 2016. We have started a major rewrite in Rust so we expect
to have more frequent releases in the following months.

* Added
  - New API chewing_phone_to_bopomofo to convert syllable in u16 to bopomofo
    string [ShengYenPeng]. #166
  - New API chewing_set_autoLearn and chewing_get_autoLearn can be used to
    disable and enable new phrase auto learning. [Hiunn-hué] #261
  - Add default config test for autoLearn option [Billy Su].
  - Add Android platform support [hiroshiyui]. #408
  - New chewing Rust crate can be downloaded from
    [crates.io](https://crates.io/crates/chewing) [Kan-ru Chen]. #423
  - Add several CMake presets for supported configurations [Kan-ru Chen]. #424

* Changed
  - Implement has_userphrase in testhelper with the public
    chewing_userphrase_lookup API. [ShengYenPeng]. #223
  - Updated HSU layout's JVC conversion to be more intuitive [Hiunn-hué]. #259
  - Phrase auto learning now only triggers after committing [Hiunn-hué]. #260
  - chewing_handle_CtrlNum now handles cursor better and has clearer error
    message if there is nothing to be added to user phrase. [Hiunn-hué] #277
  - chewing_handle_ShiftLeft and chewing_handle_ShiftRight now also displays
    aux message for new user phrases added. [Hiunn-hué] #278
  - Symbol used for full-width colon changed from ︰ (U+FE30) to ： (U+FF1A)
    [school510587] #304
  - Support cross compiling with qemu. [sgn] #333
  - CMake minimum version changed to 3.21.0
  - Rewrite chewing internal in Rust [Kan-ru Chen] #347 #378

* Dictionary
  -  Add new syllable ㄒㄩㄢ for 亘 [yan12125] #252 #253

* Removed
  - Autotools build tools are removed. CMake is the recommended way to build
    libchewing.

* Bug fixed
  - Fix ChoiceEndChoice expression always true [Billy Su].
  - Fix strncpy warning in hash.c [Bo-Cheng Jhan].
  - Fix unable to input some Bopomofos with ET26 layout [Hiunn-hué]. #235
  - Fix double free in userphrase-hash's TerminateUserphrase [cwlin]. #254
  - Fix hash item offsett calculation in uhash [cwlin]. #255
  - Fix ChoiceEndChoice expression always true [Billy Su]. #258
  - Fix clearing bopomofo buffer after switching Chi-Eng mode [Hiunn-hué]. #268
  - Fix chewing_handle_Space cannot input space with empty buffer [Hiunn-hué]. #274
  - Fix a strncpy warning and use ARRAY_SIZE [school510587] #296
  - Enhance chewing.py to support platforms with 64-bit pointer [cheese] #310
  - Fix init_database to correctly read phrase frequency for sorting [yan12125] #334 #337
  - Fix installation of data files [yan12125] #350
  - Fix building shared library on all supported platforms [Kan-ru Chen] #375 #376
  - Fix dvorak-qwerty symbol mapping [hiroshiyui] #407
  - prevent memory leak in error case of GetDefaultUserPhrasePath [Kuang-che Wu].
  - Fix PinYinData keySeq buffer overflow in PinYinInput() [Kuang-che Wu]. #238
  - Fix trying to allocate buffer of negative size [Kuang-che Wu].
  - Fix access violation due to negative cursor position [Kuang-che Wu].
  - Fix several buffer overflow. [ChangZhuo Chen]. #241 #242

* Platform-specific
  - Install instructions for macOS [Chocobo1].


What's New in libchewing 0.5.1 (May 18, 2016)
---------------------------------------------------------
* Bug fixed:
  - Fix wrong CHEWING_DATADIR definition in CMake build #222.
  - Fix j, k selection when symbol in between #149 #221.


What's New in libchewing 0.5.0 (May 2, 2016)
---------------------------------------------------------
* New feature
  - Add Carpalx keyboard layout support #217.

* Dictionary
  - Update dictionary #151 #155 #188 #191 #201.
  - Add debug tool: dump_database.
  - Sort tsi.src #212.

* Misc
  - Tweak several comments.
  - Fix libchewing document.
  - Remove old/dead code.
  - Improve code readability and consistency.
  - Update automake syntax #114.
  - Add test cases #169 #177.
  - Update Python sample code.
  - Add debug tool dump_database.
  - Integrate coverity scan in https://scan.coverity.com/.

* Platform-specific
  - Update README for OS X.
  - Set WITH_INTERNAL_SQLITE3 to true by default in MS-Windows.
  - Fix Visual Studio compiling warnings/errors #168 #171 #189 #190 #213.
  - Add a cmake option BUILD_DLL to enable building *.dll with MS VC++ #185.
  - Make the python binding of libchewing support Windows dll files #186.
  - Don't use SIGSTOP in MS-Windows.

* Bug fixed
  - Check if ld supports --no-defined #144.
  - Fix unexpected candidate disorder for '1' #153
  - Replace bash-izm '==' operator with '=' for test(1) # 158.
  - Fix several Coverity errors #172 #173.
  - Fix ChewingKillChar which is disabling OpenSymbolChoice #160 #181.
  - ㄅ cannot overwrite ㄆ in HSU and ET26 #170 #183.

* Successful stories:
  - Rime Input Method Engine (RIME) takes partial dictionary from
    libchewing.
  - PIME (writing input methods for Windows easily with Python) supports
    Chewing IM by default.


What's New in libchewing 0.4.0 (Apr 11, 2014)
---------------------------------------------------------
* Add the following APIs:
  - Userphrase manipulation
    - chewing_userphrase_enumerate
    - chewing_userphrase_has_next
    - chewing_userphrase_get
    - chewing_userphrase_add
    - chewing_userphrase_remove
    - chewing_userphrase_lookup
  - Keyboardless action
    - chewing_cand_open
    - chewing_cand_close
    - chewing_cand_string_by_index_static
    - chewing_cand_choose_by_index
    - chewing_cand_list_first
    - chewing_cand_list_last
    - chewing_cand_list_has_next
    - chewing_cand_list_has_prev
    - chewing_cand_list_next
    - chewing_cand_list_prev
    - chewing_commit_preedit_buf
    - chewing_clean_preedit_buf
    - chewing_clean_bopomofo_buf
  - Bopomofo buffer
    - chewing_bopomofo_Check
    - chewing_bopomofo_String_static
  - Static API
    - chewing_aux_String_static
    - chewing_buffer_String_static
    - chewing_cand_String_static
    - chewing_commit_String_static
    - chewing_kbtype_String_static
  - Misc
    - chewing_new2
* Dictionary format:
  - Remove text data support
  - Introduce platform independent binary data representation
  - Move binary data to share/libchewing/*
* Userphrase format:
  - Support SQLite-based user phrase storage and manipulation
* New coding style:
  - Use scripts/indent.sh to change coding style
* Bug fixed:
  - Fix chewing_zuin_Check wrong return value #62
  - Fix numlock key cannot output number #45
  - Fix negative frequency problem #75
  - Fix cannot select candidate when symbol exists #79
  - Avoid clearing the buffer when Up arrow key is pressed and escCleanAllBuf is 1.
  - Fix cannot handle numlock 9 correctly #88
  - Fix invalid characters are committed when pre-edit buffer is full
  - Fix AutoLearnPhrase cannot fill correct wordSeq #108
  - Fix wrong auto learn when symbol in between #112
  - Fix missing rpl_malloc for cross compilation #118
  - Fix '\n' appear in symbol table #126
  - Reopen candidate list for symbols with down key #127 #135
  - Let up key close candidate list of symbols #131 #138
* Misc:
  - Add `make check' in cmake build
  - Change MAX_UTF8_SIZE to 4
  - Update official website URL
  - Use CreateFileA() instead of CreateFile() to stick with the ANSI API
  - Do not check phrase longer than MAX_PHRASE_LEN
  - Implement dynamic programming phrasing algorithm #73
  - Clean bopomofo buffer when mode change to English mode #89 #97
  - Update README to GFM.
  - Replace 'INCLUDE' with 'AM_CPPFLAGS' #68 #114 #116
  - Use [Shift]+[-] to input EM DASH (u+2014) as default #113 #124
  - Use Backspace to close candidate window #128
  - Use PgUp/PgDn to turn pages of candidates #129
  - Update Windows default search path #78
  - The word "zuin", "Zhuyin" are obsolete terms for "Bopomofo"
  - Add const whenever possible in several APIs
  - Toggle shape mode with shift-space #141 #142
* Successful stories:
  - chewing-windows-tsf project provides Text Services Framework
    support for Microsoft Windows.


What's New in libchewing 0.3.5 (Jul 28, 2013)
---------------------------------------------------------
* Improve CMake rules
  - Visual Studio build included
* Dictionary improvements
  - Remove duplicated phrases, fix Bopomofo representation
  - tool tweaks
* travis-ci support (https://travis-ci.org/chewing/libchewing)
* drone.io support (https://drone.io/github.com/chewing/libchewing)
* coveralls.io support (https://coveralls.io/r/chewing/libchewing)
* editorconfig support (http://editorconfig.org/)
* Add new chewing_set_logger API
* Prevent unaligned memory access
* Reduce maxChiSymbolLen to 39 to avoid overflow
* Do not store user phrase when its length is 1
* Check chiSymbolBufLen in chewing_handle_Numlock()
* Set isSymbol to 0 in SetChoiceInfo
* Fix 'j', 'k' in select mode cannot handle symbol selecting
* Do not call GetCharNext() when GetCharFirst() fails
* Successful stories:
  . FreeArray utilizes libchewing for selecting phrases of Array
    input method


What's New in libchewing 0.3.4 (Dec 31, 2012)
---------------------------------------------------------
* Improve the description of libchewing API
  - Simplified examples to illustrate the usage are added
* Revise libchewing API. Check the documentation for details
* Support THL (Taiwan Huayu Luomapinyin) and MPS2 Pinyin keyboard layout
* Reimplementation of unit test framework. No external 'check' package
  is required
* Fix several phrase errors
  - Add exceptional phrase as well
* Improved developer and user guide
* Introduce CMake based build system, which is convenient to MS-Windows
  based environments.
* Add --enable-gcov to enable gcov coverage
* Fix possible strncat() overflow
* Consistent checks for bopomofo sequence internally
* Handle incomplete bopomofo with space key properly
* Internal structure refactoring
* Read hash path from CHEWING_PATH environment variable
* Make libchewing thread-safe
* Fix IM crash by changing default candidate per page to 10
* Fix the detection of ncursesw
* Fix the usage of autotools
* Update and tune symbols
* Fix valgrind warning
* Fix several compilation warnings
* Fix GCC visibility availability for Darwin specific PIC code
* Fix hash table initialization and its memory leakage
* Support building with mingw32 toolchain
* Fix GNU Hurd build
* Fix Microsoft VC build
* Fix Windows 64-bit build
* Fix mingw32/64 + WINE build
* Successful stories:
 . GCIN supports experimental Chewing IM since version 1.6.4
 . HIME supports Chewing IM
 . UCIMF supports Chewing IM
 . Fcitx supports Chewing IM
 . mozc (IM framework maintained by Google) provides Chewing support
 . JMCCE (reworked version) supports libchewing


What's New in libchewing 0.3.3 (Feb 27, 2011)
---------------------------------------------------------
* Fix memory access violation.
* Improved Python binding.
* Merged with libchewing-data project. (r455)
* Improved random key stroke tester.
* Fix the handling of phonetic symbols in Hsu's keyboard.
* Fix unexpected candidate disorder when doing symbol choice.
* Revised phrase choice from rearward logic.
* Fix cross compilation.
* Improved shell script to merge changes form libchewing-data.
* Successful stories:
  . Google ChromeOS provides built-in Chewing IM support
  . MeeGo platform provides built-in Chewing IM support


What's New in libchewing 0.3.2 (Dec 1, 2008)
---------------------------------------------------------
* Add gcc visibility support to hide private APIs.
* APIs and Headers refactoring.
* Doxygen-friendly API documentation.
* New binary data manipulation approach to dramatically reduce storage
  usage and loading time via memory mapping. (enabled by default)
* New word segmentation method based on mmseg.
* Improved auto-learn new phrases method.
* Improved test suite and added simple benchmark program.
* Option to indicate the behavior for phrase choice to be rearward
  or not.
* New APIs to enumerate supported keyboard types.
* Repair improper memory access.
* API united in Win32 and UNIX world.
* Initial Python binding support.
* Merged with libchewing-data project. (r342)
* Canonical debugging messages.
* Successful stories:
  . OpenBSD porting
  . ibus-chewing : chewing engine for ibus input method framework.
  . UIM-chewing leveraging libchewing 0.3.x development branch.


What's New in libchewing 0.3.1 (Oct 1, 2008)
----------------------------------------------------------
* New keyboard layout DACHEN_CP26.
* Add key '`' to open symbol table.
* Erase candidate and reset its length when 'Esc' key is handled.
* Closes candidate window when user pressed 'Up' key.
* Doing select at the end of edit buffer works on the
  last phrase (interval).
* Improved reminding message text.
* Sync with libchewingdata project.
* A new HanYu-PinYin mapping table
* More robust behavior when IM crashes.
* Allow '#' comment and blank line in tsi.src.
* Fix chewing switch between Full/Half mode and cursor moves one space in
  gedit.
* Fix when list available phrases to choice, user's own phrases are
  not included.
* Release PgUp/PgDn key event to running applications.
* Fix portability issues on FreeBSD.
* Fix incorrect initialization.
* Fix pinyin key order, put "shun" before "shuo".
* Fix various potenital boffer overflow bugs.
* Fix various memory leaks.
* chewing_set_PinYinMethod to support multiple PinYin methods.
* chewing_handle_CtrlOption was removed.
* New structure SymbolEntry.
* Rename selectAreaLen to candPerPage.
* Added bEasySymbolInput.


What's New in libchewing 0.3.0 (May 15, 2006)
----------------------------------------------------------
* This is a new development branch differing a lot from
  0.2.x series, and breaks API/ABI for new features.
* UTF-8 based language engine core for common Unicode
  environment.
* Porting layer for POSIX/Unix-like and Win32 to reduce the
  redundant porting process.
* New API design for better consistency.
* Merge the efforts from libchewing-data subproject, which
  means various phrases have been reviewed and corrected.
* Zuin fixes and symbol improvements.
* Support key 'j' / 'k' for paging in selection mode.
* Fix some internal memory management bugs and leaks.
* Improved internal test suite.
* New binary-form of user hash data to speed up loading and
  solve hash data corruption.
* Better calculating of internal tree and phone constants.
* Revised tsi.src for richer phrases and avoiding crashes.
* Merge phone and phrase from CNS11643.
* Reduce the amount for the expose for internal symbols.
* Improved Han-Yu PinYin to use table-lookup implementation.
* Experimental frequency-evaluation. (re-compute chewing
  lifetime)
* Implement the choice mechanism for pair symbols.
* Improved Tab handling to allow the switching over different
  frequency orders of candidated phrases.
* New auxiliary module for simpler API uses.
* Experimental memory-mapping based binary data handling to
  speed up data loading.
* Successful stories:
  . Sun Solaris 10 U2 and 11 will provide built-in Chewing
    IM support.
  . OXIM input method suite from OpenDesktop/OSSI provides
    Chewing support as its default input method.
  . New Win32-Chewing subproject to provide efficient input
    method solution on Microsoft Windows platforms.


What's New in libchewing 0.2.7 (Aug 8, 2005)
----------------------------------------------------------
* Fix the keyboard type state changing bug.
* Add new function to specify the space as the selection
  key.
* Improved debug messages.
* Provide cutomized user-defined PinYin table support.
* Add termination mechanism.
* Successful stories:
  . Chewing has its Win32 porting (MS-IME) via OVIME (the
    Win32 port of OpenVanilla Input Method Framework).


What's New in libchewing 0.2.6 (Feb 28, 2005)
----------------------------------------------------------
* Experimental feature -- HanYu PinYing Keyboard layout.
* Proper $HOME env handling.
* SegFault workaround after libtabe's tsi.src merge.
* Add the facility to input symbols.
* Successful stories:
  . Chewing becomes one of the built-in input methods in Sun
    Java Desktop System (JDS).


What's New in libchewing 0.2.5 (Dec 28, 2004)
----------------------------------------------------------
* Merge SpaceChewing's frequency tweaking from zonble.
* Minor fixes for building process and zuin core.
* Successful stories:
  . IIIMF-chewing
  . SCIM-chewing
  . OpenVanilla Input Method Framework for MacOS X


What's New in libchewing 0.2.4
----------------------------------------------------------
* Merge from SpaceChewing:
  . Dvorak Hsu keyboard layout.
  . Hanin style support.
* Directly use tsi.src from libtabe.
  . No longer maintain separate tsi.src.
* Fix the word selection bug.
* Fix phonetic index in Hsu keyboard, and do fuzzy "g e"
  to "j e" convertion.
* Provide pkg-config and RPM spec.
* Allow users to specify forward/backward phrase addition.
* Initial Win32 support.


What's New in libchewing 0.2.3
----------------------------------------------------------
* Fix candidate phrase choice bug.
* Built-in debugging routines.
* Test suite & sample implementation.
* Merge the enhancements from SpaceChewing, such as
  space key selection, Eten special symbol input, and
  MacOSX awared information.
* Fix broken encoding in sort_dic utility.
* Doxygen documentation support.
* Add Dvorak keyboard support.
