Skip to content

v2.9.0

Latest

Choose a tag to compare

@mta452 mta452 released this 10 Jun 07:13
· 72 commits to master since this release

Additions

  • CMake support added for easier integration into modern build systems (thanks @glebm)
  • C++ compatibility for public headers to support mixed-language codebases (thanks @glebm)
  • GitHub Actions replaced Travis CI as the CI system (thanks @AJenbo)
  • CI now runs on Linux, macOS, and Windows, performing both build and test using CMake and Meson:
    • Linux and macOS workflows use GCC and Clang
    • Windows workflow uses MSVC only
  • Valgrind job added in Linux CI using Make to detect uninitialized memory usage
  • Public version header <SheenBidi/SBVersion.h> introduced for programmatic version checks
  • SB_PUBLIC macro introduced to handle visibility of public functions across platforms
  • SB_DEPRECATED macro introduced to annotate deprecated APIs with compiler-specific attributes
  • UTF decoding helpers introduced for single code points:
    • SBCodepointDecodeNextFromUTF8
    • SBCodepointDecodePreviousFromUTF8
    • SBCodepointDecodeNextFromUTF16
    • SBCodepointDecodePreviousFromUTF16
  • SBScriptGetUnicodeTag(SBScript) introduced to return a single Unicode script tag (4-letter abbreviation) corresponding to the passed-in script, usable with HarfBuzz
  • Internal Object class introduced for consistent memory management across all major types (SBAlgorithm, SBParagraph, SBLine, etc.)
  • Unified versioning implemented across all build systems using the public version header
  • Support for building the library as a DLL on Windows added in both CMake and Meson
  • pkg-config support added in both CMake and Meson builds
  • Support for running individual test classes added (when the STANDALONE_TESTING macro is defined)
  • Dedicated targets for each test class added in CMake and Meson, allowing execution via ctest or meson test

Updates

  • SBCodepointSequence now uses a const buffer (thanks @glebm)
  • Source tree restructured:
    • Public headers moved to Headers/SheenBidi/
    • Test sources moved to Tests/
  • Internal Parser library rewritten to more robustly parse Unicode data files
  • General category lookup generator improved using Unicode’s DerivedGeneralCategory.txt
  • SBScriptGetOpenTypeTag data updated to match Microsoft’s OpenType script tags (as of 2024‑05‑31)
  • SBScriptGetOpenTypeTag marked as deprecated in favor of SBScriptGetUnicodeTag
  • Support for default property values of unassigned code points improved using enhanced parsing logic
  • Tests added for:
    • RunQueue
    • Script-to-tag conversion (OpenType & Unicode)
    • Bracket matching with canonical equivalence

Fixes

  • Fixed [#19]: eliminated uninitialized memory warning in Valgrind by introducing a flags array for BidiLink state tracking
  • Canonical bracket equivalence added for code points U+2329 and U+3008
  • Test coverage increased to 97% through targeted test additions