Skip to content

Releases: averlyst/NamedSignal

v2.3.2

Choose a tag to compare

@averlyst averlyst released this 22 Jul 11:38
cd8fd98

Version 2.3.2

Fixed

  • Fixed a regression in v2.3.x where immediate-mode disconnections did not stop the listener from being dispatched.

Changed

  • Improved performance when dispatching signals with no connections.

Full Changelog: v2.3.1...v2.3.2

v2.3.1

Choose a tag to compare

@averlyst averlyst released this 21 Jul 19:34
fb740b5

Version 2.3.1

Removed

  • Removed the internal SIGNAL_BEHAVIOR flag that toggled task.spawn vs task.defer.
    • Flags are considered unstable and subject to change, this flag conflicted with internal dispatching and caused an infinite loop which froze the program when enabled.
    • The edge cases this was originally meant to address are now handled by deferred mutations, a much more comprehensive and performant mechanism — making the flag redundant.
    • This does not affect your ability to defer other operations (e.g. functions in listeners); only the internal spawn/defer toggle has been removed.

Full Changelog: v2.3.0...v2.3.1

v2.3.0

Choose a tag to compare

@averlyst averlyst released this 21 Jul 11:15
64147fc

Version 2.3.0

Changes since v2.2.0:

Changed

  • Maintenance: Refactored Types module. Shouldn't change type behavior in public APIs, but may improve inference speed.

  • Config: The default ERROR_INFO_MODE has been changed to "Full" (always prefer task.spawn) due to possible C-side issues with coroutine.resume.

    • You may opt back into a different mode if you require the additional performance and are aware of the risks.
  • Performance: Greatly improved non-yielding fire performance by switching to a more efficient dispatching technique with minimized thread resumptions.

    • Signals with only one connection may be slightly slower, but benefits should be visible with two or more connections.


    From internal benchmarking:

    Connection Count % Improvement from v2.2.0
    1 -18.8% (Slower)
    2 +49.2% (Faster)
    5 +258.6% (Faster)
    10 +535.1% (Faster)
    50 +1523.2% (Faster)

Fixed

  • Fixed a missing type export for WrapConnection in the main module.

Full Changelog: v2.2.0...v2.3.0

v2.3.0-rc.1

v2.3.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@averlyst averlyst released this 20 Jul 16:37
ac5a322

Version 2.3.0-rc.1

Changed

  • Maintenance: Refactored Types module. Shouldn't change type behavior in public APIs, but may improve inference speed.

  • Config: The default ERROR_INFO_MODE has been changed to "Full" (always prefer task.spawn) due to possible C-side issues with coroutine.resume.

    • You may opt back into a different mode if you require the additional performance and are aware of the risks.
  • Performance: Greatly improved non-yielding fire performance by switching to a more efficient dispatching technique with minimized thread resumptions.

    • Signals with only one connection may be slightly slower, but benefits should be visible with two or more connections.

    From internal benchmarking:

    Connection Count % Improvement from v2.2.0
    1 -18.8% (Slower)
    2 +49.2% (Faster)
    5 +258.6% (Faster)
    10 +535.1% (Faster)
    50 +1523.2% (Faster)

v2.2.0

Choose a tag to compare

@averlyst averlyst released this 17 Jul 14:01
a82ded5

Version 2.2.0

Changes since v2.1.7:

Fixed

  • Fixed a class of iterator invalidation edge cases involving connections made after immediate-mode 'Now' disconnections on the active node.
    • Note: Those who've not used deferred mutation opt-outs were not impacted.
  • Fixed an iterator invalidation edge case when DisconnectNow() was used on a tail connection before DisconnectAllNow().

Added

  • Added new method Signal:GetConnections(), which returns an array of active connections on the signal, ordered from oldest to newest.
  • Connection:DestroyNow() is now supported.

Full Changelog: v2.1.7...v2.2.0

v2.2.0-rc.1

v2.2.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@averlyst averlyst released this 15 Jul 11:00
ff742b3

Version 2.2.0-rc.1

Fixed

  • Fixed a class of iterator invalidation edge cases involving connections made after immediate-mode 'Now' disconnections on the active node.
    • Note: Those who've not used deferred mutation opt-outs were not impacted.

Added

  • Added new method Signal:GetConnections(), which returns an array of active connections on the signal, ordered from oldest to newest.
  • Connection:DestroyNow() is now supported.

v2.1.7

Choose a tag to compare

@averlyst averlyst released this 12 Jul 17:18
fc24b37

Version 2.1.7

Fixed

  • Changed the approach on how we handled the iterator invalidation bug where immediate-mode 'Now' connections made within Once connections were missed in the same dispatch cycle.
    • This fixes the behavior of FireNow in such cases.
  • Fixed the Connection type not having the default signature in the exported public type.

Full Changelog: v2.1.5...v2.1.7

v2.1.5

Choose a tag to compare

@averlyst averlyst released this 12 Jul 13:57
4784303

Version 2.1.5

Fixed

  • Fixed an edge-case iterator invalidation bug involving immediate-mode 'Now' connections made within Once connections.

Full Changelog: v2.1.4...v2.1.5

v2.1.4

Choose a tag to compare

@averlyst averlyst released this 07 Jul 18:15
a832d32

Version 2.1.4

Fixes

  • Uninstantiated generic from Signal.new() is now handled properly. Previously, the signature was not being sanitized in all cases.

Full Changelog: v2.1.3...v2.1.4

v2.1.3

Choose a tag to compare

@averlyst averlyst released this 24 Jun 09:09
1ebba17

Version 2.1.3

Hello again, this release is mostly just some codebase maintenance and cleaning up.

Added

Changes