Repository navigation
build(deps): move Maul UI to 1.3.3 and Maul Unicode to 1.1.2 - #221
Merged
Merged
Conversation
Maul UI 1.3.3 and Maul Unicode 1.1.1 mark every status they return as must-use under GCC 14 in C23 too. Unicode 1.1.0 also refuses an iterator no init call set up. UI 1.3.3 still names Unicode 1.0.0, which 1.1.1 serves within 1.x.
siracozmen01
commented
Nov 5, 2026
siracozmen01
left a comment
Contributor
Author
There was a problem hiding this comment.
Review at 59e6f85: changes needed (1). Read, not run.
1. docs/operations/dependencies.md still says the four move to the releases Maul UI names. Line 70 reads: "Each names the one release of the others it was built against ... So the four move to the releases Maul UI names, with Maul RHI at the one it names too."
- After this PR that is no longer true. Maul UI 1.3.3 names Maul Unicode 1.0.0, and the engine vendors 1.1.2.
- The body explains why that is sound: Maul Unicode's 1.x promise, the FetchContent override of both libraries'
maul-unicode, and the glue'sVERSION_EQUALcheck living only in the off-by-defaultMAUL_UI_WINDOW. None of that is in the operations doc, which is what the next update follows. - Please change the paragraph to say what the build now does: Maul Unicode may be newer, within 1.x, than the release Maul UI and Maul Window name; how the override hands both the vendored one; and that the glue's equality check is not part of the engine's build.
The rest holds.
- Vendored bytes. The files I fetched match their release tags byte for byte:
src/segment.candinclude/maul-unicode/base.hagainst maul-unicode v1.1.2, andinclude/maul-ui/base.hagainst maul-ui v1.3.3. - I cannot compare whole trees from here. Please run
diff -rofthird_party/maul-unicodeandthird_party/maul-uiagainst the extractedmaul-unicode-1.1.2.tar.gzandmaul-ui-1.3.3.tar.gz, limited to the paths the rows list, as for #212. - Pins and rows. The rows name Maul Unicode 1.1.2 at
b026e91(v1.1.2) and Maul UI 1.3.3 at713c044(v1.3.3), each with its archive's SHA-256.b026e91is the v1.1.2 commit that maul-window #482 compared against. Please confirm713c044is thev1.3.3tag's commit. - Results. None of the listed entries changes a result the engine reaches.
- UI's #374 and Unicode's #271 and #276 are compile-time attributes.
- Unicode's #264 and #267 refuse only iterators no init call set up, and Maul UI and Maul Window pass only initialized ones, copies included. So the only effect is the 1 to 2% cost on line breaking.
- Each release keeps the data at 18.0.0 and
MUNI_RESULTS_VERSIONat 2. - The engine calls no Maul Unicode function itself.
- So no
!is right, and nothing in the engine's own code needs to change.
siracozmen01
commented
Nov 5, 2026
siracozmen01
left a comment
Contributor
Author
There was a problem hiding this comment.
Delta review, 59e6f85 to a6dc372: ready. Read, not run.
The delta is the one paragraph of docs/operations/dependencies.md. It now says what the build does:
- Maul Window, Maul Tween and Maul RHI follow the releases Maul UI names.
- Maul Unicode may be a later release within its major version: no breaking release within 1.x, and its package takes any earlier 1.y.
third_party/maul_ui.cmakepoints FetchContent'smaul-unicodeat the vendored tree for both libraries.- The
VERSION_EQUALcheck lives only in theMAUL_UI_WINDOWglue, which the engine leaves off. - A later Unicode is still built and checked with the others.
It matches the body and the build, and is written in the product's voice. With your tree comparison against both archives and the tag commits confirmed, nothing is open.
Merged
siracozmen01
pushed a commit
that referenced
this pull request
Nov 5, 2026
🤖 I have created a release *beep* *boop* --- ## [0.7.0](v0.6.1...v0.7.0) (2026-11-05) This release moves the engine to Maul Nav 1.2.0, Maul UI 1.3.3 and Maul Unicode 1.1.2. A navmesh's tiles bake to new bytes, and agents that avoid each other move by slightly different amounts. No wire, save, checkpoint or cooked format changes, and the engine keeps no baked tile across runs. ### Changed - **Breaking:** The engine is built on Maul Nav 1.2.0, from 0.2.0, vendored from its release archive with its SHA-256 checked. `rawframe/navigation`'s API does not change. What a game sees change ([#222](#222)): - A navmesh's tile bytes and fingerprint change: tiles bake under generator 6 and tile format 4. The fingerprint a server reports in its `navigation_summary` record moves. - A walkable strip one cell thin now gets a polygon, so a path may cross it, and heights along long edges are sampled more finely, which reaches the height of a path's points over uneven ground. Paths over the same polygons are otherwise unchanged. - Avoidance velocities are rounded to binary32 and never pass an agent's maximum speed, so a game's agents that avoid each other in `rawframe.navigation.avoid`, as tycoon's customers do, move by slightly different amounts each step. - A navigation query past 1e100 m from the navmesh's origin finds nothing. - The engine is built on Maul UI 1.3.3 and Maul Unicode 1.1.2, each vendored from its release archive with its SHA-256 checked. Maul Window, Maul Tween and Maul RHI stay at 0.12.0, 1.0.0 and 0.15.0. Layouts, styles, draw lists, line breaks, shaped text, glyph images and the accessibility tree are unchanged; line breaking takes 1 to 2% longer, since Maul Unicode now checks every iterator it is given ([#221](#221)).
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.
Problem
The engine pins Maul UI 1.3.2 and Maul Unicode 1.0.0. Maul UI 1.3.3 and Maul Unicode 1.1.2 are released and verified.
Change
third_party/maul-uiis Maul UI 1.3.3, andthird_party/maul-unicodeis Maul Unicode 1.1.2. Each was vendored withtools/update_maul.sh, which checked the archive against its release'sSHA256SUMS. Each archive also has one attestation on GitHub, and each tag is the commitdocs/operations/dependencies.mdnow gives.cmake/*.cmakenames the same Window (0.12.0), Unicode (1.0.0), Tween (1.0.0), RHI (0.15.0), FreeType (2.14.3) and HarfBuzz (14.5.1) releases as 1.3.2, so those pins stay.third_party/maul_ui.cmakesetsFETCHCONTENT_FULLY_DISCONNECTEDandFETCHCONTENT_SOURCE_DIR_MAUL-UNICODEtothird_party/maul-unicode. Maul UI's text component (cmake/TextDependencies.cmake) declaresmaul-unicodeat its pinned tag, and FetchContent configures it from that directory. Maul UI comes first, so it makes the onemaul-unicodetarget.find_package(maul-unicode 1.0.0 CONFIG QUIET)finds no installed package. ItsFetchContent_Declare(maul-unicode ...)of the same name then takes the target already made. FetchContent does not compare an override directory with the declared tag, so no check in either library reads the vendored source's version.VERSION_EQUAL, Maul UI'scmake/Window.cmake, belongs to maul-ui-window, the glue to Maul Window. It is included only withMAUL_UI_WINDOW, which is off by default, andthird_party/maul_ui.cmakedoes not turn it on, since the engine drives Maul Window itself. So it never runs in the engine's build, with Unicode 1.0.0 or 1.1.2.What users see change
Every entry of the notes, with who sees it:
MUI_NODISCARDwas empty under GCC 14 in C23 mode, and is now[[nodiscard]]there too. This changes only what a C program built with GCC 14 is warned about. The engine calls Maul UI from C++, where the attribute already held. Maul UI's own C sources build in thegcc-debugtree with GCC 14, and that tree built with no new warning.boolcarriesMUNI_NODISCARD. No call dropped one, so no behavior changes.MUNI_NODISCARD. Maul UI's and Maul Window's C sources, which call Maul Unicode, built with GCC 14 ingcc-debugwith no new warning.MUNI_RESULTS_VERSIONstays 2.Layouts, styles, draw lists, line breaks, shaped text, glyph images, motion curves and the accessibility tree are 1.3.2's, as Maul UI's notes say. No wire, save, checkpoint or cooked format changes, so the title has no
!.Verification
With Unicode 1.1.1,
tools/check.sh fullpassed at four jobs through the heavy-job wrapper, in 1926 s:clang-thread: 208 of 208.clang-sanitize: 253 of 253.gcc-debug(GCC 14): 208 of 208.clang-development: 208 of 208 unit tests and 19 of 19 integration tests.wasm-development: 62 of 62.GCC 14 warnings: in
gcc-debug, Maul UI, Maul Unicode (with its HarfBuzz functions), Maul Window and Maul Tween were cleaned and rebuilt alone with Unicode 1.1.1. All 336 C objects built with no warning.With Unicode 1.1.2, Maul Unicode and its HarfBuzz functions were cleaned and rebuilt alone in
gcc-debug: 87 C objects, no warning. Thentools/check.sh fullpassed again, in 1288 s:clang-thread: 208 of 208.clang-sanitize: 253 of 253.gcc-debug(GCC 14): 208 of 208.clang-development: 208 of 208 unit tests and 19 of 19 integration tests.wasm-development: 62 of 62.That run builds Maul UI and Maul Window against Unicode 1.1.2 inside the engine and runs every test above on them, which tests exactly this combination.