1
1
mirror of https://github.com/kanaka/mal.git synced 2024-08-16 17:20:23 +03:00
Commit Graph

245 Commits

Author SHA1 Message Date
Dov Murik
539427f0db nim: fix tokenizer endless loop (and out-of-memory) on bad input
The input string `(prn "abc` caused the nim implementaion (from step1
onwards) to enter an endless loop in tokenize (which eventually caused
out-of-memory).

The fix verfies that indeed the regex matches a non-empty substring
before adding that substring as a token.
2015-12-04 15:35:39 -05:00
Joel Martin
c46b421a24 Haskell: fix simple vector equality. Add test.
- Was missing vector to vector equality but never noticed because test
  was missing.
- Related to #123
2015-12-03 16:27:47 -06:00
Dov Murik
6496cd1d17 tests: add tests for nil hashmap values 2015-12-02 15:52:32 -05:00
Joel Martin
5044ce44f4 Tests: add nested hash-map tests. 2015-12-02 11:16:09 -06:00
Dov Murik
4b7f92e5d6 tests: add soft tests for nested vector/list equality in step 4 2015-11-30 10:35:14 -05:00
Dov Murik
c362489f35 tests: add more hash equality test cases in step 9 2015-11-17 21:19:30 -05:00
Joel Martin
a0b63ee477 hash-map equality: bash, c, coffee, cs, es6, ...
- 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
2015-11-16 23:28:58 -06:00
Dov Murik
9af1191f5d tests: step9: add hash-map equality tests (as soft tests) 2015-11-09 22:24:02 -05:00
Joel Martin
595376919b Misc cleanup for midwest.io presentation. 2015-11-07 15:31:25 -06:00
Joel Martin
8d78bc26bf All: fix read/print of \\, and \n 2015-10-30 22:05:49 -05:00
Joel Martin
953772ca00 step5 test: group related test code together. 2015-10-27 15:33:53 -05:00
Javier Fernandez-Ivern
b25e3d29fb Reduced the mutually recursive function test size 2015-10-27 15:05:40 -05:00
Javier Fernandez-Ivern
5e43076014 Added TCO test for mutually recursive functions 2015-10-27 13:17:56 -05:00
Javier Fernandez-Ivern
6132da853d Fixed final bug with swap, added tests 2015-10-26 21:49:58 -05:00
Javier Fernandez-Ivern
f39c5a2633 Fixed step 6 tests 2015-10-26 21:31:44 -05:00
Javier Fernandez-Ivern
2eb2cac230 Fixed several self-hosting issues, added atom? tests 2015-10-26 20:27:29 -05:00
Joel Martin
922d4c3b9b Makefile and tests/step4: Self-host test fixes.
- Always use stepA for the RUNSTEP macro in addition to the
  STEP_TO_PROG macro.
- Disable the (fib 10) test because this is really too slow for
  several self-hosted implementations to complete before a timeout.
2015-10-11 22:10:59 -05:00
Joel Martin
378d1ff68e tests/step0: fix tests to not confuse runtest.py
- the test starts with ';' which is meaningful to runtest.py.
2015-10-11 22:10:06 -05:00
Joel Martin
98af2ae360 runtest.py: add --soft option, refactor test reader.
- also, mark later stepA optional as soft.
2015-10-09 09:31:29 -05:00
ekmartin
bb52697591 Update README/Makefile/Dockerfile 2015-09-10 01:47:55 +02:00
Mitsuru Kariya
8c7587af67 Adds GNU awk implementaion 2015-08-26 00:46:31 +09:00
Joel Martin
a9cd654347 Add groovy implementation.
I'm away from my main workstation for a week and unfortunately, I only
copied the code but not the branch with full history so this is just
the implementation. However, the history isn't all that interesting
(mostly just the steps one at a time) and I wanted to get this out
there.
2015-05-18 19:54:18 -07:00
def
de69b63902 Use Nim 0.11.0 2015-04-30 17:51:20 +02:00
Joel Martin
cd80c38146 Dockerfile: move Julia & Erlang. Add guile & factor. 2015-04-08 17:31:01 -05:00
Nathan Fiedler
83d3c03370 Update Dockerfile to install Erlang/OTP R17 2015-04-04 09:15:44 -07:00
Joel Martin
520051615c tests: add test to make sure *host-language* is set 2015-04-03 18:31:14 -05:00
Joel Martin
7e0bb668cf Julia: self-hosting.
- fix meta and swap! functions and add missing tests
- fix eval_ast of hash-maps across all steps
2015-03-31 23:04:45 -05:00
Joel Martin
fc15535c69 Julia: add Dockerfile dependencies. 2015-03-31 23:04:45 -05:00
Stephen Thirlwall
79f8ce3ec5 Add C++ packages to tests/docker/Dockerfile
Thought I'd already done this. Must've got lost in all the rebasing...
2015-03-28 12:41:45 +11:00
Joel Martin
8b142f0828 Swift: lang cnt to 28, note XCode, skip in docker.
- Update the README to 28 languages.
- Note that Swift impl currently requires XCode/OS X :-(
- Add Swift to skip list in Dockerfile.
2015-03-24 09:29:53 -06:00
Joel Martin
20c05e3561 racket: fix apply/vector
- re-order apply/vector tests into optional section.
2015-03-22 14:43:26 -05:00
Stephen Thirlwall
3fcc9c8d01 Step 9 test cases for apply on vectors 2015-03-22 22:45:45 +11:00
Joel Martin
0afb3ee867 Dockerfile: make Nim build one layer.
Save couple hundred MB or so.
2015-03-18 14:51:32 -05:00
Joel Martin
b3c30da9fc runtest: set pty size to fix readline of long lines.
- Also, add a long line test to step0 tests.
- Fix java step0 arg parsing.
- Fix postscript long line reads (larger buffer)
- Add mal step0_repl
2015-03-18 13:08:08 -05:00
Joel Martin
6b9eb18e01 tests: move reorder tests to better match guide. 2015-03-18 08:12:19 -05:00
Stephen Thirlwall
ba53efc2b5 Add test that (with-meta X ...) returns an X 2015-03-17 11:14:13 +11:00
Joel Martin
11df60ad8c Merge pull request #44 from sdt/step9-typo-fix
Remove extra ) from step9 test snippet
2015-03-16 09:51:21 -05:00
Stephen Thirlwall
617bdb3552 Remove extra ) from step9 test snippet
My reader complains if there is extra input after the top-level
read_form, so this test was inadvertently failing for me.
2015-03-16 16:55:34 +11:00
Stephen Thirlwall
58002e1bf3 Step 9 apply tests test user fns as well as core
I had a bug in my apply core function. It worked for core functions, but
not for user-defined functions.

This bug escaped direct testing, but caused problems in self-host
testing.

Here's a couple of simple test cases that catch those errors.
2015-03-16 16:49:28 +11:00
Joel Martin
4e7296f90a guide clarifications, but order for step5 tests. 2015-03-14 17:34:49 -05:00
Joel Martin
dbac60df00 All: move metadata, atoms, readline, conj to stepA.
- Move some of the more optional things (conj, readline) to stepA. All
  implementations pass step9 tests now.
- Move metadata and atoms to stepA.
- Update step9 and stepA diagrams.
2015-03-14 17:17:14 -05:00
Gavin Lewis
6f58a92605 Add outer tests to step3_env.mal 2015-03-14 08:53:20 -07:00
Joel Martin
86da00cc55 tests: add multilevel assoc test. 2015-03-12 21:49:58 -05:00
Joel Martin
4a55f10c42 docker: build script executable. Skip matlab automatically. 2015-03-12 17:41:55 -05:00
Joel Martin
c9de2e82ed Tests: add testing Dockerfile. Impl fixes.
- tests/docker/Dockerfile: specifies full docker image containing all
  tools/languages (except matlab).
- tests/docker-build.sh: build above image.
- tests/docker-run.sh: launch above image.
    Example: ./tests/docker-run.sh make test^js^step2
- Various fixes across multiple languages:
    - Unicode fixes for bash and R on Ubuntu Utopic
    - readline history fixes for when ~/.mal-history is not available
      or readable/writable. No fatal errors.
    - fixes to work with perl 5.20 (and still perl 5.18)
2015-03-11 22:22:35 -05:00
Joel Martin
31ad43483a tests: add step0_repl.mal test missed earlier. 2015-03-11 21:57:12 -05:00
Nacho Martín
a917237630 Removed extra parenthesis in tests for step5
Hi there, just fixing an extra parenthesis. 

PS: This thing is very addictive :)
2015-03-06 22:43:59 +01:00
Joel Martin
e27782ea09 tests: fix long line error when self-hosted. 2015-03-06 07:03:41 -06:00
Joel Martin
758933f215 tests: add macro-in-macro test.
E.g.: (or (or false 4))  ->  4
2015-03-05 11:27:22 -06:00
Joel Martin
90ab31710e JS: fix https://github.com/kanaka/mal/issues/9 2015-02-28 11:18:18 -06:00
Joel Martin
699f0ad23a Add long running perf test. 2015-02-28 10:38:17 -06:00
Joel Martin
d90c784472 miniMAL: stepA. Comments. Add impl Makefile for stats. 2015-02-16 00:01:10 -06:00
Joel Martin
9d8f029932 miniMAL: step6 2015-02-15 20:11:11 -06:00
Chouser
db11c74027 Add tests for problems uncovered during forth self-hosted tests 2015-02-21 13:16:40 -05:00
Chouser
f6a4ddf758 test step1: Add input for existing output case 2015-02-21 13:16:34 -05:00
Joel Martin
ffd31966ec guide.md: step9,A stubs. TODO. More vector tests. 2015-01-30 13:21:10 -06:00
Joel Martin
9d42904e47 Lua: all steps and self-hosting.
Also some misc docs/TODO updates.
2015-01-08 23:25:40 -06:00
Joel Martin
f4c8a091aa Make: refactor number type. Support large numbers.
- Can support numbers up to 100 decimal digits in length.
- Still no support for negative numbers or floating point.
- Change time-secs to time-ms and remove conditional in perf.mal
2015-01-09 16:16:56 -06:00
Joel Martin
f522319598 Racket: add steps0-A. Self-hosting.
- Some additioanl tests.
- Split step9 tests into optional but self-hosting requirements
  (metadata on functions) and other optional (conj, metadata on
  collections).
2015-01-09 16:16:55 -06:00
Joel Martin
c150ec41f4 Haskell: Add steps9-A, metadata, and atoms.
Some refactoring of Core.hs to make better use of pattern matching.

Only remaining thing is exception handling (generic try/throw).
2015-01-09 16:16:53 -06:00
Joel Martin
a816262a05 Scala: refactor collections with metadata.
Convert numeric to Long. Add time-ms.

Add Makefile for stats targets.
2015-01-09 16:16:51 -06:00
Joel Martin
b8ee29b22f All: add keywords.
Also, fix nth and count to match cloure.
2015-01-09 16:16:50 -06:00
Joel Martin
891c3f3b47 CoffeeScript: add all steps. Self-hosting. 2015-01-09 16:16:45 -06:00
Joel Martin
f947d503f7 R: atom support, fixes for self-hosting. 2015-01-09 16:16:45 -06:00
Joel Martin
8128c69a1d R: add step8_macros and step9_try. 2015-01-09 16:16:44 -06:00
Joel Martin
c30efef469 R: add step6_file and step7_quote
Change symbols to be special class.
2015-01-09 16:16:43 -06:00
Joel Martin
b554fd4ed0 rust: fix quote/quasiquote of vectors. 2015-01-06 21:59:01 -06:00
Joel Martin
77b2da6cf3 rust: add conj, stepA. Self-hosting! 2015-01-06 21:59:01 -06:00
Joel Martin
06fef9b518 rust: add atom support. Fix vector params. 2015-01-06 21:59:00 -06:00
Joel Martin
b12d98e4e3 rust: core hash-map functions. 2015-01-06 21:59:00 -06:00
Joel Martin
a77e2b31de rust: add step8_macros 2015-01-06 21:58:59 -06:00
Joel Martin
4ee7c0f297 rust: add step7_quote. Refactor with type constructors. 2015-01-06 21:58:58 -06:00
Joel Martin
abdd56ebc0 Rust: step0_repl and step1_read_print 2015-01-06 21:58:35 -06:00
Joel Martin
01c9731649 All: swap step9,A. Fixes for bash, C, perl.
step9_interop -> stepA_interop
stepA_more -> step9_try

C: fix glib headers
bash: behavior change of declare -A and pattern replacement.
perl: squelch new 5.18 warnings related to switch/given statement.

Also, include some in-progress interop related files.
2015-01-06 21:57:24 -06:00
Joel Martin
1771ab50b8 go: update README. Backport Func usage. 2015-01-06 21:57:02 -06:00
Joel Martin
ad95503cea go: add step6_file 2014-10-06 22:27:28 -05:00
Joel Martin
70ea599b6e go: step1_read_print print working. 2014-10-04 21:49:26 -05:00
Joel Martin
cc021efe10 Add step5/9 tests for impls that support it.
- Also remove broken make/tests/*.mk tests. Not used any more.
2014-04-27 17:58:48 -05:00
Joel Martin
6301e0b637 All: TCO let* and quasiquote. 2014-04-23 21:59:50 -05:00
Joel Martin
89bd4de1e2 Perl: add vector, hash-map, metadata, atom support. TCO let*
- Changes all collections to be one level of inderection where the top
  level is always a hash containing 'meta' and 'val'.
2014-04-23 21:46:57 -05:00
Joel Martin
16354bb461 Perl: add stepA_more. 2014-04-22 23:50:43 -05:00
Joel Martin
a5a6605877 Perl: add step4_if_fn_do
- Move string/printing tests to the bottom of tests/step4_if_fn_do
2014-04-20 23:45:58 -05:00
Joel Martin
9af8aee63a Tests: move optional features to end and print header. 2014-04-19 15:27:19 -05:00
Joel Martin
db4c329aff All: perf test, Makefile refactor, add *host-language*
Other:
- bash,make,postscript: quasiquote of vectors
- Fix Java slurp
- add time function to core.mal
    - switches on *host-language* for make time-secs vs time-ms
- Ignore */experiments directories
2014-04-17 21:49:07 -05:00
Joel Martin
8cb5cda46c All: move some fns to core. Major cleanup.
- Don't import/require core until step4.
- Define cond/or macros from step8
2014-04-16 23:57:50 -05:00
Joel Martin
a05f7822b1 Python: metadata on builtin funcs. Support python3. 2014-04-16 22:42:17 -05:00
Joel Martin
0027e8fed4 PS: fix function closures. Self-hosted up to step7. 2014-04-14 22:46:54 -05:00
Joel Martin
d85fc03775 Ruby: add step8_macros 2014-04-10 23:27:50 -05:00
Joel Martin
a34b020065 Fix metadata on functions.
- Don't use metadata to store ast, env, params data.
- In Clojure, store metadata on the :meta key of the real metadata.
  This also allows using any datatype as metadata.
2014-04-09 23:58:27 -05:00
Joel Martin
17ae845ec1 C#: add metadata and atoms. 2014-04-09 21:57:50 -05:00
Joel Martin
b079f51028 C,PHP,Python: stepA fixup. All tests/impls pass! 2014-04-06 16:24:27 -05:00
Joel Martin
5ce65382cf PS: add vector, hash-map, atoms and metadata.
As part of this lists switch from being a postscript array to being
a mal boxed type (dictionary with type in the /_maltype_ key).
2014-04-06 15:23:40 -05:00
Joel Martin
9528bb1451 All: pass stepA tests, in particular with correct conj behavior. 2014-04-01 22:50:55 -05:00
Joel Martin
aef93ea396 PS: error handling, throw, print excpetions without dying. 2014-03-29 17:35:53 -05:00
Joel Martin
3169070063 Current state of mal for Clojure West lighting talk. 2014-03-24 16:32:24 -05:00