Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
Local gem management is a key part of our modern workflow, but our tools are layered on historical approaches and requirements. In this talk we explore a ground-up rewrite of local gem management, and ask whether careful implementation (and some feature-cutting) can produce a tool that meets most people's needs while outperforming the current options. In the process, we'll look at specific design choices that make common operations faster, and which might apply to your projects too. RubyKaigi 2019 https://rubykaigi.org/2019/presentations/_matthewd.html#apr18
Date
Summarized using AI?
If this talk's summary was generated by AI, please check this box. A "Summarized using AI" badge will be displayed in the summary tab to indicate that the summary was generated using AI.
Show "Summarized using AI" badge on summary page
Summary
Markdown supported
In the talk titled "A Bundle of Joy: Rewriting for Performance," Matthew Draper explores the challenges and solutions associated with local gem management in Ruby. He highlights that while Ruby has made strides in performance, the existing tools for gem management, particularly Bundler, often fall short due to legacy design choices. Draper illustrates key points throughout the presentation: - **Problem Identification:** The presenter begins by sharing his frustrations with slow bundle updates, which could take up to ten minutes due to Bundler downloading gem specifications one by one. - **Experimental Solutions:** After uncovering issues with the current caching mechanisms, Draper implemented a local file system cache within Bundler to significantly reduce run times, illustrating the effectiveness of caching. - **Concurrence in Downloads:** Through creating an experimental tool, he emphasizes that managing concurrent downloads could vastly improve performance when fetching gems from remote servers. - **Improved Gem Loading:** Draper discusses optimizing the loading of gems through better caching strategies and restructuring how files are accessed, leading to faster execution times. - **New Resolver Algorithm:** Inspiration from the Dart language’s new dependency resolver, ‘pub-grub,’ led to a significant performance boost by reducing backtracking when resolving gem dependencies. - **Introduction of Gel:** The culmination of Draper's experiments resulted in Gel, a lightweight replacement for Bundler, which simplifies commands while introducing speed improvements—showing a reduction in time for standard commands like 'bundle exec rake' from 700 milliseconds to 330 milliseconds and greatly speeding up the entire gem installation and boot process. - **Future Implications:** The presentation ends on a note of optimism about integrating new ideas back into Bundler and RubyGems, encouraging developers to rethink existing tools and explore rewrites as experiments. In conclusion, Draper emphasizes that while rewrites may carry risks, they provide valuable learning experiences and pave the way for meaningful improvements in performance. The development of Gel represents a step toward addressing the inherent inefficiencies in the current gem management landscape, encouraging the Ruby community to explore these innovations further.
Suggest modifications
Cancel