Well Ruby is too. If something worked on 1.9 it works on 2.3.
(java is not fully backwards compatible either, but it may be a bit more tolerant in some cases)
As for how fun upgrading to rails4 is, you obviously don't have a project with 200 database tables that has models using the attr_protected for the five columns (appwide) that actually need it. Forced whitelisting is not fun, regardless of if it is on model or controller level.