SlideShare a Scribd company logo
The future of Ruby ecosystem with GitHub
Hiroshi SHIBATA / GMO Pepabo, Inc.


2021.09.11 RubyKaigi takeout 2021
How to develop the Standard
Libraries of Ruby?
Hiroshi SHIBATA @hsbt
https://www.hsbt.org
Executive Of
fi
cer VP of Engineering


Technical Director


at GMO Pepabo, Inc. @pepabo
How to develop the Standard Libraries of Ruby?
Agenda
•The introduction for Gemi
fi
cation of Ruby 3.0, RubyGems
3.2 and Bundler 2.2


•The details of developing the default gems


•The future planf for Ruby 3.1/4.0
The introduction for


Gemi
fi
cation of Ruby 3.0,


RubyGems 3.2 and Bundler 2.2
Standard


Libraries
Default


Gems
Bundled


Gems
Pure Ruby 3 52 8
C extensions 6 20 0
This matrix shows number of standard libraries and their
classi
fi
cations in Ruby 3.0.
Gemi
fi
cation of Ruby 3.0
With ruby/ruby repository
Gami
fi
cation on Ruby 3.1(TBD)
I will extract the following default gems to bundled gems.
net-ftp


net-imap


Debug
net-pop


net-smtp
English - Rubocop still suggest to use it.


ostruct - A lot of gems depends on it.


date - Rails dependes on it.


…
And I gave up to promote the following default gems.
matrix


prime
Which stdlibs will remain in the stdlibs?
I decided to not promote the following gems to the default
gems.
mkmf


rbconfig


objspace
coverage


monitor


ripper


socket
Native extension with the bundled gems
•We couldn’t promote the
native extension to the
bundled gems now.


•We need to use installed
Ruby before its installed.
The new feature of RG 3.2/Bundler 2.2
•Fixed the priority for multi-source dependencies for
CVE-2020-36327 at “> Bundler 2.2.17”.


•Support Multi-platform.


•You should specify it with `bundle lock --platform …`


•[ANN] I got the privilege for handling the rubygems.org
The details of the default gems
How develop the default gems
•Default gems repository is
located under the https://
github.com/ruby


•It has a GitHub actions,
enabled pull-request. So,
you can develop typically
github work
fl
ow.
The differences with ruby/ruby and ruby/*
$ autoreconf


$ ./con
fi
gure —disable-install-doc


$ make -j


$ make check
You can run the test suite with under the repository.
$ bundle install


$ rake test
ruby/ruby
ruby/*
How merge the default gems to ruby/ruby
•Default gems side(ruby/*)


•Copy ruby/ruby. Run `make check`, If tests failed, I
fi
xed
them and backport to default gems.


•Stdlibs side(ruby/ruby)


•Backport ruby/*. Run `rake test`, If tests failed, I
fi
xed
them and forwardport to stdlibs.
sync_default_gems.rb
This script manage the commits
between ruby/ruby and ruby/*.


•Pick single commit or
commits from ruby/* to ruby/
ruby.


•Add URL for the original
commits of ruby/* to commit
message.
Migrate minitest to test-unit
•In the past, We use the
custom test framework of
Ruby repository for the
default gems.


•I migrated them to test-unit
+ the custom assertions.


•I want to simple mock with
test-unit.
What’s CoreAssertion?
•This provides the advanced
usage of ruby interpreter
tests


•Integrate envutil


•Add Custom assertions


•Handle test-unit and minitest
differences
The feature plan for Ruby 3.1/4.0
JRuby migration
•Finally, We can migrate JRuby
port to the default gems.


•We could care the both
speci
fi
cation at one
repository.


•But We should coordinate the
license of JRuby code.
Avoid to use `--disabled-gems`
•Ruby have a `--disabled-gems`
for the Ruby core development.


•We considered to disable/
remove it from distributed
version because the users
misunderstood its usage.


•We should improve the its
performance.
Bump up RubyGems/Bundler
We will merge into RubyGems 3.3 and Bundler 2.3 into Ruby
3.1.0-dev. But We have no plan to release RG 4.0 and
Bundler 3.0
Ruby
Bundler
RubyGems
3.0 3.1
3.1
2.1
3.2 4.0
?
2.2
?
Activation issues about the default gems
We still have a activation
issue with RubyGems and
the default gems.


•tsort


•…


We should rewrite it with
pure ruby inplementation.
We need the contributors for the default gems
•We need to your help the following topics


•Ractor support


•Documentation


•We can give write grant for the default gems repository like
ruby/*.


•It’s not ruby-commiter but you can commit to stdlib.
Conclusion
Conclusion
I introduced the following topics.


•The current status of gemi
fi
cation at Ruby 3.1


•The details of developing the default gems


•The future plan for RubyGems/Bundler and Gemi
fi
cation


Let’s join to #rubygems of ruby-jp slack and talk about
them.

More Related Content

What's hot (20)

PDF
The Future of Dependency Management for Ruby
Hiroshi SHIBATA
 
PDF
The Future of Bundled Bundler
Hiroshi SHIBATA
 
PDF
From 'Legacy' to 'Edge'
Hiroshi SHIBATA
 
PDF
Gems on Ruby
Hiroshi SHIBATA
 
PDF
How to distribute Ruby to the world
Hiroshi SHIBATA
 
PDF
Dependency Resolution with Standard Libraries
Hiroshi SHIBATA
 
PDF
Ruby Security the Hard Way
Hiroshi SHIBATA
 
PDF
Gemification for Ruby 2.5/3.0
Hiroshi SHIBATA
 
PDF
RubyGems 3 & 4
Hiroshi SHIBATA
 
PDF
What's new in RubyGems3
Hiroshi SHIBATA
 
PDF
Roadmap for RubyGems 4 and Bundler 3
Hiroshi SHIBATA
 
PDF
The Future of library dependency manageement of Ruby
Hiroshi SHIBATA
 
PDF
OSS Security the hard way
Hiroshi SHIBATA
 
PDF
20141210 rakuten techtalk
Hiroshi SHIBATA
 
PDF
Ractor's speed is not light-speed
SATOSHI TAGOMORI
 
PDF
Middleware as Code with mruby
Hiroshi SHIBATA
 
PDF
The Future of library dependency management of Ruby
Hiroshi SHIBATA
 
PDF
Gemification for Ruby 2.5/3.0
Hiroshi SHIBATA
 
PDF
How DSL works on Ruby
Hiroshi SHIBATA
 
PDF
How to Begin to Develop Ruby Core
Hiroshi SHIBATA
 
The Future of Dependency Management for Ruby
Hiroshi SHIBATA
 
The Future of Bundled Bundler
Hiroshi SHIBATA
 
From 'Legacy' to 'Edge'
Hiroshi SHIBATA
 
Gems on Ruby
Hiroshi SHIBATA
 
How to distribute Ruby to the world
Hiroshi SHIBATA
 
Dependency Resolution with Standard Libraries
Hiroshi SHIBATA
 
Ruby Security the Hard Way
Hiroshi SHIBATA
 
Gemification for Ruby 2.5/3.0
Hiroshi SHIBATA
 
RubyGems 3 & 4
Hiroshi SHIBATA
 
What's new in RubyGems3
Hiroshi SHIBATA
 
Roadmap for RubyGems 4 and Bundler 3
Hiroshi SHIBATA
 
The Future of library dependency manageement of Ruby
Hiroshi SHIBATA
 
OSS Security the hard way
Hiroshi SHIBATA
 
20141210 rakuten techtalk
Hiroshi SHIBATA
 
Ractor's speed is not light-speed
SATOSHI TAGOMORI
 
Middleware as Code with mruby
Hiroshi SHIBATA
 
The Future of library dependency management of Ruby
Hiroshi SHIBATA
 
Gemification for Ruby 2.5/3.0
Hiroshi SHIBATA
 
How DSL works on Ruby
Hiroshi SHIBATA
 
How to Begin to Develop Ruby Core
Hiroshi SHIBATA
 

Similar to How to develop the Standard Libraries of Ruby? (20)

PDF
Gemification plan of Standard Library on Ruby
Hiroshi SHIBATA
 
PDF
RubyGems 3 & 4
Hiroshi SHIBATA
 
KEY
Week6
reneedv
 
PPTX
Chennai.rb feb 2016
Vijay Raghavan Aravamudhan
 
PDF
Writing a Ruby Gem for beginners
ConFoo
 
PDF
The secret of programming language development and future
Hiroshi SHIBATA
 
PDF
Long journey of Ruby Standard library at RubyKaigi 2024
Hiroshi SHIBATA
 
KEY
Ruby v cpp_preso
jessicard
 
PPTX
RubyConfBD 2013 decouple, bundle and share with ruby gems
nhm taveer hossain khan
 
ODP
Build-a-Gem Workshop
Brian Kaney
 
ODP
Build-a-Gem Workshop
Brian Kaney
 
PDF
The story of language development
Hiroshi SHIBATA
 
PDF
Ruby Presentation - Article
Christopher Giroir
 
PDF
RVM - NHRuby Nov 2009
bturnbull
 
PDF
Extracting ruby gem
Yura Tolstik
 
PDF
How to make a Ruby Gem - Austin on Rails, January 2014
Clare Glinka
 
PDF
Tricking Bundler
Marcello Barnaba
 
PDF
An introduction to the ruby ecosystem
Geison Goes
 
PDF
Create your-own-gem-with-github-jeweler-rubygems
Nico Hagenburger
 
PPT
Ruby Projects and Libraries
Vorleak Chy
 
Gemification plan of Standard Library on Ruby
Hiroshi SHIBATA
 
RubyGems 3 & 4
Hiroshi SHIBATA
 
Week6
reneedv
 
Chennai.rb feb 2016
Vijay Raghavan Aravamudhan
 
Writing a Ruby Gem for beginners
ConFoo
 
The secret of programming language development and future
Hiroshi SHIBATA
 
Long journey of Ruby Standard library at RubyKaigi 2024
Hiroshi SHIBATA
 
Ruby v cpp_preso
jessicard
 
RubyConfBD 2013 decouple, bundle and share with ruby gems
nhm taveer hossain khan
 
Build-a-Gem Workshop
Brian Kaney
 
Build-a-Gem Workshop
Brian Kaney
 
The story of language development
Hiroshi SHIBATA
 
Ruby Presentation - Article
Christopher Giroir
 
RVM - NHRuby Nov 2009
bturnbull
 
Extracting ruby gem
Yura Tolstik
 
How to make a Ruby Gem - Austin on Rails, January 2014
Clare Glinka
 
Tricking Bundler
Marcello Barnaba
 
An introduction to the ruby ecosystem
Geison Goes
 
Create your-own-gem-with-github-jeweler-rubygems
Nico Hagenburger
 
Ruby Projects and Libraries
Vorleak Chy
 
Ad

More from Hiroshi SHIBATA (10)

PDF
Introduction of Cybersecurity with Ruby at RedDotRubyConf 2024
Hiroshi SHIBATA
 
PDF
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
PDF
Long journey of Ruby standard library at RubyConf AU 2024
Hiroshi SHIBATA
 
PDF
Deep dive into Ruby's require - RubyConf Taiwan 2023
Hiroshi SHIBATA
 
PDF
How resolve Gem dependencies in your code?
Hiroshi SHIBATA
 
PDF
How resolve Gem dependencies in your code?
Hiroshi SHIBATA
 
PDF
Ruby コミッターと歩む Ruby を用いたプロダクト開発
Hiroshi SHIBATA
 
PDF
Why ANDPAD commit Ruby and RubyKaigi?
Hiroshi SHIBATA
 
PDF
RailsGirls から始める エンジニアリングはじめの一歩
Hiroshi SHIBATA
 
PDF
Productive Organization with Ruby
Hiroshi SHIBATA
 
Introduction of Cybersecurity with Ruby at RedDotRubyConf 2024
Hiroshi SHIBATA
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
Long journey of Ruby standard library at RubyConf AU 2024
Hiroshi SHIBATA
 
Deep dive into Ruby's require - RubyConf Taiwan 2023
Hiroshi SHIBATA
 
How resolve Gem dependencies in your code?
Hiroshi SHIBATA
 
How resolve Gem dependencies in your code?
Hiroshi SHIBATA
 
Ruby コミッターと歩む Ruby を用いたプロダクト開発
Hiroshi SHIBATA
 
Why ANDPAD commit Ruby and RubyKaigi?
Hiroshi SHIBATA
 
RailsGirls から始める エンジニアリングはじめの一歩
Hiroshi SHIBATA
 
Productive Organization with Ruby
Hiroshi SHIBATA
 
Ad

Recently uploaded (20)

PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 

How to develop the Standard Libraries of Ruby?

  • 1. The future of Ruby ecosystem with GitHub Hiroshi SHIBATA / GMO Pepabo, Inc. 2021.09.11 RubyKaigi takeout 2021 How to develop the Standard Libraries of Ruby?
  • 2. Hiroshi SHIBATA @hsbt https://www.hsbt.org Executive Of fi cer VP of Engineering Technical Director at GMO Pepabo, Inc. @pepabo
  • 4. Agenda •The introduction for Gemi fi cation of Ruby 3.0, RubyGems 3.2 and Bundler 2.2 •The details of developing the default gems •The future planf for Ruby 3.1/4.0
  • 5. The introduction for Gemi fi cation of Ruby 3.0, RubyGems 3.2 and Bundler 2.2
  • 6. Standard Libraries Default Gems Bundled Gems Pure Ruby 3 52 8 C extensions 6 20 0 This matrix shows number of standard libraries and their classi fi cations in Ruby 3.0. Gemi fi cation of Ruby 3.0 With ruby/ruby repository
  • 7. Gami fi cation on Ruby 3.1(TBD) I will extract the following default gems to bundled gems. net-ftp net-imap Debug net-pop net-smtp English - Rubocop still suggest to use it. ostruct - A lot of gems depends on it. date - Rails dependes on it. … And I gave up to promote the following default gems. matrix prime
  • 8. Which stdlibs will remain in the stdlibs? I decided to not promote the following gems to the default gems. mkmf rbconfig objspace coverage monitor ripper socket
  • 9. Native extension with the bundled gems •We couldn’t promote the native extension to the bundled gems now. •We need to use installed Ruby before its installed.
  • 10. The new feature of RG 3.2/Bundler 2.2 •Fixed the priority for multi-source dependencies for CVE-2020-36327 at “> Bundler 2.2.17”. •Support Multi-platform. •You should specify it with `bundle lock --platform …` •[ANN] I got the privilege for handling the rubygems.org
  • 11. The details of the default gems
  • 12. How develop the default gems •Default gems repository is located under the https:// github.com/ruby •It has a GitHub actions, enabled pull-request. So, you can develop typically github work fl ow.
  • 13. The differences with ruby/ruby and ruby/* $ autoreconf $ ./con fi gure —disable-install-doc $ make -j $ make check You can run the test suite with under the repository. $ bundle install $ rake test ruby/ruby ruby/*
  • 14. How merge the default gems to ruby/ruby •Default gems side(ruby/*) •Copy ruby/ruby. Run `make check`, If tests failed, I fi xed them and backport to default gems. •Stdlibs side(ruby/ruby) •Backport ruby/*. Run `rake test`, If tests failed, I fi xed them and forwardport to stdlibs.
  • 15. sync_default_gems.rb This script manage the commits between ruby/ruby and ruby/*. •Pick single commit or commits from ruby/* to ruby/ ruby. •Add URL for the original commits of ruby/* to commit message.
  • 16. Migrate minitest to test-unit •In the past, We use the custom test framework of Ruby repository for the default gems. •I migrated them to test-unit + the custom assertions. •I want to simple mock with test-unit.
  • 17. What’s CoreAssertion? •This provides the advanced usage of ruby interpreter tests •Integrate envutil •Add Custom assertions •Handle test-unit and minitest differences
  • 18. The feature plan for Ruby 3.1/4.0
  • 19. JRuby migration •Finally, We can migrate JRuby port to the default gems. •We could care the both speci fi cation at one repository. •But We should coordinate the license of JRuby code.
  • 20. Avoid to use `--disabled-gems` •Ruby have a `--disabled-gems` for the Ruby core development. •We considered to disable/ remove it from distributed version because the users misunderstood its usage. •We should improve the its performance.
  • 21. Bump up RubyGems/Bundler We will merge into RubyGems 3.3 and Bundler 2.3 into Ruby 3.1.0-dev. But We have no plan to release RG 4.0 and Bundler 3.0 Ruby Bundler RubyGems 3.0 3.1 3.1 2.1 3.2 4.0 ? 2.2 ?
  • 22. Activation issues about the default gems We still have a activation issue with RubyGems and the default gems. •tsort •… We should rewrite it with pure ruby inplementation.
  • 23. We need the contributors for the default gems •We need to your help the following topics •Ractor support •Documentation •We can give write grant for the default gems repository like ruby/*. •It’s not ruby-commiter but you can commit to stdlib.
  • 25. Conclusion I introduced the following topics. •The current status of gemi fi cation at Ruby 3.1 •The details of developing the default gems •The future plan for RubyGems/Bundler and Gemi fi cation Let’s join to #rubygems of ruby-jp slack and talk about them.