LLVM / Parrotの一部を使用した最適化された手法のpythonなど、一部の言語の開発における問題は何ですか。
PyPy、LLVM、Parrot は、共通プラットフォーム開発の主要なテクノロジです。
私はこれを次のように見ます:
- PyPy - Python 用に最適化された VM をビルドして VM を構築するためのフレームワーク
。非常に一般的なソリューションです。プロセスは次のとおりです。
- dynamic_language_code ->
- PyPy フロントエンド ->
- PyPy 内部コード - バイトコード ->
- PyPy の最適化 ->
- PyPy コードを残し、次
のことを行います。一部の VM (jvm など) の PyPy バックエンド
b. 独自の VM を作成するための som キット
c. PyPy 内部コードの処理/実行
- dynamic_language_code ->
このプロセスについて私は正しいですか? Pythonの場合、最適化されたVMがありますか? 特にデフォルトでは、最適化された PyPy コード (ステップ 5.c) 用の VM が組み込まれています。これは Python 用であり、すべての言語処理がそこで停止し、それによって実行されますか?
- オウム- PyPy によく似ていますが、5.a と 5.b はありませんか? 動的処理 ( Parrot Magic Cookies ) のいくつかの内部改善。
ParrotとPyPyはどちらも、共通の動的言語ランタイムを作成するプラットフォームを作成するように設計されていますが、PyPy はさらに多くの VM を作成することも望んでいます。
PyPy の感覚はどこにありますか? より多くの VM を作成する必要があるのは何ですか? (parrot のように) 1 つの VM に集中するのは良いことではありません - PyPy 内部バイトコードまたは Parrot のもののいずれかの共通の 1 つのコード レベルがあるためです。PyPy VM で新しく作成された PyPy バイトコードに変換するのに勝るものはないと思います。
- LLVM - これは PyPy と非常によく似ていますが、VM ジェネレーターはありません。
PyPy と同様のターゲット (ただし VM ジェネレーターはありません) を備えた成熟した適切に設計された環境ですが、低レベルの構造に取り組んでおり、優れた最適化/JIT 手法が実装されています。
これは次のように見えます: LLVMは一般的に使用されますが、Parrotと **PyPy* は動的言語用に設計されています。PyPy / Parrot では、LLVM よりも高レベルであるため、いくつかの複雑な手法を簡単に導入できます。たとえば、高レベルのコードをよりよく理解し、より優れたアセンブラー コードを生成できる洗練されたコンパイラー (人間が合理的な時間で作成できない) などです。 LLVMのもの?
質問:
私は正しいですか?いくつかの動的言語を移植する方が、たとえば Parrot よりも llvm に適している理由はありますか?
Parrot での Python 開発の活動は見られません。python C拡張機能を使用するとオウムが機能しないためですか?同じ問題が PyPy にあります
他の VM が LLVM / オウムに移行したくない理由。例: ruby -> オウム、CLR/ JVM -> LLVM。より洗練されたソリューションに移行する方がよいのではないでしょうか? LLVM は高度な開発プロセスにあり、大企業が投資しています。
バイトコードを変更する必要がある場合、リソースの再コンパイルに問題がある可能性があることはわかっていますが、必須ではありません。古いバイトコードを新しいバイトコードに移植しようとすることができ、新しいコンパイラは新しいバイトコードを生成します独自のバイトコードを解釈したため、フロントエンドはそれをチェックして新しいバイトコードに変換できます)?
たとえば、llvm 内の jvm ライブラリをリンクする際の問題は何ですか (何らかの方法で java/jvm/scala を llvm に移植する場合)?
どこか間違っていたら訂正してもらえますか
いくつかの追加:
=============
明確化
私は、このソフトウェアがどのように構成されているかを理解したいと思っています。