Quick jump:  What's new

Go to:
Weblog: Pugs 
in Perl 6
Download Pugs

Building Pugs from Source

The current recommended way to build Pugs is via cabal-install with the
Haskell Platform. The steps are:

1. Download and install the Haskell Platform

Alternately, one can also install only the GHC compiler, and manually set up
the following packages (in this order):

The instructions contained in the README file of Cabal contain more detailed
setup instructions, which should work for all the packages above.

(But then again, please consider simply installing the Haskell Platform. :-))

2. Type the following commands:

cabal update
cabal install Pugs

...and it's done!

To build an optimized Pugs for benchmarking or smoke testing, replace the
second command with:

cabal install -O2 Pugs

(Unix-like systems might need sudo or cabal install -p to satisfy
permission requirements.)

3. Upgrade Pugs installation

To upgrade to the latest released version on Hackage, the same two lines of commands would work:

cabal update
cabal install Pugs

4. Build from GitHub source

To upgrade the current Pugs installation to the version in the repository, simply build the repository copy like this:

cd Pugs
cabal install

Binary Builds of Pugs

Binary builds are the easiest get started with, but may not be as up to date as building from source.

Run Pugs in your Web Browser

A web terminal for Pugs is available at run.pugscode.org. You can choose between the latest release or latest development snapshot.

Accessing Pugs Remotely

Another option is to use a pugs a remote machine. If you just want to try out a line or two, you can use the "evalbot" on "the #perl6 IRC channel"<Mail Lists, IRC, Archives>. The syntax is just:

?eval say "hello!"

If you plan to contribute to Perl 6, you can see about getting a free account on Feather, the
Perl Community Development Server. There, a fresh version of Pugs is built
every 10 minutes!


Pugs is an implementation of Perl 6, started by the lovely Audrey Tang, that ended the long "Dark Ages" of a Perl 6 development without implementation. Its written in the purely functionel language Haskell, using the Glasgow Haskell Compiler (GHC). It aims to implement the full Perl6 specification, as detailed in the Synopses. It has a dual core structure that embeds an Perl 5 interpreter allowing to use CPAN modules inside Perl 6. The test suite was born as a part of the Pugs adventure as well as Elf, Perlito, KindaPerl6 and many others projects.


Currently, the Pugs.hs project exists mainly for historical/archival purposes, not for active development.

The goal during this hiatus is to continue maintaining Pugs.hs, so it remains
installable with current and future editions of the Haskell Platform, and
interoperable with current and future releases of the Perl 5 Language.

Pugs Diagnostics

This page is for documenting diagnostic messages emitted by Pugs, along with hints about what causes them and how to address them.

Can't modify constant item

Sometimes variables are read-only, such as when they are declared in a subroutine signature
or as a class attribute:

sub foo ($a) {
 $a ~~ s/b/c/; # Boom!

You can make a read/write copy of the variable through assignent ($b = $a), or by using is copy to declare that you want a read/write copy of the variable, or is rw to declare you want the variable being passed in to be modified by reference.

Weblog Navigation
Weblog Archives
  • Loading...

Upload Files

Click "Browse" to find the file you want to upload. When you click "Upload file" your file will be uploaded and added to the list of attachments for this page.

Maximum file size: 50MB

File Name Author Date Uploaded Size

Save Page As

Enter a meaningful and distinctive title for your page.

Page Title:

Tip: You'll be able to find this page later by using the title you choose.

Page Already Exists

There is already a page named XXX. Would you like to:

Save with a different name:

Save the page with the name "XXX"

Append your text to the bottom of the existing page named: "XXX"

Upload Files

Click "Browse" to find the file you want to upload. When you click "Add file" this file will be added to the list of attachments for this page, and uploaded when you save the page.

Add Tags

Enter a tag and click "Add tag". The tag will be saved when you save the page.