
The Synopsis documents are to be taken as the formal specification for Perl 6 implementations, while still being reference documentation for Perl 6, likeProgramming Perl is for Perl 5. Note that while these documents are considered ``formalspecifications'', they are still being subjected to therigors 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.
However, this HTML version of Synopses is slightlydifferent in that it contains code snippets fromthe Pugs test suite. In other words, We have divided the .t files in thetest 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.plliving in the Pugs source tree.
All the web pages for Synopses listedbelow are updated everyone hour from the Pugs SVN repositorywith the latest Synopses and Pugs test suite.
When we say ``S05'', we mean ``spec'' as well as ``synopsis''.
Note that documents marked DRAFT are really just that. They are oftenwritten 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 chaptersof 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 andExegeses were only written for some of the early sections; the later sectionshave no corresponding apocalypse/exegesis.
Most changes to these specifications have been discussed on theperl6-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 usuallyregarded as authoritative.
While the Apocalypses and Exegeses are linked here for reference, notethat 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 | Iterators [DRAFT] | Synopsis | S07-iterators.pod | ||
| 8 | References | (Deprecated, use Captures) | |||
| 9 | Data Structures | Synopsis | S09-data.pod | ||
| 10 | Packages | Synopsis | S10-packages.pod | ||
| 11 | Modules | 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 | (TBD) | |||
| 16 | IO / User / Group [DRAFT] | Synopsis | S16-io.pod | ||
| 17 | Processes and Concurrency [DRAFT] | Synopsis | S17-concurrency.pod | ||
| 18 | Compiling | (TBD) | |||
| 19 | Command line interface [DRAFT] | Synopsis | S19-commandline.pod | ||
| 20 | Introspection | (Draft) | |||
| 21 | Calling foreign code [DRAFT] | Synopsis | S21-calling-foreign-code.pod | ||
| 22 | CPAN [DRAFT] | Synopsis | S22-cpan.pod | ||
| 23 | Security | (TBD) | |||
| 24 | Testing | (TBD) | |||
| 25 | Portable perl | (TBD) | |||
| 26 | Documentation | Synopsis | S26-documentation.pod | ||
| 27 | Perl culture | (Draft) | |||
| 28 | Special names | Synopsis | S28-special-names.pod | ||
| 29 | Builtin Functions [DRAFT] | Synopsis | S29-functions.pod | ||
| 30 | Standard perl library | (TBD) | |||
| 31 | Pragmatic modules [DRAFT] | Synopsis | S31-pragmatic-modules.pod | ||
| 32 | Setting library [DRAFT] | ||||
| Abstraction* [DRAFT] | Synopsis | Abstraction.pod | |||
| 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* [DRAFT] | Synopsis | Temporal.pod | |||
| 33 | Diagnostic messages | (TBD) | |||
The few draft PODs here should probably be cleaned up into Spec-likeformats and moved to Perl6::Spec space.
The Differences document is stored indocs/Perl6/Perl5/Differences.podin the pugs repository, if you'd like to make updates to it. Your changes will automatically appear on feather in less than 1 hour.
Many more examples of Perl6 code are available.
The page you're currently looking at lives in the Pugs repo asdocs/feather/syn_index.html, and is resync'd every 1 hour.