wow_optimize v2.2.0
New Features
MPQ Memory Mapping
- MPQ archive files (256KB–512MB) are now memory-mapped via
MapViewOfFile - Reads from mapped archives skip kernel transitions entirely — direct memory copy
- Retroactive handle scanner finds MPQ files opened during WoW startup (before hooks install)
- 8 files / 836MB typically mapped on a standard WoW 3.3.5a install
- SEH-protected — page faults fall back gracefully to read-ahead cache
Multi-Client Support
- Automatically detects multiple WoW instances via named mutex
- Single client: 0.5ms timer resolution, precise busy-wait for best frame pacing
- Multi-client: 1.0ms timer, yield-based sleep — prevents 100% CPU usage
- No configuration needed — fully automatic
Periodic Stats Dump
- Key performance stats are logged every 5 minutes
- Survives unclean WoW exit (process kill / crash) — stats are always available in the log
Improved
- SRWLOCK replaces
CRITICAL_SECTIONfor the ReadFile cache — lower lock contention - Periodic
mi_collect— returns unused mimalloc pages to the OS every ~68 seconds - string.format — embedded nul byte detection + long string bailout (fixes ElvUI profile export/import)
Fixed
- Deadlock on WoW exit —
DestroyMpqMappingcalledCloseHandlewhich re-entered the hooked path and deadlocked on the SRWLOCK - Duplicate FlushFileBuffers log line removed
- ElvUI "decoding error" on profile export/import — string.format fast path now falls back for binary data with embedded nuls
Safety
- MPQ mmap is protected by SEH — page faults fall back to read-ahead cache
- Multi-client detection is safe — uses a named mutex, no shared memory
- Crash isolation toggle:
CRASH_TEST_DISABLE_MPQ_MMAP - All previous v2.1.x fixes remain active
Files
wow_optimize.dll— main optimization DLLversion.dll— proxy loaderwow_loader.exe— standalone launcher