組み込みスクリプト言語
以下は、アプリケーションで使用するための、適度に成熟したオープンソースの組み込みスクリプト言語のリストです。 スクリプト言語の定義を広げると、Datalogの実装も含まれます。 あなたのコードの残りの部分に適用される強いコピーレフト・ライセンス(GNU GPLなど)を持つ項目は、警告として強調されています。
プロジェクト名/リンク | Stars | 実装言語 | GC | ライセンス | 備考 |
---|---|---|---|---|---|
AbcDatalog | 28 | Java | JVM's GC | 3-clause BSD | Datalogをインプリメントしています。 |
AngelScript | none | C++ | Ref. counting + cycle-detecting tracing GC | zlib | C++そのものに似た静的型付けされた中括弧言語です。 |
Anko | 1.3k | Go | Go's GC | MIT | Goに似た構文を持つスクリプト可能なインタプリタです。 |
ArkScript | 500 | C++ | None (resource release is destruction + optional manual MM) | MPL 2.0 | 小さな関数型Lispライクなプログラミング言語。 バイトコードコンパイラとVMが分離している。 |
Atlast | 18 | C | None (manual MM) | Public domain | 元々Autodesk社で開発されたForthの方言です。 |
BeanShell | 745 | Java | JVM's GC | Apache License 2.0 | 組み込み可能な小型のJavaソースコードインタープリタです。メソッドクロージャのような特定の拡張を持つJavaコードを理解することができます。 |
Boron | none | C | Tracing | LGPL 3+ | Rebolに似た埋め込み型スクリプト言語。 |
Cascalog | 1.4k | Clojure | JVM's GC | Apache License 2.0 | Datalogをインプリメントしています。 |
CircuitPython | 3.6k | C | Tracing | MIT | MicroPythonのフォークで、多くのマイクロコントローラでAPIが統一されるように設計されています。 |
ChaiScript | 2.8k | C++ | Ref. counting | 3-clause BSD | ヘッダのみのC++14インタプリタライブラリです。 |
Chibi Scheme | 1.1k | C | Tracing | 3-clause BSD | インプルメントR7RS小型。 |
CHICKEN Scheme | none | C | Tracing | 3-clause BSD | R5RSを実装しています(一部変更)。R7RSのサポートは現在進行中です。CHICKENの埋め込み例. |
Clasp | 2.3k | Common Lisp, C++ | MPS GC (Boehm-Weiser also supported) | LGPL 2+ | C++と統合された完全なCommon Lispの実装。コード生成にLLVMを使用し、C++アプリケーションやライブラリと密接に統合される。 |
daScript | 561 | C++ | None (region-based + manual MM?) | 3-clause BSD | 静的型付きパフォーマンス指向スクリプト言語です。 |
Datalog (c-cube) | 239 | OCaml | OCaml's GC | 2-clause BSD | Datalogをインプリメントしています。 |
Datalog (fogfish) | 124 | Erlang | None (no collection inside interpreter state) | Apache License 2.0 | Datalogをインプリメントしています。 |
Datalog (MITRE Corporation) | none | C | Tracing (Lua's GC) | LGPL 2+ | Datalogをインプリメントしています。Lua 5.3の上に実装されており、Luaの関数で拡張することができる。 |
Dhall | 3.9k | Haskell | Haskell's GC | 3-clause BSD | 静的に型付けされた関数型構成言語。 チューリング完全ではありません。 信頼できないコード:ファイルシステムにアクセスできない、静的URLからHTTP(S)でDhallライブラリを取得できる(ただしライブラリはデータにアクセスできない)、DoS攻撃でメモリとCPU時間を消費することができる。 ClojureとRubyの実装が進行中である。 |
Duktape | 5.6k | C | Ref. counting + cycle-detecting tracing GC | MIT | JavaScript E5/E5.1 を実装しています。 |
DWScript | none | Object Pascal (Delphi 2009 or later) | Ref. counting + cycle-detecting tracing GC | MPL 1.1, GPL 3 (JavaScript code generator) | [説明】(https://www.delphitools.info/dwscript)。静的型付けされたDelphi/Free Pascalライクな言語。JavaScriptへのコンパイルが可能。 |
Dyon | 1.6k | Rust | None (Rust-style lifetimes) | Apache License 2.0 or MIT | オプションで、楽観的な(デフォルトで成功する)静的型チェックを備えています。 |
Embeddable Common Lisp | 222 (GitLab) | Common Lisp, C | Boehm-Weiser GC | LGPL 2+ | Common Lispの完全な実装で、共有ライブラリ libecl.so として利用でき、C、C++、その他のアプリケーションに組み込むことができる。 |
ephp | 238 | Erlang | None (no collection inside interpreter state) | LGPL 2.1 | PHP 5.5 のサブセットを実装しています。 |
Erlog | 349 | Erlang | None () | Apache License 2.0 | 標準Prologのサブセットを解釈する。 |
Espruino | 2.6k | C | Tracing | MPL 2.0 | JavaScript ES5のサブセットを、8KiB以上のRAMを持つ組み込みハードウェアに適した方法で実装しています。 |
Expr | 3.8k | Go | Go's GC | MIT | 静的型付けされた式をコンパイルして評価する。 |
Falcon | 61 | C++ | Tracing | GPL 2 or custom | GCはプラガブルです。 |
FTH | none | C | Tracing | 2-clause BSD | オブジェクト、ハッシュ、正規表現、その他の拡張機能を持つForthの方言です。 |
GameMonkey Script | 134 | C++ | Tracing | MIT | C言語バインディングが付属しています。Luaに似ていて、マルチスレッドに対応しています。 |
Gentee | 109 | Go | Go's GC | MIT | 静的型付けされる。 |
gluon | 2.8k | Rust | Tracing | MIT | 静的型付け。Lua、Haskell、OCamlに触発されている。実行中のgluonスレッドはそれぞれ別のヒープを取得する。 |
Goja | 3.9k | Go | Go's GC | MIT | ECMAScript 5.1 を実装しています。 ottoより標準準拠で性能が良い。 |
Golog | 374 | Go | Go's GC | MIT | 標準Prologのサブセットを実装しています。 |
Go-Lua | 2.7k | Go | Go's GC | MIT | Lua 5.2 のサブセットを実装しています。 |
GopherLua | 5.5k | Go | Go's GC | MIT | Lua5.1を実装し、Goのチャンネルをサポートするようになりました。C言語版のデバッグフックといくつかの関数が欠落しています。 |
Gravity | 4.2k | C | Tracing | MIT | Swiftのような構文を持つ、クラスベースのコンカレントスクリプト言語です。 |
Groovy | 4.9k | Java | JVM's GC | Apache License 2.0 | JVMのためのスクリプト言語。Javaの大規模なサブセットはGroovyが有効である。アプリケーションへのGroovyの統合。 |
GNU Guile | none | C | Boehm | LGPL 3+ | "ガイルはほとんどR6RSを実装しています。" |
HashLink | 735 | C | Tracing (lazy sweep) | MIT | Haxe](https://haxe.org/)用のバイトコードインタプリタとベースラインJITコンパイラ(x86/x86_64のみ)です。 |
Io | 2.6k | C | Tracing | 3-clause BSD | プロトタイプベースのOO言語。 |
Janet | 3k | C | Tracing | MIT | Lispの構文を持つ関数型・命令型言語です。 |
JerryScript | 6.6k | C | Tracing | Apache License 2.0 | C99 で書かれた完全な ECMAScript 5.1 インタプリタで、メモリ消費量が少ないように最適化されています。CMakeを使用しています。 |
Jim Tcl | 384 | C | Tracing | 2-clause BSD | Tcl 8.5とほぼ互換性があり、独自の機能が追加されています。 |
Jinx | 273 | C++17 | Ref. counting | MIT | ビデオゲームなどのリアルタイムアプリケーションでの使用を想定して設計されています。 |
JRuby | 3.7k | Java | JVM's GC | Choice of EPL, GPL, and LGPL | Ruby on the JVMの実装です。 |
jsish | none | C | Ref. counting | MIT | JavaScript ES 5.2+のインタプリタです。内部構造はTclに似ており、広範なC APIを備えています。サブインタプリタ、イントロスペクション、SQLiteバインディング、WebSocketをサポートするWebフレームワークなどの機能を備えています。コードは、有効なCとC++です。 |
Jsonnet | 6.3k | C++ | Tracing | Apache License 2.0 | JSONを拡張した機能的な設定言語。 信頼できないコード:ファイルシステムやネットワークにアクセスできず、DoS攻撃でメモリやCPU時間を使い果たす可能性がある。 C、C++、Go、Pythonなどの言語用のバインディングがあるほか、Goのネイティブ実装も別途存在する。 |
JTcl | 52 | Java | Ref. counting | Various BSD-like | Tcl 8.4にJVM用の8.5の機能を一部追加。 |
Jython | 876 | Java | JVM's GC | PSFL (BSD-like) | JVM上でのPythonの実装です。 |
Kawa | none | Java | JVM's GC | MIT | R7RSです。javax.script APIをサポートしています。JavaからScheme式を評価する. |
Ketos | 732 | Rust | None (no heap allocation)? | Apache License 2.0 | 関数型Lispです。 |
LambdaChip | 17 (GitLab) | Scheme | Tracing | GPL 3+ | 組込みシステム用の最適化コンパイラとVM。 R7RSです。 |
Libfawk | none | C | Ref. counting | 3-clause BSD | 多言語対応VMです。 3つの言語用のコンパイラを含む:Fawk(Awk方言)、Fbas(Basic方言)、Fpas(Pascal方言)。 |
Libmawk | none | C | Ref. counting | GPL 2 | Awkをインプリメントしています。 mawk 1.3 をエンベッディング用に再構築したフォークです。 |
LIL | none | C, Object Pascal (separate implementations) | None (no reference support) | zlib | メインラインのTclと互換性のないTclライクな言語です。 |
Lily | 1.1k | C | Ref. counting + GC | MIT | 表現力と安全性を重視した言語。 |
ljs | 146 | C | Tracing | MIT | Lua 5.3、Lua 5.1、LuaJITをC/C++/Java/JavaScriptのシンタックスで使用可能です。Luaのソースコードをljsに変換できる。 |
Lua | 7k | C | Tracing | MIT | 世界で最も人気のある組み込み用スクリプト言語のリファレンス実装です。スクリプトをバイトコードにプリコンパイルすることができます。現在使用されているバージョン5.1~5.3は、完全な互換性はありません。 |
LuaJ | none | Java | JVM's GC | MIT | JMEとJSEのためにJavaで書かれたLua 5.2仕様に準拠したインタープリタです。Luaを直接JVMバイトコードに準拠させる。 |
LuaJIT | 3.8k | C | Tracing | MIT | Lua 5.1と完全な互換性があります。C FFIライブラリを内蔵しています。[性能比較】(https://luajit.org/performance.html)。 |
Lua-ML | 116 | OCaml | OCaml's GC | 2-clause BSD | OCamlの型とモジュールシステムを統合した、組み込み可能なLua 2.5再実装です。標準ライブラリを拡張したり、独自のモジュールで置き換えたりすることが可能です。 |
Luau | 3k | C | Tracing | MIT | Roblox fork of Lua 5.1は、ゲーム用のスクリプト言語として、ユーザーに公開される標準ライブラリのセットを制限し、非特権コードを実行できるようにサンドボックス機能を実装して、段階的な型システムをサポートしています。可能な限り、Lua 5.1との後方互換性を保つと同時に、それ以降のLuaのリビジョンの機能を取り込むことを目指しています。 |
luerl | 930 | Erlang | Tracing | Apache License 2.0 | Lua 5.2を純粋なErlangで実装したもので、goto などの一部の機能がありません。 |
MicroPython | 16.7k | C | Tracing | MIT | Python 3.4 の構文と一部のコアデータタイプを実装しています。 |
Molt | 87 | Rust | Ref. counting | 3-clause BSD | Rustアプリケーションやライブラリのための最小限のTcl実装です。 |
Mond | 311 | C# | CLR's GC | MIT | ジェネレータ、非同期、リモートデバッグ、バインディングAPIを備えた動的型付けスクリプト言語です。 |
Mono | 10.4k | C | Tracing | MIT and other | CLR](https://en.wikipedia.org/wiki/Common_Language_Runtime)をインプリメントする。 |
MoonSharp | 1.3k | C# | CLR's GC | 3-clause BSD and other | Lua 5.2と99%の互換性を持つCLRベースのLua実装。 |
mruby | 5.1k | C | Tracing | MIT | Rubyの軽量な実装です。コンパイル時のパッケージマネージャを備えています。 |
mruby/c | 353 | C | Ref. counting | 3-clause BSD | メモリが限られたマイクロコントローラのための、さらに小さなRubyの実装です。 |
MuJS | none | C | Tracing | ISC | JavaScript(ES5)を実装している。Luaと同様のC言語インターフェイスを持つ。 |
MY-BASIC | 442 | C | Ref. counting + cycle-detecting tracing GC | MIT | プロトタイプベースのOOPを持つBasic方言。 |
Neko | 522 | C | Boehm | MIT | NekoVMは、Haxeを含むいくつかのコンパイラのターゲットとなっています。 |
NetRexx | none | Java | JVM's GC | ICU (BSD-like) | Rexxを実装しています。 |
Never | 327 | C | Tracing | MIT | 静的型付き関数型プログラミング言語。 |
njs | none | C | None (no collection performed) | 2-clause BSD | ES5.1 のサブセットと ES6 の拡張を実装しています。 |
ooRexx | none | C++ | Tracing | CPL | オブジェクトで拡張されたRexxを実装しています。 |
otto | 7.3k | Go | Go's GC | MIT | ES5をいくつかの制限をつけて実装しています。 |
Pascal Script | 400 | Object Pascal | None (manual MM) | modified zlib/libpng-License with mandatory attribution | 静的型付け。Object Pascalのほとんど」を実装している。新しいクラスは定義できない。 |
Pawn | 422 | C | None (no heap allocation) | Apache License 2.0 with a clause to explicitly permit static linking | 小さなフットプリントのVMを持つカールブレイス言語。データを4/8バイトの "セル "として表現する。CPU固有のバイトコードにコンパイルされる。詳細. |
Perl | 1.6k | C | Ref. counting | Artistic License or GPL 3 | Perlを別のアプリケーションに組み込む |
pForth | 513 | C | None (manual MM) | Public domain | フォースの方言。 |
PH7 | 475 | C | Ref. counting | SPL or proprietary | PHP 5.3 のサブセットを実装し、UTF-8 のネイティブサポートなどいくつかの変更を行っています。 |
PicoC | 1.4k | C | None (manual MM) | 3-clause BSD | 静的型付け。C言語のサブセットを解釈する。 |
Picol | 22 | C | None (no reference support) | 2-clause BSD | Tclの限定的な方言のためのヘッダのみのライブラリインタプリタです。 |
pocketlang | 1.4k | C | Tracing | MIT | Rubyに構文的に似ている小さな言語です。 埋め込み例. 性能比較. |
Python | none | C | Ref. counting + cycle-detecting tracing GC | PSFL (BSD-like) | 別のアプリケーションにPythonを埋め込む。 |
gmqcc/qcvm | 138 | C++ | None (no dynamic memory allocation) | MIT | QuakeCコンパイラとVMです。 |
QuickJS | 6.1k | C | Ref. counting + cycle-detecting tracing GC | MIT | ES2019のほぼ全てとES2020の多くを実装した小さな組み込みJavaScriptインタプリタです。 |
Quirrel | 73 | C++ | Ref. counting | MIT | Squirrelに新機能を追加したフォークです。 |
Red | 5.1k | Rebol, Red, Red/System | Tracing | 3-clause BSD, BSL | レボルの末裔。 libRed経由で組込み可能。 クロスプラットフォームのネイティブGUIシステムを備えています。 メモリ使用量を少なくすることを意図している。 |
Rhai | 2.8k | Rust | None (Rust-style lifetimes) | MIT or Apache License 2.0 | ChaiScriptにインスパイアされたRust用の組み込みスクリプト言語です。 |
Ring | 1.1k | C | Tracing | MIT | 大規模な標準ライブラリとGILレスマルチスレッドを備えた組込み型アプリケーションプログラミング言語です。 |
Ruby | 20.4k | C | Tracing | Choice of 2-clause BSD, Ruby license, GPL 2 | 組み込み可能なオブジェクト指向のスクリプト言語。CでRubyを動かす。 |
Rune | 1.2k | Rust | Apache-2.0, MIT licenses found | Rustのための埋め込み型動的プログラミング言語。 | |
s7 | none | C | Tracing | 3-clause BSD | R5RS/R7RSのサブセットを実装している。TinySchemeから派生した。 |
sci | 1.1k | Clojure | host VM's GC | EPL | ClojureとClojureScriptのためのClojureのサブセットのためのインタプリタです。 |
SGScript | 63 | C | Ref. counting + tracing CG | MIT | 特徴として、ビルトインデータシリアライズフォーマット、コルーチン、クラスベースOOP、サンドボックス評価、ビルトインデバッガとプロファイラがあります。 |
Shine | 209 | C | Tracing | MIT | Luaをベースに安全性と表現力を追加した言語で、LuaJITのフォークとして実装されています。 |
SquiLu | 71 | C++ | Ref. counting | MIT, some extensions LGPL or GPL | Squirrelのフォークです。JavaScriptとC/C++のサブセットを受け入れるように構文を変更。文字列のパターンマッチやグローバルなテーブル操作関数など、Luaの機能を実装しています。データベースアクセス(SQLite3, MySQL, PostgreSQL)、ソケットなどの拡張機能を追加。 |
Squirrel | 805 | C++ | Ref. counting | MIT | LuaとJavaScript/Pythonに触発された言語です。Luaに似たC++のAPIを持つ。LuaのトレースGCの代わりに参照カウントを使用し、カーリーブレース構文、クラスベースのビルトインOOP、ゼロインデックスの配列などでLuaと差別化を図っている。 |
Starlark (Go) | 2k | Go | Go's GC | 3-clause BSD | 設定用のPythonの小さな方言です。 チューリング完全でない。 信頼できないコード:ファイルシステムやネットワークにアクセスできない、メモリやCPUを使い切ってDoS攻撃を行うことができる。 スペック。 |
Starlark (Java) | none | Java | JVM's GC | Apache License 2.0 | JVMのためのStarlark。 オリジナルの実装です。 |
Starlark (Rust) | 190 | Rust | ? | Apache License 2.0 | ラストでスターラーク。 |
Tcl | none | C | Ref. counting | Tcl license (BSD-like) | 豊富なC APIを持つ組み込み可能な汎用スクリプト言語です。Tkと呼ばれるクロスプラットフォームのGUIツールキットを備えています。CアプリケーションにTclを埋め込む方法。 |
TinyScheme | none | C | Tracing? | 3-clause BSD | R5RSのサブセットを実装しています。 |
Umka | 839 | C | Ref. counting | 2-clause BSD | 静的型付けされる。 |
Wirefilter | 865 | Rust | None (no dynamic memory allocation) | Wiresharkのようなフィルタのための表現言語。 | |
Wren | 6.4k | C | Tracing | MIT | 小さなクラスベースの性能重視のスクリプト言語。性能比較。 |
zygomys | 1.5k | Go | Go's GC | 2-clause BSD | Goのための組み込みLispです。Clojureに触発されているが、より命令型プログラミングを志向している。Goのサブセットのようなinfixシンタックスレイヤーを持っています。 |
こちらもご覧ください
- cwal:言語のないスクリプトエンジン.
- ゲームスクリプト言語のベンチマークを実施.
- JavaScriptにコンパイル可能な言語.
- Luaにコンパイル可能な言語.
- miniKanren 論理プログラミング言語の実装
- sol — LuaのC++バインディングです。
貢献
あなたの貢献を歓迎します! 新しい言語をリストに追加するには、プルリクエストを提出するか、イシューを作成してください。 私は、積極的にメンテナンスされているか、ほぼ "完了 "している言語実装を捜しています。 VM、バイトコードコンパイラ、標準ライブラリ(もしあれば)は、フリー(libre)ライセンスである必要があります。 オプションのアドオンはどのようなライセンスであってもかまいません。 Datalogの実装は、Datalogのソースコードを解析できなければなりません。単なるEDSLであってはなりません。
ライセンス
ディスクロージャー
このドキュメントのキュレーターはPicolを維持し、Jim Tclに貢献しています。