# mal - Make a Lisp
+[![Build Status](https://travis-ci.org/kanaka/mal.svg?branch=master)](https://travis-ci.org/kanaka/mal)
+
## Description
Mal is a Clojure inspired Lisp interpreter.
-Mal is implemented in 40 different languages:
+Mal is implemented in 43 different languages:
* GNU awk
* Bash shell
* Java
* JavaScript ([Online Demo](http://kanaka.github.io/mal))
* Julia
+* Kotlin
* Lua
* GNU Make
* mal itself
* Rust
* Scala
* Swift
+* Tcl
+* Vimscript
* Visual Basic.NET
### GNU awk
-*The GNU awk implemenation was created by [Miutsuru kariya](https://github.com/kariya-mitsuru)*
+*The GNU awk implementation was created by [Miutsuru kariya](https://github.com/kariya-mitsuru)*
The GNU awk implementation of mal has been tested with GNU awk 4.1.1.
*The Crystal implementation of mal was created by [Linda_pp](https://github.com/rhysd)*
-The Crystal implemenation of mal has been tested with Crystal 0.7.2.
+The Crystal implementation of mal has been tested with Crystal 0.8.0.
```
cd crystal
```
cd elixir
+mix stepX_YYY
+# Or with readline/line editing functionality:
iex -S mix stepX_YYY
```
*The Erlang implementation was created by [Nathan Fiedler (nlfiedler)](https://github.com/nlfiedler)*
-The Erlang implementation of mal requires [Erlang/OTP R17](http://www.erlang.org/download.html) and [rebar](https://github.com/rebar/rebar) to build.
+The Erlang implementation of mal requires [Erlang/OTP R17](http://www.erlang.org/download.html)
+and [rebar](https://github.com/rebar/rebar) to build.
```
cd erlang
```
cd factor
-FACTOR_ROOTS=src factor -run=stepX_YYY
+FACTOR_ROOTS=. factor -run=stepX_YYY
```
### Forth
### Julia
-The Julia implementation of mal has been tested with Julia 0.3.7.
+The Julia implementation of mal requires Julia 0.4.
```
cd julia
julia stepX_YYY.jl
```
+### Kotlin
+
+*The Kotlin implementation was created by [Javier Fernandez-Ivern](https://github.com/ivern)*
+
+The Kotlin implementation of mal has been tested with Kotlin 1.0.0-beta.
+
+```
+cd kotlin
+make
+java -jar stepX_YYY.jar
+```
+
### Lua
Running the Lua implementation of mal requires lua 5.1 or later,
```
cd rpython
-make # this takes a long time
+make # this takes a very long time
./stepX_YYY
```
*The Swift implementation was created by [Keith Rollin](https://github.com/keith-rollin)*
-The Swift implemenation of mal requires the Swift 1.2 compiler (XCode
-6.3) to build.
+The Swift implementation of mal requires the Swift 2.0 compiler (XCode
+7.0) to build. Older versions will not work due to changes in the
+language and standard library.
```
cd swift
./stepX_YYY
```
+### Tcl 8.6
+
+*The Tcl implementation was created by [Dov Murik](https://github.com/dubek)*
+
+The Tcl implementation of mal requires Tcl 8.6 to run. For readline line
+editing support, install tclreadline.
+
+```
+cd tcl
+tclsh ./stepX_YYY.tcl
+```
+
+### Vimscript
+
+*The Vimscript implementation was created by [Dov Murik](https://github.com/dubek)*
+
+The Vimscript implementation of mal requires Vim to run. It has been tested
+with Vim 7.4.
+
+```
+cd vimscript
+./run_vimscript.sh ./stepX_YYY.vim
+```
+
### Visual Basic.NET ###
The VB.NET implementation of mal has been tested on Linux using the Mono
make test^step7
```
-* To run tests for a specifc step against a single implementation:
+* To run tests for a specific step against a single implementation:
```
make test^IMPL^stepX
### Generating language statistics
-* To report line and byte stastics for a single implementation:
+* To report line and byte statistics for a single implementation:
```
make stats^IMPL
make stats^js
```
-* To report line and bytes stastics for general Lisp code (env, core
+* To report line and bytes statistics for general Lisp code (env, core
and stepA):
```
make stats-lisp^IMPL
needed to run tests against all the implementations (except for MATLAB
which is proprietary/licensed).
-Build the the docker image using a provided script. WARNING: this will
+Build the docker image using a provided script. WARNING: this will
likely take over an hour to build from scratch and use more 3 GB of disk:
```bash
./tests/docker-build.sh