fungw language support

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.

languages that could be supported but probably won't be

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

languages that can not be supported

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
red 2021-04 official download page broken: can not download source release tarballs
rebol 2021-04 bootstrap fail: requires rebol binary to build from source; no binary available in Debian; no proper source release tarballs, just an abandoned github project
PascalScript 2021-04 bootstrap fail: remobject's PascalScript: no source release tarballs, only a github project; not clear how to compile outside of delphi (no Makefile or shell script or anything with e.g. fpc commands, no documentation)
ici 4.1.0 2021-04 bootstrap fail: fails to compile (posix thread problems, non-standard vararg copy)
dart 2021-04 bootstrap fail: no proper source release tarball; there are development snapshots from git, containing a 300 megabytes sdk
Kotlin 2021-04 depends on JVM?
Pony 2021-04 doesn't look like a scripting language with an API for embedding
Matlab 2021-04 octave is the free implementation; liboctave: the API is largely C++; example for embedding: embedded.cc; no C API for parse or execute

Special languages: embedded interpreters

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.