CINXE.COM
Raku Compilers
<!DOCTYPE html> <!-- Hacking: see NOTES and TODO in this directory --> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Raku Compilers</title> <link href="/favicon.ico" rel="shortcut icon" type="image/x-icon"> <link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <link href="/bootstrap/css/bootstrap-theme.min.css" rel="stylesheet"> <link href="/style.css?v=1" rel="stylesheet"> </head> <body> <div class="bg"> <div class="container"> <nav class="navbar navbar-fixed-top navbar-inverse"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> </div> <div id="navbar" class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li id="nav-home" ><a href="/">Home</a></li> <li id="nav-downloads" ><a href="/downloads">Download</a></li> <li id="nav-community" ><a href="/community/">Community</a></li> <li id="nav-docs" ><a href="https://docs.raku.org">Documentation</a></li> <li id="nav-res" ><a href="/resources/">Resources</a></li> <li id="nav-modules" ><a href="https://modules.raku.org/">Modules</a></li> <li id="nav-whatever" ><a href="/whatever/">IDEs</a></li> <li id="nav-fun" ><a href="/fun/">Fun</a></li> <li id="nav-faq" ><a href="https://docs.raku.org/language/faq">FAQ</a></li> </ul> </div> </div> </nav> <header id="subpage-header" class="lead well"> <img src="/camelia-logo-small.png" width="140" height="130" alt="Camelia, the Raku bug" class="pull-right"> <h2><b>Raku</b> Compilers</h2> <p>Raku is a language specification and, just like C or C++, it encourages multiple compilers for the language.</p> </header> <div class="row"> <div class="col-sm-8"> <div class="panel panel-default"> <div class="panel-body trim"> <h3 class="trim-top">Compilers</h3> <h4><a href="https://rakudo.org/">Rakudo™</a> and NQP</h4> <p>Rakudo runs on <a href="http://moarvm.org/">MoarVM</a> and the Java Virtual Machine (JVM). It's developed on <a href="http://github.com/rakudo/rakudo">GitHub</a>. <p>NQP is <em>not</em> a Raku compiler. NQP is a small subset of Raku used as a foundational tool to help write compilers (including <a href="https://github.com/rakudo/rakudo/blob/master/src/main.nqp">Rakudo</a>) and libraries. Development happens on <a href="https://github.com/raku/nqp/">GitHub</a>. </p> <hr> <h4>Historical Compilers</h4> <dl> <dt><a href="http://github.com/sorear/niecza">Niecza</a></dt> <dd>Niecza is a compiler targeting the Common Language Runtime (.NET and Mono). Its goal is to explore the static aspects of Raku and the possibilities for compile-time optimization. </dd> <dt><a href="/compilers/std-viv">STD</a></dt> <dd>STD is Larry Wall's reference implementation of the Raku grammar, parser generator, and some of the semantic verifier. STD is an abbreviation of "Standard". It is written in Raku, transliterated into Perl 5 by viv. It is also used by various phases of several other compilers (mildew, perlito, elf). </dd> <dt><a href="/compilers/std-viv">viv</a></dt> <dd>viv ("vi" to "v", 6 to 5) is a compiler that uses STD as its front-end. STD itself uses viv to build. It is actively developed along with STD. </dd> <dt><a href="http://fglock.github.io/Perlito/">Perlito</a></dt> <dd>Perlito, also known as MiniPerl6, is a subset of Raku, designed as a light bootstrapping language. You can <a href="http://fglock.github.io/Perlito/perlito/perlito6.html">try it online</a>. It is actively developed <a href="http://github.com/fglock/Perlito/">here</a>. </dd> <dt><a href="https://en.wikipedia.org/wiki/Pugs_(programming)">Pugs</a></dt> <dd>Pugs is written in Haskell. Maintenance releases for successive versions of ghc are <a href="http://hackage.haskell.org/package/Pugs">published</a> to Hackage. </dd> </dl> </div> </div> </div> <div class="col-sm-4"> <div class="panel panel-warning"> <div class="panel-heading"> <h3 class="panel-title">Supplementals</h3> </div> <div class="panel-body"> <section id="supplementals" class="wide"> <ul class="shush-list"> <li> <a href="https://github.com/niner/Inline-Perl5">Inline::Perl5</a> executes Perl code in Raku. Supports Perl modules including XS modules like <a href="https://metacpan.org/pod/DBI">DBI</a>. Allows passing integers, strings, arrays and hashes. Also supports calling methods on Perl objects from Raku and calling methods on Raku objects from Perl. </li> <li> <a href="http://github.com/rakudo/rakudo/tree/master/src/core/">Rakudo's setting library</a> which defines all of the classes, routines, and terms available when your script starts. In Perl parlance, it's roughly all the things you can see in perlfunc, perlop, etc. This part of Raku is mostly written in Raku (and NQP). </li> </ul> </section> </div> </div> </div> </div> </div> </div> <footer> <div class="container"> <div class="row"> <section class="col-sm-6 col-md-5ths"> <h4><a href="/community/">Community</a></h4> <ul class="shush-list"> <li><a href="/community/irc">#raku IRC channel</a>: <a href="irc://irc.libera.chat/#raku">system IRC client</a> or <a href="https://web.libera.chat/#raku">chat live in your browser</a></li> <li><a href="/community/rosettacode">Raku on Rosetta Code</a>, <a href="https://planet.raku.org/">Blogs</a></li> </ul> <a href="/community/" class="btn btn-success">More</a> </section> <section class="col-sm-6 col-md-5ths"> <h4><a href="/resources/">Resources</a></h4> <ul class="shush-list"> <li><a href="/getting-started/">Getting started</a></li> <li><a href="https://docs.raku.org/">Raku Documentation</a></li> <li><a href="https://docs.raku.org/language#Migration_guides">Other languages to Raku</a>, an introduction for programmers</li> </ul> <a href="/resources/" class="btn btn-success">More</a> </section> <section class="col-sm-6 col-md-5ths"> <h4><a href="https://modules.raku.org/">Modules</a></h4> <ul class="shush-list"> <li><a href="https://modules.raku.org/">Raku modules directory</a></li> <li><a href="https://raku.land/github:ugexe/zef">zef</a>: Raku module manager</li> </ul> <a href="https://modules.raku.org/" class="btn btn-success">More</a> </section> <section class="col-sm-6 col-md-5ths"> <h4><a href="/compilers/">Compilers</a></h4> <ul class="shush-list"> <li><a href="https://rakudo.org/">Rakudo</a>, a compiler running on <a href="https://moarvm.org/">MoarVM</a>, the JVM and other backends.</li> </ul> <a href="/compilers/" class="btn btn-success">More</a> </section> <section class="col-sm-6 col-md-5ths"> <h4><a href="/specification/">Language Design</a></h4> <ul class="shush-list"> <li><a href="https://github.com/Raku/roast">Specification</a> - Official Raku language specification test suite</li> <li><a href="https://design.raku.org/">Speculations</a> - historical language design documents</li> </ul> <a href="/specification/" class="btn btn-success">More</a> </section> <p class="col-sm-12 text-center" ><i class="glyphicon glyphicon-info-sign"></i> If you want to contribute to this page, <a href="/about/">look here for instructions</a>.<br/> The Raku® Programming Language </p> </div> </div> </footer> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script src="/bootstrap/js/bootstrap.min.js"></script> <script src="/js.js"></script> </body> </html>