Pugs is an alternative interpreter and compiler for Perl 6, written in Haskell ( GHC). The software project was started on February 1, 2005 by Audrey Tang to support the development of Perl 6. It is a free software that can be used either under the GPL or the Artistic License.


Firstly Pugs serves as a test implementation for the Perl 6 parser. Major mistakes that were made ​​in Pugs, can later be avoided then, but it will also syntax weaknesses in the draft language Perl 6 show at a time at which corrections are still relatively easy possible.

Secondly, the actual will be a program ( written in Perl 6 ) Perl 6 parser, which is compiled from Pugs to Parrot bytecode. Already today it is possible to produce with Pugs Parrot code, or compile generated by Parrot Parrot code with Pugs. Since version 6.2.8 Pugs can also compile Perl 6 code to Perl 5. This helped to avoid bottlenecks, as had the language as well as Parrot significant gaps.

With version 6.2.8, the objectives of the project have changed slightly. Pugs should be 6 compiler, a complete Perl, the Perl 6 by Parrot ( PIR), Haskell or Perl 5 and other languages, eg JavaScript can translate. In this case, as much of the ingredients of Pugs as possible from Haskell to later re-usable Perl 6 modules to be rewritten.


Pugs means in English boobs and a pug also serves as the logo of the project. Officially Pugs an acronym for Perl6 User Golfing system which is an allusion to Perl golf.


The versioning of Pugs starts with 6.0, and it will be added with each new milestone a number, so that the version number simulates the double of Pi. This goes back to a joke by Larry Wall, who declared on the question of a Perl 7 why Perl in its version 2 * Pi should not exceed. Latest version is (11 June 2013).


Pugs can be divided into several sub-projects.

  • Pugs ' parser is to parse able " standard Perl ". User-defined operators are supported, but a complete redesign of the grammar is not yet possible.
  • Pugs ' evaluator supports most builtins, and also many object-oriented routines. His main problem is currently its comparatively low speed.
  • Pugs ' compiler to PIL stands and is stable.
  • For further work on Pugs ' compiler PIR ( Parrot ) waiting for some features of Parrot.
  • Pugs ' compiler to JavaScript is a very young sub-project; many builtins are already supported, but the speed of the resulting JavaScript code is very low.


Even if only the most necessary maintenance done since mid-2007, Pugs was essential for the achievement of the present state of Perl 6. During a period in which there was hardly any visible results despite several years of work on Parrot and Rakudo, managed Audrey Tang in a short time to confront the discussions about syntactic Einzeilheiten with practical experiences on the work made ​​fertile and morale lifted. In the follow the today still existing and valid for all implementations test suite, as well as first modules, and sample programs emerged. Through a fresh and inviting style of communication Pugs originated from a large number of sub-projects, which examined the feasibility of several thought experiments. The most important today is safe Moose, the most widely used and most powerful OOP framework for Perl 5 main developer Stefan Little sees it as the logical extension of his experience with Pugs.