Skip to content
This repository was archived by the owner on Nov 16, 2020. It is now read-only.

Commit 6cd36f5

Browse files
committed
Radical rewrite. features.txt is now features.json, and process.pl has been simplified a fair bit. We now allow "code" and "spec" values for each item to have links to relevant examples and the Perl 6 specification.
1 parent 2aae895 commit 6cd36f5

File tree

4 files changed

+441
-125
lines changed

4 files changed

+441
-125
lines changed

Makefile

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,2 @@
1-
features.html: process.pl template.html
2-
perl process.pl > features.html
3-
4-
clean:
5-
rm features.html
1+
features.html: process.pl template.html features.json
2+
perl process.pl features.html

features.json

Lines changed: 345 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,345 @@
1+
{
2+
"COMPILERS": [
3+
{
4+
"abbr" : "rm",
5+
"name" : "Rakudo/master",
6+
"url" : "http://rakudo.org"
7+
}, {
8+
"abbr" : "rn",
9+
"name" : "Rakudo/nom",
10+
"url" : "http://pmthium.com/2011/02/08/new-nqp-repository-new-nom-rakudo-branch/"
11+
}, {
12+
"abbr" : "n",
13+
"name" : "Niecza",
14+
"url" : "https://github.com/sorear/niecza"
15+
}
16+
],
17+
18+
"sections": [
19+
{ "section": "Basics",
20+
"items": [
21+
{
22+
"item" : "Basic control structures",
23+
"status" : "rm+ rn+ n+"
24+
}, {
25+
"item" : "Lexical variables",
26+
"status" : "rm+ rn+ n+"
27+
}, {
28+
"item" : "Basic types (strings, numbers)",
29+
"status" : "rm+ rn+ n+"
30+
}, {
31+
"item" : "Basic file IO",
32+
"status" : "rm+ rn+ n+-"
33+
}, {
34+
"item" : "Basic OO",
35+
"status" : "rm+ rn+ n+"
36+
}, {
37+
"item" : "Basic regex support",
38+
"status" : "rm+ rn+ n+"
39+
}, {
40+
"item" : "Subroutines",
41+
"status" : "rm+ rn+ n+"
42+
}, {
43+
"item" : "Blocks",
44+
"status" : "rm+ rn+ n+"
45+
}, {
46+
"item" : "Special variables",
47+
"status" : "rm+ (outdated specification) rn+ n+"
48+
}, {
49+
"item" : "Constants",
50+
"status" : "rm- rn+- (only literals) n+"
51+
}, {
52+
"item" : "State variables",
53+
"status" : "rm- rn- n+"
54+
}]
55+
},
56+
{ "section": "Classes",
57+
"items": [
58+
{
59+
"item" : "Classes, attributes, methods",
60+
"status" : "rm+ rn+ n+"
61+
}, {
62+
"item" : "Single inheritance",
63+
"status" : "rm+ rn+ n+",
64+
"code" : "http://rosettacode.org/wiki/Inheritance/Single#Perl_6"
65+
}, {
66+
"item" : "Multiple inheritance",
67+
"status" : "rm+ rn+ n+"
68+
}, {
69+
"item" : "Read-only accessors",
70+
"status" : "rm+ rn+ n-"
71+
}, {
72+
"item" : "Read-write accessors",
73+
"status" : "rm+ rn+ n+"
74+
}, {
75+
"item" : "Default constructor",
76+
"status" : "rm+ rn+ n+"
77+
}, {
78+
"item" : "Natively typed attributes",
79+
"status" : "rm- rn+ n-"
80+
}]
81+
},
82+
{ "section": "Roles",
83+
"items": [
84+
{
85+
"item" : "Roles with attributes and methods",
86+
"status" : "rm+ rn+ n+"
87+
}, {
88+
"item" : "Composing roles into classes",
89+
"status" : "rm+ rn+ n+- (runtime composition only)"
90+
}, {
91+
"item" : "Composing roles into roles",
92+
"status" : "rm+ rn+"
93+
}, {
94+
"item" : "Parametric roles",
95+
"status" : "rm+ rn+- n+-"
96+
} ]
97+
},
98+
{ "section": "Regexes",
99+
"items": [
100+
{
101+
"item" : "Quantifiers, alternations",
102+
"status" : "rm+ rn+ n+"
103+
}, {
104+
"item" : "Match objects",
105+
"status" : "rm+ rn+ n+"
106+
}, {
107+
"item" : "Named and positional captures",
108+
"status" : "rm+ rn+ n+"
109+
}, {
110+
"item" : "Conjunction",
111+
"status" : "rm+ rn+ n-"
112+
}, {
113+
"item" : "Longest-Token Matching",
114+
"status" : "rm+- (only for constants) rn- n+"
115+
}, {
116+
"item" : "Character classes",
117+
"status" : "rm+- (no backslash escapes) rn+- (no backslash escapes) n+"
118+
}, {
119+
"item" : "Unicode properties",
120+
"status" : "rm- rn- n-"
121+
}, {
122+
"item" : "Embedded code blocks",
123+
"status" : "rm+ rn- n+"
124+
}, {
125+
"item" : "Variable interpolation",
126+
"status" : "rm+- (only scalars) rn- n+- (only scalars)"
127+
}, {
128+
"item" : "Grammars",
129+
"status" : "rm+ rn- n+"
130+
}, {
131+
"item" : "Matching streams",
132+
"status" : "rm- rn-"
133+
} ]
134+
},
135+
{ "section": "Signatures",
136+
"items": [
137+
{
138+
"item" : "Positional args/params",
139+
"status" : "rm+ rn+ n+"
140+
}, {
141+
"item" : "Named args/params",
142+
"status" : "rm+ rn+ n+"
143+
}, {
144+
"item" : "Slurpy args/params",
145+
"status" : "rm+ rn+ n+"
146+
}, {
147+
"item" : "Multi-dimensional params",
148+
"status" : "rm- rn+ n-"
149+
}, {
150+
"item" : "Nested signatures",
151+
"status" : "rm+ rn- n-"
152+
}, {
153+
"item" : "is rw, is copy",
154+
"status" : "rm+ rn+ n+"
155+
}, {
156+
"item" : "Argument coercion",
157+
"status" : "rm+ rn- n-"
158+
}, {
159+
"item" : "Type captures",
160+
"status" : "rm+ rn+ n-"
161+
} ]
162+
},
163+
{ "section": "Built-in types and functions",
164+
"items": [
165+
{
166+
"item" : "Strings, split, join, case folding, substr",
167+
"status" : "rm+ rn+ n+"
168+
}, {
169+
"item" : "Basic numbers, arithmetic operations",
170+
"status" : "rm+ rn+ n+"
171+
}, {
172+
"item" : "Big integers",
173+
"status" : "rm- rn- n+"
174+
}, {
175+
"item" : "Complex numbers",
176+
"status" : "rm+ rn+ n+"
177+
}, {
178+
"item" : "Rat type",
179+
"status" : "rm+ rn+ n+"
180+
}, {
181+
"item" : "Hashes, Pairs",
182+
"status" : "rm+ rn+ n+"
183+
}, {
184+
"item" : "Lists, arrays, map, grep",
185+
"status" : "rm+ rn+ n+"
186+
}, {
187+
"item" : "Lazy lists",
188+
"status" : "rm+ rn+ n+"
189+
}, {
190+
"item" : "LoL",
191+
"status" : "rm- rn+- n-"
192+
}, {
193+
"item" : "Ranges",
194+
"status" : "rm+ rn+ n+"
195+
}, {
196+
"item" : "Sets, KeySet, KeyBag, ...",
197+
"status" : "rn- n-"
198+
}, {
199+
"item" : "Buf",
200+
"status" : "rm+ rn- n-"
201+
}, {
202+
"item" : "Native operators",
203+
"status" : "rm- rn- n-"
204+
}, {
205+
"item" : "Compact arrays",
206+
"status" : "rm- rn- n-",
207+
"spec" : "http://perlcabal.org/syn/S09.html#Compact_arrays"
208+
}, {
209+
"item" : "Shaped arrays/hashes",
210+
"status" : "rm- rn- n-",
211+
"spec" : "http://perlcabal.org/syn/S09.html#Fixed-size_arrays"
212+
} ]
213+
},
214+
{ "section": "Multi dispatch",
215+
"items": [
216+
{
217+
"item" : "Multi method dispatch",
218+
"status" : "rm+ rn+ n+"
219+
}, {
220+
"item" : "Multi sub dispatch",
221+
"status" : "rm+ rn+ n+"
222+
}, {
223+
"item" : "Protos",
224+
"status" : "rm+- (outdated specification) rn+ n-"
225+
}, {
226+
"item" : "Based on arity",
227+
"status" : "rm+ rn+ n+"
228+
}, {
229+
"item" : "Based on types",
230+
"status" : "rm+ rn+ n+"
231+
}, {
232+
"item" : "Proper narrowness analysis",
233+
"status" : "rm+ rn+ n+- (no subtypes)"
234+
}, {
235+
"item" : "Additional constraints",
236+
"status" : "rm+ n-"
237+
}]
238+
},
239+
{ "section": "Module management",
240+
"items": [
241+
{
242+
"item" : "use",
243+
"status" : "rm+- (limited import lists) rn+-(limited import lists) n+- (no import lists)"
244+
}, {
245+
"item" : "need:",
246+
"status" : ""
247+
}, {
248+
"item" : "require",
249+
"status" : "n+- (precompilation required)"
250+
}, {
251+
"item" : "Basic module versioning",
252+
"status" : "rm+ rn-"
253+
} ]
254+
},
255+
{ "section": "Meta operators",
256+
"items": [
257+
{
258+
"item" : "Reduction",
259+
"status" : "rm+ rn+ n+"
260+
}, {
261+
"item" : "Assignment",
262+
"status" : "rm+ rn+ n+"
263+
}, {
264+
"item" : "Negation",
265+
"status" : "rm+ rn+ n+"
266+
}, {
267+
"item" : "Reverse",
268+
"status" : "rm+ rn+ n+"
269+
}, {
270+
"item" : "Zip",
271+
"status" : "rm+- (only two lists) rn+ n+"
272+
}, {
273+
"item" : "Cross",
274+
"status" : "rm+- (only two lists) rn+ n+"
275+
}, {
276+
"item" : "Hyper",
277+
"status" : "rm+ rn- n+"
278+
}]
279+
},
280+
{ "section": "Syntax flexibility",
281+
"items": [
282+
{
283+
"item" : "Overloading operators",
284+
"status" : "rm+ n+"
285+
}, {
286+
"item" : "Defining new operators",
287+
"status" : "rm+ n+"
288+
}, {
289+
"item" : "Precedence and associativity of new operators",
290+
"status" : "rm- rn- n+"
291+
}, {
292+
"item" : "Basic macros",
293+
"status" : "rm- rn- n-"
294+
}, {
295+
"item" : "Hygienic macros",
296+
"status" : "rm- rn- n-"
297+
} ]
298+
},
299+
{ "section": "Concurrency",
300+
"items": [
301+
{
302+
"item" : "Basic threads",
303+
"status" : "rm- rn- n+"
304+
}, {
305+
"item" : "Synchronization",
306+
"status" : "rm- rn- n+-"
307+
}, {
308+
"item" : "Parallelized hyper operators",
309+
"status" : "rm- rn-"
310+
} ]
311+
},
312+
{ "section": "Misc",
313+
"items": [
314+
{
315+
"item" : "Junctions, autothreading",
316+
"status" : "rm+ rn+ n+"
317+
}, {
318+
"item" : "Whatever-currying",
319+
"status" : "rm+ rn+- n+"
320+
}, {
321+
"item" : "REPL",
322+
"status" : "rm+ rn+ n+"
323+
}, {
324+
"item" : "Feed operators",
325+
"status" : "rm+- rn+-"
326+
} ]
327+
},
328+
{
329+
"section": "Meta-Object Programming",
330+
"items": [
331+
{
332+
"item" : "Introspection",
333+
"status" : "rm+ rn+-"
334+
}, {
335+
"item" : "Adding methods",
336+
"status" : "rm+ rn+"
337+
}, {
338+
"item" : "Inheritance manipulation:",
339+
"status" : ""
340+
}, {
341+
"item" : "Role composition",
342+
"status" : "rn+"
343+
} ]
344+
} ]
345+
}

0 commit comments

Comments
 (0)