次の機能を備えたVMを探しています。
- コンパイルされたコードのフットプリントが小さい(200K未満)。
- 外部依存関係はありません。
- Unicode(またはraw)文字列のサポート。
- クリーンなコード/よく整理されています。
- C(99)コード、C++ではありません。
- C/Javaのような構文。
- 演算子/ビット単位:AND/ORなど。
- スレッドのサポート。
- 汎用/ポータブルバイトコード。バイトコードは、エンディアンなどが異なる異なるアーキテクチャでコンパイルされた場合でも、異なるマシンで動作するはずです。
- Barebones、特別なものは必要ありません。基本的な言語のサポートのみ。
- レクサー/パーサーとコンパイラーはVMとは別のものです。プログラムにVMを埋め込み、バイトコードを個別にコンパイルします。
これまで、 Lua、Squirrel、Neko、Pawn、Io、AngelScript ...を確認しましたが、仕様にやや近いのはLuaだけですが、構文はひどく、ビット単位のサポートがなく、コードスタイルもありません。一般的には最悪です。リスとIOは、ほとんどが巨大です。ポーンは問題があり、小さいですが、バイトコードはクロスプラットフォームではなく、実装にはいくつかの重大な問題があります(たとえば、バイトコードはまったく検証されておらず、ヘッダーAFAIKも検証されていません)。
私はそこに適切なオプションを見つけたいと思います。
ありがとう!
更新: Javascriptインタープリターは...インタープリターです。これはバイトコードベースのVMのVMの質問であるため、コンパイラ/バイトコードのVM分離要件です。JSは解釈され、JITによってコンパイルされることはめったにありません。必ずしもJITは必要ありません。また、現在のすべてのECMAScriptパーサーはほとんど小さいです。