From 5f6e3814d43df53a559dd52bd1531ada435b5bd2 Mon Sep 17 00:00:00 2001 From: Sunrisepeak Date: Sun, 15 Nov 2026 20:25:12 +0900 Subject: [PATCH] mcpplibs.mwrap.recastnavigation 1.6.0.2: the same mesh bytes on every platform (stable sorts) recastnavigation-m mwrap-1.6.0.2 (mcpplibs/recastnavigation-m#1): patches/0004 makes the BV tree and the contours' hole merging sort with std::stable_sort instead of qsort, which orders equal keys differently by C library; a new test pins a tiled grid hall's bytes and a crowd on it, the same on every CI row. GLOBAL and CN archives are byte-identical (sha256 7e08fd3902ca9e5e57d46151a8909b401bda5fd3bac1e106397b98391dd7f822). The consumer test recastnavigation-path moves to 1.6.0.2 (its pinned hashes are unchanged). --- CHANGELOG.md | 4 ++++ pkgs/mwrap/recastnavigation.lua | 23 ++++++++++++++++++++- tests/mwrap/recastnavigation-path/mcpp.toml | 4 ++-- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a347aea..d3c20546 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,10 @@ ### Fixed +- **mcpplibs.mwrap.recastnavigation 1.6.0.2(包装修订 2)。** 网格在每个平台上逐字节相同。1.6.0.1 的 Detour BV 树与 Recast 轮廓孔洞合并 + 用 C 库的 `qsort` 排序,`qsort` 不稳定,glibc、macOS、Windows UCRT 与 emscripten 对相等键的排列不同,带并列键的网格(网格状布局 + 很常见)因而得到不同的字节,其上的群体走到不同位置。补丁 0004 让这五处改用 `std::stable_sort`(同一比较函数,值得回馈上游);新测试 + 钉住分成四块的柱网大厅的字节与群体状态,各平台一致。消费者测试 `tests/mwrap/recastnavigation-path` 改用 1.6.0.2。 - **openkal-emscripten 0.14.3。** 描述符权限表(4096 个条目与 64 个根)的成员默认值为 -1,两张表因此是已初始化数据:每个 Web 构建的程序带着约 80 KiB 不会用到的字节(一个交付预算 4,000,000 B 的站点因此超出 9,332 B)。默认值全部改为零,取用的槽位再设哨兵; emsdk 6.0.9、-O2 下 `g_entries` 与 `g_roots` 从 `.data` 移到 `.bss`,行为不变(mcpplibs/openkal-emscripten#22)。 diff --git a/pkgs/mwrap/recastnavigation.lua b/pkgs/mwrap/recastnavigation.lua index 36549651..bfd25239 100644 --- a/pkgs/mwrap/recastnavigation.lua +++ b/pkgs/mwrap/recastnavigation.lua @@ -1,5 +1,5 @@ -- Immutable upstream-aligned mwrap source releases (recastnavigation-m mwrap-1.6.0, the first release of upstream --- 1.6.0; mwrap-1.6.0.1, its first revision); GLOBAL and CN bytes are identical. +-- 1.6.0; mwrap-1.6.0.1, its first revision; mwrap-1.6.0.2, its second); GLOBAL and CN bytes are identical. -- -- The wrapper is Apache-2.0; the libraries it vendors and links statically, -- Recast & Detour 1.6.0, are zlib: the package deploys their README and @@ -34,6 +34,13 @@ package = { }, sha256 = "5dd92b25792ea35b10b4a40ddfd772915b67ec648ce5296abe21c30d4da8fbc9", }, + ["1.6.0.2"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/recastnavigation-m/releases/download/mwrap-1.6.0.2/recastnavigation-m-1.6.0.2.tar.gz", + CN = "https://gitcode.com/mcpp-res/mwrap-recastnavigation/releases/download/1.6.0.2/recastnavigation-m-1.6.0.2.tar.gz", + }, + sha256 = "7e08fd3902ca9e5e57d46151a8909b401bda5fd3bac1e106397b98391dd7f822", + }, }, macosx = { ["1.6.0"] = { @@ -50,6 +57,13 @@ package = { }, sha256 = "5dd92b25792ea35b10b4a40ddfd772915b67ec648ce5296abe21c30d4da8fbc9", }, + ["1.6.0.2"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/recastnavigation-m/releases/download/mwrap-1.6.0.2/recastnavigation-m-1.6.0.2.tar.gz", + CN = "https://gitcode.com/mcpp-res/mwrap-recastnavigation/releases/download/1.6.0.2/recastnavigation-m-1.6.0.2.tar.gz", + }, + sha256 = "7e08fd3902ca9e5e57d46151a8909b401bda5fd3bac1e106397b98391dd7f822", + }, }, windows = { ["1.6.0"] = { @@ -66,6 +80,13 @@ package = { }, sha256 = "5dd92b25792ea35b10b4a40ddfd772915b67ec648ce5296abe21c30d4da8fbc9", }, + ["1.6.0.2"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/recastnavigation-m/releases/download/mwrap-1.6.0.2/recastnavigation-m-1.6.0.2.tar.gz", + CN = "https://gitcode.com/mcpp-res/mwrap-recastnavigation/releases/download/1.6.0.2/recastnavigation-m-1.6.0.2.tar.gz", + }, + sha256 = "7e08fd3902ca9e5e57d46151a8909b401bda5fd3bac1e106397b98391dd7f822", + }, }, }, } diff --git a/tests/mwrap/recastnavigation-path/mcpp.toml b/tests/mwrap/recastnavigation-path/mcpp.toml index 22613add..5b4a8897 100644 --- a/tests/mwrap/recastnavigation-path/mcpp.toml +++ b/tests/mwrap/recastnavigation-path/mcpp.toml @@ -1,6 +1,6 @@ [package] name = "recastnavigation-path" -version = "1.6.0.1" +version = "1.6.0.2" description = "Consume the immutable Recast & Detour wrapper: a navigation mesh built from triangles, a path around a wall, a crowd walked through a doorway; the mesh's bytes and the crowd's places pinned" [indices] @@ -8,7 +8,7 @@ description = "Consume the immutable Recast & Detour wrapper: a navigation mesh # An explicit empty table overrides the legacy workspace redirect. [dependencies] -mcpplibs.mwrap.recastnavigation = "1.6.0.1" +mcpplibs.mwrap.recastnavigation = "1.6.0.2" # Detour's inline math compiled here too, as the library is built. [build]