- {env: IMPL=clojure clojure_MODE=cljs, services: [docker]}
- {env: IMPL=common-lisp, services: [docker]}
- {env: IMPL=crystal, services: [docker]}
- - {env: IMPL=d, services: [docker]}
+ - {env: IMPL=d d_MODE=gdc, services: [docker]}
+ - {env: IMPL=d d_MODE=ldc2, services: [docker]}
+ - {env: IMPL=d d_MODE=dmd, services: [docker]}
- {env: IMPL=dart, services: [docker]}
- {env: IMPL=elisp, services: [docker]}
- {env: IMPL=elixir, services: [docker]}
basic_MODE = cbm
# clj or cljs (Clojure vs ClojureScript/lumo)
clojure_MODE = clj
+# gdc, ldc2, or dmd
+d_MODE = gdc
# python, js, cpp, or neko
haxe_MODE = neko
# octave or matlab
**1. Mal is a Clojure inspired Lisp interpreter**
-**2. Mal is implemented in 76 languages (77 implementations total)**
+**2. Mal is implemented in 76 languages (77 different implementations and 98 runtime modes)**
| Language | Creator |
| -------- | ------- |
# implementations
##########################################################
+RUN apt-get -y update
+
# Required for running tests
-RUN apt-get -y update && apt-get -y install make python
+RUN apt-get -y install make python
# Some typical implementation and test requirements
-RUN apt-get -y update && apt-get -y install curl libreadline-dev libedit-dev
+RUN apt-get -y install curl libreadline-dev libedit-dev
RUN mkdir -p /mal
WORKDIR /mal
# Specific implementation requirements
##########################################################
-RUN apt-get -y update && apt-get -y install gcc gdc ldc gpg wget
+RUN apt-get -y install gcc gdc ldc gpg wget
-RUN wget https://dlang.org/install.sh -q -O install.sh && bash install.sh -p /usr/local/dlang && chmod 755 /usr/local/dlang/dmd*
+RUN wget https://dlang.org/install.sh -q -O install.sh && \
+ bash install.sh -p /usr/local/dlang && \
+ chmod 755 /usr/local/dlang/dmd* && \
+ ln -sf /usr/local/dlang/dmd-*/linux/bin64/dmd /usr/bin/dmd
ENV HOME /mal
-D ?= gdc
+d_MODE ?= gdc
+
+D ?= $(d_MODE)
ifeq ($(D),gdc)
CFLAGS += -g -O2 -Wall