Using @tnavarts’ implementation of Signal, the sheer speed has proved to be 2-3x times faster than any existing implementations of Signal Classes. But do note, that it doesn’t allow for yielding in any of the connected handlers.
Sample A: Old Signal Classes. Refer to any of the archived implementations seen here: https://devforum.roblox.com/t/when-to-use-bindableevents/828609/4?u=ukendio
Sample B: New Signal Class. Refer to the Oberserver Pattern in aforementioned post
I have thoroughly tested it, which you can inspect here: https://github.com/Ukendio/Game/blob/master/src/shared/tests/test2.spec.ts.
Overall, I believe there is very good rationale behind this change. Previously, we have had to make some nasty workarounds in our code to comply to the weird behaviour of yielding handlers, having to suspend Signals during the reconciliation processes. It is one of those things that if Roblox changed this earlier, we wouldn’t have minded. In the future, I hope when changes like these are implemented that we are thoroughly assured of what would be affected in detail. When the post was first announced, I was panicking at type of problems would arise, and that’s not always a nice feeling. It is not reassuring that a lot of the recent updates has been breaking old games and/or current workflow.