Additions
-
Introduced a new Text Editing and Analysis API:
- Provides immutable and mutable text objects with support for UTF-8, UTF-16, and UTF-32 encodings.
- Supports efficient text mutation operations including insert, delete, replace, and batch edits with deferred reanalysis.
- Makes attributes a first class concept, enabling attribute aware text inspection and replacement.
- Exposes logical, script, attribute, and visual run iterators for traversing analyzed text.
- Enables paragraph iteration with access to paragraph level metadata and analysis results.
- Comes with extensive test coverage for text editing, attributes, run iteration, and replacement semantics.
-
Introduced SBAllocator as a public memory allocation abstraction:
- Allows clients to provide custom allocation, reallocation, and deallocation strategies.
- Ensures consistent allocator usage across all public APIs.
- Includes allocator specific test suites across all supported build systems.
-
Introduced internal thread safety and concurrency support:
- Implements platform independent atomic operations, thread local storage, memory fences, and one time execution primitives as internal infrastructure.
- Makes internal object reference counting thread safe.
- Includes comprehensive test coverage for concurrency behavior.
-
Updated Unicode data to Unicode 17.0.0 (thanks @utelle).
-
Added support for installing the library in all CMake configurations (thanks @jcowgill).
Updates
- Refined internal implementations of run queues and bracket queues.
- Improved performance and memory usage across internal text processing paths.
- Reorganized the source layout for clearer separation of components.