Weekly notes #14

Multithreading performance and variable shadowing in Ruby, basic block versioning.

Ruby

Why Is Ruby Multithreading Slow - fast producer/slow consumer problem bites on MRI.

Shadowing bug in the wild - when local variables shadow instance methods.

On Ruby - an ‘I am leaving Ruby’ post. Reasons: low code quality of libraries, monkey-patching. Requires high test coverage and discipline to achieve confidence in correctness due to dynamism.

tmm1/rblineprof - Does what it says on the label - line profiler for Ruby.

Signal handling in Ruby and its internals - Mutex#lock cannot be called from inside the signal handler => no Logger, mono_logger gem is a lockless logger implementation that overcomes this limitation.

Articles

Model checking for the working man - an awesome, practical tutorial for TLA+/PlusCal, explained on a simple model (register increment backed by a DB + a read cache)

Basic block versioning, VM optimisation - still reading the paper, but this method of JIT code generation is very efficient in eliminating dynamic type checks.