Skip to content

v0.7.0

Latest
Compare
Choose a tag to compare
@kanru kanru released this 07 Apr 12:37
· 132 commits to master since this release
v0.7.0
b543774

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

Full Changelog: v0.6.0...v0.7.0