-sudo: required
-
-language: node
-
-services:
- - docker
-
-matrix:
- include:
-# - env: IMPL=awk
-# os: linux
-# - env: IMPL=bash
-# os: linux
-# - env: IMPL=c
-# os: linux
-# - env: IMPL=cpp
-# os: linux
-# - env: IMPL=coffee
-# os: linux
-# - env: IMPL=cs
-# os: linux
-# - env: IMPL=clojure
-# os: linux
-# - env: IMPL=crystal
-# os: linux
-# - env: IMPL=elixir
-# os: linux
-# - env: IMPL=erlang
-# os: linux
-# - env: IMPL=es6
-# os: linux
-# - env: IMPL=factor
-# os: linux
-# - env: IMPL=forth
-# os: linux
-# - env: IMPL=fsharp
-# os: linux
-# - env: IMPL=go
-# os: linux
-# - env: IMPL=groovy
-# os: linux
-# - env: IMPL=guile
-# os: linux
-# - env: IMPL=haskell
-# os: linux
-# - env: IMPL=java
-# os: linux
-# - env: IMPL=js
-# os: linux
-# - env: IMPL=julia
-# os: linux
-# - env: IMPL=lua
-# os: linux
-# - env: IMPL=make
-# os: linux
-# - env: IMPL=mal BUILD_IMPL=js
-# os: linux
-# #- env: IMPL=matlab # licensed (until port to Octave)
-# # os: linux
-# #- env: IMPL=miniMAL # repl/string slice bug
-# # os: linux
-# - env: IMPL=nim
-# os: linux
-# - env: IMPL=ocaml
-# os: linux
-# - env: IMPL=perl
-# os: linux
-# - env: IMPL=php
-# os: linux
-# - env: IMPL=ps
-# os: linux
-# - env: IMPL=python
-# os: linux
-# - env: IMPL=r
-# os: linux
-# - env: IMPL=racket
-# os: linux
-# - env: IMPL=rpython
-# os: linux
-# - env: IMPL=ruby
-# os: linux
- - env: IMPL=rust
- os: linux
-# - env: IMPL=scala
-# os: linux
-# - env: IMPL=swift
-# os: osx
-# osx_image: xcode7
-# - env: IMPL=vb
-# os: linux
-
-script:
- - ./.travis_build.sh
- - ./.travis_test.sh
- - cat test.out
- #- cat perf.out
+sudo: required
+
+language: node
+
+services:
+ - docker
+
+# matrix layout based on:
+# https://github.com/libressl-portable/portable/blob/9e090286b55def5ca2c0cc375c65023a70d8796e/.travis.yml
+
+matrix:
+ include:
+ - env: IMPL=awk
+ - env: IMPL=bash
+ - env: IMPL=c
+ - env: IMPL=cpp
+ - env: IMPL=coffee
+ - env: IMPL=cs
+ - env: IMPL=clojure
+ - env: IMPL=crystal
+ - env: IMPL=elixir
+ - env: IMPL=erlang NO_PERF=1 # perf runs out of memory
+ - env: IMPL=es6
+ - env: IMPL=factor
+ - env: IMPL=forth
+ - env: IMPL=fsharp
+ - env: IMPL=go
+ - env: IMPL=groovy
+ - env: IMPL=guile
+ - env: IMPL=haskell
+ - env: IMPL=java
+ - env: IMPL=js
+ - env: IMPL=julia
+ - env: IMPL=kotlin
+ - env: IMPL=lua
+ - env: IMPL=make
+ - env: IMPL=mal BUILD_IMPL=js NO_PERF=1
+ #- env: IMPL=matlab # licensed (until port to Octave)
+ - env: IMPL=miniMAL BUILD_IMPL=js
+ - env: IMPL=nim
+ - env: IMPL=ocaml
+ - env: IMPL=perl
+ - env: IMPL=php
+ - env: IMPL=ps
+ - env: IMPL=python
+ - env: IMPL=r
+ - env: IMPL=racket
+ - env: IMPL=rpython
+ - env: IMPL=ruby
+ - env: IMPL=rust
+ - env: IMPL=scala
+ - env: IMPL=swift NO_DOCKER=1
+ os: osx
+ osx_image: xcode7
+ - env: IMPL=tcl
+ - env: IMPL=vimscript NO_PERF=1 # /dev/stdout not writable
+ - env: IMPL=vb
+
+script:
+ # Build
+ - ./.travis_build.sh
+
+ # Regular tests
+ - ./.travis_test.sh test ${IMPL}
+ - cat test.err || true
+
+ # NOTE: use self-host-test branch
+ # Self-hosted tests
+ #- ./.travis_test.sh test mal ${IMPL}
+ #- cat test.err || true; rm -f test.err
+
+ # Performance tests
+ - if [ -z "${NO_PERF}" ]; then ./.travis_test.sh perf ${IMPL}; fi
+ - cat perf.err || true