Skip to content

組み込みスクリプト言語

以下は、アプリケーションで使用するための、適度に成熟したオープンソースの組み込みスクリプト言語のリストです。 スクリプト言語の定義を広げると、Datalogの実装も含まれます。 あなたのコードの残りの部分に適用される強いコピーレフト・ライセンス(GNU GPLなど)を持つ項目は、警告として強調されています。

プロジェクト名/リンクStars実装言語GCライセンス備考
AbcDatalog28JavaJVM's GC3-clause BSDDatalogをインプリメントしています。
AngelScriptnoneC++Ref. counting + cycle-detecting tracing GCzlibC++そのものに似た静的型付けされた中括弧言語です。
Anko1.3kGoGo's GCMITGoに似た構文を持つスクリプト可能なインタプリタです。
ArkScript500C++None (resource release is destruction + optional manual MM)MPL 2.0小さな関数型Lispライクなプログラミング言語。 バイトコードコンパイラとVMが分離している。
Atlast18CNone (manual MM)Public domain元々Autodesk社で開発されたForthの方言です。
BeanShell745JavaJVM's GCApache License 2.0組み込み可能な小型のJavaソースコードインタープリタです。メソッドクロージャのような特定の拡張を持つJavaコードを理解することができます。
BoronnoneCTracingLGPL 3+Rebolに似た埋め込み型スクリプト言語。
Cascalog1.4kClojureJVM's GCApache License 2.0Datalogをインプリメントしています。
CircuitPython3.6kCTracingMITMicroPythonのフォークで、多くのマイクロコントローラでAPIが統一されるように設計されています。
ChaiScript2.8kC++Ref. counting3-clause BSDヘッダのみのC++14インタプリタライブラリです。
Chibi Scheme1.1kCTracing3-clause BSDインプルメントR7RS小型。
CHICKEN SchemenoneCTracing3-clause BSDR5RSを実装しています(一部変更)。R7RSのサポートは現在進行中です。CHICKENの埋め込み例.
Clasp2.3kCommon Lisp, C++MPS GC (Boehm-Weiser also supported)LGPL 2+C++と統合された完全なCommon Lispの実装。コード生成にLLVMを使用し、C++アプリケーションやライブラリと密接に統合される。
daScript561C++None (region-based + manual MM?)3-clause BSD静的型付きパフォーマンス指向スクリプト言語です。
Datalog (c-cube)239OCamlOCaml's GC2-clause BSDDatalogをインプリメントしています。
Datalog (fogfish)124ErlangNone (no collection inside interpreter state)Apache License 2.0Datalogをインプリメントしています。
Datalog (MITRE Corporation)noneCTracing (Lua's GC)LGPL 2+Datalogをインプリメントしています。Lua 5.3の上に実装されており、Luaの関数で拡張することができる。
Dhall3.9kHaskellHaskell's GC3-clause BSD静的に型付けされた関数型構成言語。 チューリング完全ではありません。 信頼できないコード:ファイルシステムにアクセスできない、静的URLからHTTP(S)でDhallライブラリを取得できる(ただしライブラリはデータにアクセスできない)、DoS攻撃でメモリとCPU時間を消費することができる。 ClojureとRubyの実装が進行中である。
Duktape5.6kCRef. counting + cycle-detecting tracing GCMITJavaScript E5/E5.1 を実装しています。
DWScriptnoneObject Pascal (Delphi 2009 or later)Ref. counting + cycle-detecting tracing GCMPL 1.1, GPL 3 (JavaScript code generator)[説明】(https://www.delphitools.info/dwscript)。静的型付けされたDelphi/Free Pascalライクな言語。JavaScriptへのコンパイルが可能。
Dyon1.6kRustNone (Rust-style lifetimes)Apache License 2.0 or MITオプションで、楽観的な(デフォルトで成功する)静的型チェックを備えています。
Embeddable Common Lisp222 (GitLab)Common Lisp, CBoehm-Weiser GCLGPL 2+Common Lispの完全な実装で、共有ライブラリ libecl.so として利用でき、C、C++、その他のアプリケーションに組み込むことができる。
ephp238ErlangNone (no collection inside interpreter state)LGPL 2.1PHP 5.5 のサブセットを実装しています。
Erlog349ErlangNone ()Apache License 2.0標準Prologのサブセットを解釈する。
Espruino2.6kCTracingMPL 2.0JavaScript ES5のサブセットを、8KiB以上のRAMを持つ組み込みハードウェアに適した方法で実装しています。
Expr3.8kGoGo's GCMIT静的型付けされた式をコンパイルして評価する。
Falcon61C++TracingGPL 2 or customGCはプラガブルです。
FTHnoneCTracing2-clause BSDオブジェクト、ハッシュ、正規表現、その他の拡張機能を持つForthの方言です。
GameMonkey Script134C++TracingMITC言語バインディングが付属しています。Luaに似ていて、マルチスレッドに対応しています。
Gentee109GoGo's GCMIT静的型付けされる。
gluon2.8kRustTracingMIT静的型付け。Lua、Haskell、OCamlに触発されている。実行中のgluonスレッドはそれぞれ別のヒープを取得する。
Goja3.9kGoGo's GCMITECMAScript 5.1 を実装しています。 ottoより標準準拠で性能が良い。
Golog374GoGo's GCMIT標準Prologのサブセットを実装しています。
Go-Lua2.7kGoGo's GCMITLua 5.2 のサブセットを実装しています。
GopherLua5.5kGoGo's GCMITLua5.1を実装し、Goのチャンネルをサポートするようになりました。C言語版のデバッグフックといくつかの関数が欠落しています。
Gravity4.2kCTracingMITSwiftのような構文を持つ、クラスベースのコンカレントスクリプト言語です。
Groovy4.9kJavaJVM's GCApache License 2.0JVMのためのスクリプト言語。Javaの大規模なサブセットはGroovyが有効である。アプリケーションへのGroovyの統合
GNU GuilenoneCBoehmLGPL 3+"ガイルはほとんどR6RSを実装しています。"
HashLink735CTracing (lazy sweep)MITHaxe](https://haxe.org/)用のバイトコードインタプリタとベースラインJITコンパイラ(x86/x86_64のみ)です。
Io2.6kCTracing3-clause BSDプロトタイプベースのOO言語。
Janet3kCTracingMITLispの構文を持つ関数型・命令型言語です。
JerryScript6.6kCTracingApache License 2.0C99 で書かれた完全な ECMAScript 5.1 インタプリタで、メモリ消費量が少ないように最適化されています。CMakeを使用しています。
Jim Tcl384CTracing2-clause BSDTcl 8.5とほぼ互換性があり、独自の機能が追加されています。
Jinx273C++17Ref. countingMITビデオゲームなどのリアルタイムアプリケーションでの使用を想定して設計されています。
JRuby3.7kJavaJVM's GCChoice of EPL, GPL, and LGPLRuby on the JVMの実装です。
jsishnoneCRef. countingMITJavaScript ES 5.2+のインタプリタです。内部構造はTclに似ており、広範なC APIを備えています。サブインタプリタ、イントロスペクション、SQLiteバインディング、WebSocketをサポートするWebフレームワークなどの機能を備えています。コードは、有効なCとC++です。
Jsonnet6.3kC++TracingApache License 2.0JSONを拡張した機能的な設定言語。 信頼できないコード:ファイルシステムやネットワークにアクセスできず、DoS攻撃でメモリやCPU時間を使い果たす可能性がある。 C、C++、Go、Pythonなどの言語用のバインディングがあるほか、Goのネイティブ実装も別途存在する。
JTcl52JavaRef. countingVarious BSD-likeTcl 8.4にJVM用の8.5の機能を一部追加。
Jython876JavaJVM's GCPSFL (BSD-like)JVM上でのPythonの実装です。
KawanoneJavaJVM's GCMITR7RSです。javax.script APIをサポートしています。JavaからScheme式を評価する.
Ketos732RustNone (no heap allocation)?Apache License 2.0関数型Lispです。
LambdaChip17 (GitLab)SchemeTracingGPL 3+組込みシステム用の最適化コンパイラとVM。 R7RSです。
LibfawknoneCRef. counting3-clause BSD多言語対応VMです。 3つの言語用のコンパイラを含む:Fawk(Awk方言)、Fbas(Basic方言)、Fpas(Pascal方言)。
LibmawknoneCRef. countingGPL 2Awkをインプリメントしています。 mawk 1.3 をエンベッディング用に再構築したフォークです。
LILnoneC, Object Pascal (separate implementations)None (no reference support)zlibメインラインのTclと互換性のないTclライクな言語です。
Lily1.1kCRef. counting + GCMIT表現力と安全性を重視した言語。
ljs146CTracingMITLua 5.3、Lua 5.1、LuaJITをC/C++/Java/JavaScriptのシンタックスで使用可能です。Luaのソースコードをljsに変換できる。
Lua7kCTracingMIT世界で最も人気のある組み込み用スクリプト言語のリファレンス実装です。スクリプトをバイトコードにプリコンパイルすることができます。現在使用されているバージョン5.1~5.3は、完全な互換性はありません。
LuaJnoneJavaJVM's GCMITJMEとJSEのためにJavaで書かれたLua 5.2仕様に準拠したインタープリタです。Luaを直接JVMバイトコードに準拠させる。
LuaJIT3.8kCTracingMITLua 5.1と完全な互換性があります。C FFIライブラリを内蔵しています。[性能比較】(https://luajit.org/performance.html)。
Lua-ML116OCamlOCaml's GC2-clause BSDOCamlの型とモジュールシステムを統合した、組み込み可能なLua 2.5再実装です。標準ライブラリを拡張したり、独自のモジュールで置き換えたりすることが可能です。
Luau3kCTracingMITRoblox fork of Lua 5.1は、ゲーム用のスクリプト言語として、ユーザーに公開される標準ライブラリのセットを制限し、非特権コードを実行できるようにサンドボックス機能を実装して、段階的な型システムをサポートしています。可能な限り、Lua 5.1との後方互換性を保つと同時に、それ以降のLuaのリビジョンの機能を取り込むことを目指しています。
luerl930ErlangTracingApache License 2.0Lua 5.2を純粋なErlangで実装したもので、gotoなどの一部の機能がありません。
MicroPython16.7kCTracingMITPython 3.4 の構文と一部のコアデータタイプを実装しています。
Molt87RustRef. counting3-clause BSDRustアプリケーションやライブラリのための最小限のTcl実装です。
Mond311C#CLR's GCMITジェネレータ、非同期、リモートデバッグ、バインディングAPIを備えた動的型付けスクリプト言語です。
Mono10.4kCTracingMIT and otherCLR](https://en.wikipedia.org/wiki/Common_Language_Runtime)をインプリメントする。
MoonSharp1.3kC#CLR's GC3-clause BSD and otherLua 5.2と99%の互換性を持つCLRベースのLua実装。
mruby5.1kCTracingMITRubyの軽量な実装です。コンパイル時のパッケージマネージャを備えています。
mruby/c353CRef. counting3-clause BSDメモリが限られたマイクロコントローラのための、さらに小さなRubyの実装です。
MuJSnoneCTracingISCJavaScript(ES5)を実装している。Luaと同様のC言語インターフェイスを持つ。
MY-BASIC442CRef. counting + cycle-detecting tracing GCMITプロトタイプベースのOOPを持つBasic方言。
Neko522CBoehmMITNekoVMは、Haxeを含むいくつかのコンパイラのターゲットとなっています。
NetRexxnoneJavaJVM's GCICU (BSD-like)Rexxを実装しています。
Never327CTracingMIT静的型付き関数型プログラミング言語。
njsnoneCNone (no collection performed)2-clause BSDES5.1 のサブセットと ES6 の拡張を実装しています。
ooRexxnoneC++TracingCPLオブジェクトで拡張されたRexxを実装しています。
otto7.3kGoGo's GCMITES5をいくつかの制限をつけて実装しています。
Pascal Script400Object PascalNone (manual MM)modified zlib/libpng-License with mandatory attribution静的型付け。Object Pascalのほとんど」を実装している。新しいクラスは定義できない。
Pawn422CNone (no heap allocation)Apache License 2.0 with a clause to explicitly permit static linking小さなフットプリントのVMを持つカールブレイス言語。データを4/8バイトの "セル "として表現する。CPU固有のバイトコードにコンパイルされる。詳細.
Perl1.6kCRef. countingArtistic License or GPL 3Perlを別のアプリケーションに組み込む
pForth513CNone (manual MM)Public domainフォースの方言。
PH7475CRef. countingSPL or proprietaryPHP 5.3 のサブセットを実装し、UTF-8 のネイティブサポートなどいくつかの変更を行っています。
PicoC1.4kCNone (manual MM)3-clause BSD静的型付け。C言語のサブセットを解釈する。
Picol22CNone (no reference support)2-clause BSDTclの限定的な方言のためのヘッダのみのライブラリインタプリタです。
pocketlang1.4kCTracingMITRubyに構文的に似ている小さな言語です。 埋め込み例. 性能比較.
PythonnoneCRef. counting + cycle-detecting tracing GCPSFL (BSD-like)別のアプリケーションにPythonを埋め込む
gmqcc/qcvm138C++None (no dynamic memory allocation)MITQuakeCコンパイラとVMです。
QuickJS6.1kCRef. counting + cycle-detecting tracing GCMITES2019のほぼ全てとES2020の多くを実装した小さな組み込みJavaScriptインタプリタです。
Quirrel73C++Ref. countingMITSquirrelに新機能を追加したフォークです。
Red5.1kRebol, Red, Red/SystemTracing3-clause BSD, BSLレボルの末裔。 libRed経由で組込み可能。 クロスプラットフォームのネイティブGUIシステムを備えています。 メモリ使用量を少なくすることを意図している。
Rhai2.8kRustNone (Rust-style lifetimes)MIT or Apache License 2.0ChaiScriptにインスパイアされたRust用の組み込みスクリプト言語です。
Ring1.1kCTracingMIT大規模な標準ライブラリとGILレスマルチスレッドを備えた組込み型アプリケーションプログラミング言語です。
Ruby20.4kCTracingChoice of 2-clause BSD, Ruby license, GPL 2組み込み可能なオブジェクト指向のスクリプト言語。CでRubyを動かす
Rune1.2kRustApache-2.0, MIT licenses foundRustのための埋め込み型動的プログラミング言語。
s7noneCTracing3-clause BSDR5RS/R7RSのサブセットを実装している。TinySchemeから派生した。
sci1.1kClojurehost VM's GCEPLClojureとClojureScriptのためのClojureのサブセットのためのインタプリタです。
SGScript63CRef. counting + tracing CGMIT特徴として、ビルトインデータシリアライズフォーマット、コルーチン、クラスベースOOP、サンドボックス評価、ビルトインデバッガとプロファイラがあります。
Shine209CTracingMITLuaをベースに安全性と表現力を追加した言語で、LuaJITのフォークとして実装されています。
SquiLu71C++Ref. countingMIT, some extensions LGPL or GPLSquirrelのフォークです。JavaScriptとC/C++のサブセットを受け入れるように構文を変更。文字列のパターンマッチやグローバルなテーブル操作関数など、Luaの機能を実装しています。データベースアクセス(SQLite3, MySQL, PostgreSQL)、ソケットなどの拡張機能を追加。
Squirrel805C++Ref. countingMITLuaとJavaScript/Pythonに触発された言語です。Luaに似たC++のAPIを持つ。LuaのトレースGCの代わりに参照カウントを使用し、カーリーブレース構文、クラスベースのビルトインOOP、ゼロインデックスの配列などでLuaと差別化を図っている。
Starlark (Go)2kGoGo's GC3-clause BSD設定用のPythonの小さな方言です。 チューリング完全でない。 信頼できないコード:ファイルシステムやネットワークにアクセスできない、メモリやCPUを使い切ってDoS攻撃を行うことができる。 スペック
Starlark (Java)noneJavaJVM's GCApache License 2.0JVMのためのStarlark。 オリジナルの実装です。
Starlark (Rust)190Rust?Apache License 2.0ラストでスターラーク。
TclnoneCRef. countingTcl license (BSD-like)豊富なC APIを持つ組み込み可能な汎用スクリプト言語です。Tkと呼ばれるクロスプラットフォームのGUIツールキットを備えています。CアプリケーションにTclを埋め込む方法
TinySchemenoneCTracing?3-clause BSDR5RSのサブセットを実装しています。
Umka839CRef. counting2-clause BSD静的型付けされる。
Wirefilter865RustNone (no dynamic memory allocation)Wiresharkのようなフィルタのための表現言語。
Wren6.4kCTracingMIT小さなクラスベースの性能重視のスクリプト言語。性能比較
zygomys1.5kGoGo's GC2-clause BSDGoのための組み込みLispです。Clojureに触発されているが、より命令型プログラミングを志向している。Goのサブセットのようなinfixシンタックスレイヤーを持っています。

こちらもご覧ください

貢献

あなたの貢献を歓迎します! 新しい言語をリストに追加するには、プルリクエストを提出するか、イシューを作成してください。 私は、積極的にメンテナンスされているか、ほぼ "完了 "している言語実装を捜しています。 VM、バイトコードコンパイラ、標準ライブラリ(もしあれば)は、フリー(libre)ライセンスである必要があります。 オプションのアドオンはどのようなライセンスであってもかまいません。 Datalogの実装は、Datalogのソースコードを解析できなければなりません。単なるEDSLであってはなりません。

ライセンス

CC0

ディスクロージャー

このドキュメントのキュレーターはPicolを維持し、Jim Tclに貢献しています。