This works with cbmbasic from https://github.com/mist64/cbmbasic. The
cbmbasic interpreter needs to be on the PATH.
The actually sources are *.in.bas which are "compiled" to *.bas using
the qb2cbm.sh. qb2cbm.sh translates from a QBasic-ish format to a line
numbered source with include files inlined (REM $INCLUDE: 'file.bas').
One additional advantage is that the *.in.bas versions can also be
indented and qb2cbm.sh will remove the indenting in the translated
code.
Tested on UCBLogo 6.0 with some minor tweaks (for performance and adding
a `timems` function). The tweaks are performed during Docker image
creation (see Dockerfile).
Tests of step 5 are skipped because UCBLogo is too slow.
Interop is available via `(logo-eval "logo code to run")`.
The `examples` directory contains a Mal example of drawing a tree using
turtle graphics.
All tests pass, but readline support (via Linenoise module) is commented
out in step0_repl.pl as it is not a core module. Should maybe change it
when docker support is added.
- 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
The Scala build will create a mal.jar file with all the steps' classes
in it. A `run` wrapper script will run that jar with a specific step
main class according to the `$STEP` environment variable. Now the jar
file is created only once (when testing step0) and then re-used for
testing the next steps, which should speed up the build.
Moreover, sbt now prepends shell script header to the jar file, so no
need to implement this in Makefile (for the `dist` target).
Add --no-print-directory to make implementation execution so it only
prints the actual output from a Mal script.
Alos, since the make implementation can't handle spaces in a
command-line argument, we skip this test.
The `io/run` script will run the io interpreter on a step file given in
the `$STEP` environment variable. It'll swallow the first 25 bytes
printed by the interpreter because they are a startup message about the
Io Regex module (and can't be suppressed in a normal way).
Add new mini test harness run_argv_test.sh to run the Mal interpreter
with different command-line arguments and test the stdout of that
process.
The main Makefile will automatically run the new harness whenever step 6
is tested (either directly or during REGRESS=1 of a more advanced step).
- tests/*: marked with deferable and optional runtest flags. Some
moving around of tests within different sections to more closely
align with the guide.
- runtest.py has --deferable/--no-deferable and
--optional/--no-optional to control whether tests marked as
deferable and optional are tested.
- Makefile: DEFERABLE and OPTIONAL top level flags to be passed to
runtest when running tests.
- Also, fix problems in java quoting revealed by step7 test changes.
- Add Dockerfile for an image with postgres installed that
automatically starts the server when the docker image is started.
- Fix Unicode issue with keywords that caused "requested character too
large for encoding: 670" when used with rebuilt docker image.
Switched from 0x29e (670) to 0x7f (127) as the keyword string
prefix.
- Add default PSQL user as "postgres" in wrap.sh
This script serves the following purposes:
- A --silent flag for testing purposes
- Support for @import comments (to work around no modules)
- Accessing extra arguments from CHUCK_ARGUMENTS
When running tests with REGRESS=1, the Makefile would not exit with
failure if an earlier step failed some tests. Replacing ; with && in
the test rule fixed this behaviour to exit with failure exitcode on the
first regression failure.
- 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.