mirror of
https://github.com/kanaka/mal.git
synced 2024-09-11 13:55:55 +03:00
Misc updates to TODO, guide and README.
- Also, add SKIP_IMPLS option to top-level Makefile to ignore a list of implementations. Particularly useful for excluding licensed matlab when running tests on system without it (e.g. within container).
This commit is contained in:
parent
31ad43483a
commit
8569b2af48
11
Makefile
11
Makefile
@ -124,17 +124,18 @@ vb_TEST_OPTS = --mono
|
||||
|
||||
# Derived lists
|
||||
STEPS = $(sort $(filter step%,$(.VARIABLES)))
|
||||
IMPL_TESTS = $(foreach impl,$(IMPLS),test^$(impl))
|
||||
DO_IMPLS = $(filter-out $(SKIP_IMPLS),$(IMPLS))
|
||||
IMPL_TESTS = $(foreach impl,$(DO_IMPLS),test^$(impl))
|
||||
STEP_TESTS = $(foreach step,$(STEPS),test^$(step))
|
||||
ALL_TESTS = $(filter-out $(EXCLUDE_TESTS),\
|
||||
$(strip $(sort \
|
||||
$(foreach impl,$(IMPLS),\
|
||||
$(foreach impl,$(DO_IMPLS),\
|
||||
$(foreach step,$(STEPS),test^$(impl)^$(step))))))
|
||||
|
||||
IMPL_STATS = $(foreach impl,$(IMPLS),stats^$(impl))
|
||||
IMPL_STATS_LISP = $(foreach impl,$(IMPLS),stats-lisp^$(impl))
|
||||
IMPL_STATS = $(foreach impl,$(DO_IMPLS),stats^$(impl))
|
||||
IMPL_STATS_LISP = $(foreach impl,$(DO_IMPLS),stats-lisp^$(impl))
|
||||
|
||||
IMPL_PERF = $(filter-out $(EXCLUDE_PERFS),$(foreach impl,$(IMPLS),perf^$(impl)))
|
||||
IMPL_PERF = $(filter-out $(EXCLUDE_PERFS),$(foreach impl,$(DO_IMPLS),perf^$(impl)))
|
||||
|
||||
#
|
||||
# Build rules
|
||||
|
@ -411,6 +411,12 @@ make MAL_IMPL=python test^mal^step2
|
||||
|
||||
### Performance tests
|
||||
|
||||
Warning: These performance tests are neither statistically valid nor
|
||||
comprehensive; runtime performance is a not a primary goal of mal. If
|
||||
you draw any serious conclusions from these performance tests, then
|
||||
please contact me about some amazing oceanfront property in Kansas
|
||||
that I'm willing to sell you for cheap.
|
||||
|
||||
* To run performance tests against a single implementation:
|
||||
```
|
||||
make perf^IMPL
|
||||
|
64
docs/TODO
64
docs/TODO
@ -1,23 +1,23 @@
|
||||
All:
|
||||
- Finish guide.md
|
||||
- Split metadata, atoms, readline into stepA
|
||||
|
||||
- test to check args set properly
|
||||
- test *ARGV* gets set properly
|
||||
- test to make sure slurp captures final newline
|
||||
- make sure errors propagate/print properly when self-hosted
|
||||
|
||||
* change perf test to run for 10 seconds and then calculate number
|
||||
of iterations per second
|
||||
- redefine (defmacro!) as (def! (macro*))
|
||||
- runtest expect fixes:
|
||||
* stop using expect, so we can drop --raw option
|
||||
* fix C#, VB
|
||||
- fix long line splitting in runtest
|
||||
- Give runtest knowledge of optional and report differently
|
||||
- regular expression matching in runtest
|
||||
- add re (use in rep) everywhere and use that (to avoid printing)
|
||||
- Implement/fix interop
|
||||
- Print full exception when test gets EOF from expect
|
||||
- per impl tests for step5_tco, or at least a better way of
|
||||
enabling/disabling/tweaking per implementation
|
||||
|
||||
- metadata on symbols
|
||||
Other ideas for All:
|
||||
- propagate/print errors when self-hosted
|
||||
- redefine (defmacro!) as (def! (macro*))
|
||||
- Fix/implement interop in more implementations
|
||||
|
||||
- metadata on symbols (as per Clojure)
|
||||
- metadata as a map only. ^ merges metadata in the reader itself.
|
||||
Line numbers in metadata from reader.
|
||||
- protocols!
|
||||
@ -32,7 +32,6 @@ All:
|
||||
a *namespaces* map is found with the namespace name being
|
||||
looked up. Then the symbol would be looked up starting in
|
||||
the namespace environment. Need protocols first probably.
|
||||
- Break out impl eval into step0.5
|
||||
- Fix quasiquoting of vectors
|
||||
|
||||
- Get self-host working at earlier step:
|
||||
@ -43,7 +42,6 @@ All:
|
||||
- loop/recur ?
|
||||
- gensym reader inside quasiquote
|
||||
|
||||
- per impl tests for step5_tco
|
||||
|
||||
---------------------------------------------
|
||||
|
||||
@ -149,43 +147,3 @@ VB.Net
|
||||
- convert readline.cs to readline.vb
|
||||
|
||||
|
||||
---------------------------------------------
|
||||
|
||||
|
||||
Future Implementations:
|
||||
|
||||
- Ada (gnat)
|
||||
- http://rosettacode.org/wiki/Regular_expressions#Ada
|
||||
|
||||
- C++
|
||||
|
||||
- Groovy
|
||||
- http://groovy-lang.org/learn.html
|
||||
- http://groovy-lang.org/structure.html
|
||||
|
||||
- Erlang
|
||||
|
||||
- F#
|
||||
|
||||
- Haxe
|
||||
- http://api.haxe.org/
|
||||
- http://haxe.us/haxe_tutorial.html
|
||||
|
||||
- Julia
|
||||
|
||||
- Nim
|
||||
|
||||
- Objective-C:
|
||||
|
||||
- Pascal:
|
||||
sudo aptitude install fp-compiler-2.6.2
|
||||
|
||||
- VimL
|
||||
- https://github.com/tpope/timl
|
||||
|
||||
- Tcl
|
||||
|
||||
- TeX/LaTeX
|
||||
- Basic interpreter in TeX: http://ctanhg.scharrer-online.de/pkg/basix.html
|
||||
- Cheat Sheet: http://www.stdout.org/~winston/latex/latexsheet.pd
|
||||
- latex '\nonstopmode\input' blah.tex
|
||||
|
@ -1179,9 +1179,12 @@ implementation. Let us continue!
|
||||
![step9_try architecture](step9_try.png)
|
||||
|
||||
Compare the pseudocode for step 8 and step 9 to get a basic idea of
|
||||
the changes that will be made during this step:
|
||||
the changes that will be made during this step. This step is currently
|
||||
divided into two sections because some of the functions in the second
|
||||
step will be moving to step A in the future:
|
||||
```
|
||||
diff -urp ../process/step8_macros.txt ../process/step9_try.txt
|
||||
diff -urp ../process/step9_try.txt ../process/step9_try2.txt
|
||||
```
|
||||
|
||||
* Copy `step8_macros.qx` to `step9_try.qx`.
|
||||
@ -1192,7 +1195,7 @@ diff -urp ../process/step8_macros.txt ../process/step9_try.txt
|
||||
now.
|
||||
|
||||
|
||||
<a name="step9"></a>
|
||||
<a name="stepA"></a>
|
||||
|
||||
### Step A: Interop and Self-hosting
|
||||
|
||||
@ -1201,12 +1204,13 @@ diff -urp ../process/step8_macros.txt ../process/step9_try.txt
|
||||
Compare the pseudocode for step 9 and step A to get a basic idea of
|
||||
the changes that will be made during this step:
|
||||
```
|
||||
diff -urp ../process/step9_try.txt ../process/stepA_mal.txt
|
||||
diff -urp ../process/step9_try2.txt ../process/stepA_mal.txt
|
||||
```
|
||||
|
||||
* Copy `step9_try.qx` to `stepA_mal.qx`.
|
||||
|
||||
* TODO/TBD
|
||||
* Self-hosted tests
|
||||
|
||||
|
||||
## TODO:
|
||||
|
Loading…
Reference in New Issue
Block a user