{"id":13726542,"url":"https://github.com/rakudo/rakudo","last_synced_at":"2025-05-13T20:11:45.128Z","repository":{"id":37431549,"uuid":"117358","full_name":"rakudo/rakudo","owner":"rakudo","description":"🦋 Rakudo – Raku on MoarVM, JVM, and JS","archived":false,"fork":false,"pushed_at":"2025-04-28T07:23:40.000Z","size":75854,"stargazers_count":1772,"open_issues_count":829,"forks_count":379,"subscribers_count":110,"default_branch":"main","last_synced_at":"2025-04-28T08:29:03.867Z","etag":null,"topics":["hacktoberfest","moarvm","nqp","raku","rakudo"],"latest_commit_sha":null,"homepage":"https://rakudo.org/","language":"Raku","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"artistic-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rakudo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/ROADMAP","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["ugexe","tony-o","lizmat"]}},"created_at":"2009-01-29T15:30:05.000Z","updated_at":"2025-04-26T06:00:30.000Z","dependencies_parsed_at":"2023-09-25T00:23:13.951Z","dependency_job_id":"61890a22-cb3b-4173-9c48-c9697307c1a8","html_url":"https://github.com/rakudo/rakudo","commit_stats":{"total_commits":37373,"total_committers":382,"mean_commits":97.83507853403141,"dds":0.8098359778449683,"last_synced_commit":"60b0edb9dcf7b69b8d73e81cb7629f051ccf00ec"},"previous_names":[],"tags_count":277,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rakudo%2Frakudo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rakudo%2Frakudo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rakudo%2Frakudo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rakudo%2Frakudo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rakudo","download_url":"https://codeload.github.com/rakudo/rakudo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251282875,"owners_count":21564518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","moarvm","nqp","raku","rakudo"],"created_at":"2024-08-03T01:03:12.390Z","updated_at":"2025-04-28T14:08:04.492Z","avatar_url":"https://github.com/rakudo.png","language":"Raku","funding_links":["https://github.com/sponsors/ugexe","https://github.com/sponsors/tony-o","https://github.com/sponsors/lizmat"],"categories":["Raku","Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# Rakudo\n\nThis is Rakudo, a Raku Programming Language compiler for the MoarVM, JVM and Javascript virtual machines.\n\nRakudo is Copyright © 2008-2025, The Raku Foundation. Rakudo\nis distributed under the terms of the Artistic License 2.0. For more\ndetails, see the full text of the license in the file LICENSE.\n\nThis directory contains only the Rakudo compiler itself; it\ndoes not contain any of the modules, documentation, or other items\nthat would normally come with a full Raku distribution.  If you're\nafter more than just the bare compiler, please download [the latest\nRakudo Star package](http://rakudo.org/downloads/star).\n\nRakudo is currently the most developed implementation of the Raku\nlanguage; though there have been other partial implementations in the\npast. The `Rakudo` compiler has `moar`, `jvm` and `js` backends. Note\nthat each backend has a slightly different set of features. For\nhistorical compilers see https://www.raku.org/compilers/.\n\nRecent changes and feature additions are documented in the `docs/ChangeLog`\ntext file.\n\n## Building and Installing Rakudo\n\n[![Build Status](https://dev.azure.com/Rakudo/rakudo/_apis/build/status/rakudo.rakudo?branchName=main)](https://dev.azure.com/Rakudo/rakudo/_build/latest?definitionId=1\u0026branchName=main)\n\nSee the `INSTALL.md` file for detailed prerequisites and build and\ninstallation instructions. Check `CAVEATS.md` for platform specific notes.\n\nThe general process for building is running `perl Configure.pl` with\nthe desired configuration options (common options listed below), and\nthen running `make` or `make install`. Optionally, you may run\n`make spectest` to test your build on [Roast](http://github.com/raku/roast),\nthe Official Raku test suite. To update the test suite, run\n`make spectest_update`.\n\nInstallation of Rakudo simply requires building and running `make install`.\nNote that this step is necessary for running Rakudo from outside the build\ndirectory. But don't worry, it installs locally by default, so you don't need\nany administrator privileges for carrying out this step.\n\n### Configuring Rakudo to run on MoarVM\n\nTo automatically download, build, and install a fresh MoarVM and NQP, run:\n\n    $ perl Configure.pl --gen-moar --gen-nqp --backends=moar\n\nPlease be aware, that this will install MoarVM and NQP into your given\n`--prefix` before `Configure.pl` exits.\n\nAlternatively, feel free to git clone https://github.com/Raku/nqp and\nhttps://github.com/MoarVM/MoarVM manually and install them individually.\n\nConfiguration flags can be passed to MoarVM's `Configure.pl` using the\n`--moar-option` flag. For example, if you wish to use Clang when GCC is the\ndefault compiler selected for your OS, use the `--compiler` flag:\n\n    $ perl Configure.pl --gen-moar --moar-option='--compiler=clang' \\\n        --gen-nqp --backends=moar\n\nIf the compiler you want to use isn't known by MoarVM or you have multiple\nversions of the same compiler installed, the `--cc` flag can be used to pass its\nexact binary:\n\n    $ perl Configure.pl --gen-moar --moar-option='--cc=egcc' \\\n        --gen-nqp --backends=moar\n\nCustom optimization and debugging levels may also be passed through:\n\n    $ perl Configure.pl --gen-moar --moar-option='--optimize=0 --debug=3' \\\n        --gen-nqp --backends=moar\n\nFor more information on how MoarVM can be configured, view MoarVM's\nConfigure.pl.\n\n### Configuring Rakudo to run on the JVM\n\nNote that to run Rakudo on JVM, JDK 1.9 or higher must be installed.\nTo automatically download, build, and install a fresh NQP, run:\n\n    $ perl Configure.pl --gen-nqp --backends=jvm\n\nIf you get a `java.lang.OutOfMemoryError: Java heap space` error building\nrakudo on the JVM, you may need to modify your NQP runner to limit memory\nuse. e.g. edit the nqp-j / nqp-j.bat executable (found wherever you installed to, or in the\n`install/bin` directory) to include `-Xms500m -Xmx3g` as options passed to java.\nAlternatively, you can set `JAVA_OPTS` env var; e.g.\n`export JAVA_OPTS=\"-Xmx51200000000\"`\n\nPlease be aware, that this will install NQP into your given `--prefix`\nbefore `Configure.pl` exits.\n\nAlternatively, feel free to git clone https://github.com/Raku/nqp manually\nand install it individually.\n\n### Multiple backends at the same time\n\nBy supplying combinations of backends to the `--backends` flag, you\ncan get two or three backends built in the same prefix. The first\nbackend you supply in the list is the one that gets the `rakudo` name\nas a symlink, and all backends are installed separately as\n`rakudo-m` or `rakudo-j` for Rakudo on\nMoarVM, or JVM respectively.\n\nThe format for the `--backends` flag is:\n\n    $ perl Configure.pl --backends=moar,jvm --gen-moar --relocatable\n    $ perl Configure.pl --backends=ALL --gen-moar --relocatable\n\n`ALL` refers to `moar`, `jvm` and `javascript` backends.\n\n### Testing\n\n#### Ensure the test suite is installed\n\nThe roast test suite is installed as the `t/spec` directory\nunder your rakudo directory. If your installed rakudo\nsource directory doesn't have `t/spec` installed, then\nyou can clone it like this:\n\n    cd $YOUR_RAKUDO_SRCDIR\n    git clone https://github.com/Raku/roast.git t/spec\n\nNote the rakudo code includes an entry in its `.gitignore` file\nso git will ignore any content under `t/spec`.\n\nNow you can run tests in the rakudo directory.\n\n#### Running tests\n\nRun the full spectest:\n\n    $ make spectest   # \u003c== takes a LONG time!!\n\nTo run a single test, one must use `make` because of the tooling required to\nrun the spectests.  For example:\n\n    $ make t/spec/S03-operators/comparison.t\n\nRun all tests in one S* directory with a sh script. One example:\n\n    $ cat run-tests.sh\n    #!/bin/sh\n\n    # specify the desired directory:\n    D='t/spec/S26-documentation'\n\n    # collect the individual files\n    F=$(ls $D/*t)\n\n    # and run them\n    for f in $F\n    do\n        echo \"Testing file '$f'\"\n        make $f\n    done\n    echo \"All tests in dir '$D' have been run.\"\n\nThat can be written as a one-liner:\n\n    for f in $(ls t/spec/S26-documentation/*t); do make \"$f\"; done\n\n## Where to get help or answers to questions\n\nThere are several mailing lists, IRC channels, and wikis available with\nhelp for the Raku Programming Language and Rakudo. Figuring out the right one to use\nis often the biggest battle. Here are some rough guidelines:\n\nThe central hub for Raku information is [raku.org](https://raku.org/).\nThis is always a good starting point.\n\nIf you have a question about Raku syntax or the right way to approach\na problem using Raku, you probably want the “perl6-users@perl.org”\nmailing list or the [irc.libera.chat/#raku IRC\nchannel](https://web.libera.chat/#raku). The mailing\nlist is primarily for the people who want to use Raku to write\nprograms, so newbie questions are welcomed there.  Newbie questions\nare also welcome on the #raku channel; the Rakudo\ndevelopment teams tend to hang out there and are generally glad\nto help.  You can follow [@raku_news](https://twitter.com/raku_news)\nand on Twitter, there's a Raku news aggregator at\n[Planet Raku](http://planet.raku.org/).\n\nQuestions about NQP can also be posted to the #raku IRC channel.\nFor questions about MoarVM, you can join #moarvm on Libera.\n\n## Code of Conduct\n\nThe Raku community is committed to providing a welcoming, inclusive, safe, and enjoyable environment for everyone.  Programming should be `-Ofun`.  The Raku Community therefore has adopted a [Code of Conduct](https://github.com/Raku/problem-solving/blob/master/solutions/meta/code_of_conduct.md).  Please report any violations of the Code of Conduct by emailing the Raku community affairs team at CAT@raku.org.\n\n## Reporting bugs\n\nSee https://github.com/rakudo/rakudo/issues/new\n\n## Submitting patches\n\nIf you have a patch that fixes a bug or adds a new feature, please\ncreate a pull request using github's pull request infrastructure.\n\nSee [our contribution guidelines](https://github.com/rakudo/rakudo/blob/master/CONTRIBUTING.md) for more information.\n\n## Line editing and tab completion\n\nIf you would like simple history and tab completion in the `rakudo` executable,\nyou need to install the [Linenoise](https://github.com/hoelzro/p6-linenoise) module.  The recommended way to install\nLinenoise is via [zef](https://github.com/ugexe/zef):\n\n    $ zef install Linenoise\n\nAn alternative is to use a third-party program such as [rlwrap](https://github.com/hanslub42/rlwrap). Documentation on **rlwrap** can be found [here](https://linux.die.net/man/1/rlwrap).\n\n## AUTHOR\n\nSee [CREDITS](CREDITS) for the **many** people that have contributed to the development of the Rakudo compiler, some of which have [left this existence way too early](IN-MEMORIAM.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frakudo%2Frakudo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frakudo%2Frakudo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frakudo%2Frakudo/lists"}