github suprepupre/wow-optimize v3.6.1
v3.6.1 — Stability Release

3 hours ago

Fixed Crashes

  • Bank / Auction House — SSE2 CRT strlen past mimalloc page boundaries
  • Loading screen — luaH_getstr cache + TextureAsync/ModelAsync regression
  • Exit — SSE2 CRT memchr/strchr + WoW-internal strlen page-boundary reads
  • WeakAuras — same SSE2 CRT strlen page boundary
  • Reload crash — SpellPrefetch/NameplateMT/QuestAsync workers now pause during lua_State swaps

Disabled for Stability (re-enabled in v3.6.0 beta, caused crashes)

  • CRT SSE2 memory/string fast paths (strlen/strcmp/memcpy/memset)
  • CRT SSE2 memchr/strchr
  • WoW-internal SSE2 strlen at sub_76EE30
  • luaH_getstr table lookup cache
  • TextureAsync hook
  • ModelAsync workers

What's Active

Memory

  • mimalloc CRT allocator replacement
  • mimalloc Lua VM allocator replacement
  • LFH heap optimization
  • Frame arena (16MB per-frame scratch)

Lua VM

  • 20+ Lua Phase 2 fast paths (find, match, type, math, string, tostring, tonumber, etc.)
  • Adaptive 4-tier GC (normal/combat/idle/loading)
  • String table pre-sizing (32K buckets)
  • Lua table rehash prevention (pow2 rounding)
  • string.format fast path

Frame Pacing

  • PreciseSleep (RDTSC-based)
  • QPC-based timer precision (GetTickCount, timeGetTime)
  • QPC coalescing cache (65%+ hit rate)
  • FPS cap removal (200 → 999)

Threading

  • Critical section spin optimization (4000 count + TryEnter)
  • Thread affinity + priority tuning (Above Normal)
  • Process working set optimization
  • CombatLogMT — multithreaded combat log parser
  • AddonDispatcher — 4-worker addon update dispatcher
  • SpellEffectMT — multithreaded spell effect renderer
  • NameplateMT — multithreaded nameplate renderer

Network

  • TCP_NODELAY + ACK + QoS + keepalive + buffer optimization
  • Deferred socket optimization mode

File I/O

  • MPQ read-ahead cache (16-slot adaptive, 64KB/256KB)
  • Async MPQ I/O background worker
  • MPQ/zone prefetch (2 workers)
  • Sequential scan flag on CreateFile
  • FlushFileBuffers skip for read-only MPQ handles
  • GetFileAttributesA cache (256 slots)
  • GetFileSizeEx cache (256 slots)
  • SetFilePointer → SetFilePointerEx redirect

Caches (safe)

  • Tooltip string cache (92%+ hit rate, LRU 1000 entries)
  • GetProcAddress cache (4-way set-associative, 128 sets)
  • GetEnvironmentVariableA cache (32 slots)
  • GetPrivateProfileStringA cache (128 slots)
  • GetModuleHandleA cache (512 slots)

ASCII Fast Paths

  • CompareStringA
  • MultiByteToWideChar / WideCharToMultiByte (SSE2)
  • lstrlenA/W
  • lstrcmp/lstrcmpiA
  • OutputDebugStringA → no-op when no debugger
  • IsBadReadPtr/WritePtr → VirtualQuery

Misc

  • Combat log retention fix (300s → 1800s)
  • Hardware cursor visibility/clipping fix
  • Spell prefetch on cast
  • Sound/audio prefetch
  • Quest data async loading
  • SavedVariables async writes
  • CRASH DUMPER: minidump on unhandled exception

Known Issue

WoW may close on loading screen if entering world immediately after character select. Wait a few seconds before clicking "Enter World."

Building

build.bat          (Windows, MSVC)
make               (macOS cross-compile)

Target: Win32 i386 (WoW 3.3.5a build 12340)

Don't miss a new wow-optimize release

NewReleases is sending notifications on new releases.