Official Perl 6 Documentation

The Synopsis documents are to be taken as the formal specification for Perl 6 implementations, while still being reference documentation for Perl 6, like Programming Perl is for Perl 5. Note that while these documents are considered ``formal specifications'', they are still being subjected to the rigors of cross-examination through implementation. In other words, they may change slightly or radically. But the expectation is that they are ``very close'' to the final shape of Perl 6. [Read more...]

However, this HTML version of Synopses is slightly different in that it contains code snippets from the offiical test suite. In other words, We have divided the .t files in the test suite into pieces and inserted every resulting snippet after the corresponding paragraph of the Synopses. Furthermore, the embedded tests are also marked by and × according to the results of daily auto-smoking on feather. The job is done by the Perl 5 script util/smartlinks.pl living in the mu repository.

All the web pages for Synopses listed below are updated every one hour from the mu, roast and specs repositories.

When we say ``S05'', we mean ``spec'' as well as ``synopsis''.

Note that documents marked DRAFT are really just that. They are often written by random people, and have not been approved of as part of the official spec.

The documents here mostly correspond with the chapters in the Camel Book, that is, "Programming Perl, 3rd Edition". However, a few chapters of that book will no longer be relevant, and those numbers will be resused for other things. At the moment, this refers to section 7, whose synopsis is "Iterators", but whose Exegesis is about the module Form.pm. Apocalypses and Exegeses were only written for some of the early sections; the later sections have no corresponding apocalypse/exegesis.

Most changes to these specifications have been discussed on the perl6-language mailing list or the #perl6 FreeNode channel on IRC. Additionally, Larry Wall has created an implementation of the parser for Perl 6 (but it doesn't do any of the backend stuff), and that is usually regarded as authoritative.

While the Apocalypses and Exegeses are linked here for reference, note that they are historical documents, whereas the Synopses are kept more up-to-date and are the primary recommended reference.

(Specification)         (Syn pod) (Justification) (Explanation)
1 Overview Synopsis S01-overview.pod Apocalypse
2 Bits and Pieces Synopsis S02-bits.pod Apocalypse Exegesis
3 Summary of Perl 6 Operators     Synopsis S03-operator.pod Apocalypse Exegesis
4 Blocks and Statements Synopsis S04-control.pod Apocalypse Exegesis
5 Regexes and Rules Synopsis S05-regex.pod Apocalypse Exegesis
6 Subroutines Synopsis S06-subroutines.pod Apocalypse Exegesis
7 Lists and Iteration [DRAFT] Synopsis S07-lists.pod
8 Captures and Parcels [DRAFT] Synopsis S08-capture.pod
9 Data Structures Synopsis S09-data.pod
10 Packages Synopsis S10-packages.pod
11 Compilation Units Synopsis S11-modules.pod
12 Objects Synopsis S12-objects.pod Apocalypse
13 Overloading Synopsis S13-overloading.pod
14 Roles and Parametric Types [DRAFT] Synopsis S14-roles-and-parametric-types.pod
15 Unicode [DRAFT] Synopsis S15-unicode.pod
16 IO / User / Group [DRAFT] Synopsis S16-io.pod
17 Concurrency Synopsis S17-concurrency.pod
18Compiling(TBD)
19Command line interface [DRAFT] Synopsis S19-commandline.pod
20Introspection(Draft)
21 Calling foreign code [DRAFT] Synopsis S21-calling-foreign-code.pod
22 Distributions, Recommendations, Delivery and Installation Synopsis S22-package-format.pod
23Security(TBD)
24 Testing Synopsis S24-testing.pod
25Portable perl(TBD)
26 Documentation Synopsis S26-documentation.pod (HTML rendering of S26 is known to be incomplete)
27Perl culture(Draft)
28 Special names Synopsis S28-special-names.pod
29 Builtin Functions [DRAFT] Synopsis S29-functions.pod
30Standard perl library(TBD)
31 Pragmatic modules [DRAFT] Synopsis S31-pragmatic-modules.pod
32Setting library [DRAFT] 
Basics+ [DRAFT] Synopsis Basics.pod
Callable* [DRAFT] Synopsis Callable.pod
Containers* [DRAFT] Synopsis Containers.pod
Exception* [DRAFT] Synopsis Exception.pod
IO* [DRAFT] Synopsis IO.pod
Numeric* [DRAFT] Synopsis Numeric.pod
Rules* [DRAFT] Synopsis Rules.pod
Str [DRAFT] Synopsis Str.pod
Temporal+ Synopsis Temporal.pod
33Diagnostic messages(TBD)
99 Glossary Synopsis S99-glossary.pod

Indexes

S32 Key

* = Document related types as well
+ = Not a type name, but documents a group of types

DRAFT specifications

The few draft PODs here should probably be cleaned up into Spec-like formats and moved to Perl6::Spec space.

Differences from Perl 5

The Differences document is stored in docs/Perl6/Perl5/Differences.pod in the mu repository, if you'd like to make updates to it. Your changes will automatically appear on feather in less than 1 hour.

Further reading

For further information on Perl 6, links to examples, tutorials etc. please visit perl6.org, the official Perl 6 homepage.

About this page

The page you're currently looking at lives in the mu repo as docs/feather/syn_index.html, and is resync'd every 1 hour.