Our use-case for fundsp is a single-threaded audio engine which receives commands over a message channel. We have no need to send or share AudioNodes between threads, and we've also found that atomic operations and other synchronization primitives expectedly reduce performance, particularly in WASM.
We've run up against this limitation in our efforts to optimize performance, and it prevents us from using faster interior mutability types like Cell in uses cases that would otherwise work, and forces us to resort to unsafe in ways that rely on implicit assumptions of our codebase (preventing us from ever providing that code in a library in the future). Since it doesn't seem like any functionality of the trait inherently requires these, it would be great if this was more of an opt-in thing, and it would unlock a significant increase in performance ceiling for applications leveraging fundsp.
Our use-case for fundsp is a single-threaded audio engine which receives commands over a message channel. We have no need to send or share AudioNodes between threads, and we've also found that atomic operations and other synchronization primitives expectedly reduce performance, particularly in WASM.
We've run up against this limitation in our efforts to optimize performance, and it prevents us from using faster interior mutability types like
Cellin uses cases that would otherwise work, and forces us to resort tounsafein ways that rely on implicit assumptions of our codebase (preventing us from ever providing that code in a library in the future). Since it doesn't seem like any functionality of the trait inherently requires these, it would be great if this was more of an opt-in thing, and it would unlock a significant increase in performance ceiling for applications leveragingfundsp.