Ruby Concurrency Final Report
Ruby provides a mixed bag of tools for building asynchronous systems. While CRuby wraps all Ruby code in a Global Virtual Machine Lock (GVL), JRuby and TruffleRuby provide truly parallel threads. Code analysis reveals that thread synchronisation primitives are often used incorrectly, and while results may be okay on CRuby, running the same code on JRuby or TruffleRuby can expose race conditions with unexpected consequences. We present a light weight per-thread fiber scheduler which improves the concurrency of existing code with minimal changes. We discuss it's implementation within Ruby and evaluate its performance using Net::HTTP.This is the final report required by the 2019 Ruby Association Grant. There are two previous progress reports: December 2019 and January 2020.
Ruby Concurrency Final Report #ruby #rubydeveloper #rubyonrails