[Release] UNIC 0.6.0


We’re happy to announce a new release of UNIC: Unicode and Internationalization Crates for Rust: Version 0.6.0!

In this release, we focused on improving abstractions around working with characters, like character range creation and iteration and defining properties of various types for characters, as well as using Rust for creating data tables for character properties and consuming them in the implementations for UCD properties.

Since we put our tools in separate crates from the implementation crates, it means that all the tools developed can be easily used by any third party library. Some of these tools, like character range and iteration, has already had existing similar crates available, but since they did not satisfy the needs of UNIC components, and because they are core to the development of these libraries, we have new implementations with these use-cases in mind, but hope other libraries will find them useful, as well.

Here are some of the new crates:

And, finally, Christopher Durham has become a core contributor!

Following is the release notes.

New components and modules

Abstractions for working with characters

  • [unic-char-range] Range and iterator types for characters, plus a chars!() macro. (Used as chars!('a'..'e'), chars!('a'..='e'), or chars!(..).)
  • [unic-char-property] New component based on the module previously in unic-utils, with new support for binary character properties.

Extending Unicode Character Database properties

  • [unic-ucd-name] New minimal implementation of Unicode character names (Name property).
  • [unic-ucd-case] New basic implementation of Unicode character case properties.
  • [unic-ucd-bidi] Add Bidi_Mirrored and Bidi_Control properties.

Dropped components and modules

  • Drop unic-utils's iter_all_chars() in favor of unic-char-range types and macros.

Other updates

  • All tables are now generated by the Rust pipeline! :tada:
  • The Rust table generation has been cleaned up to a very nice level of polish! :sparkles:
  • [unic-utils] Restructure tables into a dedicated type, rather than a mix of traits and “blessed” std types.