Releases: suprepupre/LuaBoost
LuaBoost v1.9.4
LuaBoost v1.9.4
Summary
Delegate all garbage collection control to wow_optimize.dll. When the DLL is present, LuaBoost skips its own GC logic entirely, eliminating duplicate work and preventing conflicts between addon-side and DLL-side GC.
What Changed
- GC delegation —
hasDLL()check moved before the emergency GC block. If DLL is detected, addon-side emergency GC and per-frame stepping are fully skipped. - DLL takes over —
wow_optimize.dllv3.5.6+ handles all GC with incremental 16MB steps, 300MB threshold, and 10s cooldown. No more full-collect stalls. - Standalone fallback preserved — without the DLL, LuaBoost continues to manage GC independently (emergency full collect + per-frame stepping).
- Syncs with
wow_optimize.dllv3.5.6.
Why This Matters
Previously, both LuaBoost and the DLL ran their own emergency GC logic. This caused duplicate memory checks, conflicting GC triggers, and occasional stutter when both systems fired simultaneously. Now the DLL is the single source of truth for GC — LuaBoost becomes a control and visibility layer only.
Install
Drop !LuaBoost into your Interface/AddOns/ folder. Requires wow_optimize.dll v3.5.6+ for full integration. Works standalone without DLL (fallback mode).
LuaBoost v1.9.3
LuaBoost v1.9.3
This release exists to properly publish the addon-side compatibility update required for wow_optimize.dll 3.0.0 and newer.
Important
If you use wow_optimize.dll 3.0.0+:
- update the addon too
- do not keep an older LuaBoost install with a newer DLL
- reinstall the addon files if needed
Running a newer DLL together with an older LuaBoost version can cause freezes.
Included in this release
- proper versioned release for the required addon-side compatibility update
- current standalone mode still works
- current DLL integration behavior remains intact
Installation
Replace your existing Interface/AddOns/!LuaBoost/ folder with the files from this release.
Notes
This is mainly a compatibility and distribution release so users actually update the addon instead of only replacing the DLL.
LuaBoost v1.9.2 — Hotfix
Fixed
- ThrashGuard activating after /reload when DLL is loaded — after
/reload, the DLL needs several seconds to re-register its Lua globals. Previously, LuaBoost checkedhasDLL()immediately duringPLAYER_LOGINand found itfalse, causing the Lua-side ThrashGuard to install even though the DLL was still active. Now LuaBoost waits up to 8 seconds for the DLL to re-register before deciding whether to install Lua-side ThrashGuard.
⚡ LuaBoost v1.9.1
🔄 What’s New in v1.9.1
- removed DLL API cache text from
/lband/lb gc - keeps display focused on currently relevant public DLL features
- cleaner integration with the current public wow_optimize builds
🧠 Current Public Integration Model
The current public wow_optimize.dll builds are intentionally conservative.
Public DLL features still relevant to LuaBoost
- adaptive GC
- Lua allocator replacement
- string table pre-sizing
- string.format fast path
- GetItemInfo cache
- loading/runtime/system-level optimizations
Public DLL features intentionally disabled
- UI widget cache
- GetSpellInfo cache
Because of that, LuaBoost no longer shows old “DLL API cache” user-facing lines in slash commands.
v1.9.0
LuaBoost v1.9.0
Fixes
- DLL detection after /reload — addon now correctly recognizes wow_optimize.dll after UI reload
- ThrashGuard status — shows "handled by DLL (C-level UI cache)" when DLL is active instead of confusing "Inactive"
Full feature list
- Smart GC Manager with 4-tier stepping + 3 presets
- SpeedyLoad (safe/aggressive event suppression during loading)
- UI Thrashing Protection (auto-disabled when DLL handles it)
- Memory leak scanner (
/lb memleak) - FPS monitor with 1% low + stutter detection (
/lb fps) - Event profiler (
/lb events) - Tooltip throttle, table pool, OnUpdate dispatcher
- Full DLL integration (GC sync, cache stats display)
Recommended
Use with wow_optimize.dll v2.0.1 for full optimization coverage.
LuaBoost v1.8.0
!LuaBoost v1.8.0
Lua runtime optimizer + SmartGC + SpeedyLoad + diagnostics for WoW 3.3.5a.
What's New in v1.8.0
API Cache Stats Display
/lband/lb gcnow show DLL GetSpellInfo cache hit rate when wow_optimize.dll v2.0.0+ is installed- New
LuaBoostC_GetApiStats()function integration
All Features
- Smart GC Manager — per-frame incremental GC with 4-tier stepping (combat/normal/idle/loading), 3 presets, emergency GC threshold
- GC Step Sync — slider values propagate to wow_optimize.dll within ~250ms
- SpeedyLoad — event suppression during loading screens (safe/aggressive modes)
- UI Thrashing Protection — StatusBar metatable hooks (auto-disabled when DLL detected)
- Memory Leak Scanner —
/lb memleak— 30-second scan, top 10 addons by growth rate - Event Profiler —
/lb events— 10-second capture, top 15 by frequency - FPS Monitor —
/lb fps— avg/median/min/max/1% low/stutter detection - OnUpdate Dispatcher — shared throttled callback API for addons
- Tooltip Throttle — max 10/sec for SetSpell/SetHyperlink
- Table Pool — reusable table allocation/release
- DLL Stats Display — memory, GC timing, UI cache skip rate, API cache hit rate
- GUI — ESC → Interface → AddOns → LuaBoost
Installation
Copy !LuaBoost folder to Interface/AddOns/. Enable in addon list.
Localization
Companion DLL
For maximum optimization, use with wow_optimize.dll v2.0.0 — C-level memory, I/O, network, GC, UI cache, and GetSpellInfo cache.
LuaBoost v1.7.0
LuaBoost v1.7.0
New Features
Memory Leak Scanner
/lb memleak — takes a memory snapshot, waits 30 seconds during normal gameplay, then shows the top 10 addons by memory growth rate.
[LuaBoost] Memory Growth (30 sec):
Recount +342 KB (11.4 KB/sec)
DBM-Core +89 KB (3.0 KB/sec)
Skada +45 KB (1.5 KB/sec)
No significant memory growth detected.
Color-coded: 🟡 yellow (<2 KB/sec normal), 🟠 orange (2-10 elevated), 🔴 red (>10 likely leak).
DLL GC Timing Display
/lb gc now shows the DLL's smoothed GC step time when wow_optimize.dll is active:
DLL GC step: 0.84ms avg (budget: 2.0ms)
Requirements
- Works standalone or with wow_optimize.dll v1.9.0
Installation
Extract to Interface/AddOns/!LuaBoost/
LuaBoost v1.6.0
New Features
GC Step Sync to DLL: Addon writes step sizes to Lua globals on preset/slider change. wow_optimize.dll reads them automatically — GUI is now the single source of truth for GC tuning.
UI Cache Stats Display: /lb and /lb gc show DLL UI cache skip rate (skipped/passed/percentage) when wow_optimize.dll is active.
Smart ThrashGuard: Auto-disables Lua-level StatusBar hooks when DLL is detected — avoids redundant double-caching overhead. Shows "TG:DLL" in login message.
Bug Fixes
Tooltip flicker: Throttle now tracks last argument per method. Same-target repeat calls pass through immediately — fixes flickering in RaidRoll and similar addons that call SetHyperlink every frame.
Double locale declaration: Removed duplicate local locale = GetLocale() that could shadow the first declaration and skip non-enUS locale loading.
Emergency GC guard: Full GC now skipped if current frame elapsed > 33ms — prevents compounding an existing lag spike with a 50-200ms collection pause.
Redundant GetTime() calls: 6 GetTime() calls replaced with cachedTime (set once per frame in OnUpdate). Fallback to GetTime() only before first OnUpdate fires.
SpeedyLoad correctness: GetFramesRegisteredForEvent result now handled via select() — # operator on table could give wrong length with nil gaps.
Table pool safety: Tables with metatables are rejected from the pool — prevents __gc/__index issues when reused by a different caller.
v1.5.1 - multiple bugfixes
fix: multiple addon bugs
-
Remove duplicate 'local locale' variable declaration that shadowed
the first and could skip locale loading on non-enUS clients. -
Skip Lua-level ThrashGuard installation when wow_optimize.dll is
detected. The DLL hooks the same StatusBar methods at C level —
running both adds metatable lookup overhead on every call with
no benefit. Show "TG:DLL" in login message when DLL handles it. -
Guard emergency full GC with frame time check (elapsed < 33ms).
Previously a full collect could fire during an already-slow frame,
compounding a lag spike into a multi-second freeze. -
Replace 6 redundant orig_GetTime() calls with cachedTime (already
set at the top of OnUpdate). Fallback to orig_GetTime() only if
cachedTime is still 0 (before first OnUpdate fires). -
Call GetFramesRegisteredForEvent() once per event in SpeedyLoad
suppress loop. Previously called twice per iteration — once for
the count via select("#"), once per element via select(i). -
Reject tables with metatables from the table pool. Tables with
__gc or __index metamethods could cause unexpected behavior when
reused by a different caller.
v1.5.0 — Event Profiler + OnUpdate API + Frame Optimization
What's New
📊 Event Profiler
Type /lb events to profile all WoW events for 10 seconds. Shows top 15 events by frequency, color-coded:
- 🟡 Yellow: normal (< 20/sec)
- 🟠 Orange: elevated (20-50/sec)
- 🔴 Red: excessive (> 50/sec)
Helps identify which events cause CPU load and which addons need optimization.
🔄 OnUpdate Dispatcher API
Addons can register throttled callbacks without creating Frame objects:
LuaBoost_RegisterUpdate("MyAddon", 0.1, function(now, elapsed)
-- runs every 0.1 sec
end)Each registered callback saves one C++ Frame object. Built-in throttling and error handling.
🏗️ Frame Optimization
timeFrame+gcFramemerged into singlecoreFrame- 5 event frames consolidated into master dispatcher
- Total: 7 fewer C++ Frame objects in engine
⚡ GC Optimization
- Memory check throttled to every 60 frames (was every frame)
- ThrashGuard uses shared table pool for widget cache
📦 Installation
Interface/AddOns/!LuaBoost/
For best results use with wow_optimize.dll v1.6.1.