SlideShare a Scribd company logo
1 of 50
Download to read offline
Future of Ruby standard libraries
SHIBATA Hiroshi / GMO Pepabo, inc.
2017.11.16 RubyConf 2017
Gemification for Ruby
2.5/3.0
self.introduce
self.introduce
=> {
name: “SHIBATA Hiroshi”,
nickname: “hsbt”,
organizations: [“pepabo”, “ruby_core_team”, “asakusarb”],
commit_bits: [“ruby”, “rake”, “rubygems”, “rdoc”, “psych”, “syck”, “ruby-
build”, “railsgirls”, “railsgirls-jp”, …],
sites: [“hsbt.org”, “ruby-lang.org”, “rubyci.org”, “railsgirls.com”,
“railsgirls.jp”],
}
Ruby Sponsors
Sponsors of the Ruby language
• heroku:
Unlimited dyno resources for websites
• fastly:
OSS plan of CDN for *.ruby-lang.org
• NaCl:
Network and Compute resources for website
• Microsoft:
Provides Azure environment via MSDN Enterprise
Sponsors of the Ruby language(2)
• Ruby Association:
Grant of development
• Nihon Ruby no Kai:
macOS Server * 2
• Sugaya research laboratory:
Network resources for macOS Server
What’s a standard library?
1.
What’s the Standard library?
• We called its “標準添付ライブラリ” in Japanese.
• It needs to `require` differently from embedded libraries like
String, Thread, etc.
• It can be used without Bundler or RubyGems
Classification of standard libraries
Standard
Libraries
Default
Gems
Bundled
Gems
Ruby 69 1 7
C 23 5 0
This matrix shows number of standard libraries and their
classifications in Ruby 2.4.
What differences these libraries?
• Standard Libraries
• Upstream: Only Ruby core repository(svn.ruby-lang.org)
• Release cycle: 1 year
• Default Gems
• Upstream: Ruby core repository and GitHub(github.com/ruby)
• Release cycle: 1year or maintainer’s convenience
• Bundled Gems
• Upstream: Only GitHub
• Release cycle: Maintainer’s convenience
What number of these libraries - 2.4.0 to 2.5.0
In Ruby 2.4
Standard Libraries
• Pure ruby: 69
• Extensions: 23
Default gems
• Pure ruby: 1
• Extensions: 5
Bundled Gems
• Pure ruby: 7
• Extensions: 0
In Ruby 2.5
Standard Libraries
• Pure ruby: 64 (-5)
• Extensions: 14 (-9)
Default gems
• Pure ruby: 6 (+5)
• Extensions: 14 (+9)
Bundled Gems
• Pure ruby: 7
• Extensions: 0
Default gems
2.
Inside default gems
• `tool/rbinstall.rb` put gemspec files for default gems on Ruby
core repository.
• We can release default gems to the rubygems.org. It’s a
Standard library that seems to be installed as a gem.
• Rubygems have a detection method for default gems.
>> Gem.loaded_specs["did_you_mean"].default_gem?
=> false
>> require 'openssl'
=> true
>> Gem.loaded_specs["openssl"].default_gem?
=> true
ruby/openssl
Status of OpenSSL binding
• OpenSSL is already extracted default gems. You can update it
separated ruby core releases same as rubygems, rdoc, psych
• https://github.com/ruby/openssl
• It’s maintained by @rhenium
• Upstream was changed github repository from svn.ruby-lang.org
• He aggressively maintains new feature of openssl
Security release
Releasing a new security version of Ruby is hard. All release
maintainer are volunteers.
But If your Ruby supports Default gems/Bundled gems, You can
upgrade these gems without upgrading ruby interpreter.
Upgrading Ruby is hard. Upgrading Gems is easy(er)
ruby/psych
and
ruby/rdoc
Current status of psych and rdoc
I moved canonical repository under the ruby organization. Our
official tracker named “bugs.ruby-lang.org” is high threshold.
But GitHub resolve this by pull requests.
VS
Bundled gems
3.
Inside Bundled gems
• We bundled *.gem and unpacked files to tarball package for
Bundled gems.
• `make install` installed Bundled gem your box.
• It was installed by `tool/rbinstall.rb` on Ruby core repository.
• You can see list of Bundled gems via `gems/bundled_gems`
List of bundled gems on Ruby 2.5
• did_you_mean
• test-unit
• minitest
• net-telnet
	•	power_assert
	•	rake
	•	xmlrpc
Cross-compilation feature
We still have these concerns.
• We couldn’t support to compile C extension on Bundled gems.
• Bundled gems couldn’t support cross compilation.
Ex. We need to make Date gem to bundled gem before extracted
from ruby core.
We can test to bundled gems now
I created task for bundled gems named `test-bundled-gems`
~/D/g/r/ruby.trunk (trunk) > mk -C .x86_64-darwin test-bundled-gems
updating did_you_mean ...
HEAD is now at 982b11a... Version bump to 1.1.2
(snip)
updating xmlrpc ...
HEAD is now at aa29de3... bump version to 0.3.0
./miniruby -I../lib -I. -I.ext/common ../tool/runruby.rb --extout=.ext -- --disable-gems -C ".." bin/gem install --no-ri
--no-rdoc 
--install-dir .bundle --conservative "minitest:~> 5" 'test-unit' 'rake' 'hoe' 'yard' 'pry' 'packnga'
testing did_you_mean gem
(snip)
DidYouMean version: 1.1.2
Run options: --seed 9770
# Running:
...................................
Fabulous run in 0.043525s, 804.1356 runs/s, 3009.7645 assertions/s.
35 runs, 131 assertions, 0 failures, 0 errors, 0 skips
…
What’s Gemification?
4.
Gemification for standard library
https://bugs.ruby-lang.org/issues/5481
• We extracted stdlibs like net-telnet, xmlrpc, rake to bundled
gems.
• These are extracted under the https://github.com/ruby/ . And
shipped on rubygems.org
• Other gems are also extracted at the future.
Pros of Gemification(1)
• Maintainers can release gem for bugfix, new feature
independent with Ruby core.
• Easily backport stable version from develop version. Ruby
users can use new feature on stable version.
Pros of Gemification(2)
• If upstream is available on GitHub, Ruby users easily send
patch via Pull request.
• Ruby interpreter developper can concentrate development
Ruby internal.
Cons of Gemification(1)
• Abandoned and complex dependency on rubygems and
bundler.
• Maintainers need to maintain ruby core and GitHub
repositories both.
• It’s hard to maintain compatibility.
Cons of Gemification(2)
Backport is hard. Rubygems still supports Ruby 1.8.
% g show a34fb569e41cd87866e644d92a9df4be89b3cad2 test/rubygems/test_gem_package.rb
commit a34fb569e41cd87866e644d92a9df4be89b3cad2
Author: Eric Hodel <drbrain@segment7.net>
(snip)
--- test/rubygems/test_gem_package.rb
+++ test/rubygems/test_gem_package.rb
@@ -638,7 +638,7 @@ class TestGemPackage < Gem::Package::TarTestCase
e.message
io
end
- tf.close!
+ tf.close! if tf.respond_to? :close!
end
def test_verify_empty
RubyGems and
Gemification for Ruby 2.5
5.
What’s rubygems
RubyGems is a package management framework for Ruby.
• rubygems/rubygems.org:
• The Ruby community's gem host.
• rubygems.org is maintain by infrastructure team of rubygems. It is different
team from rubygems cli team.
• rubygems/rubygems:
• Command line tool of rubygems
• Rubygems are created by Seattle.rb
Reserved words on rubygems.org
Rubygems block reserved name same as standard libraries.
Ref. https://github.com/rubygems/rubygems.org/blob/master/
lib/patterns.rb#L10
Problem of fileutils
You can see: https://rubygems.org/gems/fileutils/versions/0.7
If you install fileutils-0.7, fileutils-0.7 break your ruby
environment.
Why???
fiddle
fiddle is standard library for wrapper of libffi. But fiddle
was already reserved another implementation(https://
github.com/bsm/fiddle) on rubygems.org
I did coordinate to transfer above namespace and
override CRuby implementation(https://github.com/ruby/
fiddle) now.
What we will do?
I offered to transfer ownership of these gems to rubygems.org
and overwrite it used by ruby stdlib.
My activities for reserved gems in this summer:
・Transfer request to owners of reserved gems.
・Removed gemification gems from blacklist on rubygems.org.
・Override reserved gems by standard libraries.
Default gems on Ruby 2.5
bigdecimal (default: 1.3.2)
bundler (default: 1.16.0)
cmath (default: 0.0.1)
csv (default: 0.1.0)
date (default: 0.0.1)
dbm (default: 1.0.0.beta1)
digest (default: 0.1.0)
etc (default: 0.2.1)
fcntl (default: 0.0.1)
fiddle (default: 1.0.0.beta2)
fileutils (default: 0.7.2)
gdbm (default: 2.0.0.beta1)
io-console (default: 0.4.6)
ipaddr (default: 1.0.0)
json (default: 2.1.0)
openssl (default: 2.1.0.beta1)
psych (default: 3.0.0.beta3)
rdoc (default: 6.0.0.beta2, 5.1.0)
scanf (default: 0.0.1)
sdbm (default: 0.0.1)
stringio (default: 0.0.1)
strscan (default: 0.0.1)
webrick (default: 1.4.0.beta1)
zlib (default: 0.1.0)
Current status of Default gems. I’m going to promote following
libraries to default gem at Ruby
2.5.0 or 2.6.0
• matrix
• digest
• ostruct
• stringio
• logger
Gamification for Ruby 3.0
6.
Reducing Ruby package size
•In Ruby 2.5, We added “bundler” to default gems.
•Bundler will be integrated RubyGems until Ruby 3.0 releasing.
•I will promote all of standard libraries to default gems.
•I will promote all of default gems without Rubygems
dependencies to bundled gems.
Bundle Bundler to Ruby core
• Bundler uses rspec.
• I made `test-bundler` task that is invoking rspec examples of
Bundler.
~/D/r/trunk > mk test-bundler
./miniruby -I../../github.com/ruby/ruby/lib -I. -I.ext/common ../../github.com/ruby/ruby/tool/runruby.rb
--extout=.ext -- --disable-gems -C "../../github.com/ruby/ruby" bin/gem install --no-ri --no-rdoc 
--install-dir spec/rspec --conservative 'rspec:~> 3.5'
Run options: exclude {:ruby_repo=>true, :rubygems_master=>true, :git=>"=< 2.14.1", :rubygems=>"=< 2.6.13",
:ruby=>"=< 2.5.0", :realworld=>true, :sudo=>true}
..........................................................................................................
..........................................................................................................
....................
Migration status of Rubygems and Bundler
• rubygems-2.7.0 partly uses bundler feature now.
• After bundler-2.0 released, We will target rubygems-3.0
• Ruby 2.5.0 have rubygems(-2.7.2) and bundler(-1.16.0), It
helps migration plan of rubygems/bundler.
We can get Ruby 3.0 and Rubygems 3.0 and Bundler 3.0 in
2020. So It’s a Ruby 3x3x3.
Activated problem for Rubygems
• Rubygems have a activated problem with default gems.
• https://bugs.ruby-lang.org/issues/13847
$ ruby -ropenssl -e 'p OpenSSL::VERSION'
"2.0.5"
$ cat Gemfile
# frozen_string_literal: true
source "https://rubygems.org"
gem 'openssl', '2.0.4'
$ bundle exec ruby -ropenssl -e 'p OpenSSL::VERSION'
/path/to/2.4.1/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:317:in
`check_for_activated_spec!': You have already activated openssl 2.0.5, but your Gemfile
requires openssl 2.0.4. Prepending `bundle exec` to your command may solve this.
(Gem::LoadError)
require :into
https://bugs.ruby-lang.org/issues/10320
Matz has some concerns about ruby internal.
• Conflicts versions of a shared library like libyaml-., libssl-,
libffi, etc...
• Order of LOADED_FEATURE
So, This feature is difficult to implement on current ruby
specification now.
require 'libfile', into: :Lib
What are dependencies of Rubygems?
base64
benchmark
cgi
digest
English
erb
fileutils
find
io/console
monitor
net/http
net/https
openssl
optparse
pathname
pp
rbconfig
resolv
set
shellwords
socket
stringio
strscan
tempfile
thread
time
timeout
tmpdir
tsort
uri
webrick
Win32API
zlib
Does Gemification make happy Rubyists?
• It’s heavy to maintain like github triage, gem release,
resolve dependency.
• We can upgrade standard library without language
upgrade.
• Ruby developer uses GitHub workflow for default/
bundled gems.
👍👎
👎
Conclusion
Summary of Today’s talk
• I described about a standard libraries of the Ruby language.
• I introduced specification of default gems/bundled gems of
Ruby.
• I shared current status of Rubygems and Gemification
projects.
• I shared my plan towards Ruby 3.0.
Executive Officer CPO(Chief Productivity Officer)
Director of Business Process Re-engineering Office
at GMO Pepabo, Inc. @pepabo
Hiroshi SHIBATA @hsbt
https://www.hsbt.org
Matz
k0kubun
ko1
shyouhei
amatsuda
mrkn
akr
nalsh
n0kada
Towards Ruby 3.0

More Related Content

What's hot

The Future of Bundled Bundler
The Future of Bundled BundlerThe Future of Bundled Bundler
The Future of Bundled BundlerHiroshi SHIBATA
 
OSS Security the hard way
OSS Security the hard wayOSS Security the hard way
OSS Security the hard wayHiroshi SHIBATA
 
The Future of library dependency management of Ruby
 The Future of library dependency management of Ruby The Future of library dependency management of Ruby
The Future of library dependency management of RubyHiroshi SHIBATA
 
How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?Hiroshi SHIBATA
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Hiroshi SHIBATA
 
Ruby Security the Hard Way
Ruby Security the Hard WayRuby Security the Hard Way
Ruby Security the Hard WayHiroshi SHIBATA
 
20140425 ruby conftaiwan2014
20140425 ruby conftaiwan201420140425 ruby conftaiwan2014
20140425 ruby conftaiwan2014Hiroshi SHIBATA
 
20140419 oedo rubykaigi04
20140419 oedo rubykaigi0420140419 oedo rubykaigi04
20140419 oedo rubykaigi04Hiroshi SHIBATA
 
Gemification plan of Standard Library on Ruby
Gemification plan of Standard Library on RubyGemification plan of Standard Library on Ruby
Gemification plan of Standard Library on RubyHiroshi SHIBATA
 
Middleware as Code with mruby
Middleware as Code with mrubyMiddleware as Code with mruby
Middleware as Code with mrubyHiroshi SHIBATA
 
How to Begin to Develop Ruby Core
How to Begin to Develop Ruby CoreHow to Begin to Develop Ruby Core
How to Begin to Develop Ruby CoreHiroshi SHIBATA
 
tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02Hiroshi SHIBATA
 
The details of CI/CD environment for Ruby
The details of CI/CD environment for RubyThe details of CI/CD environment for Ruby
The details of CI/CD environment for RubyHiroshi SHIBATA
 
Large-scaled Deploy Over 100 Servers in 3 Minutes
Large-scaled Deploy Over 100 Servers in 3 MinutesLarge-scaled Deploy Over 100 Servers in 3 Minutes
Large-scaled Deploy Over 100 Servers in 3 MinutesHiroshi SHIBATA
 

What's hot (20)

RubyGems 3 & 4
RubyGems 3 & 4RubyGems 3 & 4
RubyGems 3 & 4
 
The Future of Bundled Bundler
The Future of Bundled BundlerThe Future of Bundled Bundler
The Future of Bundled Bundler
 
OSS Security the hard way
OSS Security the hard wayOSS Security the hard way
OSS Security the hard way
 
Gems on Ruby
Gems on RubyGems on Ruby
Gems on Ruby
 
The Future of library dependency management of Ruby
 The Future of library dependency management of Ruby The Future of library dependency management of Ruby
The Future of library dependency management of Ruby
 
How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0
 
Ruby Security the Hard Way
Ruby Security the Hard WayRuby Security the Hard Way
Ruby Security the Hard Way
 
20140425 ruby conftaiwan2014
20140425 ruby conftaiwan201420140425 ruby conftaiwan2014
20140425 ruby conftaiwan2014
 
20140419 oedo rubykaigi04
20140419 oedo rubykaigi0420140419 oedo rubykaigi04
20140419 oedo rubykaigi04
 
Gemification plan of Standard Library on Ruby
Gemification plan of Standard Library on RubyGemification plan of Standard Library on Ruby
Gemification plan of Standard Library on Ruby
 
Middleware as Code with mruby
Middleware as Code with mrubyMiddleware as Code with mruby
Middleware as Code with mruby
 
20140918 ruby kaigi2014
20140918 ruby kaigi201420140918 ruby kaigi2014
20140918 ruby kaigi2014
 
20140925 rails pacific
20140925 rails pacific20140925 rails pacific
20140925 rails pacific
 
How to Begin to Develop Ruby Core
How to Begin to Develop Ruby CoreHow to Begin to Develop Ruby Core
How to Begin to Develop Ruby Core
 
tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02
 
RubyGems 3 & 4
RubyGems 3 & 4RubyGems 3 & 4
RubyGems 3 & 4
 
The details of CI/CD environment for Ruby
The details of CI/CD environment for RubyThe details of CI/CD environment for Ruby
The details of CI/CD environment for Ruby
 
How DSL works on Ruby
How DSL works on RubyHow DSL works on Ruby
How DSL works on Ruby
 
Large-scaled Deploy Over 100 Servers in 3 Minutes
Large-scaled Deploy Over 100 Servers in 3 MinutesLarge-scaled Deploy Over 100 Servers in 3 Minutes
Large-scaled Deploy Over 100 Servers in 3 Minutes
 

Similar to Gemification for Ruby 2.5/3.0

The story of language development
The story of language developmentThe story of language development
The story of language developmentHiroshi SHIBATA
 
The secret of programming language development and future
The secret of programming  language development and futureThe secret of programming  language development and future
The secret of programming language development and futureHiroshi SHIBATA
 
RubyConfBD 2013 decouple, bundle and share with ruby gems
RubyConfBD 2013   decouple, bundle and share with ruby gems RubyConfBD 2013   decouple, bundle and share with ruby gems
RubyConfBD 2013 decouple, bundle and share with ruby gems nhm taveer hossain khan
 
Crate - ruby based standalone executables
Crate - ruby based standalone executablesCrate - ruby based standalone executables
Crate - ruby based standalone executablesJeremy Hinegardner
 
The Enterprise Strikes Back
The Enterprise Strikes BackThe Enterprise Strikes Back
The Enterprise Strikes BackBurke Libbey
 
Painless ruby deployment on shelly cloud
Painless ruby deployment on shelly cloudPainless ruby deployment on shelly cloud
Painless ruby deployment on shelly cloudGiedrius Rimkus
 
Практики применения JRuby
Практики применения JRubyПрактики применения JRuby
Практики применения JRuby.toster
 
Test complex database systems in your laptop with dbdeployer
Test complex database systems in your laptop with dbdeployerTest complex database systems in your laptop with dbdeployer
Test complex database systems in your laptop with dbdeployerGiuseppe Maxia
 
How to start using Scala
How to start using ScalaHow to start using Scala
How to start using ScalaNgoc Dao
 
Introduction to JRuby
Introduction to JRubyIntroduction to JRuby
Introduction to JRubyajuckel
 
How to make a Ruby Gem - Austin on Rails, January 2014
How to make a Ruby Gem - Austin on Rails, January 2014How to make a Ruby Gem - Austin on Rails, January 2014
How to make a Ruby Gem - Austin on Rails, January 2014Clare Glinka
 
RubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on RailsRubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on Railselliando dias
 
Crate Packaging Standalone Ruby Applications
Crate  Packaging Standalone Ruby ApplicationsCrate  Packaging Standalone Ruby Applications
Crate Packaging Standalone Ruby Applicationsrailsconf
 

Similar to Gemification for Ruby 2.5/3.0 (19)

The story of language development
The story of language developmentThe story of language development
The story of language development
 
Week6
Week6Week6
Week6
 
The secret of programming language development and future
The secret of programming  language development and futureThe secret of programming  language development and future
The secret of programming language development and future
 
RubyConfBD 2013 decouple, bundle and share with ruby gems
RubyConfBD 2013   decouple, bundle and share with ruby gems RubyConfBD 2013   decouple, bundle and share with ruby gems
RubyConfBD 2013 decouple, bundle and share with ruby gems
 
Crate - ruby based standalone executables
Crate - ruby based standalone executablesCrate - ruby based standalone executables
Crate - ruby based standalone executables
 
Dbdeployer
DbdeployerDbdeployer
Dbdeployer
 
Install Guide
Install GuideInstall Guide
Install Guide
 
The Enterprise Strikes Back
The Enterprise Strikes BackThe Enterprise Strikes Back
The Enterprise Strikes Back
 
Painless ruby deployment on shelly cloud
Painless ruby deployment on shelly cloudPainless ruby deployment on shelly cloud
Painless ruby deployment on shelly cloud
 
Практики применения JRuby
Практики применения JRubyПрактики применения JRuby
Практики применения JRuby
 
Test complex database systems in your laptop with dbdeployer
Test complex database systems in your laptop with dbdeployerTest complex database systems in your laptop with dbdeployer
Test complex database systems in your laptop with dbdeployer
 
How to start using Scala
How to start using ScalaHow to start using Scala
How to start using Scala
 
Introduction to JRuby
Introduction to JRubyIntroduction to JRuby
Introduction to JRuby
 
11 Ruby Gems
11 Ruby Gems11 Ruby Gems
11 Ruby Gems
 
How to make a Ruby Gem - Austin on Rails, January 2014
How to make a Ruby Gem - Austin on Rails, January 2014How to make a Ruby Gem - Austin on Rails, January 2014
How to make a Ruby Gem - Austin on Rails, January 2014
 
Gradle
GradleGradle
Gradle
 
RubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on RailsRubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on Rails
 
Crate Packaging Standalone Ruby Applications
Crate  Packaging Standalone Ruby ApplicationsCrate  Packaging Standalone Ruby Applications
Crate Packaging Standalone Ruby Applications
 
Ruby Presentation - Article
Ruby Presentation - ArticleRuby Presentation - Article
Ruby Presentation - Article
 

More from Hiroshi SHIBATA

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

More from Hiroshi SHIBATA (8)

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

Recently uploaded

Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 

Recently uploaded (20)

Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

Gemification for Ruby 2.5/3.0

  • 1. Future of Ruby standard libraries SHIBATA Hiroshi / GMO Pepabo, inc. 2017.11.16 RubyConf 2017 Gemification for Ruby 2.5/3.0
  • 3. self.introduce => { name: “SHIBATA Hiroshi”, nickname: “hsbt”, organizations: [“pepabo”, “ruby_core_team”, “asakusarb”], commit_bits: [“ruby”, “rake”, “rubygems”, “rdoc”, “psych”, “syck”, “ruby- build”, “railsgirls”, “railsgirls-jp”, …], sites: [“hsbt.org”, “ruby-lang.org”, “rubyci.org”, “railsgirls.com”, “railsgirls.jp”], }
  • 4.
  • 6. Sponsors of the Ruby language • heroku: Unlimited dyno resources for websites • fastly: OSS plan of CDN for *.ruby-lang.org • NaCl: Network and Compute resources for website • Microsoft: Provides Azure environment via MSDN Enterprise
  • 7. Sponsors of the Ruby language(2) • Ruby Association: Grant of development • Nihon Ruby no Kai: macOS Server * 2 • Sugaya research laboratory: Network resources for macOS Server
  • 8. What’s a standard library? 1.
  • 9. What’s the Standard library? • We called its “標準添付ライブラリ” in Japanese. • It needs to `require` differently from embedded libraries like String, Thread, etc. • It can be used without Bundler or RubyGems
  • 10. Classification of standard libraries Standard Libraries Default Gems Bundled Gems Ruby 69 1 7 C 23 5 0 This matrix shows number of standard libraries and their classifications in Ruby 2.4.
  • 11. What differences these libraries? • Standard Libraries • Upstream: Only Ruby core repository(svn.ruby-lang.org) • Release cycle: 1 year • Default Gems • Upstream: Ruby core repository and GitHub(github.com/ruby) • Release cycle: 1year or maintainer’s convenience • Bundled Gems • Upstream: Only GitHub • Release cycle: Maintainer’s convenience
  • 12. What number of these libraries - 2.4.0 to 2.5.0 In Ruby 2.4 Standard Libraries • Pure ruby: 69 • Extensions: 23 Default gems • Pure ruby: 1 • Extensions: 5 Bundled Gems • Pure ruby: 7 • Extensions: 0 In Ruby 2.5 Standard Libraries • Pure ruby: 64 (-5) • Extensions: 14 (-9) Default gems • Pure ruby: 6 (+5) • Extensions: 14 (+9) Bundled Gems • Pure ruby: 7 • Extensions: 0
  • 14. Inside default gems • `tool/rbinstall.rb` put gemspec files for default gems on Ruby core repository. • We can release default gems to the rubygems.org. It’s a Standard library that seems to be installed as a gem. • Rubygems have a detection method for default gems. >> Gem.loaded_specs["did_you_mean"].default_gem? => false >> require 'openssl' => true >> Gem.loaded_specs["openssl"].default_gem? => true
  • 16. Status of OpenSSL binding • OpenSSL is already extracted default gems. You can update it separated ruby core releases same as rubygems, rdoc, psych • https://github.com/ruby/openssl • It’s maintained by @rhenium • Upstream was changed github repository from svn.ruby-lang.org • He aggressively maintains new feature of openssl
  • 17. Security release Releasing a new security version of Ruby is hard. All release maintainer are volunteers. But If your Ruby supports Default gems/Bundled gems, You can upgrade these gems without upgrading ruby interpreter. Upgrading Ruby is hard. Upgrading Gems is easy(er)
  • 19. Current status of psych and rdoc I moved canonical repository under the ruby organization. Our official tracker named “bugs.ruby-lang.org” is high threshold. But GitHub resolve this by pull requests. VS
  • 21. Inside Bundled gems • We bundled *.gem and unpacked files to tarball package for Bundled gems. • `make install` installed Bundled gem your box. • It was installed by `tool/rbinstall.rb` on Ruby core repository. • You can see list of Bundled gems via `gems/bundled_gems`
  • 22. List of bundled gems on Ruby 2.5 • did_you_mean • test-unit • minitest • net-telnet • power_assert • rake • xmlrpc
  • 23. Cross-compilation feature We still have these concerns. • We couldn’t support to compile C extension on Bundled gems. • Bundled gems couldn’t support cross compilation. Ex. We need to make Date gem to bundled gem before extracted from ruby core.
  • 24. We can test to bundled gems now I created task for bundled gems named `test-bundled-gems` ~/D/g/r/ruby.trunk (trunk) > mk -C .x86_64-darwin test-bundled-gems updating did_you_mean ... HEAD is now at 982b11a... Version bump to 1.1.2 (snip) updating xmlrpc ... HEAD is now at aa29de3... bump version to 0.3.0 ./miniruby -I../lib -I. -I.ext/common ../tool/runruby.rb --extout=.ext -- --disable-gems -C ".." bin/gem install --no-ri --no-rdoc --install-dir .bundle --conservative "minitest:~> 5" 'test-unit' 'rake' 'hoe' 'yard' 'pry' 'packnga' testing did_you_mean gem (snip) DidYouMean version: 1.1.2 Run options: --seed 9770 # Running: ................................... Fabulous run in 0.043525s, 804.1356 runs/s, 3009.7645 assertions/s. 35 runs, 131 assertions, 0 failures, 0 errors, 0 skips …
  • 26. Gemification for standard library https://bugs.ruby-lang.org/issues/5481 • We extracted stdlibs like net-telnet, xmlrpc, rake to bundled gems. • These are extracted under the https://github.com/ruby/ . And shipped on rubygems.org • Other gems are also extracted at the future.
  • 27. Pros of Gemification(1) • Maintainers can release gem for bugfix, new feature independent with Ruby core. • Easily backport stable version from develop version. Ruby users can use new feature on stable version.
  • 28. Pros of Gemification(2) • If upstream is available on GitHub, Ruby users easily send patch via Pull request. • Ruby interpreter developper can concentrate development Ruby internal.
  • 29. Cons of Gemification(1) • Abandoned and complex dependency on rubygems and bundler. • Maintainers need to maintain ruby core and GitHub repositories both. • It’s hard to maintain compatibility.
  • 30. Cons of Gemification(2) Backport is hard. Rubygems still supports Ruby 1.8. % g show a34fb569e41cd87866e644d92a9df4be89b3cad2 test/rubygems/test_gem_package.rb commit a34fb569e41cd87866e644d92a9df4be89b3cad2 Author: Eric Hodel <drbrain@segment7.net> (snip) --- test/rubygems/test_gem_package.rb +++ test/rubygems/test_gem_package.rb @@ -638,7 +638,7 @@ class TestGemPackage < Gem::Package::TarTestCase e.message io end - tf.close! + tf.close! if tf.respond_to? :close! end def test_verify_empty
  • 32. What’s rubygems RubyGems is a package management framework for Ruby. • rubygems/rubygems.org: • The Ruby community's gem host. • rubygems.org is maintain by infrastructure team of rubygems. It is different team from rubygems cli team. • rubygems/rubygems: • Command line tool of rubygems • Rubygems are created by Seattle.rb
  • 33. Reserved words on rubygems.org Rubygems block reserved name same as standard libraries. Ref. https://github.com/rubygems/rubygems.org/blob/master/ lib/patterns.rb#L10
  • 34. Problem of fileutils You can see: https://rubygems.org/gems/fileutils/versions/0.7 If you install fileutils-0.7, fileutils-0.7 break your ruby environment. Why???
  • 35. fiddle fiddle is standard library for wrapper of libffi. But fiddle was already reserved another implementation(https:// github.com/bsm/fiddle) on rubygems.org I did coordinate to transfer above namespace and override CRuby implementation(https://github.com/ruby/ fiddle) now.
  • 36.
  • 37. What we will do? I offered to transfer ownership of these gems to rubygems.org and overwrite it used by ruby stdlib. My activities for reserved gems in this summer: ・Transfer request to owners of reserved gems. ・Removed gemification gems from blacklist on rubygems.org. ・Override reserved gems by standard libraries.
  • 38. Default gems on Ruby 2.5 bigdecimal (default: 1.3.2) bundler (default: 1.16.0) cmath (default: 0.0.1) csv (default: 0.1.0) date (default: 0.0.1) dbm (default: 1.0.0.beta1) digest (default: 0.1.0) etc (default: 0.2.1) fcntl (default: 0.0.1) fiddle (default: 1.0.0.beta2) fileutils (default: 0.7.2) gdbm (default: 2.0.0.beta1) io-console (default: 0.4.6) ipaddr (default: 1.0.0) json (default: 2.1.0) openssl (default: 2.1.0.beta1) psych (default: 3.0.0.beta3) rdoc (default: 6.0.0.beta2, 5.1.0) scanf (default: 0.0.1) sdbm (default: 0.0.1) stringio (default: 0.0.1) strscan (default: 0.0.1) webrick (default: 1.4.0.beta1) zlib (default: 0.1.0) Current status of Default gems. I’m going to promote following libraries to default gem at Ruby 2.5.0 or 2.6.0 • matrix • digest • ostruct • stringio • logger
  • 40. Reducing Ruby package size •In Ruby 2.5, We added “bundler” to default gems. •Bundler will be integrated RubyGems until Ruby 3.0 releasing. •I will promote all of standard libraries to default gems. •I will promote all of default gems without Rubygems dependencies to bundled gems.
  • 41. Bundle Bundler to Ruby core • Bundler uses rspec. • I made `test-bundler` task that is invoking rspec examples of Bundler. ~/D/r/trunk > mk test-bundler ./miniruby -I../../github.com/ruby/ruby/lib -I. -I.ext/common ../../github.com/ruby/ruby/tool/runruby.rb --extout=.ext -- --disable-gems -C "../../github.com/ruby/ruby" bin/gem install --no-ri --no-rdoc --install-dir spec/rspec --conservative 'rspec:~> 3.5' Run options: exclude {:ruby_repo=>true, :rubygems_master=>true, :git=>"=< 2.14.1", :rubygems=>"=< 2.6.13", :ruby=>"=< 2.5.0", :realworld=>true, :sudo=>true} .......................................................................................................... .......................................................................................................... ....................
  • 42. Migration status of Rubygems and Bundler • rubygems-2.7.0 partly uses bundler feature now. • After bundler-2.0 released, We will target rubygems-3.0 • Ruby 2.5.0 have rubygems(-2.7.2) and bundler(-1.16.0), It helps migration plan of rubygems/bundler. We can get Ruby 3.0 and Rubygems 3.0 and Bundler 3.0 in 2020. So It’s a Ruby 3x3x3.
  • 43. Activated problem for Rubygems • Rubygems have a activated problem with default gems. • https://bugs.ruby-lang.org/issues/13847 $ ruby -ropenssl -e 'p OpenSSL::VERSION' "2.0.5" $ cat Gemfile # frozen_string_literal: true source "https://rubygems.org" gem 'openssl', '2.0.4' $ bundle exec ruby -ropenssl -e 'p OpenSSL::VERSION' /path/to/2.4.1/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:317:in `check_for_activated_spec!': You have already activated openssl 2.0.5, but your Gemfile requires openssl 2.0.4. Prepending `bundle exec` to your command may solve this. (Gem::LoadError)
  • 44. require :into https://bugs.ruby-lang.org/issues/10320 Matz has some concerns about ruby internal. • Conflicts versions of a shared library like libyaml-., libssl-, libffi, etc... • Order of LOADED_FEATURE So, This feature is difficult to implement on current ruby specification now. require 'libfile', into: :Lib
  • 45. What are dependencies of Rubygems? base64 benchmark cgi digest English erb fileutils find io/console monitor net/http net/https openssl optparse pathname pp rbconfig resolv set shellwords socket stringio strscan tempfile thread time timeout tmpdir tsort uri webrick Win32API zlib
  • 46. Does Gemification make happy Rubyists? • It’s heavy to maintain like github triage, gem release, resolve dependency. • We can upgrade standard library without language upgrade. • Ruby developer uses GitHub workflow for default/ bundled gems. 👍👎 👎
  • 48. Summary of Today’s talk • I described about a standard libraries of the Ruby language. • I introduced specification of default gems/bundled gems of Ruby. • I shared current status of Rubygems and Gemification projects. • I shared my plan towards Ruby 3.0.
  • 49. Executive Officer CPO(Chief Productivity Officer) Director of Business Process Re-engineering Office at GMO Pepabo, Inc. @pepabo Hiroshi SHIBATA @hsbt https://www.hsbt.org