Fixes made to: ada, c, chuck, clojure, coffee, common-lisp, cpp,
crystal, d, dart, elm, erlang, es6, factor, fsharp, gnu-smalltalk,
groovy, guile, haxe, hy, js, livescript, matlab, miniMAL, nasm, nim,
objc, objpascal, ocaml, perl, perl6, php, plsql, ps, python, r,
rpython, ruby, scheme, swift3, tcl, ts, vb, vimscript, wasm, yorick.
Catchless try* test is an optional test. Not all implementations
support catchless try* but a number were fixed so they at least don't
crash on catchless try*.
- Use Vector class derived from Array
- Use Array/Vector.from for initializing/cloning of Array/Vector
- Remove most semi-colon line endings
- More use of arrow functions
- Use Object.assign to copy properties in _malfunc and function
cloning.
- Remove or inline a bunch of types.js functions that don't really
need to be separate functions: _obj_type, _sequential_Q, _symbol,
_symbol_Q, _vector, _vector_Q, _hash_map, _hash_map_Q
- Simplify dependency list in Makefile
- Remove some separate core.js functions by moving them into the
core_ns declaration: _nth, keys, vals, with_meta.
With node 7, babel is mostly just used for translating imports into
CommonJS requires for node.
- Add */run script for every implementation.
- Refactor Clojure build to allow individual jar files for each step.
- Update FFI version for es6 and miniMAL to work with newer node
versions.
The run scripts for the following could use some additional
refactoring:
- java: build individual step jar, use java -jar instead of mvn to run
- plpgsql: maybe combine plpgsql/run and plpgsql/wrap.sh
- vhdl: combine vhdl/run and vhdl/run_vhdl.sh
- vimscript: combine vimscript/run and vimscript/run_vimscript.sh
- Remove most of the step5 excludes in the Makefile except for ones
which don't have TCO capability at all (or the implementation is too
slow): bash, make, mal, matlab.
- Make perf_EXCLUDES consistent with other excludes.
- Add a print-FOO target which prints the resolved value of Makefile
variable FOO. For example, `make print-IMPLS` to print the list of
implementations.
Also in this commit:
- fix *ARGV* setup in erlang and racket.
- print startup message in fsharp
Dist/packaging support for most implementations and also generate
a */mal standalone app for most languages. The following
implementations still have ability to generate a single */mal
standalone application:
- guile
- julia
- matlab (mkoctfile doesn't actually package up source files)
- swift
- vb (mkbundle error)
Also, the following are mostly packaged into a single file but need
some module dependencies
- coffee: requires node_modules/ffi
- es6: requires node_modules/ffi
- js: requires node_modules/ffi
- lua: module 'readline' not found
- miniMAL: cannot find module '/mal/node_readline.js'
- r: needs lib directory
- hash-map equality support for bash, c, coffee, cs, es6, java, js,
julia, make, php.
- also, add another test to catch another hash-map in-equality: same
keys, different values