4

私は、PyPy Python インタープリターの翻訳というセクションがあるpypy のドキュメントを読んでいます。しかし、翻訳という言葉の意味がわかりません。コンパイルと同じですか?

ドキュメントには次のように記載されています。

最初に、Python インタープリターの変換に使用するアーキテクチャー用のビルド済み PyPy をダウンロードします。

ここでビルド済みの PyPyはソース コードを参照していますか? ダウンロードしたバイナリに pypy/goal ディレクトリがないためです。その場合、ドキュメントに問題があります。それは誤解を招くものです。

翻訳で作成された pypy-c は、バイナリの bin/pypy と同じものですか?

4

2 に答える 2

3

翻訳という言葉の意味がわかりません。コンパイルと同じですか?

「翻訳」が意味することは、 The RPython Toolchainで詳しく説明されています。コーディング ガイドFAQには、より高度な入門情報もあります。

彼らの要約を要約すると:

  1. 完全な RPython プログラムをコンパイルしてインポートします。
  2. プログラムを動的に分析し、フロー グラフで注釈を付けます。
  3. フロー グラフを下位レベルのフロー グラフにコンパイルします。
  4. コンパイルされたフロー グラフを最適化します。
  5. コンパイルおよび最適化されたフロー グラフを分析します。
  6. フローグラフと解析から C ソースを生成します。
  7. C ソースをコンパイルし、ネイティブ実行可能ファイルにリンクします。

したがって、ステップ 1 は通常の Python コンパイラを使用し、ステップ 7 は通常の C コンパイラ (およびリンカー) を使用し、ステップ 3 と 4 は最適化コンパイラが通常行うことと似ています。しかし、プロセス全体を「コンパイル」と呼ぶのは誤解を招く可能性があります。(また、人々はそれをおそらくシェドスキンが行っていることと似たような意味であると解釈するでしょうが、これは間違いなく正しくありません。)

翻訳で作成された pypy-c は、バイナリの bin/pypy と同じものですか?

最終的にバイナリ ディストリビューションになるのは、翻訳目標でインストール プロセスを実行する場合と基本的に同じです。そうです、goal/pypy-cそしてbin/pypy事実上同じものです。

ここでビルド済みの PyPy はソース コードを参照していますか?

いいえ。これはbin/pypy、バイナリ ディストリビューションのことを指します。ドキュメントにあるように、実際には、CPython を含む任意のgoal/pypy-cPython 2.6 以降、または以前のビルドの残り物などを使用できます。ただし、トランスレータはおそらく標準の PyPy バイナリ ディストリビューションで最も速く実行されるため、それを使用する必要があります。それ以外のことをする正当な理由があります。

于 2013-06-04T02:08:57.303 に答える