Skip to content

fribidi-m: GNU FriBidi 1.0.16 as C++23 modules (mcpplibs.mwrap.fribidi) - #1

Merged
Sunrisepeak merged 4 commits into
mainfrom
mwrap-1.0.16
Oct 27, 2026
Merged

Sunrisepeak merged 4 commits into
mainfrom
mwrap-1.0.16

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

GNU FriBidi 1.0.16 as C++23 modules over compat.fribidi 1.0.16, following mcpp-index's mwrap specification.

  • import mcpplibs.mwrap.fribidi;: every type, enumerator, FRIBIDI_ENTRY function (the deprecated ones too) and variable of the headers upstream installs, by export using (the upstream globals). Generated by tools/gen_exports.py from the pinned release's headers, as a C++ translation unit sees them.
  • fribidi_debug_status / fribidi_set_debug are declared by fribidi-common.h outside its extern "C" block (C++ linkage: a call from C++ does not link); adapted under their names in mcpplibs::mwrap::fribidi, calling the C functions.
  • import mcpplibs.mwrap.fribidi.macros;: 171 object-like macros as inline constexpr of their C++ expansion's type, 55 function-like macros as constexpr function templates whose body is the macro itself (macro value, type and value category for every argument type; assigning macros take the argument by reference). Attributes, extern "C" brackets, pragmas and the X-macro protocol stay in <mwrap/fribidi/macros.hpp>.
  • Tests: the API through the module (UAX #9 N0 example, reordering, log2vis, mirroring, Arabic shaping and ligatures, charsets, deprecated API); every mapping against the raw header (generated); header mixing with the X-macro tables; the macros module alone at compile time.
  • Export audit: generated sources fresh, every declaration exported or adapted, all 259 macros accounted for.
  • Conformance: FriBidi's own suite on examples/fribidi (upstream's fribidi program and conformance runners ported to the module): the 6 charset tests byte for byte, BidiTest.txt (770,241) and BidiCharacterTest.txt (91,707), nothing excluded.
  • Licensing: Apache-2.0 wrapper + NOTICE (mcpp-community); FriBidi's README, COPYING (LGPL-2.1-or-later), AUTHORS and the UCD notice retained under upstream/ with checksums and deployed by runtime.deploy; LGPL obligations of static linking documented; the ported examples stay LGPL-2.1-or-later.
  • Default template bidi; bilingual README.

…om the pinned headers; API, macro and header-mixing tests; export audit
…runners on the module; tools/run_conformance.py runs FriBidi's whole test suite on them
@Sunrisepeak
Sunrisepeak merged commit 3909408 into main Oct 27, 2026
5 checks passed
@Sunrisepeak
Sunrisepeak deleted the mwrap-1.0.16 branch October 27, 2026 16:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant