The Mirah Programming Language
HTML Mirah Ruby Java Batchfile Shell
Latest commit 63a6b62 Aug 11, 2016 @felixvf felixvf committed on GitHub Merge pull request #440 from uujava/fix_list_assignment_macro
Fix list assignment to use set instead of add
Failed to load latest commit information.
bin Prevent calling System.exit in Apr 28, 2015
distbin remove win JAVA_HOME lookup because it has problems with spaces in th… Jul 22, 2012
examples update examples w/ better formatting Oct 27, 2015
javalib build and depend on the parser when building mirahc Aug 2, 2016
lib bump to version Aug 6, 2016
maven bump to version Aug 6, 2016
mirah-parser fix worked around issue in call where targets don't have the correct … Aug 3, 2016
nbproject fix unboxing issues (cherry picked from commit d348ada) Apr 27, 2015
src/org/mirah fix list assignment to use set instead of add Aug 8, 2016
test fix list assignment to use set instead of add Aug 8, 2016
tools merge master into new ast. It's crazy awesome. Feb 12, 2012
.gitignore build and depend on the parser when building mirahc Aug 2, 2016
.travis.yml first step towards an integrated build. Jul 31, 2016 Add Code of Conduct Mar 7, 2016
COPYING add asm license to a file that's included in the compiler jar Aug 3, 2014
Gemfile Use 'test-unit' gem version 3.0. Apr 22, 2015
History.txt update history for 0.2.0 Aug 6, 2016
LICENSE New project to hold Mirah's parser, independent of jmeta/mmeta stuff. Dec 16, 2010
NOTICE update NOTICE Aug 7, 2014 whitespace in README Sep 5, 2015
Rakefile rm unnecessary property setting Aug 3, 2016 add notes to TODO Dec 10, 2015
mirah.gemspec use an array to get mirahc in the gem closes #278 Feb 18, 2015
pom.xml bump to version Aug 6, 2016


Build Status


Mirah is a customizable programming language featuring static types, local type inference and a heavily Ruby-inspired syntax. Mirah currently includes a typer/compiler backend for the JVM which can output JVM bytecode.


  • Ruby-like syntax
  • Compiles to .class
  • Fast as Java
  • No runtime library


mirah <script.mirah>
mirah -e "inline script"
mirahc <script.mirah>
mirahc -e "inline script" # produces DashE.class


  • Java 1.7 or higher.



If your gem and rake are not from from JRuby, prefix the commands with jruby -S

$ gem install mirah


Mirah is distributed as a jar through maven central. You can download the latest jar from


You can also install Mirah from a zip file. Download the latest stable release from Extract it, and add bin to your $PATH to be able to use mirah, mirahc, etc.


Setup building locally and installing from source, you'll need jruby 1.7.12 or higher. Then just follow these commands.

To get the repository setup locally run the following:

$ git clone
$ cd mirah
$ bundle install

To install mirah as a gem from source:

$ rake gem
$ gem install pkg/mirah-*.gem

To create the mirahc jar:

$ rake dist/mirahc.jar

This will create a mirahc.jar file in dist that you can run to compile mirah source files.