ANN: libchewing 0.7.0 released

Skip to first unread message

Kan-Ru Chen

Apr 7, 2024, 8:42:49 AMApr 7
to chewing-devel

Download the source tarball from github releases:

libchewing releases can be verified with the following minisign public key

minisign -Vm libchewing-0.7.0.tar.zst \
-P RWRzJFnXiLZleAyCIv1talBjyRewelcy9gzYQq9pd3SKSFBPoy57sf5s

## What's New in libchewing 0.7.0 (Apr 7, 2024)

This is the first beta release of the Rust rewrite. The library has been tested
with the AFL++ fuzzer and most of the obvious bugs have been fixed so it should
not crash for normal use. Now we invite power users to daily drive the beta
release in order to find more subtle bugs.

The Rust rewrite is ABI compatiable with previous releases. The most notable
difference with the C version includes a new portable dictionary format that can
be used both as system dictionary and user dictionary. Users with existing user
phrase dictionary will be automatically migrated. Old files will be backed up
automatically. With these change we will be able to support dictionary sharing
and loading multiple dictionaries in future releases.

* Future roadmap
- 0.8.x after bug bashing this version will be the first public release with
rust implementation as the default.
- 0.9.x will focus on the stablization of the Rust crate API.
- 1.0.0 will be the first public release of the Rust API. C implementation
will be removed from the repository.

* Added
- Added Colemak-DH ANSI/Orth layout support
- Replace bespoke RIFF+TLV file format with standard DER format (rust)
- Supporting migrating user dictionary file to new format. (rust)
- Allow creating in memory user dictionary (rust)
- New `chewing-cli` tool can be used to create or inspect dictionary files. (rust)
- New `chewing-cli` tool can dump dictionary as or import from CSV file. (rust)
- Audit dependencies using cargo-vet (rust)

* Changed
- Buffer user dictionary changes and flush in background without blocking main
thread (rust)

* Bug fixed
- Some unsigned underflow issue found by afl++ (rust)
- Skip symbol selection if preedit buffer is empty (rust)
- Allow numlock in selection mode (rust)
- Avoid infinite recursion (rust)
- Ensure to return KeyBehavior::Commit when we push to commit buffer (rust)
- Adjust selection offset after delete symbols (rust)
- Disable trace logging if no logger is enabled (rust)
- Should not start selection in English mode (rust)
- Use offset to select from paginated phrase list (rust)

* Documentation
- Added document for fuzzers (rust)
- Describe how to compile dictionary files
- Update build instruction and Rust MSRV info

* Testing
- Added a fuzzer harness with afl++ (rust)

## New Contributors

* @mlouielu made their first contribution in

**Full Changelog**:

Happy hacking,
Reply all
Reply to author
0 new messages