Joel Martin [Thu, 27 Dec 2018 20:19:28 +0000 (14:19 -0600)]
Merge pull request #333 from LispLY/objc-fix-conj-meta
ojbc: fix conj, meta and with-meta
陆遥 [Tue, 18 Dec 2018 06:05:56 +0000 (14:05 +0800)]
In objc. Modified conj, meta and with-meta to pass all the tests in stepA.
Joel Martin [Mon, 3 Dec 2018 19:20:44 +0000 (13:20 -0600)]
Test uncaught throw, catchless try* . Fix 46 impls.
Fixes made to: ada, c, chuck, clojure, coffee, common-lisp, cpp,
crystal, d, dart, elm, erlang, es6, factor, fsharp, gnu-smalltalk,
groovy, guile, haxe, hy, js, livescript, matlab, miniMAL, nasm, nim,
objc, objpascal, ocaml, perl, perl6, php, plsql, ps, python, r,
rpython, ruby, scheme, swift3, tcl, ts, vb, vimscript, wasm, yorick.
Catchless try* test is an optional test. Not all implementations
support catchless try* but a number were fixed so they at least don't
crash on catchless try*.
Joel Martin [Mon, 10 Dec 2018 18:30:58 +0000 (12:30 -0600)]
runtest: support carriage returns in tests.
This allows carriage returns to be specified in tests which allows
multiline tests to be written i.e. by using Ctrl-V Enter to put
a literal carriage return (^M) into the test definition. The effect of
this is to send a single string to the REPL that contains newlines
which normally can't be done because readline behavior will split it
into two separate lines.
Joel Martin [Mon, 10 Dec 2018 06:30:59 +0000 (00:30 -0600)]
wasm: split js mode platform code out.
Simplify the interface to remove imports that aren't used (stdout and
add_history) and simplify (rename fputs to printline).
Joel Martin [Mon, 10 Dec 2018 04:55:49 +0000 (22:55 -0600)]
wasm: enable execution with Node
Add node mode to travis alongside wace_libc.
Joel Martin [Sun, 9 Dec 2018 00:29:28 +0000 (18:29 -0600)]
README: fix formatting.
Joel Martin [Sun, 9 Dec 2018 00:26:13 +0000 (18:26 -0600)]
README: add missing talk youtube links.
Joel Martin [Sun, 9 Dec 2018 00:11:19 +0000 (18:11 -0600)]
wasm: add package.json to pull in wamp.
Joel Martin [Sat, 8 Dec 2018 22:56:59 +0000 (16:56 -0600)]
wasm: update README. Activate in travis.
Joel Martin [Sat, 8 Dec 2018 22:52:48 +0000 (16:52 -0600)]
wasm: Update Dockerfile. WAMP and WASM_AS params.
Joel Martin [Sat, 8 Dec 2018 22:51:16 +0000 (16:51 -0600)]
wasm: fix to work with wabt's wat2wasm.
Joel Martin [Sat, 8 Dec 2018 21:35:49 +0000 (15:35 -0600)]
wasm: drop unnecessary signed suffixes.
Apparently some of the assemblers ignored these sign indicators and so
this worked in the past.
Joel Martin [Fri, 7 Dec 2018 07:11:05 +0000 (01:11 -0600)]
wasm: add line count rules.
Joel Martin [Sun, 11 Nov 2018 23:55:38 +0000 (17:55 -0600)]
wasm: use LET macro and br_if.
Joel Martin [Sun, 11 Nov 2018 21:30:42 +0000 (15:30 -0600)]
wasm: String refactor. Release macro memory
Also split platform out.
Joel Martin [Sun, 11 Nov 2018 21:07:27 +0000 (15:07 -0600)]
wasm: improve debug output using padding.
Joel Martin [Sun, 14 Oct 2018 21:44:08 +0000 (16:44 -0500)]
wasm: Steps 4-A, hashmaps, metadata.
- Use more concise param and local syntax.
- Separate out string.wam.
- Add pr_str_seq functionality and add in print_readably
functionality.
- Add REPLACE3 function.
- Remove use of putchar and simplify util.wam
- Move string functions from util.wam to string.wam including some
renames to be more consistent with C library names.
- Add temporary content to 256 character buffers so that they are
de-duplicated/combined.
- Use AND/OR macros.
- Improve Makefile deps and use more general wasm target.
- Properly cleanup memory in try* and use TCO as part of try*.
Joel Martin [Sun, 14 Oct 2018 04:10:28 +0000 (23:10 -0500)]
wasm: Convert to wam syntax using wamp.
- Convert sources to much more concise wam syntax supported by wamp.
- Rename sources from *.wast to *.wam and generate *.wast files by
translating via wamp.
Joel Martin [Sat, 13 Oct 2018 05:26:38 +0000 (00:26 -0500)]
wasm: Steps 0-3 ported from basic. Preprocessor.
Needs wace from https://github.com/kanaka/wac to run.
wastpp.py processes the listed modules and outputs a single combined
module. It finds inline strings and hoists them to the top into a data
section and creates pointer variables into that memory and replaces
the inline strings with pointer lookups.
Joel Martin [Thu, 29 Nov 2018 23:10:01 +0000 (17:10 -0600)]
plpgsql, racket, tcl, yorick: fix errors.
Joel Martin [Thu, 29 Nov 2018 23:09:28 +0000 (17:09 -0600)]
guile, hy, java, make, matlab, miniMAL: fix errors
Joel Martin [Thu, 29 Nov 2018 21:32:27 +0000 (15:32 -0600)]
lua, nasm, perl, rexx, vimscript: fix errors.
Joel Martin [Thu, 29 Nov 2018 21:31:50 +0000 (15:31 -0600)]
ada, d, elixir, es6, factor, haxe: fix errors.
Joel Martin [Thu, 29 Nov 2018 06:41:47 +0000 (00:41 -0600)]
awk, bash, c, coffee, js: fix errors.
Joel Martin & Chouser [Fri, 30 Nov 2018 20:54:21 +0000 (14:54 -0600)]
forth: fix errors/reporting in steps 1-8.
Joel Martin [Thu, 29 Nov 2018 06:39:53 +0000 (00:39 -0600)]
runtest.py: process output/errors as regex match.
Update output test data to be regex compatible.
Joel Martin [Thu, 29 Nov 2018 03:04:44 +0000 (21:04 -0600)]
runtest.py: more generic prompt matching.
Joel Martin [Thu, 29 Nov 2018 03:33:56 +0000 (21:33 -0600)]
awk: fix ignored escaped 'u' warning.
Joel Martin [Thu, 29 Nov 2018 02:45:28 +0000 (20:45 -0600)]
mal: update Dockerfile to Ubuntu 18.04 and node 10
Joel Martin [Thu, 29 Nov 2018 02:49:25 +0000 (20:49 -0600)]
Merge pull request #331 from vi/patch-1
Add link to my Rust implementation
Joel Martin [Wed, 28 Nov 2018 23:12:17 +0000 (17:12 -0600)]
Update JS impls: use ffi-napi and Ubuntu 18.04
Vitaly Shukela [Fri, 9 Nov 2018 21:24:56 +0000 (00:24 +0300)]
Add link to my Rust implementation
I assume this README serves as a wiki for collecting impls.
Joel Martin [Tue, 30 Oct 2018 00:27:05 +0000 (19:27 -0500)]
Merge pull request #330 from omarroth/update-crystal
Update Crystal implementation
Omar Roth [Sat, 27 Oct 2018 20:20:36 +0000 (15:20 -0500)]
Update Crystal implementation
Joel Martin [Sat, 25 Aug 2018 22:30:33 +0000 (17:30 -0500)]
Add link to Rust implementation by Tim Morgan.
Joel Martin [Tue, 17 Jul 2018 00:10:00 +0000 (19:10 -0500)]
Travis: re-active perf for erlang.
Local testing shows that the test completes and doesn't hit OOM.
Joel Martin [Tue, 17 Jul 2018 00:04:26 +0000 (17:04 -0700)]
Merge pull request #326 from seven1m/patch-1
Fix link to FAQ document
Tim Morgan [Mon, 16 Jul 2018 23:41:12 +0000 (18:41 -0500)]
Fix link to FAQ document
Joel Martin [Mon, 16 Jul 2018 23:15:19 +0000 (18:15 -0500)]
Travis: enable mal impl for perf test.
Joel Martin [Mon, 16 Jul 2018 22:45:55 +0000 (17:45 -0500)]
Travis: trigger build after github push error.
git push gave this error and the commit was successfully pushed but it
didn't result in Travis starting a build:
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
remote: Unexpected system error after push was received.
remote: These changes may not be reflected on github.com!
remote: Your unique error code:
1d9d84300a34930b94914e59e9c3b381
To git@github.com:kanaka/mal.git
5ffa331..
1332215 master -> master
Joel Martin [Mon, 16 Jul 2018 17:33:36 +0000 (12:33 -0500)]
perf: more accurate iter count (last-iters).
We should return the iter count prior to then final iteration because
the final one was incomplete when the 10 seconds expired.
Joel Martin [Mon, 16 Jul 2018 17:24:05 +0000 (12:24 -0500)]
perf: simplify perf3 iter calc. Enable perf^mal.
Since the iter count increases by 1 each time through the "loop", when
we hit more than 10 seconds elapsed time we can just return the
previous iter count rather than doing a percentage calculation. This
fixes results for basic modes which couldn't do the percent
calculation because itermediate values were greater than 32,768 which
is the limit for basic MODES.
Also, the mal implementation now runs and returns legit results so
re-enable perf^impl.
Joel Martin [Mon, 16 Jul 2018 14:34:37 +0000 (09:34 -0500)]
perf: fix perf3 to show total iters instead of / 3
The run-fn-for function was originally name run-fn and was hard-coded
to run for 3 seconds. I forgot to replace the 3 with the max-secs
variable. However, given that some implementations have less than
1 iteration per second, I'm just going to drop that division and
report the iterations per max-seconds so that for the slowest
implementations we have some relative comparison instead of all of
them just reporting 0.
Thanks to Tim Morgan for discovering this bug:
https://github.com/kanaka/mal/commit/
699f0ad23aca21076edb6a51838d879ca580ffd5
Joel Martin [Sun, 15 Jul 2018 00:27:11 +0000 (19:27 -0500)]
rust: fix Dockerfile to include WORKDIR=/mal
Joel Martin [Sat, 14 Jul 2018 18:32:35 +0000 (13:32 -0500)]
[travis] disable foment. Still hangs in perf.
Joel Martin [Fri, 13 Jul 2018 20:24:18 +0000 (15:24 -0500)]
scheme: enable foment to test if hangs are fixed
Joel Martin [Thu, 12 Jul 2018 05:23:40 +0000 (00:23 -0500)]
rust: Update rust and update/refactor implementation
This rewrites the rust implementation to use many new features of the
current version of rust.
The refactor is much more concise (only 2/3rds the size) and switches
to using a lot of the more functional features (iterators, closures,
etc) that have been added or improved in rust.
Unfortunately, the implementation is a fair bit slower (about 30% on
perf3). It's not clear why this is the case but concision and being
more idiomatic wins over performance.
Joel Martin [Fri, 29 Jun 2018 03:02:42 +0000 (22:02 -0500)]
rust: remove rustyline ANSI CSI codes from output
Joel Martin [Fri, 13 Jul 2018 05:55:20 +0000 (22:55 -0700)]
Merge pull request #323 from jig/master
Go: Fix panic on call to function with wrong number of arguments
Joel Martin [Thu, 12 Jul 2018 23:15:29 +0000 (16:15 -0700)]
Merge pull request #325 from chr15m/php-interop-language-constructs
PHP: Wrap some native "language constructs".
Joel Martin [Thu, 12 Jul 2018 22:44:10 +0000 (15:44 -0700)]
Merge pull request #324 from seven1m/add-not-test-for-nil
Test that (not nil) returns true
Joel Martin [Thu, 12 Jul 2018 19:24:14 +0000 (14:24 -0500)]
tests/stepA: allow time-ms result to be signed.
In Java the time-ms value was negative. This actually still works fine
because arithmetic comparison is still correct. So allow signed
time-ms results.
Joel Martin [Thu, 12 Jul 2018 19:21:55 +0000 (14:21 -0500)]
TypeScript: fix HOME bug and node symlink.
Update the Dockerfile to fix a symlink loop.
Update node_readline.ts to fix a failure with usage of
process.env.HOME which started failing for some reason.
Joel Martin [Thu, 12 Jul 2018 18:51:02 +0000 (13:51 -0500)]
scala: fix w/ xenial, sbt 0.14.6, update build.
Build had become out of date so update docker image to xenial and sbt
to 0.14.6 and update Scala build files to go with new sbt version.
Joel Martin [Thu, 12 Jul 2018 14:27:21 +0000 (09:27 -0500)]
java: fix by updating to xenial, java 8, maven 3
The vivid build with java 7 and maven 2 was no longer able to retrieve
upstream deps and was failing.
Chris McCormick [Thu, 12 Jul 2018 12:21:03 +0000 (20:21 +0800)]
PHP: Wrap some native "language constructs".
Common ones which can't be called otherwise.
Can now be reached via php/exit, php/print, php/require.
Fixes chr15m/frock#7
Tim Morgan [Mon, 9 Jul 2018 03:21:01 +0000 (22:21 -0500)]
Test that (not nil) returns true
Jordi Íñigo [Sun, 8 Jul 2018 09:22:49 +0000 (11:22 +0200)]
Go: Minor
Jordi Íñigo [Sun, 8 Jul 2018 09:20:46 +0000 (11:20 +0200)]
Go: added file back accidentally removed
Jordi Íñigo [Sat, 7 Jul 2018 23:44:28 +0000 (01:44 +0200)]
Go: modified error messages
Jordi Íñigo [Sat, 7 Jul 2018 23:23:00 +0000 (01:23 +0200)]
Go: added argument count checks to functions
Jordi Íñigo [Sat, 7 Jul 2018 20:04:52 +0000 (22:04 +0200)]
Go: removed some redundant tests
Jordi Íñigo [Fri, 6 Jul 2018 11:01:57 +0000 (13:01 +0200)]
Go: Fix panic on call to function with wrong number of arguments
Joel Martin [Tue, 26 Jun 2018 13:43:15 +0000 (08:43 -0500)]
Merge pull request #322 from chr15m/projects-using-mal
Added README section for projects using mal.
Chris McCormick [Tue, 26 Jun 2018 07:27:45 +0000 (15:27 +0800)]
Added README section for projects using mal.
Joel Martin [Mon, 25 Jun 2018 16:04:41 +0000 (11:04 -0500)]
Merge pull request #320 from chr15m/php-interop-improvements
Updated PHP native interop interface.
Chris McCormick [Sun, 24 Jun 2018 08:31:40 +0000 (16:31 +0800)]
Updated PHP native interop interface.
Joel Martin [Sun, 24 Jun 2018 16:27:48 +0000 (11:27 -0500)]
Merge pull request #319 from chr15m/refactor-php-web-runner
PHP: refactor web running mechanism.
Chris McCormick [Sun, 24 Jun 2018 11:45:29 +0000 (19:45 +0800)]
PHP: refactor web running mechanism.
Joel Martin [Sat, 23 Jun 2018 23:10:40 +0000 (18:10 -0500)]
Merge pull request #318 from jamesbvaughan/fix-readme-typo
Fix typo in Common Lisp section of Readme
James Vaughan [Sat, 23 Jun 2018 23:08:15 +0000 (16:08 -0700)]
Fix typo in Common Lisp section
Joel Martin [Fri, 22 Jun 2018 17:43:56 +0000 (12:43 -0500)]
Merge pull request #317 from kanaka/rename-short-abbreviations
Rename short abbreviations
Vasilij Schneidermann [Fri, 22 Jun 2018 16:24:47 +0000 (18:24 +0200)]
Use correct implementation names in build matrix
Vasilij Schneidermann [Fri, 22 Jun 2018 16:20:38 +0000 (18:20 +0200)]
Rename gst and pil directories in README
Vasilij Schneidermann [Sun, 17 Jun 2018 17:54:54 +0000 (19:54 +0200)]
Rename gst and pil to gnu-smalltalk and picolisp
Joel Martin [Mon, 4 Jun 2018 00:56:52 +0000 (19:56 -0500)]
Merge pull request #316 from dubek/fantom
I pushed a container (we should probably figure out how to let you and @wasamasa do that at some point). The Fantom build is passing. Did a brief code review and looks good. Merged.
Dov Murik [Sun, 3 Jun 2018 20:14:27 +0000 (20:14 +0000)]
travis: Add fantom to build CI matrix
Dov Murik [Sun, 29 Apr 2018 12:53:32 +0000 (12:53 +0000)]
Add Fantom implementation
Joel Martin [Mon, 2 Apr 2018 16:01:24 +0000 (11:01 -0500)]
[clojure] update lumo/image to fix module mismatch.
Joel Martin [Thu, 4 Jan 2018 17:33:58 +0000 (11:33 -0600)]
Merge pull request #310 from bendudson/master
NASM x86-64 assembly implementation
Ben Dudson [Thu, 4 Jan 2018 16:05:03 +0000 (16:05 +0000)]
Tidying, minimising differences between steps
Merging fixes in stepA into earlier steps, and
removing differences in comments and spacing
Ben Dudson [Thu, 4 Jan 2018 14:36:53 +0000 (14:36 +0000)]
Removing env and core from step2
Changed Env to Map. Need to define arithmetic
operators in step2 rather than core for this step.
Ben Dudson [Wed, 3 Jan 2018 23:50:34 +0000 (23:50 +0000)]
Tidying up steps 0-3 (in progress)
Trying to remove common code, and minimise differences
between steps.
Ben Dudson [Wed, 3 Jan 2018 15:47:05 +0000 (15:47 +0000)]
Adding nasm to Travis yml file
Enables testing of NASM implementation
Ben Dudson [Wed, 3 Jan 2018 15:43:22 +0000 (15:43 +0000)]
Add clean target
Deletes executables and object files
Ben Dudson [Tue, 2 Jan 2018 23:48:51 +0000 (23:48 +0000)]
Add stats and stats-lisp targets
Updated list of source files, added targets
with `;` as the comment character
Ben Dudson [Tue, 2 Jan 2018 23:39:01 +0000 (23:39 +0000)]
Bump language count in README
Updated to 72 languages
Ben Dudson [Tue, 2 Jan 2018 23:37:42 +0000 (23:37 +0000)]
Dockerfile xenial and binutils install
* Changed from generic ubuntu to ubuntu:xenial
* Now requires binutils to be installed for `ld`
Joel Martin [Tue, 2 Jan 2018 15:53:18 +0000 (09:53 -0600)]
Merge pull request #311 from bendudson/nasm-tests-step7_9
New tests for steps 7 and 9
Joel Martin [Tue, 2 Jan 2018 15:51:23 +0000 (09:51 -0600)]
Merge pull request #312 from jonaslu/add_metadata_reader_macro_in_docs
Update guide with note on reader macro with-meta
Joel Martin [Sat, 30 Dec 2017 19:18:34 +0000 (13:18 -0600)]
Swift: try forcing Travis to xcode version 7.3
Jonas Lundberg [Sat, 30 Dec 2017 18:18:20 +0000 (19:18 +0100)]
Update guide with note on reader macro with-meta
Guide was missing the deferrable step of having
a reader macro for ^ (which is included in the
tests for step A) which caused some confusion
as to what it was.
It's included in the tests/step1_read_print.mal
but not mentioned in the docs.
Ben Dudson [Thu, 21 Dec 2017 10:56:14 +0000 (10:56 +0000)]
Fix bug in map: should pass args as list
This appeared only for variadic function which is used in EVAL.
Added a test to step 9 to catch this earlier.
Ben Dudson [Sat, 16 Dec 2017 23:52:59 +0000 (23:52 +0000)]
Fix bug in concat, add test to step 7
Concatenating multiple empty lists resulted in a return
which should be empty but was not checked.
(concat (list) (list))
-> ()
Test added to step 7 to catch, since this appeared in
self-hosting step 8 in the -> macro expansion.
Ben Dudson [Mon, 27 Nov 2017 14:07:00 +0000 (14:07 +0000)]
Adding test to step7 for quasiquote
Handling of the last element of the AST
is tested by having an unquote as the last element.
Ben Dudson [Fri, 29 Dec 2017 22:44:22 +0000 (22:44 +0000)]
Removing new tests from step7 and step9
These will be separated into another branch.
Ben Dudson [Wed, 27 Dec 2017 23:57:34 +0000 (23:57 +0000)]
Add docker file. Docker tests pass
Tested with:
```
docker build -t kanaka/mal-test-nasm" .
make DOCKERIZE=1 "test^nasm"
make DOCKERIZE=1 MAL_IMPL=nasm "test^mal"
```
Docker image not pushed to server, so Travis script fails.
Ben Dudson [Wed, 27 Dec 2017 23:34:30 +0000 (23:34 +0000)]
Moved macro-related functions to start of core Env
Changes the performance test 3 from ~ 3500/s to ~4300/s
Probably indicates that Env lookups are a big part of the
runtime.
Ben Dudson [Wed, 27 Dec 2017 23:33:03 +0000 (23:33 +0000)]
Adding README.md file and Make all target
* README.md in nasm/ directory lists some features and limitations
* Added NASM entry to root directory README.md
* Added an 'all' target to the nasm Makefile