FastSignal is a Signal library made with consistency and expectable behaviour in mind, it is efficient, easy to use, and widely compatible.
GoodSignal while being an interesting implementation (that even helped FastSignal be developed), it suffers from some issues.
-
GoodSignal does not support .Connected.
-
GoodSignal is made only for Immediate mode, and does not have a Deferred mode option, while sleitnick's fork has
:FireDeferred
, it's not a very optimal solution as it's not a toggle, you have to go out of your way to use Deferred and it's inconvienient. -
GoodSignal has no :Destroy, only :DisconnectAll which means you can’t stop new connections from being created.
-
GoodSignal’s :DisconnectAll does not call :Disconnect on connections, this causes an inconsistency with RBXScriptSignals.
-
GoodSignal’s connections and linked list nodes are the same reference, which causes issues such as disconnected connections can leak the connection’s function, signal, and other connections if not cleared properly.
-
GoodSignal’s classes are strict, meaning you can index members that don’t exist, this is pretty useless, and means that empty fields in a class are false, and not nil, which is something that makes forking a bit harder and it takes a bit of time to process.
-
GoodSignal’s connections are not immediately compatible with Janitor, or Maid.
-
GoodSignal’s methods don’t have any type declaration at all, which would make it way nicer to use.
FastSignal fixes all these issues. FastSignal's selling point is parity with RBXScriptSignal's API and familiarity.
FastSignal has a familiar API and behaviour to RBXScriptSignals and other signal libraries, which help you work faster, these help you not have headaches while using FastSignal.
You can get a .rbxmx
file from a release on GitHub, you can do that by visiting FastSignal's releases.
You can get FastSignal directly from Roblox, via its Roblox Model. You can find it here.
You can get FastSignal as a dependancy on Wally.
Add lucasmzreal/fastsignal
in your dependencies and you're done.
Signal = "lucasmzreal/fastsignal@10.3.1"