{"id":"nazumahk/signal","name":"signal","scope":"nazumahk","platform":"roblox","description":"Signal for Roblox","version":"1.0.2","latest":"1.0.2","versions":["1.0.0","1.0.1","1.0.2"],"license":"MIT","licenseRating":"safe","licenseCaveats":[],"licenseVerified":true,"dependencies":{},"integrity":"2151254a31f7ec01d84c5d64fb07b99769b57af253d2fec7f6971c7bd2e2587a","likes":0,"downloads":0,"install":"forest install nazumahk/signal","url":"https://forest.dev/p/roblox/nazumahk/signal","files":"https://api.forest.dev/ai/package/roblox/nazumahk/signal/files","readme":"# Signal\n\nA high-performance, type-safe signal library for Luau.\n\n## Features\n\n- **Variadic Generics**: Full Luau type safety for event arguments.\n- **O(1) Disconnect**: Doubly linked list for constant-time connection removal.\n- **Thread Pooling**: Reuse coroutines to minimize thread allocation overhead.\n- **Modern APIs**: Supports `Once`, `WaitTimeout`, and `FireDeferred`.\n- **Memory Safe**: Explicit reference clearing to prevent memory leaks.\n\n## Installation\n\nAdd to your `wally.toml`:\n\n```toml\n[dependencies]\nSignal = \"nazumahk/signal@1.0.0\"\n```\n\n## Quick Start\n\n```lua\nlocal Signal = require(path.to.Signal)\n\nlocal signal = Signal.new<string, number>()\n\n-- Connect\nlocal connection = signal:Connect(function(msg, val)\n    print(msg, val)\nend)\n\n-- Fire\nsignal:Fire(\"Hello\", 100)\nsignal:FireDeferred(\"World\", 200)\n\n-- Disconnect & Destroy\nconnection:Disconnect()\nsignal:Destroy()\n```\n\n## Documentation\n\n- [Why Use Signal?](docs/WhyUseSignal.md) -- Benefits and Case Studies\n- [Technical Architecture](docs/Architecture.md) -- Internal Design & Optimizations\n- [API Reference](docs/API.md) -- Full Method Specification\n\n## License\nMIT","readmeTruncated":false}