Rabbit Slide Show

Rubyの配布パッケージの変遷

2026-05-22

Description

[第91回 Ruby関西 勉強会](https://rubykansai.doorkeeper.jp/events/196870)での発表資料です。

Text

Page: 1

Rubyの配布パッケージの変遷
Kazuhiro NISHIYAMA
株式会社Ruby開発
2026-05-22
Powered by Rabbit 4.0.1

Page: 2

self.introduction
西山 和広
github など: @znz
Ruby のコミッター
1/12

Page: 3

Rubyの配布パッケージとは?
今回の話では https://cache.ruby-lang.org/pub/ruby/ で配布され
ている tar.gz などのアーカイブファイルのこと
https://www.ruby-lang.org/en/news/ でのアナウンスで正式リ
リース
アナウンス前にファイルが見えても変わる可能性あり
今は3形式
tar.gz
tar.xz
zip
2/12

Page: 4

最初は tar.gz だけ
matz がリリースしていた頃からの慣習で昔は tar.gz のみ
2007-03-13 1.8.6 で tar.bz2 と zip が増えた
tar.bz2 : サイズが小さいので帯域節約のため
tar.gz, zip : 利便性のため
詳細は [ruby-dev:30562] あたりのスレッドを参照
https://blade.ruby-lang.org/ruby-dev/30562
3/12

Page: 5

tool/make-snapshot
2007-12-26 1.9.0-0 の前あたりからアーカイブ作成が tool/
make-snapshot というスクリプト化
4/12

Page: 6

小ネタ
zip の作成に 7z があれば優先して使うようにした
zip コマンドより 7z の方が圧縮率が良かったため
5/12

Page: 7

tar.xz 対応追加
IRC で tar.xz の方が小さいのであると良さそうという話が何度
か出ていた
ここで 1.8 非対応になりつつ xz 対応
直接のきっかけのやりとりはみつからず
commit 944ff17f8a64092c80131afe2d0ce467b3cacce4
Author: Nobuyoshi Nakada <nobu@...>
Date:
Tue May 13 10:09:41 2014 +0000
make-snapshot: support xz
* tool/make-snapshot (package): support xz.
1.8 or earlier.
no longer runs with
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45934 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
6/12

Page: 8

tar.xz リリース
リリースパッケージとしては以下から
2014-09-19 2.0.0-p576 (from ruby_2_0_0)
2014-09-19 2.1.3 (from ruby_2_1)
2014-10-27 1.9.3-p550 (from ruby_1_9_3)
(ruby 2.2 は最初から)
(cache.ruby-lang.org は 2015-07-25 になってしまっていたので、
日付は https://gist.github.com/unak/3038095 から)
7/12

Page: 9

tar.bz2 削除
それぞれの形式の目的
tar.bz2, tar.xz : サイズが小さいので帯域節約のため
tar.gz, zip : 利便性のため
bz2 より xz の方がサイズが小さく展開も速い
xz はまだ (当時) 標準でインストールされていない Linux 環境もあった
互換性しか残す理由がない
8/12

Page: 10

3.0 から tar.bz2 なし
How about stopping new *.tar.bz2 releases?
https://bugs.ruby-lang.org/issues/16483
で提案して 2020-12-08 3.0.0-preview2 から tar.bz2 なし
preview1 には間に合わなかった
9/12

Page: 11

bz2 削除対応
https://github.com/ruby/actions のアーカイブ作成の GitHub
Action での対応
バージョンをみて tar.bz2 を除外するオプションを tool/make-snapshot に
指定
https://github.com/rbenv/ruby-build などの外部への影響もあった
10/12

Page: 12

最近の追加対応
アーカイブ作成の GitHub Action が https://github.com/ruby/ruby
に移植された
tar.bz2 対応が残っていたが今は 3.3 以降のみサポートなので不要
対応コードを削除
11/12

Page: 13

まとめ
Ruby のリリースアーカイブ形式
tar.gz のみ → tar.bz2, zip 追加 → tar.xz 追加 → tar.bz2 削除
追加は簡単
削除は大変
関係者との調整
影響範囲の考慮
tar.zst (Zstandard) の追加はどうかなと思ったことがあるけど、
削除の大変さを考えると気軽に追加提案はできなくなってし
まった (圧縮率も xz を置き換えるほどではない)
Powered by Rabbit 4.0.1
12/12

Other slides