Rubyconf 2017 was held this year in New Orleans. There were nearly 60 keynotes and presentations from four tracks over three days.
Wednesday 15 November. Opening keynote from Matz, cautious of making any divisive changes to Ruby now that it is nearly 25 years old. Significant progress this year on a register based VM rewrite that should result in ambitious performance improvements. Unicode 10 support due this year in Ruby 2.5, but features such as frozen strings by default, tail recursion optimization, guilds and type support are still on hold pending more community feedback.
Minqi Pan with an wildly innovative approach to packaging application binaries using a custom Ruby integrated with a virtual file system.
Triptych of presentations on the future of Ruby by Justin Searls, Jason Charnes and Eric Weinstein. First Justin with a retrospective of influential Ruby conference presentations, then Jason with a bedtime story exhorting rubyists to study other ecosystems, maintain gems and teach; finally Eric touching on Crystal, Opal, WebAssembly and Guilds.
Closing keynote by Chad Fowler as entertaining as ever, drawing on his polyglot experience at Wunderlist to suggest that to build systems that will last use cells that can easily be replaced.
Thursday. Kevin Deisz exploring the Ruby 2.3 API underpinning BootSnap compilation caching, writing his own compiler macros and a math macro language targeting YARV. Daniel Azuma of Google demonstrating how surprisingly simple it is to build a command line Ruby debugger with the TracePoint API. Andrew Metcalfe of Stripe discussing the challenges of performing static analysis on a 1M lines of Ruby spaghetti and how to leverage Ruby autoload without Rails. Evening lightning talks including Cameron Dutro, Noah Gibbs and Akira Matsuda.
Friday. Another inspring keynote by Sandi Matz: teamwork requires being your best self. Aaron Patterson’s ‘impossible’ compacting garbage compiler with savings unknown. Yusuke Endo demonstrating his obfuscated quines. Tekashi Kokubun trying to explain the many complexities and tradeoffs of YARV-MJIT.
In summary Ruby is a mature and constrained language: performance improvements will continue but new feature adoption will be conservative. Ruby will continue to face increased competition, but its focus on programmer productivity keeps it relevant.