- 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.
Only apparent in double-self-hosting mode.
eg. ../cpp/stepA_mal ./stepA_mal.mal ./stepA_mal.mal
Throws an error that MACROEXPAND is not defined.
TODO: figure out why modifying he hash in-place doesn't work.
* use regex_search rather than regex_iterator
* use multiple individual whitespace and token regexes,
rather than one giant regex
This appears to work on 14.10 and 15.04
Note that the optional tests for step 1 now fail because I no longer create a
hash directly in the reader, rather handle this as a reader macro:
{ LIST } -> ( hash-map LIST )
This way, once the constructor has built the hash-map, the hash is now evaluated,
and its evaluation procedure is a no-op.
I'd like to do the same with vectors, but this isn't so easy, as we use vectors
as parameter lists in fn* later on.
ie. we'd have this situation, which is incorrect (and I don't see an obvious workaround)
(fn* [params] body) -> (fn* (vector params) body)