2011年4月30日土曜日

AST (抽象構文木) の変更管理ポリシーの策定

原文はこちら: Formalizing the AST Change Control Policy

Python は、 AST モジュール を使用して、ソースコードをコンパイルした形で表現される AST (抽象構文木) を見えるようにしています。AST モジュールを使用すると、ソースコードを構文解析してバイトコードにコンパイルされる途中の過程で、ユーザが AST で表現されたものを操作したり検査したりできます。

Python コードの構文や意味論は、 言語リファレンス で定義されていますが、AST モジュールは、CPython の実装における詳細であり、他の Python 実装で実装される必要があるわけではありません。

AST の互換性


(これまでのところ、raw バイトコードというより) AST で動作する CPython オプティマイザを書き直す 作業 の一環として、Eugene Toder は AST の構造を変更する必要がありました。CPython の実装のように、後方互換性のポリシーが AST に適用されるものかどうか、すぐに分からないので、Eugene は python-dev で 質問しました 。AST が変更されるときに後方互換性を保証する必要はありますか?

その互換性は 必要ない という合意になりました。AST モジュールには定数 ast.__version__ があります。これは使用する AST のバージョンに依存してその動作が変わることをユーザへ伝えるコードです。実装に特化したモジュールにとってはこの情報が十分な互換性と考えられました。

他の Python の実装


実際の事実として、Jython と IronPython 双方のメンテナは、彼らのプロジェクトのそれぞれの実装も AST モジュール、またはその機能を提供するモジュールと互換性があることを指摘しました。たとえそうでも、彼らはそのことから AST モジュールを凍結すべきだという考えではありませんでした。そして、AST が互換性のない方法で変更されても ast.__version__ という定数も変更されるのであれば十分だと考えています。

議論になったポイントの1つは、他の実装の AST 表現が CPython と互換性があることを保証するのに便利な test_ast.py のテスト一式です。 test_ast.py のカバレッジを上げることは、Python の内部構造に関わりたい人にとって良いプロジェクトになります!

この後どうなるの?


議論を起こした パッチ はまだ CPython に取り込まれていません。そのため、しばらくは何も起きません。しかし、そのパッチがコミットされると、AST は互換性のない方法で変更する 予定 です。 ast.__version__ 定数は、このことを反映して変更します。そのため、ユーザコードでも分かりますが、変更が必要になります。一般的にこの内容は将来的に AST の変更を扱う方法になるでしょう。

Python の開発者は、AST がどのぐらい広く使われているか、このポリシーの変更がどのぐらい影響するのかに関心があります。もし、この変更が影響を及ぼすコードをもったユーザがいたら、 python-dev の議論 に参加されることをお奨めします。

2011年4月29日金曜日

Thomas Heller が ctypes メンテナを辞任

原文はこちら: Thomas Heller Steps Down as ctypes Maintainer

Python の開発コミュニティは ctypes メンテナである Thomas Heller から長い間、恩恵を受けています。今月の初め、Thomas は Python 2.5 以来、彼のホームであった CPython プロジェクトの ctypes から 去ることを発表しました

私は Thomas と話す機会があり、彼が Python と共に歩んだ歴史と参加した ctypespy2exe プロジェクトについて尋ねてきました。

Python


1999年に遡ります。Thomas は、Python を学ぶための情報源を探していたところ Mark Lutz の Programming Python を手に入れて、すぐにその言語に夢中になりました。彼は Windows 向けに書いた巨大な C 言語のプログラムの拡張言語として Scheme に置き換えている途中でした。

彼が開発チームに加わった経緯について、彼の最初の CPython (そして、オープンソース一般) への貢献は、 distutils に対する Windows 関連の小さなパッチでした。 distutils への彼の興味は、最終的に Windows インストーラをポイント・アンド・クリックで作成する bdist_wininst コマンドを作成することにつながりました。そこから Greg Ward は彼を python-dev グループに招待し、最終的に彼はコミット権を得ました。

py2exe


多くの Windows ユーザーと同様に、彼も1つの実行ファイルとして包まれた Python アプリケーションをデプロイする必要性がありました。この問題に対する初期のアプローチは、Python の著名人である Fredrik Lundh の squeeze と Christian Tismer の sqfreeze を参考にしました。そして、Thomas は Gordon McMillan の Installer プロジェクトへ複数のパッチを投稿しました。

彼は distutils に興味があったので、パッケージングライブラリの拡張機能に Installer が移植できないかを検討しました。しかし、結局は既存の distutils フレームワークを活用するためにそのソースを書き直すことになりました。最終的に、彼はそのプロジェクトを py2exe というシンプルで分かりやすい名前にしました。

ctypes


ctypes のアイディアは、当時 pywin32 が提供していたものを超える要求から出てきたものです。さらに彼の Scheme での作業は Windows API へのインタフェースを必要とし、それは彼の Python での作業においても全く同じものでした。そのため、彼は自分のプロジェクトをやり続けたかった。

ctypes は、Thomas がそのプロジェクトを公開してほしいという数え切れない要望を受け取ったことから、2003年の Python 2.3 リリースにあわせて最初のリリースを公開しました。彼の Starship ページ には小さな個人プロジェクトに使われているライブラリのように説明されていますが、このライブラリは、たちまちに広く使われるようになりました。

彼はもともと Windows 上でこのプロジェクトを開始しましたが、すぐに Linux 移植の要望を聞くようになり、コミュニティが彼を支援する形になりました。Linux 移植は libffi を導入しました。彼もまた Windows 上での低レベル実装を置き換えるために libffi を使い始めました。

2006年に Python 2.5 の標準ライブラリとして受け入れられた ctypes 1.0 がリリースされました。彼の数年間に及ぶ開発と年間何度もリリースを行う活動の結果、Python と共に提供される ctypes はデフォルトとして広くユーザに使われています。

今日の ctypes が在るのは、多くの人が関わってくれた結果です。Thomas は関わってくれた全ての人に感謝していて、特に Robin Becker へお礼を述べます。Robin は、プロジェクトの初期段階で尽力され、知識と励ましの双方を提供してくれました。

ctypes の新たなメンテナ募集


Thomas が長年かけてがんばってくれた後に、このプロジェクトが停滞するのを我々は見たくありません。あなたが C 言語の経験をもち Python プロジェクトを支援する時間があるなら、コミュニティはあなたの貢献に深く感謝します。新しい 開発者ガイド を調べた上で詳細は バグトラッカー を検索してください。

更新: リンクを修正しました。

2011年4月28日木曜日

チーム紹介: Benjamin Peterson

原文はこちら: Meet the Team: Benjamin Peterson

この記事は、Python コア開発チームを手短かに紹介する "チーム紹介" シリーズの1つです。

名前:Benjamin Peterson
所在地:アメリカのミネソタ州
ホームページ:http://benjamin-peterson.org
ブログ:http://pybites.blogspot.com

Python はどのぐらい使っていますか?

3.5年です。

コアコミッタになってどのぐらいですか?

この3月25日でちょうど3年です。

コア開発者として始めたときはどうでしたか?最初のコミットを覚えていますか?

私の最初の提案は、個人的に Guido 自身によって却下されました 。運が良いことに、私は強く主張して、いくつかのパッチが受け入れられました。最初のコミットは Misc/ACKS ファイルの順番を並び替えたものだと思います。

いま開発しているのは Python のどの分野ですか?

パーサ、コンパイラ、インタプリタのコアが好きですが、Python のコア開発の全ての分野に手を出していると知られています。但し Windows 以外ね!

Python のコア開発を行っていないときは Python でどんなことをしますか?

Python で Python インタープリタ (http://pypy.org) を実装しています!このように、私は心の底から Python 実装者なんです。:) Python 2 と 3 の互換ライブラリである six (http://pypi.python.org/pypi/six) の開発者でもあります。

プログラミングをしていないときは何をしていますか?

音楽を創ったり、クラリネットを吹いたり、数学の本を読みます。時々ちょっとしたハイキングにも出かけます。

2011年4月27日水曜日

Python 2.7 と 3.x における段階的な廃止プロセス

原文はこちら: Deprecations between Python 2.7 and 3.x

最近の python-dev の議論 で、Python 2.7 から Python 3.x の最新バージョンへ移行するときに遭遇する、いまの Python の段階的な廃止プロセスのポリシーに関する問題が浮き彫りになりました。この問題の結果として、Python ユーザが古いバージョンを調べずに Python 2.7 から 3.x の最新バージョンへ普通に移行するという事実を考慮して、開発チームはいまの段階的な廃止プロセスのポリシーを変更しました。

背景


Python は後方互換性に対して強いコミットメントをもっています。互換性のガイドラインに準拠しない限りどんな変更も認められません。それは正しいプログラムが Python の新しいバージョンで実行できるというのが本質的なところです。しかし、このことは必ずしも可能だとは限りません。例えば、API が明確に分割されていて、他のものに置き換えられる必要がある場合です。そういった状況では、Python は段階的な廃止プロセスのポリシーに従い、1年間の移行期間を設けた上で、その削除される機能を公式に廃止します。移行期間中は、開発者が自分たちのコードを修正できるように廃止予定であることを表す警告を提示しなければなりません。Python の段階的な廃止プロセスのポリシーの詳細は PEP 5 に記載されています。その変更は新しい Python のリリースのみに行われるので、通常はリリース間で18ヶ月間の猶予があります。これは1つのリリースが標準の廃止期間であることを意味します。

このポリシーに対する例外の1つが Python 3 でした。Python 2 から Python 3 へのメジャーバージョンの変更は、特別に後方互換性を壊してでも、Python の開発者が既存ポリシーの範囲内ではシンプルに修正できない課題を是正する機会であることを目的としていました。例えば、デフォルトの文字列を Unicode にすることやリストの代わりにイテレータを返すことです。

並行開発


多くの推計では、Python 3 への移行期間は5年かかると言われています。Python 2 と 3 の並行開発が行われることがありました。

Python 2.7 は Python 2 の最終リリースになります。そのメンテナンス期間は、かなり期間延長されることが合意されています。最終的には、Python の新バージョンへ移行したい開発者は Python 3 へ大きな変化を遂げる必要があります。

ここに1つ問題があります...

廃止機能にびっくり


python-dev のスレッド で、ある特別な C API の関数 PyCObject_AsVoidPtr に注目が集まり、その関数は適切な警告もなく削除されました。さらにこれは遵守すべき段階的な廃止プロセスのポリシーを破るものでした。一体何が起こったのか?

この変更は、古い API (PyCObject) から新たに改善された (PyCapsule) への大きな移行の一部でした。この問題は PyCObject がデフォルトで、実際には Python 2.6 でのみ、その API が利用可能です。そして、Python 2.7 で廃止されました。Python 3.2 では、その API は存在せず新しい PyCapsule が使用されます。Python 2.7 リリース (2010年7月) から Python 3.2 リリース (2011年2月) への廃止期間は約7ヶ月間でした。この廃止期間は最低12ヶ月間よりもかなり短く、開発者が Python リリースの妥当な期間をサポートするのが難しくなります。

3.0 から 3.1 、そして 3.2 へ移行する廃止期間は大丈夫です。廃止期間をもつ Python 3.1 は2010年3月にリリースされて、3.x リリースの途中であり、ほぼ12ヶ月間の廃止期間が有効でした。しかし、実際には開発者にとってその廃止期間が有効ではありませんでした。開発者は Python 2.7 から直接、最新の 3.x バージョン、この場合は 3.2 へ移行して、結果としてこの問題に遭遇しました。これは決して python-dev で意図されたものではなく、PEP5 にも Python の並行バージョンについての記載がありません。どちらのバージョンも開発が行われている状況というのを考慮していませんでした。

さて、どうしよう?


PyCObject/PyCapsule API の非互換は明らかに問題でしたが、その一時的な回避策を講じることは不可能ではありません。しかし、python-dev で対処するには難しい問題であり、少なくとも今回の件がそうでした。全体的にこういったことが起こっているわけではありません。

PyCObject/PyCapsule の特殊な事例のために、この問題は既に存在しているので、対処するために行われたことは十分ではありません。 PyCObject を復活させることは、非互換な機能を追加することになるので、実際には選択肢になりません。しかし、つまらない方法ではあるけれど、どちらの API でも利用できるように適合するコードを書くことはできるというのが一般的な見解でした。実際、Python 3.1 では PyCObject API は PyCapsule API のラッパーとして実装されていました。Python 3.1 の実装がサードパーティ製品の用途に展開できると、それを必要とする者から提案がありました。さらに、開発者の移行を支援するドキュメントとその変更の背景にある理由を記述するために、変更に関する "遡及効果のある" PEP に記載する内容だと合意されました。

もう1つ一般的な注釈として、Python の開発チームは、いまこの問題に気付いて再発しないように取り組んでいます。Guido はその状況の レビューを投稿しました 。そして、Python 3 は当分の間、段階的な廃止プロセスを保守的なものにすべきだと提案しました。最低限、廃止予定の API は、開発者が Python 2.7 から移行できるように、実際に削除される前段階で長めに保持されます。

さらに間接的には、このスレッドで幅広いユーザに対して Python の変更を効果的且つタイムリーに伝える方法について課題が残りました。まさにこのブログが正面から取り組んでいる課題です。

つまりは、どういうこと?


まず第一に Python の開発者が全てにおいて、いつも正しいというわけではありません。開発者の生活に困難をもたらすという意味ではなく、単に開発期間中に発見されないものもあるということです。

次にその問題を修正することは、良いことよりも悪影響をもたらすので PyCObject の API は復活させません。復活させることで、その変更に関連する開発者を助ける可能性はありますが、全体として互換性の問題をより複雑にしてしまいます。その一方でこの問題に耐えて進歩しなければなりません。今回は教訓が得られたので、次に同じ間違いをすることはありません。

この問題が示したことは、Python の開発者はユーザからの意見を聞きたいということです。互換性はとても重要です。そして、新しいバージョンになるべく問題を発生させずに移行できるようにあらゆる努力が行われています。特に標準ライブラリの開発者は、妥当なレベルの努力で複数の Python バージョンをサポートすべきです。

最後に Python の開発者は 2.7 を放棄していません。新しい機能が取り込まれず、2.8 もリリースされませんが、それでも 2.7 を使用するユーザの視点を大事にしています。2.7 を使用するユーザの準備が整ったときに 3.x への移行を保証することは、Python コミュニティ全体にとって極めて重要なことです。

2011年4月26日火曜日

ポーリングについて futures と並列実行

原文はこちら: Of polling, futures and parallel execution

いまのコンピューティングの大きな関心ごとの1つは省電力です。多くの携帯デバイス (ラップトップ、タブレット、ネットブック) にとって大きな課題です。最新の CPU はアイドル状態のときに段階的に低消費電力状態に入ります。アイドル状態が長くなると、より深い低消費電力状態になりバッテリーの消費量も少なくなります。そのため、たった1回の充電でデバイスのバッテリーライフが長くなります。

低消費電力状態にはポーリングという敵がいます。あるタスクが定期的に CPU を利用するとき、潜在的変化を調べるためにメモリの位置を読み込むような些細な処理であっても、CPU は低消費電力状態から復帰してきて、その内部構造を全てを利用します。単調で定期的な実行状態はその目的の処理を完了してから随分経った後で再び低消費電力状態へ入ります。インテル社は、ポーリングという動作そのものを 電力を浪費する懸念事項と考えています

Python 3.2 は、並列タスクを起動する concurrent.futures モジュール という新たな標準ライブラリを提供します。そのライブラリは並列タスクが終わるのを待ちます。そのコードを詳しく調べてみると、ワーカースレッドやプロセスの一部にポーリングが使用されていることに気付きました。"一部" というのは、 ThreadPoolExecutorProcessPoolExecutor の実装が違っているからです。前者はそれぞれのワーカースレッドがポーリングを行います。一方、後者はワーカープロセスと通信するために使用される1つのキュー管理スレッドのみがポーリングを行います。

ここでは、ポーリングはシャットダウンの手続きが開始されるときを検出するというたった1つの処理のみに使用されていました。呼び出し可能オブジェクトをキューイングする、もしくはキューに追加されたその直前の呼び出し可能オブジェクトからの結果を取得するといったその他のタスクは、同期キューオブジェクトを使用します。これらのキューオブジェクトは、使用している Executor の実装に依存した threadingmultiprocessing モジュールのどちらかにあります。

そのため、私は シンプルな解決方法 を思い付きました。私はこのポーリングを None という組み込みのセンチネルに置き換えます。キューが None を受信すると、待ち状態のあるワーカーは自然に起動してシャットダウンすべきかどうかを確認します。ProcessPoolExecutor では、1つのキューマネジメントスレッドに加えて、N 個のワーカープロセスを起動させる必要があるといった、ちょっと厄介な問題があります。

私の最初のパッチでは、それでもポーリングのタイムアウトを持たせていました。ある時点でワーカーが起動するかなり長いタイムアウトです (10分間) 。コードがバグっているときに発生する長いタイムアウトですが、必要なときに前述したセンチネルを通してシャットダウンの通知を取得できませんでした。好奇心から、私は multiprocessing のソースコードを読み始めて、また別の興味深い見解が得られました。Windows 環境では、ゼロ以外の有限なタイムアウトをもつ multiprocessing.Queue.get() がポーリングを使用します (私は 課題 11668 を登録しました) 。それは 1 ミリ秒のタイムアウトから始まり、ループする毎に増加する高頻度のポーリングを使用します。

それでもタイムアウトを使用していると言うのは確かにそうですが、そのタイムアウトが長く、Windows 環境で私のパッチは役に立ちません。それは 1 ミリ秒毎に起動して実行するように実装されているからです。私の最新のパッチは全くタイムアウトを使用しないので、プラットフォームに関係なく定期的に起動することはありません。

歴史的に説明すると、Python 3.2 以前では、 threading モジュールの全てのタイムアウト機能や、 multiprocessing それ自身が様々なタスクのためにワーカースレッドを使用するので multiprocessing においてもそのほとんどがポーリングを使用します。これは 課題 7316 で修正されました。

2011年4月25日月曜日

2011 言語サミットレポート

原文はこちら: 2011 Language Summit Report

今年の言語サミットは、PyCon が始まる前日の3月10日(木)にアトランタで開催されました。出席者は、 CPython, PyPy, Jython, IronPython, Parrot VM のメンバー、 Fedora, Ubuntu, Debian のパッケージャ、 Twisted プロジェクトの開発者やその他のプロジェクトのメンバーが集いました。

開発ブログ


最優先課題の1つは、PSF の広報ディレクターを務める Doug Hellmann がまさにこのブログの議論を始めました。python-dev メーリングリストの流量の多さ、且つ頻繁に議論が活発になりがちなために、ユーザにとって開発のニュースを知るお手軽な方法としてブログが望まれました。このブログでは、PEP、大きな意思決定、新機能、致命的なバグ修正、そして開発プロセスの中で何が起こっているのかの親しみやすい話題も提供していこうと計画しています。

全ての Python の実装はこのブログに投稿できます。例えば、PyPy は既に 自らのプロジェクトで活発なブログ をもっていますが、彼らは同じようにこのブログにもそのニュースを投稿することに協力的です。関連した議論は python.org ダウンロードページ でも紹介されている代替の実装につながります。そういったリリースもまた python.org のトップページでニュースとして掲載されます。

互換性の警告


Python 3.2 で CPython の参照カウントに依存したコード領域をユーザが検出できるように ResourceWarning を導入しました。この警告はユーザがもっと優れたコードを書くのに役立つだけでなく、安全なクロス VM コードを書けます。さらにクロス VM な互換性のために CompatibilityWarning という新たな警告の型が提案されました。

このアイディアは、最近登録された PyPy の開発者が発見した CPython のバグがきっかけでした。 課題 #11455 は、CPython では、ユーザが __dict__ に非文字列のキーをもつ型を生成できるということを説明します。それは少なくとも PyPy や Jython ではサポートされていません。理想としては、まさに ResourceWarning と同様に、ユーザがそういったケースを検出するために警告を有効にできるようにします。

標準ライブラリの独立化


いま CPython のソースを Subversion から Mercurial へ移行することが完了しました。標準ライブラリを独立したリポジトリへ分割して外部へ出そうというアイディアが復活しました。代替の実装の開発者は、彼らの開発プロセスが大幅に簡略化できるのでこの方針転換に高い関心をもっています。これまでは CPython のスナップショットを取り、C 拡張をピュア Python のバージョンなどに置き換える特殊なパッチを任意の実装に適用しています。

この方針転換は今後 PEP として提案される必要があります。そして、議論の争点の1つとしてバージョン管理をどう行うかが話し合われます。標準ライブラリは任意の実装の外部にあるので、そのライブラリ自身がバージョンをもつようになります。さらにテストも同様にバージョンを考慮する必要があります。

標準ライブラリを外部へ出すことの別の話題は、ピュア Python 実装とそれに対応する C 拡張に関するものでした。PyPy プロジェクトの Maciej Fijalkowski が時間をかけて話しました。モジュールによっては、ピュア Python と C 拡張で少し機能の違いがあります。外部へ出すことの議論が進むにつれて、PyPy プロジェクトのグループは、その利用がどこへも不利益をもたらさないように、そういったモジュールを変更するためにより厳密な方法を提案しました。さらに、C 拡張はパフォーマンスの向上が図れるときのみに作成し、ピュア Python 実装が C 拡張よりも優先されることが決定されました。

パフォーマンスベンチマークサイト


PyPy スピードセンターは、PyPy のパフォーマンス結果を提示するという偉大な功績を収めました。python.org と同じような performance.python.org をどうにかホスティングして、全ての VM を参加させることについて議論しました。パフォーマンスのベンチマークに加えて、その他にもメモリ使用量、テスト結果、言語の互換性なども考慮されます。これまで PyPy 対 CPython の検証を行っていたように、複数の Python 実装と連携するインフラを適合させるように取り組む必要があります。

Allison Randal が役員を務める オレゴン州立大学のオープンソース研究所 に高パフォーマンスのマシンを設置するお話が、新たなスピードセンターが活躍するための場として議論されました。Jesse Noller は、その研究所に設置するハードウェアを手に入れるために尽力することに言及しました。寄付は歓迎しています!

あなたが、またはあなたの組織がこの話題に関連して寄付に興味をもっているなら、 Python ソフトウェア財団 へ連絡して、 寄付のページ で支払ってください。

モラトリアムの解除


CPython 3.3 の開発が開始されると同時に言語の変更に対してのモラトリアムが解除されます。水門は開かれていますが、代替の実装が追いつけるように変化の速度を遅くしている上に、言語の変更は保守的なものになると予想されます。モラトリアムの結果、どの代替の実装も 3.x に追いつけなかったけれど、PyPy と IronPython は最近 2.7 との互換性を保持して、IronPython は 3.x の開発が始まっています。

3.3 に期待されている言語の変更として、承認済みの PEP 380 が楽しみです。この PEP は、あるジェネレータが別のジェネレータへ yield できるようにする yield from <expr> という構文を導入します。これ以外には、特に言語の変更の見通しはありません。

例外属性


その次の話題は、ユーザへ文字列のメッセージを強制させるよりも、もっと良い属性を提供する例外についての迅速な議論がありました。例えば、ImportError は、インポートに失敗したことを調べて解析するよりも、そこへ簡単にアクセスする方が便利です。

この実装は、例外オブジェクトの初期化時にキーワード引数のみを受け取ります。いまでも ImportError ケース のためにパッチが存在します。

貢献者の同意


貢献者の同意についても議論されました。いくつかの電子契約フォームが水面下で進められています。Google の 個別貢献者の同意 は、新たなシステムがうまく機能するようにそういった発想のために参考になるものの1つです。この話題は長期間、議論されてきました。たくさんの人がこの分野の解決策を待っています。さらに、アメリカ以外の地域でも有効な電子契約への移行を保証するために研究が行われています。

Google サマーオブコード


Martin von Löwis は、PSF の傘下にある Google サマーオブコードを紹介する会議を設けました。メンターとしての役割を行わない開発者も望まれます。つまり、研究する学生のためのプロジェクトを提案することです。プロジェクトを提案することが、メンターになることをほのめかすものではないことを覚えておいてください。何らかの方法で協力したいなら、PSF の プロジェクトとメンターの公募 を参照してください。

Distutils


Distutils2 が取り上げられました。Tarek Ziadé は、彼らのスプリントのゴールは Python 3 への移植を完了して、Python の標準ライブラリへの最終的なマージの準備をしていると話しました。さらにマージと共に新たな名前 packaging となります。packaging チームは、Python 2.4 から 3.2 までをサポートする Distutils2 という名前で独立したパッケージを提供することも計画しています。

PyCon スプリントの大きなグループの1つだった packaging スプリントは、大成功でした。彼らの現在の成果は標準ライブラリのマージを待っている Bitbucket にあります。

代替の VM の未来


IronPython は、将来の計画と 3.x リリースを次に控えていることについて話しました。開発プロジェクトが Microsoft から引き継がれ、彼らは PyCon の場で初めてのコミュニティベースのリリースとなる 2.7.0 リリースをアナウンスし、数ヶ月以内に 3.x を対象に開発を始めます。

Jython は最近 2.5.2 がリリースされて 2.6 リリースの計画が始まりました。2.6 と 2.7 の違いはそう大きくないので 2.7 へジャンプすることを提案する人もいましたが、もしジャンプするなら最初のリリースは時間を要するかもしれません。"リリースは早めに、リリースは頻繁に" は、その話し合いの中で出た引用の1つです。彼らは任意の 2.6 から 2.7 の違いを調べた後で 2.6 から 3.x へ進める可能性があります。

開発資金


3.x 開発計画の中で開発資金を使って代替の実装が 3.x へ追いつくのをスピードアップできる可能性があるかという話題がありました。資金を投入することはできるけれども、PSF への提案は、全てが議論される前に作成する必要があります。そういった取り組みの助成金を受けるのに興味がある人たちは PSF の役員会へ連絡してください。

ベースライン Python


Jim Fulton は、彼が "ベースライン" Python と呼ぶものについて議論を始めました。彼が Python アプリケーションをデプロイしてきた経験では、システムの Python は予測不可能で対象とするのが難しいと分かりました。Fedora と Ubuntu/Debian のパッケージングの専門家と一緒に、なぜシステムの Python がそのようにデプロイされるかの理由を知ることができました。

Fedora では、基本となる Python のインストールは Live CD を考慮しています。そのため、少しの依存関係をもつとても小さなインストールで、基本的には最低限の実行環境です。その他の違いは、ディレクトリの配置、distutils のような標準的なライブラリモジュールの除去、またはディストリビューションが提供する廃止されたライブラリです。

すぐに明確な解決策は出ませんでしたが、この関係者はその問題に継続して取り組んでいます。

3.3 の機能


2つの PEP を含めた 3.3 の機能の話題がありました。名前空間パッケージを扱う PEP 382 はそのサイクルのある地点で現れます。さらに distutils のマージの話題の中でも話されました。

柔軟な文字列表現を定義する PEP 393 も議論され、Google サマーオブコードのプロジェクトとして学生の興味をひいていました。その実装に加えて、それらが受け入れられるかを把握するために新たな内部のメモリ特性とパフォーマンスに取り組む必要があります。

Unladen Swallow


Unladen Swallow は、現在 "休息" 状態にあり、CPython 3.3 にそのままは含められません。その分野の専門家がその作業を行えなくなり、さらに発展させるには複数の優秀な専門家を特定する必要があります。議論の中では、開発資金を使って Unladen Swallow を次の段階へ進められるものかどうかが再度、議論されました。この内容に興味があるチームは PSF へ問い合わせてください。

Unladen Swallow は、休息状態であり、今後はどうなるか分かりませんが、このプロジェクトは Python とオープンソースコミュニティ全般に対して大きな貢献を行いました。Unladen Swallow で使用されるベンチマークツールは、例えば、代替の実装をテストするのにかなり便利です。さらに、Unladen Swallow の開発者から LLVM や Clang への貢献は、同様にそういったプロジェクトを助けるものでした。

その他に2つのパフォーマンスのアイデアも Dave Malcolm のインライン関数の提案を含め、手短かに議論されました。Martin von Löwis は彼が開発中の JIT 拡張モジュールを話しましたが、PyPy 開発者はこの種の JIT の有効性に懐疑的な見解を示しました。

非同期フレームワークの道を敷き詰める


その日の最後の議論は、標準ライブラリへ Twisted のライブラリを統合するものでした。主なアイデアは、Twisted やその他の非同期プログラミングフレームワークへ簡単に移行できる asyncore を代替するものでした。

このプロセスは PEP として提案されていて、非同期のイベントループがなかったら、WSGI リファレンスと同じような目的を提供する方法がいくつか提案されています。PEP の著者に加え、Twisted プロジェクトやその他の開発者は、みんなが同意するように取り組む必要があります。

その他の情報


詳細な情報については、CPython 開発者である Nick Coghlan の rough noteshighlights を参照してください。

2011年4月24日日曜日

Python Insider へようこそ!

原文はこちら: Welcome to Python Insider!

Python Insider は Python コア開発チームの公式ブログです。このブログは開発メーリングリストを購読していないユーザ向けにそのメーリングリストで議論された話題の概要を知る方法の1つです。特に Python の開発で積み重ねられてきた変更内容について学ぶのに良いです。Python の開発状況というのは、例えば、最近 Mercurial ホスティングへの移行が完了したこと、新たに承認された Python 拡張提案 (PEP)、API の変更、その他の Python のコア開発で進められている成果の大きなものについて紹介します。

このブログは python-dev メーリングリスト や個々の開発者ブログ (サイドバーのリンクを参照) に置き換わるものというよりも、新たな情報源となるものです。メーリングリストでの議論が完了した後に、もしくはもっと有志のユーザに関わってもらう必要がある段階になったときに、公けに議論する場を提供します。このブログで議論してもらっても良いですが、その話題に興味を持った開発者やユーザが python-dev メーリングリストに参加して、直接その議論や開発に関わってくれることを期待しています。

このブログを躍進する Python と出会う機会にしてください。

購読


Python Insider を購読する方法は以下の通りです。


日本語翻訳を購読する方法は以下の通りです。


協力者、募集


チームには、ブログの記事を書く専門のライターはいますが、Blogger テンプレートのウェブデザインのスキルをもった人がいません。ブログのデザインを格好良くするために手伝ってくれるなら、Doug Hellmann (doug dot hellmann at gmail) まで連絡をください。