A Peek at Ruby in 2015
As 2014 comes to a close, I thought I’d take a quick look at what 2015 may offer in the land of Ruby. Much of how 2015 opens will, obviously, be based on the final words of 2014, so we’ll start with some discussion of this year and try to extrapolate that into the future. Also, I am going to focus in on Ruby and Rails, more than anything else, mainly because it’s what I know. If you have predictions about Ruby frameworks outside of Rails, I am sure the readers would love to hear them.
Ruby ended 2014 with the release of 2.2, on Christmas Day, no less. The major improvement over 2.1 is another Garbage Collection feature. Symbols will now be garbage collected, which should immediately drop memory usage for all Ruby apps, especially Rails (which we’ll talk about in a minute). I couldn’t find a definitive roadmap for MRI Ruby, but I did find this link on http://bugs.ruby-lang.org that is the start of the bug/feature list for Ruby 2.3.0. The only item listed is a fix to case conversion functions being limited to ASCII characters. My Sherlockian deduction skills lead me to believe 2.3.0 will be much more of a bug-release, leaving me at a loss to what the “next big feature/improvement” in MRI will be. Any ideas?
JRuby, on the other hand, is poised for (what I hope will be) a HUGE 2015. The JRuby team ended 2014 with a flourish of releases (currently at 1.7.18), along with great progress on JRuby 9000. JRuby 9000 is the next major release of JRuby, and it aims to close the gaps between MRI 2.1 (possibly 2.2…?) and JRuby. But wait, there’s more:
- A new optimizing compiler
- Support true native IO and Process logic
- Finally bring character transcoding in line with MRI
I stole those bullet points from this video by Charles Nutter (Mr. JRuby) and Thomas Enebo from RubyConf 2014.
I use JRuby everyday, and I can say it’s likely the premier implementation of Ruby. I think many Rubyists are afraid of Java and JRuby, but they shouldn’t be. I am not a Java-head and I do just fine.
Rubinius (USER SUGGESTION)
I initially couldn’t find much on Rubinius, but a commenter on this article (Thanks bennyklotz) found this article that talks about the Rubinius core team. It also links to many articles about Rubinius 3.0. There are several articles detailing where Rubinius 3.0 is going, so if you are interested in Rubinius (and we all should be), grab a cup of coffee and read through them.
For Rails, 2014 ended with the release of 4.2 final. This post details the changes, but here is a taste:
- ActiveJob – The background job abstraction we all know and love. Kyle Szives dives deep into ActiveJob in one of our more popular SitePoint Ruby posts from 2014.
- Adequate Record – Everyone’s favorite cat-loving, pun-making, Friday hugger Aaron Patterson improves ActiveRecord. He explains it all here.
- Web Console – Rooted in the idea of the better_errors gem, Web Console gives you a REPL on Rails exception pages. It adds the ability to put a console on ANY page in your Rails app, so that is neato.
Starting now, the Rails core team is focused on Rails 5.0. All we know, at this point, is that 5.0 will target Ruby 2.2 (and later, presumably), exclusively. This means that the GC improvements in 2.2 will be realized in Rails 5.0. Rails can be a memory pig, so I already like where 5.0 is going.
Sinatra is still riding the release of 1.4, but rumblings of a 2.0 release are out there. In this answer, framework creator Konstantin Haase lists what he’d like to be in 2.0. It’s a sizable list, creeping up on total rewrite. If you want to get involved with a well-used Ruby gem and contribute to Open Source, this is a great opportunity.
- Torquebox is on the cusp of a 4.0 release that is a major update. Torquebox will be broken into many gems, and will function like other Ruby web servers. Torquebox is an excellent option for production Ruby apps, and 4.0 should make it even easier to use.
- A new Ruby webserver interface? Rack announced it’s own end-of-life in 2014, so 2015 will likely bring simple maintenance and (hopefully) the birth of the next Ruby middleware specification. The Google Group post linked above talks about why the core team feels that Rack 2.0 will never exist (or, at least, not as a product of the existing core team) so give a read. Also, take a look at Wardrop (AKA, Rack-Next) and maybe get involved in what’s next. USER SUGGESTION: Aaron Patterson has also has spiked the_metal to create talking points around Rack 2.0. Interesting.
- USER SUGGESTION: The Lotus framework has been gaining momentum all year, and that will continue in 2015. Lotus is a web framework that “strives for simplicity, less DSLs, minimal conventions, more objects, zero monkey-patching and the separation of concerns between MVC layers.” If you’re looking to go off the Rails, Lotus is a great choice.
- USER SUGGESTION: Nick Sutterer (@apotonick), author of Cells, Roar, and other well-known Ruby/Rails gems, has created a new approach to Rails applications called Trailblazer. From the Github page:
Trailblazer is a thin layer on top of Rails. It gently enforces encapsulation, an intuitive code structure and gives you an object-oriented architecture.
I did an early review of some of the book Nick penned about Trailblazer and it looks VERY good. I bet it makes waves in 2015.
As always, a new year in Ruby means a new set of Ruby conferences. The big ones are:
Neither site has been updated to reflect the new location, but you can now book your plane tickets. For other Ruby conferences, check out rubyconferences.org. One of my goals for 2015 is to get to more conferences, you should too.
A new year always brings new excitement of what’s to come. Ruby is certainly poised for many positive changes as it continues to be one of the best languages on the programming spectrum. I am sure I forgot something huge on the horizon or maybe got a detail or two wrong, so feel free to correct/add those items in the comments.
Happy New Year!!