language | fungw plugin | state | 3rd party software dependency | binding doc, comments |
---|---|---|---|---|
C | c | works | C89 and newer | n/a |
fawk | fawk | works | none | (an AWK dialect) |
BASIC | fawk (fbas) | works | none | (a modern BASIC dialect) |
pascal | fawk (fpas) | works | none | (a pascal script dialect) |
awk | mawk | works | libmawk (svn r1206) | n/a |
lua | lua | works | liblua (5.1) | available |
tcl | tcl | works | libtcl (8.5) | n/a |
javascript | duktape | works | libduktape (2.0.2) | n/a |
ruby | mruby | works | libmruby (1.0.0) | n/a |
perl | perl | works | libperl (5.24.1) | available |
lisp/scheme | estutter | works | estutter (1.0.0) | available |
POSIX shell | cli | works | bash (4.3) or dash (0.5.7) | available |
lisp | funlisp | works | funlisp (1.1.0) | available |
python | python | works | libpython (2.6) | available |
python3 | python3 | BUGGY | libpython (3.7.3) | available |
Note: a version number in the dependency column is only the version of the package fungw last worked with - other versions may work as well. Exception is when the version number is bold, in which case other versions will NOT work.
language | last evaluated | reason |
---|---|---|
scheme/guile | 2018-05 | guile is a major pain to configure and compile; the API is not friendly either; use estutter instead |
sigscheme | 2018-05 | use estutter instead |
Some of these could be supported through the cli engine but they can not be supported natively for various reasons, described below.
language | last evaluated | reason |
---|---|---|
php | 2018-05 | could not figure how to set up multiple instances of php script with php7.0 (see work/php); probably could be done with PH7, but that doesn't come with an installable lib |
erlang | 2018-05 | does not have a C embeddable lib |
go | 2018-05 | not interpreted, compiled |
haskell | 2018-05 | not interpreted, compiled (would need FFI) |
Clojure | 2018-05 | depends on JVM? |
Scala | 2018-05 | depends on JVM |
Groovy | 2018-05 | depends on JVM? |
Rust | 2018-05 | not interpreted, compiled |
F# | 2018-05 | not interpreted, compiled |
Boo | 2018-05 | does not have a C embeddable lib |
rep (lisp) | 2018-05 | does not support multiple instances |
ecl (lisp) | 2018-05 | does not support multiple instances |
gambc (lisp) | 2018-05 | does not support multiple instances |
elk (lisp) | 2018-05 | does not support multiple instances |
scm (lisp) | 2018-05 | does not support multiple instances |
scheme9 | 2018-05 | does not support multiple instances |
ixion | 2018-05 | C++ |
rexx | 2018-05 | rexxsaa.h does not offer multiple script contexts, that would be mt.h (included from rexx.h) with tsd_t; but it seems rexx.h is usually not installed (from .deb or .rpm) |
pike7.8 | 2019-02 | stand alone interpreter, does not seem to have an API for embedding |
Libfawk provides an extremely small scripting language VM+compiler implementation with support for multiple languages. It is so small that the whole code is a single C file that is simply embedded in the fungw plugin. Libfawk is also pure C89, without any external dependency.
That means the fungw fawk plugin has no external dependency, because it contains both the scripting language code and the fungw binding. Since fungw can also be compiled without any external dependency, this means there is at least one scripting language plugin that will always work, everywhere, wherever fungw can be installed, providing multiple languages.