The original impetus for Onyx's creation was the need for scalable threading. Onyx's threading is therefore truly powerful, though it comes at a cost. Threading makes asynchronous garbage collection a necessity, which in turn makes many aspects of Onyx's implementation a bit more heavyweight than would be necessary for a single-threaded interpreter.