My experimental programming language using Truffle
Java Python Other
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
benchmark
lang
test
.gitignore
LICENSE
README.org

README.org

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/.