1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
<html>
<body>
<h1> fungw language support </h1>
<table border=1 cellspacing=0>
<tr><th>language <th> fungw plugin <th> state <th> 3rd party software dependency <th> binding doc, comments
<tr><td>C <td> c <td> works <td> C89 and newer <td> n/a
<tr><td>fawk <td> fawk <td> works <td> <a href="#em">none</a> <td> (an AWK dialect)
<tr><td>BASIC <td> fawk (fbas) <td> works <td> <a href="#em">none</a> <td> (a modern BASIC dialect)
<tr><td>pascal <td> fawk (fpas) <td> works <td> <a href="#em">none</a> <td> (a pascal script dialect)
<tr><td>awk <td> mawk <td> works <td> libmawk (svn r1206) <td> license warning: <b>libmawk is GPL</b>
<tr><td>lua <td> lua <td> works <td> liblua (5.1) <td> <a href="lang_lua.html"> available </a>
<tr><td>tcl <td> tcl <td> works <td> libtcl (8.5) <td> n/a
<tr><td>picol (tcl) <td> picol <td> works <td> picol (0.6.0) <td> <a href="lang_picol.html"> available </a>
<tr><td>javascript <td> duktape <td> works <td> libduktape (2.0.2) <td> n/a
<tr><td>javascript <td> mujs <td> works <td> mujs (1.1.1) <td> n/a
<tr><td>ruby <td> mruby <td> works <td> libmruby (1.0.0) <td> n/a
<tr><td>perl <td> perl <td> works <td> libperl (5.24.1) <td> <a href="lang_perl.html"> available </a>
<tr><td>lisp/scheme <td> estutter <td> works <td> estutter (1.0.0) <td> <a href="lang_estutter.html"> available </a>
<tr><td>POSIX shell <td> cli <td> works <td> bash (4.3) or dash (0.5.7) <td> <a href="lang_sh.html"> available </a>
<tr><td>lisp <td> funlisp <td> works <td> funlisp (1.1.0) <td> <a href="lang_funlisp.html"> available </a>
<tr><td>python <td> python <td> works <td> libpython (<b>2.6</b>) <td> <a href="lang_python.html"> available </a>
<tr><td>python3 <td> python3 <td> BUGGY <td> libpython (3.7.3) <td> <a href="lang_python3.html"> available </a>
</table>
<p>
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.
<h1> libs/languages that could be supported but probably won't be</h1>
<table border=1 cellspacing=0>
<tr><th>language <th> last evaluated <th> reason
<tr><td>scheme/guile <td> 2018-05 <td> guile is a major pain to configure and compile; the API is not friendly either; use estutter instead
<tr><td>sigscheme <td> 2018-05 <td> use estutter instead
<tr><td>chibi-scheme <td> 2021-04 <td> probably usable, but we have enough lisp/scheme variants for now (use estutter instead)
<tr><td>chicken-scheme<td>2021-04 <td> probably usable, but we have enough lisp/scheme variants for now (use estutter instead)
<tr><td>janet <td> 2021-04 <td> probably usable, but we have enough lisp/scheme variants for now (use estutter instead)
<tr><td>s7 <td> 2021-04 <td> probably usable, but we have enough lisp/scheme variants for now (use estutter instead)
<tr><td>Jim (tcl) <td> 2021-04 <td> probably usable, but we have enough TCL variants for now (use stock tcl or picol)
<tr><td>jerryscript <td> 2021-04 <td> probably usable, but we have enough JavaScript variants for now (use mujs or duktape instead)
<tr><td>jsi/jsish <td> 2021-04 <td> probably usable, but we have enough JavaScript variants for now (use mujs or duktape instead)
<tr><td>espruino <td> 2021-04 <td> probably usable, but we have enough JavaScript variants for now (use mujs or duktape instead)
<tr><td>njs <td> 2021-04 <td> probably usable, but we have enough JavaScript variants for now (use mujs or duktape instead)
<tr><td>quickjs <td> 2021-04 <td> probably usable, but we have enough JavaScript variants for now (use mujs or duktape instead)
<tr><td>little-lang <td> 2022-08 <td> 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
</table>
<h1> libs/languages that can not be supported </h1>
<p>
Some of these could be supported through the cli engine but they can
not be supported natively for various reasons, described below.
<p>
<table border=1 cellspacing=0>
<tr><th>language <th> last evaluated <th> reason
<tr><td>php <td> 2018-05 <td> 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
<tr><td>erlang <td> 2018-05 <td> does not have a C embeddable lib
<tr><td>go <td> 2018-05 <td> not interpreted, compiled
<tr><td>haskell <td> 2018-05 <td> not interpreted, compiled (would need FFI)
<tr><td>Clojure <td> 2018-05 <td> depends on JVM?
<tr><td>Scala <td> 2018-05 <td> depends on JVM
<tr><td>Groovy <td> 2018-05 <td> depends on JVM?
<tr><td>Rust <td> 2018-05 <td> not interpreted, compiled
<tr><td>F# <td> 2018-05 <td> not interpreted, compiled
<tr><td>Boo <td> 2018-05 <td> does not have a C embeddable lib
<tr><td>rep (lisp) <td> 2018-05 <td> does not support multiple instances
<tr><td>ecl (lisp) <td> 2018-05 <td> does not support multiple instances
<tr><td>gambc (lisp)<td> 2018-05 <td> does not support multiple instances
<tr><td>elk (lisp) <td> 2018-05 <td> does not support multiple instances
<tr><td>scm (lisp) <td> 2018-05 <td> does not support multiple instances
<tr><td>scheme9 <td> 2018-05 <td> does not support multiple instances
<tr><td>ixion <td> 2018-05 <td> C++
<tr><td>rexx <td> 2018-05 <td> 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)
<tr><td>pike7.8 <td> 2019-02 <td> stand alone interpreter, does not seem to have an API for embedding
<tr><td>red <td> 2021-04 <td> official download page broken: can not download source release tarballs
<tr><td>rebol <td> 2021-04 <td> bootstrap fail: requires rebol binary to build from source; no binary available in Debian; no proper source release tarballs, just an abandoned github project
<tr><td>PascalScript<td> 2021-04 <td> 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)
<tr><td>ici 4.1.0 <td> 2021-04 <td> bootstrap fail: fails to compile (posix thread problems, non-standard vararg copy)
<tr><td>dart <td> 2021-04 <td> bootstrap fail: no proper source release tarball; there are development snapshots from git, containing a 300 megabytes sdk
<tr><td>Kotlin <td> 2021-04 <td> depends on JVM?
<tr><td>Pony <td> 2021-04 <td> doesn't look like a scripting language with an API for embedding
<tr><td>Matlab <td> 2021-04 <td> octave is the free implementation; liboctave: the API is largely C++; example for embedding: embedded.cc; no C API for parse or execute
<tr><td>Atlas <td> 2021-04 <td> not reentrant (can run only one script at a time)
<tr><td>pawn <td> 2021-04 <td> does not compile a reusable lib, does not have an installation process
<tr><td>umka <td> 2021-04 <td> API too weak, no email address to the author
<tr><td>hashlink <td> 2021-04 <td> dependencies are too extensive, no email address to the author
<tr><td>Io <td> 2021-04 <td> overcomplicated build process; cmake fails to create Makefile using the last release (2019.05.22-alpha)
<tr><td>my_basic <td> 2021-04 <td> no release tarballs available
<tr><td>lily <td> 2021-04 <td> API too weak (for script->C function dispatching); no email contact information, dead IRC channel
<tr><td>never-lang <td> 2021-04 <td> API too weak (no dynamic registered C function callback), no contact information, insufficient docs/examples on embedding
<tr><td>pforth <td> 2021-04 <td> no release tarballs, no contact email
<tr><td>ring <td> 2021-04 <td> just too huge: the source release tarball is <b>1.2 gigabytes</b> - bigger than the typical operating system image fungw is developed on
<tr><td>sgscript <td> 2021-04 <td> abandoned project; no make install (ctx in function: sgs_DFunc; ctx in script: *OutputFunc, MsgFunc, ScriptFSFunc)
<tr><td>picoc <td> 2021-04 <td> does not compile into a library out of the box - probably could be easily modified, tho (no answer from the author)
<tr><td>wren <td> 2021-04 <td> script->C function call: can't figure which function is called (no answer from the author) [fork?]
<tr><td>gravity <td> 2021-04 <td> script->C function call: can't figure which function is called (no answer from the author) [fork?]
<tr><td>AngelScript <td> 2022-08 <td> C++ (no plain C API)
<tr><td>LambdaChip <td> 2022-08 <td> implemented in scheme, no C API
<tr><td>quirrel <td> 2022-08 <td> github master fails to compile, no email address to author
<tr><td>daScript <td> 2022-08 <td> C++ (no plain C API)
<tr><td>lk <td> 2022-08 <td> C++ (no plain C API)
<tr><td>pocketlang <td> 2022-08 <td> no multi-name functions; mailed the author on 2022-08-15 (no answer)
<tr><td>berry-lang <td> 2022-11 <td> installed lib not yet available; can't get the patch in because of github
</table>
<h1> libs/languages that requires some upstream support</h1>
<p>
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).
<p>
<table border=1 cellspacing=0>
</table>
<h1 id="em"> Special languages: embedded interpreters </h1>
<p>
<a href="http://www.repo.hu/projects/libfawk">Libfawk</a> 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.
<p>
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
<b>there is at least one scripting language plugin that will always work,
everywhere, wherever fungw can be installed, providing multiple languages.</b>
</body>
</html>
|