diff --git a/experiments/wp24b-gc/README.md b/experiments/wp24b-gc/README.md index 7d02867..61c03a8 100644 --- a/experiments/wp24b-gc/README.md +++ b/experiments/wp24b-gc/README.md @@ -1,4 +1,4 @@ -# WeirdPerformance 2.4-B — GC Safe Sweep test +# WeirdPerformance 2.4-B1 — GC Safe Sweep ABI-fixed test Strict A/B experiment for WoW 1.12.1 build 5875. @@ -9,17 +9,19 @@ Keep the validated 2.4-A binary **unchanged**: - `weirdperformance.dll` - SHA-256: `d35168ae06c19087ef9b7c68918a054640396dfbfcef0664e18e9372284b5eef` -## B variant +## B1 variant Add: -- `weirdperformance_gc24b.dll` +- `weirdperformance_gc24b1.dll` The companion changes **only Lua GC behavior**. It does not replace or rebuild the validated 2.4-A DLL. +The first 2.4-B build is invalid and must not be used. It was built with an i386 Windows fastcall ABI mismatch and crashed at startup in WoW's native `lua_gc_remove_objects`. B1 is built with a pinned Zig 0.17 development toolchain and is binary-disassembly checked for the expected register ABI before distribution. + The implementation is based on the historical pre-generational incremental sweep: WoW keeps its native mark, userdata/string sweep, memory shrink and finalizers. Only the main `rootgc` sweep is split into 50,000-object chunks. -## Safety changes versus the old experiment +## Safety scope - hooks only `luaC_collectgarbage` and `lua_close`; - no overlap with the lifecycle hooks referenced by the validated 2.4-A binary; @@ -36,7 +38,9 @@ Keep both DLLs next to WoW and list both in `dlls.txt`: ```text weirdperformance.dll -weirdperformance_gc24b.dll +weirdperformance_gc24b1.dll ``` -Removing `weirdperformance_gc24b.dll` returns you exactly to the validated 2.4-A baseline. +Delete the old `weirdperformance_gc24b.dll` if it is still present. + +Removing `weirdperformance_gc24b1.dll` returns you exactly to the validated 2.4-A baseline.