Ruby on Rails: 3.2 RC1 Released, 4.0 Will Drop Ruby 1.8.7
The Ruby on Rails team announced the first release candidate of Rails 3.2 just in time for Christmas. After 3.2, the next major release of Rails will be 4.0.
Rails 3.2 introduces a hand full of new features and many small improvements. The most notable new feature that will affect all users is the faster development mode. According to the detailed change log, this will "speed up development by only reloading classes if dependencies files changed", compared to the current behavior where Rails reloads classes on every request. If you want a similar feature for previous Rails versions, you can try the ActiveReload plug-in.
If you're fighting performance problems due to inefficient database queries, the new explain feature might help you locate the problem. Arel now offers an explain method that shows the result of running EXPLAIN on the generated query. This works with the sqlite3, mysql2, and postgresql adapters. When Rails discovers a slow query (default is 0.5 seconds), it will even automatically run explain and show you the results.
Other new features include a simple key/value store extension for Active Record, and a tagged logger that lets you add custom tags to the log. See the detailed change log for a complete overview over all changes.
After the 3.2 release, development will concentrate on the 4.0 release, which is tentatively scheduled for summer 2012. DHH explains why they're jumping to the next major number:
There’s not a lot of details about what we’re going to include in Rails 4.0 yet as the primary purpose for bumping the major version number is to drop Ruby 1.8.7 support. But unlike Rails 3.0, we intend for it to be a much smoother transition.
Dropping 1.8.7 might seem hard on the first glance, but the Ruby team itself is also moving away from 1.8: "We continue to provide normal maintenance for 1.8.7 as usual, until June 2012. [..] After that we stop bugfixes. We still provide security fixes until June 2013, in case you are still using 1.8.7. We will no longer support 1.8.7 in all senses after June 2013". So unless someone else steps up and continues maintaining it (like Engine Yard did with Ruby 1.8.6), it's time to finally move on to Ruby 1.9 or one of the alternative implementations.