Skip to content

v3.0 - Pulse Event Scheduling

Choose a tag to compare

@martysama0134 martysama0134 released this 01 May 22:59
· 1 commit to main since this release
637f8cb

What's New

  • Pulse-based events — sub-second scheduling driven by server tick via AddPulseEvent. Callback returns next delay (> 0 reschedule, <= 0 stop).
  • Rewritten internals — integer-ID flat vector + free list, dual priority queues (seconds + pulses), generation-based stale detection. O(log n) scheduling, designed for 10k+ events.
  • New query API — GetPulseDelay, IsPulseEvent for pulse event introspection.
  • 40+ tests — pulse basics, safety (self-remove, cross-remove, re-add from callback), query API, mixed scenarios, edge cases, Destroy-during-callback, 1200-event scale test.
  • int32_t return type — pulse callbacks use fixed-width int32_t instead of long for consistent behavior across 32-bit and 64-bit platforms.
  • Updated README — CI badge, pulse usage examples, API reference table.

Breaking Changes

None. All existing AddEvent signatures are unchanged. New API is additive only.

New API

Method Description
AddPulseEvent(func, name, pulseDelay) Add pulse-based event. Callback returns next delay.
GetPulseDelay(name) Remaining pulses. Returns 0 for seconds/missing events.
IsPulseEvent(name) True if active pulse event.