==== Perl 6 User FAQ (perl.perl6.meta) ====
Version: 2006-05-08 (early beta level at present)
TABLE OF CONTENTS
* About perl.perl6.meta (and this FAQ)
* About Perl 6 # True marketing hype, in both senses.
* General Perl 6 status # On the move!
* Perl 6 info and docs # A little sparse, but rapidly improving.
* Latest Perl 6 developments
* Where to get Perl 6 # <----- "I want it now!!" <-----
* Useful Perl 6 modules
* Incremental migration from Perl 5
* Other useful resources
* Glossary
* Copyright and license
=== About perl.perl6.meta (and this FAQ) ===
A major aim of this newsgroup (NG) is to lower the bar a bit for
early-adapters, and to make it easier for people to effectively
experiment with Perl 6 without having to search around as much to get
started, and to help identify and fill in intermediate documentation
gaps in the process. In other words, share the -Ofun.
Suggested additional content and corrections for this FAQ are always
welcome. Please post them to perl.perl6.meta with the subject line
"FAQ feedback".
Think of this NG as the prototype for the future comp.lang.perl6.misc
NG. When traffic warrants it, we’ll apply for official Usenet "big 8"
comp.* status.
You can access this NG several ways:
* Point your newsreader to (nntp.perl.org).
(Need a newsreader? (http://www.mozilla.com/thunderbird/) works for me.)
*Some time soon, you should also be able to find us on Google Groups.
*Subject lines of NG posts with link to each post can be found at this
archive: (http://www.nntp.perl.org/group/perl.perl6.meta).
* Here's the RSS feed:
(http://www.nntp.perl.org/rss/perl.perl6.meta.rdf).
<<My FAQ to do notes and meta-comments are in double angle bracket
pairs, as illustrated here.>>
=== About Perl 6 ===
Newbie warning! Perl 6 is still UNDER CONSTRUCTION. Don’t make
important plans that depend on it just yet. Please see sections below
about intermediate Perl6-related solutions you can use now.
What is Perl 6? Perl 6 is an extensively refactored, super-modernized,
and ultra-supercharged derivative of Perl 5. Here is a brief summary
of some notable features, mostly copied from
(http://dev.perl.org/perl6/faq.html):
* optional explicit strong typing
* proper parameter lists
* active metadata on values, variables, subroutines, and types
* declarative classes with strong encapsulation
* full OO exception handling
* support for the concurrent use of multiple versions of a module
* extensive introspection facilities (including of POD)
* LL and LR grammars (including a built-in grammar for Perl 6 itself)
* subroutine overloading
* multiple dispatch
* named arguments
* a built-in switch statement
* hierarchical construction and destruction
* distributive method dispatch
* method delegation
* named regexes
* overlapping and exhaustive regex matches within a string
* named captures
* parse-tree pruning
* incremental regex matching against input streams
* macros (that are implemented in Perl itself)
* user-definable operators (from the full Unicode set)
* chained comparisons
* a universally accessible aliasing mechanism
* lexical exporting (via a cleaner, declarative syntax)
* multimorphic equality tests
* state variables
* hypothetical variables
* hyperoperators (i.e. vector processing)
* function currying
* junctions (i.e. superpositional values, subroutines, and types)
* coroutines
OK, that's a semi-awesome feature forest of details, but what about a
high-level big picture overview from 35,000 feet?
First of all, Perl 6 is going to be the heart of a vastly larger
software super-system, C6PAN (which will subsume Perl 5’s CPAN, an
already huge and powerful collection of Perl modules).
For convenience here, we'll call Perl 6 + C6PAN "Perl 6++".
When it comes to "embrace and extend", Perl 6++ is exceptionally
promiscuous: Perl 6++ has (selectively) borrowed widely from our many
friends, including Ruby, Python, Smalltalk, Lisp, Haskell, and others.
So what roles does all of the above position Perl 6++ for? Here are my
long-term predictions:
* Perl 6++ is going to be the counterpart of world English (which
exceeds all other languages in importing new concepts).
* Perl 6++ is going to be the software world’s first counterpart of
the Great Library of Alexandra.
* Perl 6++ is going to be the first "mainstream-strength"
super-morphic programming system.
* Perl 6++ is going to be the principal collaborative software system
of super-natural intelligence.
* Perl 6++ will carry us to the age of kilo-core, mega-thread
processors and the trillion node internet.
In summary, Perl 6++ is going to be the software launch pad of the
"singularity" age. (By that time, however, it will have evolved into
Perl 7++ or Perl 8++. Perl 6++ will make the development of its
eventual, inevitable successor very much easier, and it will likewise
help accelerate the advance of other existing and new languages as well.)
=== General Perl 6 status ===
<<List is very sketchy and incomplete.>>
* Design:
* The major language domains are fairly complete, but many {corner,
borderline} cases are still {incompletely, tentatively} specified.
* Documentation:
* The on-line docs undergoing tremendous improvement.
* No up-to-date Perl6 books at the moment.
* Part of motivation for (reincarnated) perl.perl6.meta NG and FAQ
is to help with interim user documentation (including generating
useful archives for point-of-departure searching).
* Implementation:
* Front ends:
* Perl6: Pugs
* Perl5 to Perl5 (to Perl6) translator
* Middleware
* <<To be completed.>>
* Back ends
* Parrot (from Pugs)
* Javascript (from Pugs)
* Haskell runtime (from Pugs)
* Perl5 <<status?>>
* Bridgeware
* Ponie: This is an important missing piece to make Perl 5
and CPAN run on Parrot. (Big corporate support for this project would
be great.)
* Perl5 modules for Perl6 features.
* Performance:
* Very slow at present <<explain why>>, but good enough for
experimenting.
After years of seemingly glacial but important preliminary work in
20002004, there has been a gathering avalanche of Perl 6 development
work since early 2005. Over-enthusiasm is in danger of replacing over-
pessimism.
So when will Perl 6 be ready? The semi-official answer is "When it's
done"--there is no official schedule. My wild guess is "early alpha
something" by Christmas 2006, and "solid production release" by
Christmas 2007.
=== Perl 6 info and docs ===
Links to design documents and lots of other info:
* Misc.: (http://dev.perl.org/perl6/).
* Synopsis: (http://dev.perl.org/perl6/doc/synopsis.html).
* Perl 6 FAQ: (http://dev.perl.org/perl6/faq.html).
<<Fud FAQ.>>
"Planet Perl Six is an aggregator of select Perl 6 related blogs."
Includes weekly Perl6 summaries (currently lapsed) and weekly Perl 6
meeting minutes (<<what happened to them?>>):
(http://planetsix.perl.org/).
IRC channels (and their archives) are a major source of useful
information. The #perl6 IRC channel is on (http://freenode.net/).
Need an IRC client? I use Chatzilla, a Firefox extension:
(http://www.mozilla.com/firefox/),
(http://www.mozilla.org/projects/rt-messaging/chatzilla/).
Perl 6 newsgroups, at (http://www.nntp.perl.org/group/) and Google
Groups (http://groups.google.com/):
* perl.perl6.internals
* perl.perl6.language
* perl.perl6.compiler
* perl.perl6.announce
You can also get these by email; see
(http://lists.cpan.org/showlist.cgi?name=perl6-internals) for details
(and make appropriate substitutions on "-internals" for other groups).
Who's Who in Perl 6, Parrot, & Pugs:
(http://dev.perl.org/perl6/people.html)
The O'Reilly website sometimes has interesting article about Perl 6
(http://www.perl.com).
=== Latest Perl 6 developments ===
<<Recent language changes.>>
<<Temporary gotchas>>
=== Where to get Perl 6 ===
Pugs: (http://www.pugscode.org/)
Parrot: (http://www.parrotcode.org/)
Win32 binary builds of Pugs and Parrot:
(http://www.jwcs.net/~jonathan/perl6/).
(Pxperl.com appears to have stopped routinely updating their Win32
builds.)
=== Useful Perl 6 modules ===
<<To be completed.>>
=== Incremental migration from Perl 5 ===
There are many modules that implement parts of Perl 6 in Perl 5.
Go to (http://search.cpan.org) and do a module search on "perl6":
(http://search.cpan.org/search?query=perl6&mode=module).
(Note: (http://search.cpan.org/modlist/Perl6) is missing many entries.
Use the search above for the time being.)
=== Other useful resources ===
Perl development server: (http://feather.perl6.nl/).
Some interesting background reading:
* << Ref to 100 year language. (http://www.paulgraham.com/),
(http://www.paulgraham.com/avg.html).>>
* "Confessions of a Used Programming Language Salesman;
Getting the Masses Hooked on Haskell" by Erik Meijer:
(http://research.microsoft.com/~emeijer/Papers/ICFP06.pdf).
<<Important developments to watch.>>
<<Creative applications of existing pieces (Parrot, Perl5 transition
modules).>>
=== Glossary ===
"-Ofun": Audrey Tang's guiding "optimize for fun" policy philosophy
for Pugs.
Perl 5 and Perl 6 are names of programming language dialects, whereas
perl5 and perl6 are the corresponding (installed) names (of compilers)
used to run programs of these languages.
=== Copyright and license ===
This FAQ copyrighted/licensed by Conrad [dot] Schneiker [at] GMail
[dot] com under the most currently prevailing Perl 6 (Pugs)
copyright/license.
The production and distribution of (free) open source software and
documentation is (1) a fundamental CAPITALIST right of VOLUNTARY
EXCHANGE that (2) is also a noble and honorable civic virtue that (3)
constitutes a modern generalization of the various widespread 19th and
20th century networks of fraternal organizations of business leaders
who (4) generously donated their time, effort, and money to (5)
collaboratively further both community welfare and (6) their mutual
economic development.