Imagine you have a virtual machine for a dynamic language. It supports starting multiple threads from within the guest language via some API. This is immediately challenging right out the gate because it requires keeping some key runtime-internal state in sync: memory allocator / garbage collector compiler other bookkeeping Instead of locking these components so that only one thread can use those shared resources at a time, runtime implementors tend to shard them: each thread gets its own sli...