Repository navigation
sheenbidi-m: SheenBidi 3.0.0 as C++23 modules (mcpplibs.mwrap.sheenbidi) - #1
Merged
Merged
Conversation
…es, generated from the pinned headers; API, macro and header-mixing tests; export audit
…ers on the module; tools/run_conformance.py runs BidiTest.txt and BidiCharacterTest.txt (17.0.0) on them
…ntation, CI (Linux x86_64 GCC/LLVM, Linux arm64, macOS, Windows), release and template workflows; the candidate compat index while compat.sheenbidi is unpublished
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
SheenBidi 3.0.0 (Unicode 17.0.0, Apache-2.0) as C++23 modules over
compat.sheenbidi3.0.0 (mcpplibs/mcpp-index#607).mcpplibs.mwrap.sheenbidi: every type (32), struct tag (11) andSB_PUBLICfunction (51) of the installed headers byexport using, generated from the pinned headers (tools/gen_exports.py); re-exports the module below.mcpplibs.mwrap.sheenbidi.macros: 12 object-like macros asinline constexprof their own type, 16 function-like macros as constexpr function templates whose body is the macro, and the 236 enumerators of the headers' unnamed enums (TU-local, not exportable as they are) as constants of the typedef the header gives them (SBBidiType,SBGeneralCategory,SBScript,SBStringEncoding,SBBoolean).<mwrap/sheenbidi/macros.hpp>(=<SheenBidi/SheenBidi.h>):SB_PUBLIC,SB_DEPRECATED,SB_EXTERN_C_BEGIN/END.SB_CONFIG_EXPERIMENTAL_TEXT_APIis off in compat.sheenbidi, as upstream's default).Checks (all in CI: Linux x86_64 GCC 16.1 and LLVM 23.1.3, Linux arm64 GCC, macOS LLVM, Windows LLVM)
mcpp test: API test (module only), generated macro/enumerator mapping test against the raw header, header-mixing test, macros-module compile-time test.tools/check_exports.py: generated sources fresh; every declaration exported, every enumerator mapped, every macro mapped / kept / include guard.tools/run_conformance.py: Unicode 17.0.0 conformance onexamples/sheenbidi(programs written against the module), files from the release checked byte-for-byte against unicode.org's: BidiTest.txt 770,241 cases, 0 errors; BidiCharacterTest.txt 91,707 cases, 0 errors (paragraph level, levels after L1, visual order, and mirrored characters vs BidiMirroring.txt).biditemplate as an installed package, strict build and run.Until mcpp-index publishes compat.sheenbidi,
tools/candidate_index.pyresolves the compat namespace from the index PR's branch in CI only; it becomes a no-op once the descriptor is on the index's main.Upstream note: in 3.0.0 releasing an
SBMirrorLocatorthat never loaded a line crashes (its finalizer callsSBLineRelease(NULL)); documented in docs/usage.md and avoided in the tests and examples.