Fibers are more like Python green threads, or generators when you abuse them to do coroutines, where you explicitly yield from one to the other. The thing is, if your Fiber calls a blocking IO operation you can’t explicitly yield to another Fiber unless IO unblocks. The scheduler solution attempts to yield to another Fiber when IO blocks.
Ractors resemble Node workers: you get true parallelism, but the two worlds are entirely isolated, sharing nothing. You communicate by passing messages between both, where message content is either copied or moved (ownership change) if it’s not immutable.
(What I described is not 100% accurate, more of a flawed bird’s eye analogy for Ruby foreigners)
Ractors resemble Node workers: you get true parallelism, but the two worlds are entirely isolated, sharing nothing. You communicate by passing messages between both, where message content is either copied or moved (ownership change) if it’s not immutable.
(What I described is not 100% accurate, more of a flawed bird’s eye analogy for Ruby foreigners)