Pugs (compiler)

Source: Wikipedia, the free encyclopedia.

Pugs
Original author(s)Audrey Tang
Initial release1 February 2005; 20 years ago (2005-02-01)
Final release
Final / 21 April 2010; 15 years ago (2010-04-21)
Repository
Written inHaskell
PlatformIA-32, x86-64
Typecompilerinterpreter

Pugs is a compiler and interpreter for the Raku programming language, begun on 1 February 2005, by Audrey Tang. Raku was then called Perl 6.

As of 21 April 2010, Pugs development was placed on hiatus,[1] with most Raku implementation efforts moving to Rakudo.

Overview

The Pugs project aimed to bootstrap Perl 6 by implementing the full Perl 6 specification, as detailed in the Synopses. It is written in Haskell, specifically targeting the Glasgow Haskell Compiler.

Pugs includes two main executables:

Pugs is free and open-source software, distributable under the terms of either the GNU General Public License or the Artistic License.[2] These are the same terms as Perl.

Version numbering

The major/minor version numbers of Pugs converge to 2π (being reminiscent of TeX and Metafont, which use a similar scheme); each significant digit in the minor version represents a successfully completed milestone. The third digit is incremented for each release. The current milestones are:

  • 6.0: Initial release
  • 6.2: Basic IO and control flow elements; mutable variables; assignment
  • 6.28: Classes and traits
  • 6.283: Rules and Grammars
  • 6.2831: Type system and linking
  • 6.28318: Macros
  • 6.283185: Port Pugs to Perl 6, if needed

Perl 5 compatibility

As of version 6.2.6, Pugs also has the ability to embed Perl 5 and use CPAN modules installed on the system. The example below demonstrates the use of the popular Perl DBI module to manage a database:

#!/usr/bin/pugs
use v6;
use perl5:DBI;

my $dbh = DBI.connect('dbi:SQLite:dbname=test.db');
$dbh.do("CREATE TABLE Test (Project, Pumpking)");

my $sth = $dbh.prepare("INSERT INTO Test VALUES (?, ?)");
$sth.execute(<PGE Patrick>);
$sth.execute(<Pugs Audrey>);
$sth.execute(<Parrot Leo>);

my $res = $dbh.selectall_hashref('SELECT * FROM Test', 'Pumpking');
# Just another Pugs hacker
say "Just another $res<Audrey><Project> hacker";

Development model

Several factors have been suggested as reasons for Pugs's progress:

Despite these factors, progress on the Haskell implementation stalled in late 2006, as personal issues kept Audrey from devoting as much time to the project as she had in 2005.

Many Pugs contributors have since moved on to implement Perl6-inspired systems as CPAN modules on Perl 5, such as the Moose project.

References

  1. ^ Tang, Audrey (21 April 2010). "How to Implement Perl 6 in '10". Pugs Blogs.
  2. ^ "Pugs Apocryphon 1". Archived from the original on 5 March 2007. Retrieved 9 March 2007.