Thanks for the response; I’m glad that it’s being addressed.
I’ll share what I’ve done to try and work around it in specs, for future readers:
First, the system objects themselves don’t need to implement
Send, so you can have thread-unsafe state in them, such as the collision world.
Second, the actual components in specs don’t have to implement
Send, but their storage does, which usually necessitates the components implementing
Send. What I ended up doing was making a wrapper storage implementation that
Sync, and checks if the current thread is the same thread it was created on in all of its methods. It’s kindof a hack, but it seems to get the job done.
Both the workarounds of course mean you can’t use multithreading with the particular system (use