9月5日から9日にかけ、Python コア開発者の1グループがスプリントのために Instagram に集まりました。Instagram, Microsoft, そして Python ソフトウェア財団 がスポンサーとなりました。その目的は Python 3.6b1 リリースへ向けて1週間の作業を行うことであり、ちょうど次の月曜日の2016年9月12日は Python 3.6 の feature freeze でした。このスプリントのきっかけは10年前にアイスランドで開催された Need for Speed sprint に端を発し、そこでは Python 2.5 に多くのパフォーマンス改善が行われました。
当時のスプリントは、どこからみても大成功を収めました。参加者全員、彼らが行った作業と議論した内容の両方に達成感がありました。同じ部屋で様々な PEP に関する多くの議論と多くの設計に関する決定が行われました。そこには同じ部屋で一緒に作業をすることによる仲間意識もありました。通常、私たちの多くは年に1度の PyCon US でのみ顔を合わせています。そのときは単純に同じ時間を過ごせない他の催しなどがあります。(これは PyCon での Python 開発スプリントも含んでいます。それは Python に新たにコントリビュートしようとする人たちを助けることにより注力しているからです。よって、今回のスプリントを公けにしていない理由はそのためです。)
定量的な視点からみれば、このスプリントはこれまでにない Python にとって最も生産的な週でした。CPython の GitHub ミラーのグラフによると、9月4日の週の コミット数 はそれまでの7週間分のコミットを足したものよりも多いことが分かります。また 課題管理の視点からは 、62個のオープンされている課題が下回り、全部で166個の課題がクローズされました。
スプリント週間の大半は、様々な PEP のうち、まだ認可されていないものや、まだ完全に実装されていないものを中心とする作業に費やされました。最終的に Python 3.6 の16個の PEP のうち、12個の PEP について、スクラッチから実装されたり、その週の間に作業を完了しました。
- 関数の **kwargs の順番の保持 (PEP 468)
- dict 型にプライベートバージョンの追加 (PEP 509)
- 数値リテラルのアンダースコア (PEP 515)
- ファイルシステムパスプロトコルの追加 (PEP 519)
- クラス属性定義の順番の保持 (PEP 520)
- CPython にフレーム評価 API の追加 (PEP 523)
- (システムの起動中) Linux 上で os.urandom() をブロックさせる (PEP 524)
- 非同期ジェネレーター (PEP 525)
- 変数アノテーションの構文 (PEP 526)
- Windows のコンソールエンコーディングを UTF-8 に変更 (PEP 528)
- Windows のファイルシステムエンコーディングを UTF-8 に変更 (PEP 529)
- 非同期内包表記 (PEP 530)
大きなプロジェクトの中には PEP になっていないものもあります。例えば、いま Python 3.6 は DTrace と SystemTap をサポートします。これは Python を監視したり、イントロスペクションしたりするためのツールが増えることになります。新たな可能性を示す使い方やサンプルについては HOWTO を参照してください。
また CPython はこのスプリントでより省メモリなディクショナリ実装を得られました。新実装は速度を落とすことなく、ディクショナリのメモリ使用量を25%削減し、さらにディクショナリへ追加した順番を保持します。Raymond Hettinger 氏の 提案 に基づき、スプリントの前に INADA Naoki 氏によってパッチが書かれましたが、ディクショナリの内部実装を変えることは Python 自身に深い意味をもたらすとしてスプリント中にレビューされて多くの議論が行われました。最終的には、そのパッチは認可され、直接 PEP 468 を認可されたものとし、PEP 520 を単純化しました。
スプリント期間中に行われた多くの作業は言語やライブラリの改善だけではなく、パフォーマンス改善にもつながりました。OS X 上の Python 3.5.2+ と 3.6b1+ での 簡単なパフォーマンス比較 は、2桁の速度改善が珍しくなく 3.6 が全般的に速いことを示しています。Windows 10 で計測した類似のベンチマークにおいても類似のパフォーマンス改善がみられたことが報告されました。
スプリントの参加者に深い感謝を述べます。以下に参加者をアルファベット順で一覧にします。彼らが参加できるように資金協力してくれた組織も併記しています。彼らの大半は参加するために旅行して、米国のレイバー・デー (Labor Day) の祝日を家族と過ごすことを諦めました。2つの大陸の3ヶ国から参加されていました。 (実際には他の大陸や他の国へもっと多くの人を招待しましたが、みんなが参加できたわけではありませんでした。)
- Brett Cannon (Microsoft)
- Ned Deily
- Steve Dower (Microsoft)
- Larry Hastings
- Raymond Hettinger
- Senthil Kumaran
- Łukasz Langa (Instagram)
- R. David Murray
- Benjamin Peterson
- Davin Potts
- Lisa Roach (Cisco)
- Guido van Rossum
- Yury Selivanov (magic.io)
- Gregory P. Smith (Google)
- Eric Snow (Canonical)
- Victor Stinner (Red Hat)
- Zachary Ware