/mumbler

My experimental programming language using Truffle

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

Mumbler is a lisp programming language I wrote to try out the Graal JIT for the JVM.

Mumbler

Mumbler is a very small lisp modeled after Scheme but with far fewer special forms and built-in functions. Here is the ”Mumbler language specification”.

Build

Mumbler uses Gradle as the build system. To build the code simply run

cd ${MUMBLER_REPO}/lang
./gradlew installDist

Run

Mumbler requires a special version of the JVM. You can download a graal JVM from Oracle. Mumbler requires version 0.14 or greater.

You can start Mumbler’s REPL from the build directory. Just set JAVA_HOME to point to the Graal JVM.

JAVA_HOME=<graal-vm-dir> ${MUMBLER_REPO}/lang/build/install/mumbler/bin/mumbler

Run tests

The test/ directory contains several Mumbler scripts that try out different features. To run all the tests:

${MUMBLER_REPO}/test/run_tests

You can try out individual scripts by starting running Mumbler directly.

${MUMBLER_REPO}/lang/build/install/mumbler/bin/mumbler ${MUMBLER_REPO}/test/<a-random-script>.mumbler

Run benchmarks

Build Truffle and Mumbler and set environment variables.

${MUMBLER_REPO}/benchmark/measure <benchmark-name>

benchmark-name is the name of one of the directories under benchmark.

Set Environment Variables

Mumbler’s scripts use two environment variables.

JAVA_HOME : The directory of the Graal VM. Mumbler may run using the default Oracle or OpenJDK JVM, but you won't see the performance gains that Graal provides.
MUMBLER_HOME : The path where gradle built and installed Mumbler. It should be under ${MUMBLER_HOME}/lang/build/install/mumbler

The MUMBLER_REPO environment variable referenced here is not used by an scripts. It signifies where the Mumbler repo was cloned on your system.

License

Copyright © 2014-2016 Cristian Esquivias

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.