As I understand it, prior to Ruby 1.9, MRI and YARV were two separate implementations of the Ruby programming language.
What exactly changed in Ruby version 1.9? Was MRI abandoned in favour of YARV? Or were the two codebases merged in some way?
I have seen versions of Ruby later than 1.9 referred to as both "MRI" and "YARV" - which of these names is correct (or are they both)?
YARV is not a separate implementation of Ruby. It's Ruby's virtual machine, or Yet Another Virtual Machine. When Ruby is interpreted, it is compiled into YARV instructions.
MRI is the Matz implementation of Ruby in C, which is the canonical implementation. The 2nd most used is probably JRuby, which does not use YARV because it ultimately uses the Java Virtual Machine and thus compiles to Java byte code.