Talks

Keynote: MJIT, what, how and why

Keynote: MJIT, what, how and why

by Yukihiro "Matz" Matsumoto

In the keynote address titled "MJIT, what, how and why," delivered by Yukihiro Matsumoto at Euruko 2017, the focus is on the evolution and continued relevance of the Ruby programming language. Matsumoto highlights the ongoing vibrancy of the Ruby community, evidenced by various Ruby conferences taking place globally. He expresses the importance of compatibility in programming languages, particularly in the context of Ruby's growth and adaptation over its 25-year history.

Key points discussed include:
- Ruby's Ongoing Popularity: Despite claims of its decline, Matsumoto asserts that Ruby remains valuable for developers and continues to be utilized in various projects.
- Technical Debt and Compatibility: Matsumoto addresses Ruby's 'technical debt,' acknowledging past mistakes in language design and the challenges of making changes without breaking existing code. He compares this to other languages like Python, noting the difficulties surrounding version migrations.
- Continuous Improvement: The incremental enhancements in Ruby, with new versions being released annually, focus on improving performance without sacrificing usability and joy in programming.
- Ruby 3x3 Project: This initiative aims to triple Ruby's performance while addressing memory usage concerns and maintaining dependency management.
- Benchmarking and Optimization: Efforts are underway to develop a repository of benchmarks that reflect real-world application performance, with an emphasis on maintainability and simplicity.

Matsumoto concludes by emphasizing the community's role in the evolution of Ruby and invites contributions from coders and leaders at all levels to sustain progress. He addresses a question about future language flexibility and reassures that performance improvements will be balanced with feature enhancements for user adaptability, reinforcing the commitment to community-driven growth.

00:00:17.169 It's good to see you! You rock! Oh, I'm Matsumoto. My name can be a bit difficult to pronounce.
00:00:23.750 Sometimes, people mess up my name.
00:00:29.900 My family name is Matsumoto, and Yukihiro is my first name.
00:00:35.360 So, yeah, this is huge! I think it's the biggest ever, with 700 people.
00:00:42.170 I'm so glad to be here at Euruko 2017 in Budapest. This audience makes me nervous.
00:00:53.500 I wish you all could understand Japanese, but thank you. I will try.
00:01:00.559 Anyway, we have this huge conference. Last week, we had the Ruby Kaigi conference in Hiroshima, Japan.
00:01:11.380 Next week, we are going to have a Ruby conference in Jakarta, Indonesia.
00:01:18.280 Then, two months later, we are going to have this huge Ruby conference in New Orleans, US.
00:01:41.890 All of these conferences are so energetic. People are excited about learning and creating new technology in Ruby.
00:01:56.340 So who says Ruby is dead? Definitely not! Ruby may not be as trendy as it was a few years ago.
00:02:18.730 However, everyone is still trying to learn new technology. Actually, Ruby is not that new, though.
00:02:25.180 Ruby was the new kid on the block until a few years ago, but it remains quite popular.
00:02:30.940 We can earn a living using Ruby, and it has helped many developers improve their lives.
00:02:46.440 Ruby has survived for the last 25 years. I started developing Ruby in 1993.
00:03:00.379 Next year, we are going to celebrate the 25th birthday of the Ruby language.
00:03:14.870 It really is maturing; Ruby is stable. Compatibility matters.
00:03:24.680 We need compatibility because if I as the language designer change the language for no reason, everyone will scream.
00:03:31.160 Ruby has a lot of technical debt, and I'm sorry about that.
00:03:36.170 Unfortunately, in our pursuit of perfection, we made many mistakes in the past.
00:03:39.310 As you encounter drawbacks and mistakes in your design, your application, or even the language itself, you want to fix them.
00:03:51.000 However, fixing a language is more challenging than fixing typical applications because such fixes can break existing code.
00:03:59.150 And for popular software or languages, fixing does not always work.
00:04:06.380 In the past, we addressed many corner cases in Ruby 1.9 and had compatibility breaks between Ruby 1.8 and 1.9.
00:04:54.400 We're seeing something similar in other languages, like Python. Python 3 fixed numerous corner cases and historical drawbacks.
00:05:20.800 However, the Python community took a long time to migrate, and people are still using Python 2 years after it was declared dead.
00:05:35.500 We have to migrate the whole Ruby community to Ruby 1.9, and the division caused by version breaks can significantly affect the community.
00:06:39.310 For example, PHP 6 attempted to introduce extensive changes but faced rejection from the community, leading to its cancellation.
00:07:20.930 The same situation happened with ECMAScript; people sought compatibility rather than drastic changes.
00:08:12.240 The second system syndrome occurs when people become tempted to start fresh rather than fixing existing issues, and this tendency can be seen in various fields.
00:09:11.100 In software, we need to move step by step rather than trying to abandon everything and start from scratch.
00:10:00.830 Migration from Ruby 1.8 to 1.9 took about five years, comparable to the Python migration from Python 2 to 3.
00:10:57.640 The major contrast between Ruby and Python is motivation; Ruby 1.9 is significantly faster compared to 1.8 due to virtual machine improvements.
00:11:50.260 Ruby isn't designed primarily for speed, focusing instead on usability, productivity, and the joy of programming.
00:12:34.010 No one complains when Ruby gets faster, though.
00:12:43.060 Ruby is about productivity, flexibility, and joy, while performance remains important but not the primary goal.
00:13:25.690 In the last five years, we have made continuous incremental improvements, with new Ruby versions coming out every Christmas.
00:13:38.400 Each release runs five to ten percent faster, and we are proud of that.
00:13:54.420 Despite these improvements being small, they accumulate, thus Ruby's perception suffers as a result of relatively low performance.
00:14:50.870 Therefore, we coined the campaign 'Ruby 3x3,' aiming to make Ruby three times faster.
00:15:27.340 This goal is technically challenging due to the history of Ruby's 25 years and the need for significant improvements.
00:16:18.870 Our first rule of the 3x3 project is regarding memory usage; faster applications usually consume more memory, affecting memory tight environments.
00:17:07.320 The second rule emphasizes that Ruby should not depend on third-party software. After many years, Ruby is still serviceable without losing its stability.
00:18:39.920 Maintainability and continuous evolution are key to preventing stagnation in open-source projects.
00:19:14.820 Thus, our third rule is that the implementation should be simple for better maintainability.
00:20:09.020 Over the years, we've implemented various improvements to capitalize on the mechanics of garbage collection.
00:20:37.010 The fourth rule states comparisons should be made against Ruby 2.0 as a baseline.
00:21:39.780 Lastly, our benchmarks should reflect real-world performance rather than relying on micro-benchmarks.
00:22:01.750 Several community members have created standard benchmarks to reflect real-world behaviors.
00:22:45.500 We aim to improve Ruby's performance through these changes. Additionally, great strides are being made in benchmarking tools.
00:23:09.730 Project optimization is an ongoing discussion. We'll develop a well-defined benchmark repository for consistency.
00:24:10.449 All these combined will help the project leverage improvements.
00:24:58.390 As we build momentum, we’ll consistently aim for more optimization.
00:25:37.510 The concept behind developing EMJIT is to improve performance drastically while ensuring manageable memory use.
00:26:18.900 In closing, I want to thank everyone who has contributed to this community's growth.
00:27:05.600 We need coders and leaders at all levels of development to keep evolving.
00:27:51.420 Your passion fuels our mission to deliver what’s best for Ruby.
00:31:57.790 In conclusion, Ruby is no longer a solitary project. It’s a community effort; let's keep improving together.
00:41:36.540 Hello everybody, I was just wondering, the focus of the next versions!
00:41:45.360 Is there someone's community consideration for flexibility in the language?
00:42:02.520 Yes, while we’re focusing on performance, rest assured we also prioritize flexibility.
00:42:09.090 We’re enhancing features and adding new methods.
00:42:13.290 Our focus includes continuous improvement for the user community.