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) license warning: libmawk is GPL
lua lua works liblua (5.1) available
tcl tcl works libtcl (8.5) n/a
picol (tcl) picol works picol (0.6.0) available
javascript duktape works libduktape (2.0.2) n/a
javascript mujs works mujs (1.1.1) 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.

libs/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
chibi-scheme 2021-04 probably usable, but we have enough lisp/scheme variants for now (use estutter instead)
chicken-scheme2021-04 probably usable, but we have enough lisp/scheme variants for now (use estutter instead)
janet 2021-04 probably usable, but we have enough lisp/scheme variants for now (use estutter instead)
s7 2021-04 probably usable, but we have enough lisp/scheme variants for now (use estutter instead)
Jim (tcl) 2021-04 probably usable, but we have enough TCL variants for now (use stock tcl or picol)
jerryscript 2021-04 probably usable, but we have enough JavaScript variants for now (use mujs or duktape instead)
jsi/jsish 2021-04 probably usable, but we have enough JavaScript variants for now (use mujs or duktape instead)
espruino 2021-04 probably usable, but we have enough JavaScript variants for now (use mujs or duktape instead)
njs 2021-04 probably usable, but we have enough JavaScript variants for now (use mujs or duktape instead)
quickjs 2021-04 probably usable, but we have enough JavaScript variants for now (use mujs or duktape instead)
little-lang 2022-08 probably usable, but it comes with a full tcl source (old version) that conflicts with official tcl both on lib file name and symbol levels; project not maintained since 2016

libs/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
Atlas 2021-04 not reentrant (can run only one script at a time)
pawn 2021-04 does not compile a reusable lib, does not have an installation process
umka 2021-04 API too weak, no email address to the author
hashlink 2021-04 dependencies are too extensive, no email address to the author
Io 2021-04 overcomplicated build process; cmake fails to create Makefile using the last release (2019.05.22-alpha)
my_basic 2021-04 no release tarballs available
lily 2021-04 API too weak (for script->C function dispatching); no email contact information, dead IRC channel
never-lang 2021-04 API too weak (no dynamic registered C function callback), no contact information, insufficient docs/examples on embedding
pforth 2021-04 no release tarballs, no contact email
ring 2021-04 just too huge: the source release tarball is 1.2 gigabytes - bigger than the typical operating system image fungw is developed on
sgscript 2021-04 abandoned project; no make install (ctx in function: sgs_DFunc; ctx in script: *OutputFunc, MsgFunc, ScriptFSFunc)
picoc 2021-04 does not compile into a library out of the box - probably could be easily modified, tho (no answer from the author)
wren 2021-04 script->C function call: can't figure which function is called (no answer from the author) [fork?]
gravity 2021-04 script->C function call: can't figure which function is called (no answer from the author) [fork?]
AngelScript 2022-08 C++ (no plain C API)
LambdaChip 2022-08 implemented in scheme, no C API
quirrel 2022-08 github master fails to compile, no email address to author
daScript 2022-08 C++ (no plain C API)
lk 2022-08 C++ (no plain C API)
pocketlang 2022-08 no multi-name functions; mailed the author on 2022-08-15 (no answer)
berry-lang 2022-11 installed lib not yet available; can't get the patch in because of github

libs/languages that requires some upstream support

These potentially could be supported, but something fails, installation, or some detail of the API. I've contacted the author to see if the problem can be resolved (or the language moved to the unsupported category).

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.