Pythonのリリースサイクルが早くなる!


はじめに

Pythonの生みの親であるGuido van Rossum さんが6年半務めたDropbox社を辞めるというニュースが入ってきたのがちょうど一ヶ月半くらい前。転職するわけではなくこのまま引退されるという。御年63歳。長きに渡りお疲れさまでした。既に一年以上前にPythonのBDFL(Benevolent Dictator For Life: 優しい終身の独裁者)の座を降りていて、Pythonの開発に大きな影響はないですが、ちょっと寂しですね。

彼がPythonを作り始めたのが 1989年12月で、ちょうど30年前になります。クリスマス休暇で趣味のプログラミングをしたかった彼はインタープリタ言語を作ろうと思いたち、それが今のPythonとなったわけですね。

1991年に0.9.0として出されたPythonもバージョンを重ね、2000年に2.0、2008年に3.0が出て、Python2とPython3は並行して開発が進みながら、現時点で2.7.17と3.8.0まで来ています。Python2は今年一杯でサポートが終了するので今後はPython3のみがメンテナンス・バージョンアップされていくことになります。ところが、このリリースのサイクルが変わる!という話が出てきたのでそれについてちょっと書いてみます。

元ネタはPEP 602 -- Annual Release Cycle for PythonというPEP(Python Enhancement Proposal)です。

これまでのリリースサイクル

リリース間隔が安定してきた3.1.0以降を書き出してみるとこうなります。

Version Release Date
3.1 2009-06-27
3.2 2011-02-20
3.3 2012-09-29
3.4 2014-03-16
3.5 2015-09-13
3.6 2016-12-23
3.7 2018-06-27
3.8 2019-10-14

多少前後しているところはありますが、パッと見るとだいたい1年半くらいの周期でリリースされているように見えます。そして、あるバージョンの開発はその前のバージョンのβが出た時に始まっているので、全体として開発開始から2年近くかかっている。これはちょっと長すぎる、ということで新しいリリースサイクルの提案が出されて採用されています。

新しいリリースサイクル

まず、今回のリリースサイクルの目玉は「毎年Pythonの新しいバージョンを出す」です。これまで1年半周期だったものを1年周期にして毎年10月に新しいバージョンを出す。そのために、こんな感じのスケジューリングになっています。

フェーズ 期間
開発 5ヶ月(前のβ・RC期間とオーバーラップ)
α版 7ヶ月
β版 3ヶ月
RC版 2ヶ月

開発は前のバージョンと重なっていて、α+β+RCの期間がちょうど12ヶ月なので毎年出せるというわけです。つまりは、前のバージョンの正式版が出たらすぐに次のバージョンのαが出る! これまでは前のリリースからαまで半年以上あったので、これ結構すごいことですね。

わかりにくいかもしれないので図にするとこうなります。

そして、リリース後のサポート期間も明確に決められてこのようになります。

  • リリースから18ヶ月(1年半)はバグ修正を行い2ヶ月に一度のペースでマイナーバージョンアップを行う。Windows、Macに対するバイナリリリース有り。
  • その先、42ヶ月(3年半)は必要に応じてセキュリティフィックスを行う。ソースコードリリースのみ。
  • リリースから5年でサポート終了。

Python3.9はこうなる

Python 3.9のスケジュールは PEP-596 で既に決まっていてこのようになっています。

3.9 開発開始: 2019-06-04 (完了)
3.9.0 alpha 1: 2019-11-19 (完了)
3.9.0 alpha 2: 2019-12-16
3.9.0 alpha 3: 2020-01-14
3.9.0 alpha 4: 2020-02-17
3.9.0 alpha 5: 2020-03-16
3.9.0 alpha 6: 2020-04-13
3.9.0 beta 1: 2020-05-18 (これ以降は新機能の追加なし)
3.9.0 beta 2: 2020-06-08
3.9.0 beta 3: 2020-06-29
3.9.0 beta 4: 2020-07-20
3.9.0 candidate 1: 2020-08-10
3.9.0 candidate 2: 2020-09-14
3.9.0 final: 2020-10-05

見ての通り、最初のα版は既にもう出ています。そして、これまでα版は4つまでしかなかったのが6つになっていて開発期間の短縮をそれで補っているようです。アルファ版としてリリースして使ってもらいながら徐々に機能追加する、いわばアジャイル的なアプローチになったのも良い変化ではないかと思います。

まとめ

Python 3.9から導入される新しいリリースサイクルに関してまとめてみました。サイクルが短くなり、新たな機能がタイムリーに使えるようになるので良かったなと思います。