Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 222 lines (160 sloc) 7.836 kB
be1862e P6 Synopsis : ws changes - to help BOMers, added leading blank line t…
Darren_Duncan authored
1
68d062f Move synopses to their new home.
pmichaud authored
2 =encoding utf8
3
4 =head1 TITLE
5
6 Synopsis 1: Overview
7
04840a3 [Spec] treat all authors equally
lwall authored
8 =head1 AUTHORS
68d062f Move synopses to their new home.
pmichaud authored
9
04840a3 [Spec] treat all authors equally
lwall authored
10 Larry Wall <larry@wall.org>
68d062f Move synopses to their new home.
pmichaud authored
11
12 =head1 VERSION
13
04840a3 [Spec] treat all authors equally
lwall authored
14 Created: 10 Aug 2004
15
f538b17 @TimToady default to P5 only when invoked as 'perl'
TimToady authored
16 Last Modified: 2 Mar 2012
17 Version: 9
68d062f Move synopses to their new home.
pmichaud authored
18
19 This document originally summarized Apocalypse 1, which covers the
20 initial design concept. That original summary may be found below
21 under "Random Thoughts". However, these Synopses also contain
ea2a000 [Spec]reverted \x20 to \xC2A0. "Perl 6" and "Perl 5" are words, so we…
jimmy authored
22 updates to reflect the evolving design of Perl 6 over time, unlike
68d062f Move synopses to their new home.
pmichaud authored
23 the Apocalypses, which are frozen in time as "historical documents".
24 These updates are not marked--if a Synopsis disagrees with its
25 Apocalypse, assume the Synopsis is correct.
26
27 Another assumption has been that if we don't talk about something in these
ea2a000 [Spec]reverted \x20 to \xC2A0. "Perl 6" and "Perl 5" are words, so we…
jimmy authored
28 Synopses, it's the same as it is in Perl 5. Soon we plan to fill in
29 the gaps with the Perl 5 details though.
68d062f Move synopses to their new home.
pmichaud authored
30
31 =head1 Project Plan
32
33 Mostly, we're just a bunch of ants all cooperating (sort of) to haul
34 food toward the nest (on average). There are many groups of people
35 working on various bits and pieces as they see fit, since this is
36 primarily a volunteer effort.
37
38 This document does not attempt to summarize all these subprojects--see
5e7f86c [S01] take another lap around Mt Sinai...
lwall authored
39 L<http://perl6.org> for such information. What we can say here
40 is that, unlike how it was with Perl 5, none of these projects is
41 designed to be the Official Perl. Perl 6 is anything that passes the
42 official test suite. This test suite was initially developed under the
43 Pugs project because that project was at one point the furthest along
44 in exploring the high-level semantics of Perl 6. (Other projects
45 may be better at other things, such as speed or interoperability.
46 This is fine; it is not necessary that all implementations be equally
47 good at everything.) The official test suite is community property,
48 and is intended to be platform neutral, so that Perl 6 is defined
49 primarily by its desired semantics, not by accidents of history.
68d062f Move synopses to their new home.
pmichaud authored
50
ea2a000 [Spec]reverted \x20 to \xC2A0. "Perl 6" and "Perl 5" are words, so we…
jimmy authored
51 Another aspect of this is the Perl 6 compiler will be self-hosting.
68d062f Move synopses to their new home.
pmichaud authored
52 That is, the compiler will eventually compile itself, at least down
53 to the point where various code-generating backends can take over.
54 This largely removes platform dependencies from the frontend, so that
55 only the backends need to worry about platform-specific issues.
56
57 But above all, our project plan is simply to help people find a
58 spot where they can feel like they're creating the future, both for
59 themselves and for others. Around here, that's what we call fun.
60
61 =head1 Random Thoughts
62
63 =over 4
64
65 =item *
66
67 The word "apocalypse" historically meant merely "a revealing",
68 and we're using it in that unexciting sense.
69
70 =item *
71
72 If you ask for RFCs from the general public, you get a lot of
73 interesting but contradictory ideas, because people tend to stake
74 out polar positions, and none of the ideas can build on each other.
75
76 =item *
77
78 Larry's First Law of Language Redesign: Everyone wants the colon.
79
80 =item *
81
82 RFCs are rated on "PSA": whether they point out a real Problem,
6f50cf6 [S01] revert correction of non-mistake
lwall authored
83 whether they present a viable Solution, and whether that solution is
ea2a000 [Spec]reverted \x20 to \xC2A0. "Perl 6" and "Perl 5" are words, so we…
jimmy authored
84 likely to be Accepted as part of Perl 6.
68d062f Move synopses to their new home.
pmichaud authored
85
86 =item *
87
88 Languages should be redesigned in roughly the same order as you would
89 present the language to a new user.
90
91 =item *
92
ea2a000 [Spec]reverted \x20 to \xC2A0. "Perl 6" and "Perl 5" are words, so we…
jimmy authored
93 Perl 6 should be malleable enough that it can evolve into the imaginary
94 perfect language, Perl 7. This darwinian imperative implies support
68d062f Move synopses to their new home.
pmichaud authored
95 for multiple syntaxes above and multiple platforms below.
96
97 =item *
98
99 Many details may change, but the essence of Perl will remain unchanged.
100 Perl will continue to be a multiparadigmatic, context-sensitive
101 language. We are not turning Perl into any other existing language.
102
103 =item *
104
f538b17 @TimToady default to P5 only when invoked as 'perl'
TimToady authored
105 Migration is important. A Perl 6 interpreter, if invoked as "C<perl>", will assume that it
ea2a000 [Spec]reverted \x20 to \xC2A0. "Perl 6" and "Perl 5" are words, so we…
jimmy authored
106 is being fed Perl 5 code unless the code starts with a "class" or
107 "module" keyword, or you specifically tell it you're running Perl 6
68d062f Move synopses to their new home.
pmichaud authored
108 code in some other way, such as by:
109
110 #!/usr/bin/perl6
111 use v6.0;
112 v6;
113
8ee4a74 [S01] also allow a .p6 to be indicative of Perl 6 code
lwall authored
114 Also, a file with a C<.p6> extension may be taken as indicative,
8f0594a [S01] generalize .p6 slightly as suggested by dduncan++
lwall authored
115 as may any other extension containing the digit C<6>, such as C<p6l>
116 or C<p6m> or C<pl6> or C<pm6>. (Though C<.pl> and C<.pm> are still
117 perfectly acceptable extensions as long as the Perl-6-ness is indicated
118 one of the other indicators.)
8ee4a74 [S01] also allow a .p6 to be indicative of Perl 6 code
lwall authored
119
68d062f Move synopses to their new home.
pmichaud authored
120 =item *
121
ea2a000 [Spec]reverted \x20 to \xC2A0. "Perl 6" and "Perl 5" are words, so we…
jimmy authored
122 Migration in the other direction is also important. In Perl 6
123 mode, one can drop back to Perl 5 mode with C<use v5> at the
68d062f Move synopses to their new home.
pmichaud authored
124 beginning of a lexical block. Such blocks may be nested:
125
126 use v6;
127 # ...some Perl 6 code...
128 {
129 use v5;
130 # ...some Perl 5 code...
131 {
132 use v6;
133 # ...more Perl 6 code...
134 }
135 }
136
5e7f86c [S01] take another lap around Mt Sinai...
lwall authored
137 Some platforms may restrict this to a subset of Perl 5 when it is
138 not expedient to include a full Perl 5 interpreter. The standard
139 Perl 6 grammar will include the ability to parse a well-behaved
140 subset of Perl 5 on its own (much like PPI does); implementations
141 are required only to support this subset, though of course they may
142 also choose to implement bug-for-bug compatibility.
143
68d062f Move synopses to their new home.
pmichaud authored
144 =item *
145
146 Scaling is one of those areas where Perl needs to be multiparadigmatic
ea2a000 [Spec]reverted \x20 to \xC2A0. "Perl 6" and "Perl 5" are words, so we…
jimmy authored
147 and context sensitive. Perl 5 code is not strict by default, while
148 Perl 6 code is. But it should be easy to relax with C<-e> or
68d062f Move synopses to their new home.
pmichaud authored
149 a bare version number:
150
151 perl -e '$x = 1'
152
153 #!/usr/bin/perl
154 v6; $x = 1;
155
156 =item *
157
158 It must be possible to write policy metamodules that invoke other
159 modules on the user's behalf.
160
161 =item *
162
ea2a000 [Spec]reverted \x20 to \xC2A0. "Perl 6" and "Perl 5" are words, so we…
jimmy authored
163 If you want to treat everything as objects in Perl 6, Perl will help
68d062f Move synopses to their new home.
pmichaud authored
164 you do that. If you don't want to treat everything as objects, Perl
165 will help you with that viewpoint as well.
166
167 =item *
168
169 Operators are just functions with funny names and syntax.
170
171 =item *
172
173 Language designers are still necessary to synthesize unrelated ideas
174 into a coherent whole.
175
5e7f86c [S01] take another lap around Mt Sinai...
lwall authored
176 =item *
177
178 The language designer is neither omniscient nor omnipotent, and never
179 will be, despite requests for those particular features. Therefore
180 the design process will be spiral, cooperative, and convergent.
181 The rate of convergence is an emergent property, and cannot be forced,
182 only encouraged. As long as anyone is hacking on any implementation
183 of Perl 6 to make it conform to the test suite, or hacking on the
184 test suite to make it reflect consensus of specification, the rate
185 of convergence will be deemed to be positive. If you are unhappy
186 with the current rate of convergence, please cooperate more with
187 someone else you think is interested in convergence.
188
189 =item *
190
191 The spec will not be frozen prematurely, but will continue to solidify
192 as various aspects of it are proven (or disproven) in various
193 implementations. Many parts of the spec are already effectively
194 frozen, or are in a slushy state. "The future is already here,
195 it's just unevenly distributed."
196
197 =item *
198
199 All specced features that have not been proven in an implementation
200 should be considered somewhat conjectural, even if not so marked.
201 As implementations start to agree on what is practical and what is not,
202 do not be surprised if some features that are currently specced may be
203 deferred to future versions; these should still be considered long-term
204 direction in the evolution of Perl 6 over time, and the short-term
205 design should be conservative in preserving that long-term evolution.
206 Note that we are not in a hurry to defer any sections of the spec,
207 even if that would give the illusion of progress. Convergence
208 of specs and implementations will happen naturally as we get
209 implementations that are closer to the spec. It is quite likely
210 that the first practical implementation will largely determine
211 which features are considered to be required in 6.0.0.
212
213 =item *
214
215 Everyone is allowed to panic I<once>. However, continual panic will
216 be deemed poisonous. Nobody gets special treatment, even if they
217 think special treatment is necessary for success. This means you.
218
68d062f Move synopses to their new home.
pmichaud authored
219 =back
220
221 =for vim:set expandtab sw=4:
Something went wrong with that request. Please try again.