GithubHelp home page GithubHelp logo

cofyc / rakudo Goto Github PK

View Code? Open in Web Editor NEW

This project forked from rakudo/rakudo

0.0 3.0 0.0 15.79 MB

Rakudo Perl -- Perl 6 on Parrot, JVM and MoarVM

Home Page: http://rakudo.org/

License: Artistic License 2.0

rakudo's Introduction

Rakudo Perl 6

This is Rakudo Perl, a Perl 6 compiler for the Parrot virtual machine, the JVM and MoarVM.

Rakudo Perl is Copyright (C) 2008-2014, The Perl Foundation. Rakudo Perl is distributed under the terms of the Artistic License 2.0. For more details, see the full text of the license in the file LICENSE.

This directory contains only the Rakudo Perl 6 compiler itself; it does not contain any of the modules, documentation, or other items that would normally come with a full Perl 6 distribution. If you're after more than just the bare compiler, please download the latest Rakudo Star package.

Note that different backends implement slightly different sets of featurs. For a high-level overview of implemented and missing features, please visit the features page on perl6.org.

Recent changes and feature additions are documented in the doc/ChangeLog text file.

Building and Installing Rakudo

See the INSTALL.txt file for detailed prerequisites and build and installation instructions.

The general process for building is running perl Configure.pl with the desired configuration options (common options listed below), and then running make or make install. Optionally, you may run make spectest to test your build on Roast, the Official Perl 6 test suite.

Installation of Rakudo simply requires building and running make install. Note that this step is necessary for running Rakudo from outside the build directory. But don't worry, it installs locally by default, so you don't need any administrator privileges for carrying out this step.

Configuring Rakudo to run on MoarVM

To automatically download and build a fresh MoarMV and NQP, run:

perl Configure.pl --gen-moar --gen-nqp --backends=moar

If you want to be at the front of all new (experimental) optimizations, then you can add the --moar-option=--enable-jit parameter like so:

perl Configure.pl --gen-moar --moar-option=--enable-jit --gen-nqp --backends=moar

Configuring Rakudo to run on Parrot

To automatically download and build a fresh Parrot and NQP, run:

perl Configure.pl --gen-parrot --gen-nqp --backends=parrot

It is recommended to first install the libicu-dev and libreadline-dev packages.

Configuring Rakudo to run on the JVM

Note that to run Rakudo on JVM, JDK 1.7 must be installed. To automatically download an build a fresh NQP, run:

perl Configure.pl --gen-nqp --backends=jvm

If you get an out of memory error building rakudo on the JVM, you may need to modify your NQP runner to limit memory use. e.g. edit the nqp-j / nqp-j.bat executable (found wherever you installed to, or in the install/bin directory) to include -Xms500m -Xmx2g as options passed to java.

Multiple backends at the same time

By supplying combinations of backends to the --backends flag, you can get two or three backends built in the same prefix. The first backend you supply in the list is the one that gets the perl6 name as a symlink, and all backends are installed seperately as perl6-m, perl6-p, or perl6-j for Rakudo on MoarVM, Parrot, or JVM respectively.

The format for the --backends flag is:

$ perl Configure.pl --backends=moar,parrot
$ perl Configure.pl --backends=parrot,moar,jvm
$ perl Configure.pl --backends=ALL

Where to get help or answers to questions

There are several mailing lists, IRC channels, and wikis available with help for Perl 6 and Rakudo on Parrot. Figuring out the right one to use is often the biggest battle. Here are some rough guidelines:

The central hub for Perl 6 information is perl6.org. This is always a good starting point.

If you have a question about Perl 6 syntax or the right way to approach a problem using Perl 6, you probably want the "[email protected]" mailing list or the "irc.freenode.net/#perl6" channel. The perl6-users list is primarily for the people who want to use Perl 6 to write programs, so newbie questions are welcomed there. Newbie questions are also welcome on the #perl6 channel; the Rakudo and Perl 6 development teams tend to hang out there and are generally glad to help. You can follow "@rakudoperl" on Twitter, and there's a Perl 6 news aggregator at Planet Perl 6.

Questions about NQP can also be posted to the #perl6 IRC channel. For questions about Parrot, see http://parrot.org/ for links and resources, or join the #parrot IRC channel on irc.perl.org . For questions about MoarVM, you can join #moarvm on freenode.

Reporting bugs

Bug reports should be sent to "[email protected]" with the moniker [BUG](including the brackets) at the start of the subject so that it gets appropriately tagged in the RT system. Please include or attach any sample source code that exhibits the bug, and include either the release name/date or the git commit identifier. You find that information in the output from perl6 --version (or in the first line of git log, if Rakudo fails to build). There's no need to cc: the perl6-compiler mailing list, as the RT system will handle this on its own.

If you find a bug in MoarVM or NQP, you can either discuss it on the IRC and have it reported for you, or you can submit an issue to the issue trackers on github for perl6/nqp or moarvm/moarvm.

Submitting patches

If you have a patch that fixes a bug or adds a new feature, please submit it to "[email protected]" with the moniker [PATCH](including the brackets) at the start of the subject line. We'll generally accept patches in any form if we can get them to work, but unified diff from the git command is greatly preferred. In general this means that in the "rakudo" directory you make your changes, and then type

git commit -m 'Your commit message' changed/filename.pm
git format-patch HEAD^

This will generate a file called "001-your-commit-message.patch", or more of them if you made multiple commits; please attach these to your email. Please note that if you made more than one commit, you have to specify a proper commit range for format-patch, for example origin/nom..HEAD.

(Note to the maintainers: you can apply these patches with the git-am -s command; it preserves meta information like author).

How the compiler works

See docs/compiler_overview.pod.

AUTHOR

Patrick Michaud "[email protected]" is the current pumpking for Rakudo Perl 6. See CREDITS for the many people that have contributed to the development of the Rakudo compiler.

rakudo's People

Contributors

arnsholt avatar bschmalhofer avatar chromatic avatar coke avatar colomon avatar cspencer avatar donaldh avatar froggs avatar hoelzro avatar infinoid avatar japhb avatar jnthn avatar kboga avatar kyleha avatar labster avatar lizmat avatar mberends avatar moritz avatar mouq avatar particle avatar patrickas avatar paultcochrane avatar perlpilot avatar petdance avatar pmichaud avatar sorear avatar tene avatar timo avatar timtoady avatar unobe avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.