Skip to content

v0.8.6 - Performance & Security Hardening

Choose a tag to compare

@ChrisLovering ChrisLovering released this 13 Jul 23:12
· 6 commits to main since this release
c0e3d47

Performance

  • Profiler disabled by default (zero overhead in release)
  • GUID generation uses single string.format instead of 11+ intermediate concatenations
  • Comm.lua: localized globals (time, pairs, string., table.) for hot paths
  • Queue processing (incoming messages, raw buffer) changed from O(n²) table.remove(t,1) to O(n) cursor+compact
  • IsValidMYSTICSCROLLSource uses hash lookup instead of linear scan
  • parseVersion hoisted out of compareVersions to avoid closure allocation per call

Security

  • Network string fields (fp, av, mid, cl) are now length-capped to prevent DB bloat from malicious senders

Bug Fixes

  • Removed duplicate dead trackInvalidSender function (also had undefined variable bug)
  • Deduplicated ScheduleAfter implementations across Core/Decay modules
  • OnChatMsgLoot retry loop now caps at 3 attempts for unresolvable items (prevents infinite rescheduling)
  • Dedup cache pruning now runs periodically even when idle (fixes memory leak during AFK)
  • rawBuffer cap enforced in chat channel handler (was previously unbounded)