You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+13-13Lines changed: 13 additions & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -21,7 +21,7 @@ To sort and filter the list interactively, visit the [webpage](https://dbohdan.g
21
21
| AngelScript |[AngelScript](http://www.angelcode.com/angelscript/)| C++ | Ref. counting + cycle-detecting tracing GC | Zlib | A statically typed curly brace language resembling C++ itself. |
22
22
| Anko |[Anko](https://github.com/mattn/anko/)| Go | Go's GC | MIT | Scriptable interpreter with syntax similar to Go. |
23
23
| ArkScript |[ArkScript](https://github.com/SuperFola/Ark)| C++ | None (resource release is destruction + optional manual MM) | MPL-2.0 | A small functional Lisp-like programming language. Separate bytecode compiler and VM. |
24
-
| Asp |[Asp](https://www.asplang.org/)| C | Ref. counting inside a static memory area | MIT | Python-like. Targets embedded systems. Allows blocking calls in scripts without blocking the application. Runs compiled bytecode. Not related to Microsoft's Active Server Pages. |
24
+
| Asp |[Asp](https://www.asplang.org/)| C | Ref. counting inside a static memory area | MIT | Python-like. Targets embedded systems. Allows making blocking calls in scripts without blocking the main application. Runs compiled bytecode. Not related to Microsoft's Active Server Pages. |
25
25
| Awk |[Libmawk](http://repo.hu/projects/libmawk/)| C | Ref. counting |**GPL-2.0**| Implements Awk. A fork of mawk 1.3 restructured for embedding. |
26
26
| Awk, Basic, Pascal |[Libfawk](http://repo.hu/projects/libfawk/)| C | Ref. counting | BSD-3-Clause | A multi-language VM. Includes compilers for three languages: Fawk (Awk dialect), Fbas (Basic dialect), and Fpas (Pascal dialect). |
27
27
| Basic |[MY-BASIC](https://github.com/paladin-t/my_basic)| C | Ref. counting + cycle-detecting tracing GC | MIT | A Basic dialect with prototype-based OOP. |
@@ -32,10 +32,10 @@ To sort and filter the list interactively, visit the [webpage](https://dbohdan.g
32
32
| C#, other CLR languages |[Mono](http://www.mono-project.com/docs/advanced/embedding/scripting/)| C | Tracing | MIT and other | Implements the [CLR](https://en.wikipedia.org/wiki/Common_Language_Runtime). |
33
33
| ChaiScript |[ChaiScript](http://chaiscript.com/)| C++ | Ref. counting | BSD-3-Clause | A header-only C++14 interpreter library. |
34
34
| Clojure |[sci](https://github.com/borkdude/sci)| Clojure | host VM's GC | EPL-1.0 | An interpreter for a subset of Clojure for Clojure and ClojureScript. |
35
-
| Common Expression Language (CEL) |[cel-go](https://github.com/google/cel-go)| Go | Go's GC | Apache-2.0 |A non-Turing-complete expression language. |
35
+
| Common Expression Language (CEL) |[cel-go](https://github.com/google/cel-go)| Go | Go's GC | Apache-2.0 |Rust implementation of CEL, a non-Turing-complete expression language. |
36
36
| Common Expression Language (CEL) |[cel-python](https://github.com/cloud-custodian/cel-python)| Python | Python's GC | Apache-2.0 | A non-Turing-complete expression language. |
37
37
| Common Expression Language (CEL) |[cel-rust](https://github.com/clarkmcc/cel-rust)| Rust | None | MIT | A non-Turing-complete expression language. |
38
-
| Common Lisp |[Clasp](https://github.com/drmeister/clasp)| Common Lisp, C++ | MPS GC (Boehm-Weiser also supported) | LGPL-2.0-or-later | Full Common Lisp implementation wellintegrated with C++, using LLVM for the code generation, to integrate closely with C++ applications or libraries. |
38
+
| Common Lisp |[Clasp](https://github.com/drmeister/clasp)| Common Lisp, C++ | MPS GC (Boehm-Weiser also supported) | LGPL-2.0-or-later | Full Common Lisp implementation well-integrated with C++, using LLVM for code generation to integrate closely with C++ applications or libraries. |
39
39
| Common Lisp |[Embeddable Common Lisp](https://gitlab.com/embeddable-common-lisp/ecl)| Common Lisp, C | Boehm-Weiser GC | LGPL-2.0-or-later | Full Common Lisp implementation, available as a shared library `libecl.so` embeddable in any C, C++ or other application. |
40
40
| daScript |[daScript](https://dascript.org/)| C++ | None (region-based + manual MM?) | BSD-3-Clause | A statically-typed [performance-oriented](https://dascript.org/#performance) scripting language. |
@@ -45,7 +45,7 @@ To sort and filter the list interactively, visit the [webpage](https://dbohdan.g
45
45
| Datalog |[Datalog (MITRE Corporation)](http://datalog.sourceforge.net/)| C | Tracing (Lua's GC) | LGPL-2.0-or-later | Implements Datalog. It is implemented on top of Lua 5.3 and can be extended with Lua functions. |
46
46
| Dhall |[Dhall](https://dhall-lang.org/)| Haskell | Haskell's GC | BSD-3-Clause | A statically-typed functional configuration language. Not Turing-complete. Untrusted code: can't access the file system, can fetch Dhall libraries over HTTP(S) from static URLs (but libraries aren't allowed to access your data), can use up memory and CPU time for a DoS attack. Has a work-in-progress Clojure and Ruby implementation. |
47
47
| DWScript |[DWScript](https://bitbucket.org/egrange/dwscript/)| Object Pascal (Delphi 2009 or later) | Ref. counting + cycle-detecting tracing GC | MPL-1.1, GPL-3.0 (JavaScript code generator) |[Description](https://www.delphitools.info/dwscript). A statically typed Delphi/Free Pascal-like language. Can compile to JavaScript. |
48
-
| Dyon |[Dyon](https://github.com/pistondevelopers/dyon)| Rust | None (Rust-style [lifetimes](http://www.piston.rs/dyon-tutorial/lifetimes.html)) | Apache-2.0 or MIT |Has optional, optimistic (succeed-by-default) static type checking. |
48
+
| Dyon |[Dyon](https://github.com/pistondevelopers/dyon)| Rust | None (Rust-style [lifetimes](http://www.piston.rs/dyon-tutorial/lifetimes.html)) | Apache-2.0 or MIT |Features optional, optimistic (succeed-by-default) static type checking. |
49
49
| Expr |[Expr](https://github.com/antonmedv/expr)| Go | Go's GC | MIT | Compiles and evaluates statically-typed expressions. |
50
50
| Falcon |[Falcon](http://falconpl.org/)| C++ | Tracing |**GPL-2.0** or custom | The GC is pluggable. |
51
51
| fe |[fe](https://github.com/rxi/fe)| C | Tracing | MIT | Uses a fixed-size memory region. No `malloc`. |
@@ -67,7 +67,7 @@ To sort and filter the list interactively, visit the [webpage](https://dbohdan.g
67
67
| JavaScript |[Duktape](http://duktape.org/)| C | Ref. counting + cycle-detecting tracing GC | MIT | Implements JavaScript E5/E5.1. |
68
68
| JavaScript |[Espruino](https://github.com/espruino/Espruino)| C | Tracing | MPL-2.0 | Implements a subset of JavaScript ES5 in a way suitable for embedded hardware with 8+ KiB RAM. |
69
69
| JavaScript |[Goja](https://github.com/dop251/goja)| Go | Go's GC | MIT | Implements ECMAScript 5.1. Better standard compliance and performance than otto. |
| JavaScript |[GraalJS](https://github.com/oracle/graaljs)| C++, C, Java | JVM's GC | UPL-1.0 | Implements ECMAScript 2022 for GraalVM (HotSpot JVM) using the Truffle framework. |
71
71
| JavaScript |[JerryScript](https://github.com/jerryscript-project/jerryscript)| C | Tracing | Apache-2.0 | A full ECMAScript 5.1 interpreter written in C99 and optimized for low memory consumption. Uses CMake. |
72
72
| JavaScript |[jsish](https://github.com/pcmacdon/jsish)| C | Ref. counting | MIT | A JavaScript ES 5.2+ interpreter. Internally structured after Tcl with an extensive C API. Features include subinterpreters, introspection, SQLite bindings, and a web framework with WebSocket support. The code is valid C and C++. |
73
73
| JavaScript |[MuJS](https://mujs.com/)| C | Tracing | ISC | Implements JavaScript (ES5). Has a similar C interface to Lua. |
@@ -78,14 +78,14 @@ To sort and filter the list interactively, visit the [webpage](https://dbohdan.g
78
78
| Jsonnet |[Jsonnet](https://jsonnet.org/)| C++ | Tracing | Apache-2.0 | A functional configuration language that extends JSON. Untrusted code: can't access the file system or network, can use up memory and CPU time for a DoS attack. Has [bindings](https://jsonnet.org/ref/bindings.html) for C, C++, Go, Python, and other languages, as well as a separate native Go implementation. |
79
79
| Ketos |[Ketos](https://github.com/murarth/ketos)| Rust | None (no heap allocation)? | Apache-2.0 | A functional Lisp. |
80
80
| LIL |[LIL](http://runtimeterror.com/tech/lil/)| C, Object Pascal (separate implementations) | None (no reference support) | Zlib | A Tcl-like language incompatible with mainline Tcl. |
81
-
| Lily |[Lily](https://github.com/FascinatedBox/lily/)| C | Ref. counting + tracing GC | MIT | A language focusing on expressiveness and safety. |
81
+
| Lily |[Lily](https://github.com/FascinatedBox/lily/)| C | Ref. counting + tracing GC | MIT | A language focused on expressiveness and safety. |
82
82
| ljs |[ljs](https://github.com/mingodad/ljs)| C | Tracing | MIT | Lua 5.3, Lua 5.1, and LuaJIT with a C/C++/Java/JavaScript syntax. Can convert Lua source code to ljs. |
83
83
| Lua |[Go-Lua](https://github.com/Shopify/go-lua)| Go | Go's GC | MIT | Implements a subset of Lua 5.2. |
84
84
| Lua |[GopherLua](https://github.com/yuin/gopher-lua)| Go | Go's GC | MIT | Implements Lua 5.1 with the added support for Go's channels. Lacks the debug hooks and several functions from the C version. |
85
85
| Lua |[Lua](http://lua.org/)| C | Tracing | MIT | The reference implementation of what is likely the world's most popular embedded scripting language. Allows you to precompile scripts to bytecode. Versions 5.1-5.3, which are the ones used today, are not fully compatible with each other. |
86
86
| Lua |[LuaJ](https://sourceforge.net/projects/luaj/)| Java | JVM's GC | MIT | A Lua 5.2 spec-compliant interpreter written in Java for JME and JSE. Complies Lua directly to JVM bytecode. |
87
87
| Lua |[LuaJIT](http://luajit.org/)| C | Tracing | MIT | Fully compatible with Lua 5.1. Has a built-in C FFI library. [Performance comparison](https://luajit.org/performance.html). |
88
-
| Lua |[Lua-ML](https://github.com/lindig/lua-ml)| OCaml | OCaml's GC | BSD-2-Clause | Embeddable Lua 2.5 reimplementation that integrates with OCaml type and module system. It's possible to extend or even replace the standard library with your own modules. |
88
+
| Lua |[Lua-ML](https://github.com/lindig/lua-ml)| OCaml | OCaml's GC | BSD-2-Clause | Embeddable Lua 2.5 reimplementation that integrates with OCaml type and module system. It is possible to extend or even replace the standard library with custom modules. |
89
89
| Lua |[Luau](https://luau-lang.org/)| C | Tracing | MIT | Roblox [fork of Lua 5.1](https://luau-lang.org/why) as a scripting language for games to support a gradual type system as well as limiting the set of standard libraries exposed to the users and implements extra sandboxing features to be able to run unprivileged code. Whenever possible, Luau aims to be backwards-compatible with Lua 5.1 and at the same time to incorporate features from later revisions of Lua. |
90
90
| Lua |[luerl](https://github.com/rvirding/luerl)| Erlang | Tracing | Apache-2.0 | An implementation of Lua 5.2 in pure Erlang with some features like `goto` absent. |
91
91
| Lua |[MoonSharp](https://www.moonsharp.org/)| C# | CLR's GC | BSD-3-Clause and other | CLR Based Lua implementation that is 99% compatible with Lua 5.2 |
@@ -105,7 +105,7 @@ To sort and filter the list interactively, visit the [webpage](https://dbohdan.g
105
105
| Prolog |[Golog](https://github.com/mndrix/golog)| Go | Go's GC | MIT | Implements a subset of standard Prolog. |
106
106
| Python |[CircuitPython](https://github.com/adafruit/circuitpython)| C | Tracing | MIT | A fork of MicroPython, designed for API uniformity across many microcontrollers. |
107
107
| Python |[gpython](https://github.com/go-python/gpython)| Go | Go's GC | BSD-3-Clause | Implements a subset of Python 3.4. |
| Python |[GraalPy](https://github.com/oracle/graalpython)| C, Java | JVM's GC | UPL-1.0 | Implements Python 3 for GraalVM (HotSpot JVM) using the Truffle framework. |
109
109
| Python |[Jython](http://www.jython.org/)| Java | JVM's GC | PSFL (BSD-like) | An implementation of Python 2 for the JVM. |
110
110
| Python |[MicroPython](https://github.com/micropython/micropython)| C | Tracing | MIT | Implements Python 3.4 syntax and some of the core datatypes. |
111
111
| Python |[PikaPython](https://github.com/pikasTech/PikaPython)| C | Ref. counting | MIT | Implements a variant of Python 3. The degree of compatibility with Python seems to be undocumented. Runs in as little as 4 KiB of RAM. Targets microcontrollers and Linux. |
@@ -127,27 +127,27 @@ To sort and filter the list interactively, visit the [webpage](https://dbohdan.g
127
127
| Rune |[Rune](https://github.com/rune-rs/rune)| Rust | Ref. counting | MIT or Apache-2.0 | An embeddable dynamic programming language. Asynchronous-first and [const-evaluation](https://rune-rs.github.io/#const-evaluation). |
128
128
| Scheme |[Animula](https://gitlab.com/hardenedlinux/animula)| C | Tracing | Compiler: **GPL-3.0-or-later**, VM: LGPL-3.0-or-later | An optimizing compiler and VM for embedded systems. R7RS. |
| Scheme |[CHICKEN Scheme](https://call-cc.org/)| C | Tracing | BSD-3-Clause | Implements R5RS (with some [changes](http://wiki.call-cc.org/man/4/Supported%20language)). R7RS support is a work in progress. [Examples of embedding CHICKEN](https://wiki.call-cc.org/embedding). |
130
+
| Scheme |[CHICKEN Scheme](https://call-cc.org/)| C | Tracing | BSD-3-Clause | Implements R5RS (with some [changes](http://wiki.call-cc.org/man/4/Supported%20language)). R7RS support is a work in progress. See [examples of embedding CHICKEN](https://wiki.call-cc.org/embedding). |
| Scheme |[Kawa](https://www.gnu.org/software/kawa/)| Java | JVM's GC | MIT | R7RS. Supports the javax.script API. [Evaluating Scheme expressions from Java](https://www.gnu.org/software/kawa/Evaluating-Scheme-expressions-from-Java.html). |
133
133
| Scheme |[s7](https://ccrma.stanford.edu/software/snd/snd/s7.html)| C | Tracing | BSD-3-Clause | Implements a subset of R5RS/R7RS. Descended from TinyScheme. |
134
-
| Scheme |[Steel](https://github.com/mattwparas/steel)| Rust | Ref. counting + tracing GC | Apache-2.0 or MIT | Aims for eventual R5RS and R7RS compliance. Has extensions inspired by Racket. |
134
+
| Scheme |[Steel](https://github.com/mattwparas/steel)| Rust | Ref. counting + tracing GC | Apache-2.0 or MIT | Aims for eventual R5RS and R7RS language compliance, with extensions inspired by Racket. |
135
135
| Scheme |[TinyScheme](http://tinyscheme.sourceforge.net/)| C | Tracing? | BSD-3-Clause | Implements a subset of R5RS. |
136
136
| SGScript |[SGScript](https://github.com/snake5/sgscript)| C | Ref. counting + tracing CG | MIT |[Features](http://www.sgscript.org/pages/advdocs/sgscript.docs.htm#Why-SGScript) include a built-in data serialization format, coroutines, class-based OOP, sandboxed evaluation, a built-in debugger and profiler. |
137
137
| shell |[sh](https://github.com/mvdan/sh)| Go | Go's GC | MIT | Implements POSIX shell, Bash, and mksh in pure Go. There are caveats with compatibility. See the [readme](https://github.com/mvdan/sh#caveats) and issues like [mvdan/sh#221](https://github.com/mvdan/sh/issues/221). |
138
138
| Shine |[Shine](https://github.com/richardhundt/shine)| C | Tracing | MIT | A language based on Lua with additional safety and expressiveness features implemented as a fork of LuaJIT. |
139
139
| simpleeval |[simpleeval](https://github.com/danthedeckie/simpleeval)| Python | Python's GC | MIT | Evaluates expressions in a subset of Python. |
140
140
| Snek |[Snek](https://github.com/keith-packard/snek)| C | Tracing |**GPL-3.0-or-later**| A Python-inspired language. Targets "processors too small to run MicroPython". |
141
-
| SquiLu |[SquiLu](https://github.com/mingodad/squilu)| C++ | Ref. counting | MIT, some extensions LGPL or GPL | A fork of [Squirrel](http://squirrel-lang.org/). Changes the syntax to accept a subset of JavaScript and C/C++. Implements Lua's features like string pattern matching and global table manipulation functions. Adds extensions for database access (SQLite3, MySQL, PostgreSQL), sockets, and other features. |
141
+
| SquiLu |[SquiLu](https://github.com/mingodad/squilu)| C++ | Ref. counting | MIT, some extensions LGPL or GPL | A fork of [Squirrel](http://squirrel-lang.org/). Changes the syntax to accept a subset of JavaScript and C/C++. Implements Lua's features like string pattern matching and global table manipulation functions. It adds extensions for database access (SQLite3, MySQL, PostgreSQL), sockets, and other features. |
142
142
| Squirrel |[Squirrel](http://squirrel-lang.org/)| C++ | Ref. counting | MIT | A language inspired by Lua and JavaScript/Python. Has a Lua-like C++ API. Differentiates itself from Lua with the use of reference counting in place of Lua's tracing GC, a curly-brace syntax, built-in class-based OOP, and zero-indexed arrays. |
143
143
| Starlark |[Starlark (Go)](https://github.com/google/starlark-go/)| Go | Go's GC | BSD-3-Clause | A small dialect of Python for configuration. Not Turing-complete. Untrusted code: can't access the file system and network, can use up memory and CPU to perform a DoS attack. [Spec](https://github.com/bazelbuild/starlark). [Python bindings](https://github.com/caketop/python-starlark-go). |
144
144
| Starlark |[Starlark (Java)](https://github.com/bazelbuild/bazel/tree/master/src/main/java/net/starlark/java)| Java | JVM's GC | Apache-2.0 | Starlark for the JVM. The original implementation. |
| Tcl |[Jim Tcl](http://jim.tcl-lang.org/)| C | Tracing | BSD-2-Clause | Largely compatible with Tcl 8.5 with its own additions. |
147
147
| Tcl |[JTcl](https://github.com/jtcl-project/jtcl)| Java | Ref. counting | Various BSD-like | Tcl 8.4 with some 8.5 features for the JVM. |
148
-
| Tcl |[Molt](https://github.com/wduquette/molt)| Rust | Ref. counting | BSD-3-Clause | A minimal Tcl implementation for Rust applications and libraries. |
148
+
| Tcl |[Molt](https://github.com/wduquette/molt)| Rust | Ref. counting | BSD-3-Clause | A minimal Tcl implementation designed for Rust applications and libraries. |
149
149
| Tcl |[Picol](https://chiselapp.com/user/dbohdan/repository/picol/)| C | None (no reference support) | BSD-2-Clause | A header-only library interpreter for a limited dialect of Tcl. |
150
-
| Tcl |[Tcl](http://tcl-lang.org/)| C | Ref. counting | Tcl license (BSD-like) | An embeddable general-purpose scripting language with a rich C API. Has a cross-platform GUI toolkit called [Tk](https://wiki.tcl-lang.org/477). [How to embed Tcl in C applications](https://wiki.tcl-lang.org/2074). |
150
+
| Tcl |[Tcl](http://tcl-lang.org/)| C | Ref. counting | Tcl license (BSD-like) | An embeddable general-purpose scripting language with a rich C API. Includes a cross-platform GUI toolkit called [Tk](https://wiki.tcl-lang.org/477). See ["How to embed Tcl in C applications"](https://wiki.tcl-lang.org/2074). |
151
151
| Toy |[Toy](https://github.com/Ratstail91/Toy)| C | Ref. counting | Zlib | Has an optional type system. [Embedding Toy](https://toylang.com/deep-dive/embedding-toy). |
| Wirefilter |[Wirefilter](https://github.com/cloudflare/wirefilter)| Rust | None (no dynamic memory allocation) | MIT | An expression language for Wireshark-like filters. |
0 commit comments