All Projects → cesquivias → Mumbler

cesquivias / Mumbler

Licence: gpl-3.0
My experimental programming language using Truffle

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Mumbler

Disperse
React/Redux dApp (decentralized app) boilerplate using Ethereum's blockchain
Stars: ✭ 36 (-64%)
Mutual labels:  truffle
Trace
Supply chain transparency platform proof-of-concept based on the Ethereum blockchain ✍️
Stars: ✭ 52 (-48%)
Mutual labels:  truffle
Rico
The Responsible Initial Coin Offering Framework
Stars: ✭ 83 (-17%)
Mutual labels:  truffle
Seax
A VM-based runtime environment for functional programming languages
Stars: ✭ 36 (-64%)
Mutual labels:  lisp-interpreter
Nuxt Box
Truffle, Nuxt and Vue boilerplate
Stars: ✭ 46 (-54%)
Mutual labels:  truffle
Kin Token
Kin token contracts.
Stars: ✭ 60 (-40%)
Mutual labels:  truffle
Dapp
TypeScript React Redux Ethereum IPFS Starter Kit
Stars: ✭ 33 (-67%)
Mutual labels:  truffle
Mal Zh
The Make-A-Lisp Process 中文翻译,如何写一个Lisp解释器
Stars: ✭ 100 (+0%)
Mutual labels:  lisp-interpreter
Express Box
A truffle box to serve as the foundation of any Truffle and Express.js dApp. This Box Uses NodeJS(Express JS) to provide API endpoints to the Ethereum Blockchain smart contract so that this smart contract can be used in Android Apps as well.
Stars: ✭ 46 (-54%)
Mutual labels:  truffle
Marketprotocol
Ethereum based derivatives trading protocol creating digital tokens for any asset
Stars: ✭ 78 (-22%)
Mutual labels:  truffle
Tox
misc parsers in rust
Stars: ✭ 40 (-60%)
Mutual labels:  lisp-interpreter
Transmute Framework
TypeScript dApp Framework
Stars: ✭ 45 (-55%)
Mutual labels:  truffle
Supply Chain
Supply chain management on blockchain using Angular 4 + Truffle + IPFS + Ethereum
Stars: ✭ 76 (-24%)
Mutual labels:  truffle
Yascm
Yet Another Scheme Interpreter using flex and bison
Stars: ✭ 36 (-64%)
Mutual labels:  lisp-interpreter
Mana
⏣ Solidity Contracts for the Decentraland MANA Token
Stars: ✭ 91 (-9%)
Mutual labels:  truffle
Mal
mal - Make a Lisp
Stars: ✭ 8,287 (+8187%)
Mutual labels:  lisp-interpreter
Awesome Ethereum Cn
Web3.js、Solidity、Truffle开发教程及以太坊开发资源汇总
Stars: ✭ 54 (-46%)
Mutual labels:  truffle
React Uport Box
Truffle, Webpack, React, Redux boilerplate with routing and authentication via a UPort.
Stars: ✭ 99 (-1%)
Mutual labels:  truffle
Soltsice
Solidity & TypeScript Integration, Configuration and Examples
Stars: ✭ 94 (-6%)
Mutual labels:  truffle
Etheno
Simplify Ethereum security analysis and testing
Stars: ✭ 77 (-23%)
Mutual labels:  truffle

Mumbler is a lisp programming language I wrote to try out the [[https://www.graalvm.org/][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 "[[http://cesquivias.github.io/blog/2014/10/13/writing-a-language-in-truffle-part-1-a-simple-slow-interpreter/#mumbler-language][Mumbler language specification]]".

  • Build Mumbler uses [[http://gradle.org/][Gradle]] as the build system. To build the code simply run

#+begin_src shell-script cd ${MUMBLER_REPO}/lang ./gradlew installDist #+end_src

  • Run Mumbler requires a special version of the JVM. You can download a [[https://www.graalvm.org/downloads/][graal JVM]] from Oracle. Mumbler requires version 19.3 or newer.

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

#+begin_src shell-script JAVA_HOME= ${MUMBLER_REPO}/lang/build/install/mumbler/bin/mumbler #+end_src

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

#+begin_src shell-script ${MUMBLER_REPO}/test/run_tests #+end_src

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

#+begin_src shell-script ${MUMBLER_REPO}/lang/build/install/mumbler/bin/mumbler ${MUMBLER_REPO}/test/.mumbler #+end_src

You can disable tail call optimization.

#+begin_src shell-script ${MUMBLER_REPO}/lang/build/install/mumbler/bin/mumbler --tco=false ${MUMBLER_REPO}/test/.mumbler #+end_src

You can also run individual scripts using gradle.

#+begin_src shell-script cd ${MUMBLER_REPO}/lang ./gradlew run -PappArgs="['/home/jchaloup/development/mumbler/benchmark/fibonacci/fibonacci.mumbler']" ./gradlew run -PappArgs="['/home/jchaloup/development/mumbler/benchmark/fibonacci/fibonacci.mumbler', '--tco=false']" #+end_src

** Run benchmarks [[sec:build][Build]] Truffle and Mumbler and [[sec:env-var][set environment variables]].

#+begin_src shell-script ${MUMBLER_REPO}/benchmark/measure #+end_src

benchmark-name is the name of the files in one of the directories under benchmark, without the extension, as in the following example.

#+begin_src shell-script ${MUMBLER_REPO}/benchmark/measure ${MUMBLER_REPO}/benchmark/fibonacci/fibonacci #+end_src

You can uncomment the benchmark execution commands at the end of the measure script in order to benchmark mumbler against other languages than python.

** Set Environment Variables Mumbler's scripts use two environment variables.

#+begin_example 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_REPO}/lang/build/install/mumbler #+end_example

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].