Releases: Tehreer/SheenBidi
Releases · Tehreer/SheenBidi
v2.9.0
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 platformsSB_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
ormeson test
Updates
SBCodepointSequence
now uses aconst
buffer (thanks @glebm)- Source tree restructured:
- Public headers moved to
Headers/SheenBidi/
- Test sources moved to
Tests/
- Public headers moved to
- 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 ofSBScriptGetUnicodeTag
- 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
v2.8
v2.7
v2.6
v2.5
- Implemented safe allocation for all objects with
NULL
checks onmalloc
calls - Extracted element insertion functions from stack and queue push functions for simplification
- Removed
SB
prefix from status stack related private structs - Added support for meson build system
v2.4
v2.3
v2.2
- Added support for Appveyor CI
- Updated all lookups to Unicode 12.1
- Revised convention for naming private types and functions
v2.1
Additions
SBScript
:
- OpenType Tag:
SBUInt32 SBScriptGetOpenTypeTag(SBScript script)
Updates
- Updated all lookups to Unicode 11.0
v2.0
Additions
SBCodepoint
:
- Bidirectional Type:
SBBidiType SBCodepointGetBidiType(SBCodepoint codepoint)
- General Category:
SBGeneralCategory SBCodepointGetGeneralCategory(SBCodepoint codepoint)
- Script:
SBScript SBCodepointGetScript(SBCodepoint codepoint)
SBAlgorithm
:
- Bidirectional Types:
const SBBidiType *SBAlgorithmGetBidiTypesPtr(SBAlgorithmRef algorithm)
SBScriptLocator
:
- Facilitates to find out script runs sequentially, as specified in UAX #24
Updates
- Used const agent in
SBMirrorLocator
to avoid undesired mutations. - Used signed indexes to track boundary elements in custom stack and queue implementations.
- Changed bidi type of unspecified code points from
L
toON
. - Added
lookup
postfix in Unicode tester files.
Fixes
- Fixed minor compiler warnings.
- Made minor clarifications in the documentation.