The following is a list of reasonably mature open source embedded scripting languages to use in your application.
| Project name/link | Implementation language | GC | License | Notes |
|---|---|---|---|---|
| AngelScript | C++ | Ref. counting | zlib | |
| ChaiScript | C++ | Ref. counting | 3-clause BSD | |
| Chibi Scheme | C | Tracing | 3-clause BSD | Implements R7RS small. |
| Clasp | Common Lisp, C++ | MPS GC (Boehm-Weiser also supported) | LGPL 2+ | Full Common Lisp implementation well integrated with C++, using LLVM for the code generation, to integrate closely with C++ applications or libraries. |
| Duktape | C | Tracing | MIT | Implements JavaScript E5/E5.1. |
| Embeddable Common Lisp | Common Lisp, C | Boehm-Weiser GC | LGPL 2+ | Full Common Lisp implementation, available as a shared library libecl.so embeddable in any C, C++ or other application. |
| GNU Guile | C | Boehm | LGPL 3+ | |
| Jim Tcl | C | Tracing | 2-clause BSD | Largely compatible with Tcl 8.5 with its own additions. |
| lil | C, Object Pascal (separate implementations) | ? | zlib | A Tcl-like language incompatible with mainline Tcl. |
| Lua | C | Tracing | MIT | |
| Mono | C | Tracing | MIT and other | Implements the CLR. |
| mruby | C | Tracing | MIT | |
| Pascal Script | Object Pascal | Manual MM | Custom non-copyleft | Implements "most of Object Pascal". |
| Pawn | C | n/a (no heap allocation) | Apache License 2.0 with a static linking clause to explicitly permit static linking | |
| Python | C | Ref. counting + cycle-detecting GC | PSFL (BSD-like) | Embedding Python in Another Application. |
| Squirrel | C++ | Ref. counting | MIT | |
| Tcl | C | Ref. counting | Tcl license (BSD-like) | |
| TinyScheme | C | Tracing? | 3-clause BSD | Implements a subset of R5RS. |
Your contributions are welcome! Please submit a pull request or create an issue to add a new language to the list.
