- Dynamically generate a strategy matrix based on the list of changed
files in this push/pull_request. If the changed files are restricted
to implementations then only generate a matrix with those
implementations. If the changes are to tests or other
non-documentation files (runtest.py, IMPLS.yml, .github/*, etc) then
run the full set. The matrix generation is done in get-ci-matrix.py.
- Split the implementation list for Github Actions out into a separate
yaml file IMPLS.yml
- Reduce the travis file to just the OS X / XCode related builds that
aren't supported on Github Actions.
- Rename the .travis_test.sh script to ci.sh since it is the general
CI script used for both Travis CI and Github Actions.
- Add a `vec` built-in function in step7 so that `quasiquote` does not
require `apply` from step9.
- Introduce quasiquoteexpand special in order to help debugging step7.
This may also prepare newcomers to understand step8.
- Add soft tests.
- Do not quote numbers, strings and so on.
Should ideally have been in separate commits:
- elisp: simplify and fix (keyword :k)
- factor: fix copy/paste error in let*/step7, simplify eval-ast.
- guile: improve list/vector types
- haskell: revert evaluation during quasiquote
- logo, make: cosmetic issues
The identity function is not used in the answers.
Sort list, prn, hash-map by increasing difficulty.
Fix indentation consistency in concat.
Avoid using the same identifier twice.
In do3, make explicit that acc is not used.
In _quasiquote_iter, call the tested quasiquote2 instead of the original quasiquote.
In the quoting section, add foldr_pairs to hide recursions.
The compose function is not used in the answers.
* Move `gensym` and `inc` from step files to `lib/trivial.mal`.
* Move `or` from step files to `lib/test_cascade.mal`.
Shorten it because `(first ())` returns `nil`
* Update process and tests accordingly (not the figures yet).
* Avoid including `lib/*.mal` to prevent unexpected circular
dependencies (bitten by `foldr` using `nth`).
* Ask `quote` before `let*`, the latter requires the former.
Answer previous questions without `let*`.
* Tell the reader that `let*` has various levels of difficulty.
* Drop implicit dependency on `or`, soon out of step files.
* Allow simple recursion in `let*` via a combinator.
Rename the question file for consistency with answer file.
Give an explicit command to copy/paste for tests.
Warn about defining `nth` with `cond`.
Fix typo in let2.
Use tools from core.mal in answers.
It is more interesting to ask an implementation of count from empty?
than the reverse.
Ask for nth, map, concat and conj.
Allow core.mal in answers. Currently, requires the branch with foldr.
tests: check that `inc` is present in stepA.
nasm: split lines in mal_startup_string for readability.
objpascal: remove obsolete .orig file
swift: remove an unneeded line in template
swift4: remove duplicate definition of `or` macro
- Add GitHub/GitHut pull requests and pushes.
- Add StackOverflow tag counts (this also involves some hard-coded
rollup of certain tags).
- Add README with update instructions.
- Move graph specific data mangling from collect code to graph
rendering code.
- Truncate ruby and python stacktraces since they can get very long
in certain cases causing problems.
- Fix Clojure West example with proper escaping.
- Fix rust Dockerfile working dir.
- Make top-level Makefile more generic. This makes it easier to use
the Makefile with fewer changes in miniMAL.
- Simplify vhdl build when case is fixed in stepA_mal
- Remove BUILD_IMPL=js from miniMAL travis test. Just use a docker
image specifically made for miniMAL.
- Update TODO
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).