SaltyDog_Classic-0.9.8.1
What's new
2026-10-03 — 0.9.8.1: stutter on item loot removed
- Report (WoW: Forever beta players): "a large stutter occurs when an item is looted (non currency)".
- Cause: after every stored item,
DB:NotifyModulesUpdate()(Core/GlobalDatabase.lua) rancollectgarbage("collect"). That is a full, blocking garbage-collection cycle over the memory of every loaded addon, not just SaltyDog's, so the bigger the UI, the longer the freeze. Money and currency are not stored as loot, so they never triggered it, which matches the report exactly. The same full collect also ran when any Loot/Fish page or the world-map panel was hidden (8 more places), and every page refresh ran its owncollectgarbage("step", 50). - API check: warcraft.wiki.gg
collectgarbage(current for mainline 12.x, Classic Era 1.15.x and TBC Anniversary 2.5.x):"collect"performs a full cycle,"step"performs one incremental step. WoW runs Lua's incremental collector on its own, so a forced full collect is never required. - Fix:
- New
SaltyDog.RequestGC()inCore/Init.lua. Requests are merged into one small job that waits until nothing new has come in for 2 s (a whole loot pile counts once), never runs in combat (it waits forPLAYER_REGEN_ENABLED), and then does at most 8 small incremental steps (64 KB each), one per frame. It stops early once a cycle finishes. - All 9
collectgarbage("collect")calls and all 8 per-refreshcollectgarbage("step", 50)calls now go throughRequestGC().
- New
- No return of the old CPU buildup: the buildup we fixed earlier came from tickers running twice a second forever.
RequestGCcreates no ticker or OnUpdate: it only runs after a request, finishes within 8 frames and then stops. Nothing repeats while idle, and nothing polls during combat. - Offline test (WoW-like stubs, sandbox globals removed; the same results for Forever, Retail and Classic):
- no GC work while items keep coming in, and never a full collect;
- one bounded job after a 30-item burst (8 steps);
- nothing at all during 10 idle minutes, with no timer left running;
- nothing in combat, and the job runs after combat;
- 500 page refreshes produce at most 8 steps (previously 500);
- memory still comes back: +42 KB after 200 loot rounds.
- Version 0.9.8 → 0.9.8.1 in all
.tocfiles and the splash screen (new top bullet). - Classic Era / TBC Anniversary had the same code (same 9 full collects), so they stuttered the same way. Not tested in a live client. Published to CurseForge.
This mod has no additional files

