実行可能ファイルのサイズによる埋め込み言語の比較

私のSDKプロジェクトの1つでは、最終的なバイナリファイルのサイズへの影響が最も少ないが、それでも優れた機能を提供するスクリプトを追加する必要がありました。これにより、この記事で説明するプロジェクトが発生しました。以来、注意してください SDKには特定の要件があり、それらは部分的にスクリプト言語に転送されたため、かなりよく知られている埋め込みプログラミング言語の一部はプロジェクトに参加しませんでした(ただし、比較のためにLuaが含まれています)。



プロジェクトのウェブサイトはこちらから入手できます現時点では、私個人としては、Chibi-Schemeが勝者であるとすぐに言います。カットの下で興味のある人のための詳細。



要件は次のとおりです。



  • 最大の移植性(C / C ++のみ)。
  • 十分に強力な型指定(オレンジやリンゴを追加できない)のため、ECMAScriptの実装は考慮されませんでした。
  • スクリプト自体を最小化する(たとえば、すべての改行を安全に削除できるようにする)という利便性のために、Forth、Lua、およびPythonの実装は考慮されていませんでした。
  • 商用プロジェクトフレンドリーライセンス。


最初のリストは、考えられるすべての埋め込みスクリプトを考慮に入れようとしているプロジェクトから取得されました。https//github.com/dbohdan/embedded-scripting-languagesおそらくリストは完全ではなく、上記の要件を満たすことができる追加のスクリプトが含まれていません。 ..。そのようなことをご存知の場合は、PMまたはコメントでお知らせください。



すべてのプログラミング言語のテストコードには、「Hello」を追加する関数の作成と呼び出し、および「world」を返す外部(C / C ++)関数の呼び出しの結果が含まれています。関数コードは、サンプル構文として表に示されています。最終的な実行可能ファイルは、サイズを最適化し、不要なシンボル(GCC -s)をすべて削除してコンパイルされます



, , 8 (Lua ):



()
TinyScheme 86824 (define fn(lambda () (string-append "Hello, " (read))))
Lua 252880 function fn() return "Hello, " .. read() end
Chibi-Scheme 261480 (define fn(lambda () (string-append "Hello, " (read))))
Squirrel 277008 function fn() { return "Hello, " + read(); }
ArkScript 449792 (let fn(fun() (+ "Hello, " (read))))
Gravity 507896 extern var read; func fn() { return "Hello, " + read(); }
Janet 537560 (defn fn[] (string "Hello, " (read)))
ChaiScript 1374976 def fn() { return "Hello, " + read(); }
AngelScript 1923960 string fn() { return 'Hello, ' + read(); }


GitLab-, :



  • TinyScheme R5RS, GIMP. Chibi-Scheme R7RS, . SourceForge SVN trunk-.
  • ChaiScript — , . , , , ( Dell XPS 13 2-3 ). , .
  • Gravity Swift. , , . .
  • Squirrel , ( — ).


Chibi-Scheme , .. Scheme (R7RS) ( Scheme ). , , ( init-7.scm , string-append).



( , Chibi-Scheme C):



res = sexp_define_foreign(*ctx, sexp_context_env(*ctx), "read", 0,
                          [](sexp ctx, sexp self, sexp_sint_t n) -> sexp {
                            return sexp_c_string(ctx, "world", -1);
                          });


:





残念ながら、ドキュメントは豊富ではありませんが、すべてのソースコードにアクセスすることで補われます。さらに、Chibi-Schemeは独自のサークルでよく知られており、他の潜在的な候補者のように、ダンプされたり、最小限のサポートに入れられたりすることはありません。






すべてのコメントを聞いて、前述の要件内の他のYPを検討していただければ幸いです。研究はまだ進行中であり、おそらく勝者は変わるでしょうが、それはすでにあなた次第です。




All Articles