The Mirah Programming Language
Clone or download
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 convert some casts to use as\! Oct 6, 2016
javalib build and depend on the parser when building mirahc Aug 2, 2016
lib Introduce ErrorMessage to replace heterogeneous list in ErrorTypes Nov 4, 2017
maven Use "bundle exec" in order to load the correct version of rake. May 12, 2017
mirah-parser Comment on the purpose of ClassInitializer. Dec 7, 2016
nbproject fix unboxing issues (cherry picked from commit d348ada) Apr 27, 2015
src/org/mirah Introduce ErrorMessage to replace heterogeneous list in ErrorTypes Nov 4, 2017
test Introduce ErrorMessage to replace heterogeneous list in ErrorTypes Nov 4, 2017
tools merge master into new ast. It's crazy awesome. Feb 12, 2012
.gitignore Fix metacircularity of the parser. Sep 6, 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 just use test-unit at whatever version Sep 6, 2016
History.txt Update history for 0.2.1 Sep 26, 2016
LICENSE New project to hold Mirah's parser, independent of jmeta/mmeta stuff. Dec 16, 2010
NOTICE update NOTICE Aug 7, 2014 fix release link Sep 20, 2016
Rakefile Provide a more detailed error message when requiring bundler failed. May 12, 2017 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 versions to / 0.2.2-SNAPSHOT Oct 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 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.