##はじめに
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から導入される新しいリリースサイクルに関してまとめてみました。サイクルが短くなり、新たな機能がタイムリーに使えるようになるので良かったなと思います。