Skip to content
Newer
Older
100644 156 lines (96 sloc) 5.15 KB
1ea7e81 @sorear Draft v7 announce
authored
1 Announce: Niecza Perl 6 v7
2
3 This is the seventh release of Niecza Perl 6, as usual scheduled on
4 the last Monday of the month. I am pleased to note that Niecza is
5 starting to attract attention from the broader community. However,
6 this probably means a better name is needed; "Niecza" was OK as a
7 project name but is LTA for talking about. Suggestions are welcome.
8
9 You can obtain a build of Niecza from [1]. This build contains a
10 working compiler as a set of .exe and .dll files suitable for use with
11 Mono or Microsoft .NET. If you wish to follow latest developments,
12 you can obtain the source from [2]; however, you will still need a
13 binary for bootstrapping, so you gain nothing from a "source is
14 better" perspective.
15
16 Niecza is a Perl 6 compiler project studying questions about the
17 efficient implementability of Perl 6 features. It currently targets
18 the Common Language Runtime; both Mono and Microsoft .NET are known to
19 work. On Windows, Cygwin is required for source builds only; see the
20 README for details.
21
22
23 List of changes
24
25
26
27 [Breaking changes]
28
be28ad1 @sorear Revise announcement
authored
29 To facilitate S13-style definitions, the methods implementing postcircumfix
30 operators have been renamed:
31
32 If you had... Change to:
33 INVOKE postcircumfix:<( )>
34 at-key postcircumfix:<{ }>
35 at-pos postcircumfix:<[ ]>
36
37 (Rakudo style at_key and at_pos support is planned soon.)
1ea7e81 @sorear Draft v7 announce
authored
38
39 Constants now default to our scope, not my.
40
41
42
43 [Major features]
44
45 eval has been overhauled. It now provides access to lexical variables in the
46 surrounding scope, can return values to the surrounding scope, and can use
47 control operators. This includes the ability to use operators in the
48 surrounding scope.
49
50 Similarly the REPL now supports variables carrying over between lines, and
51 automatically prints values if you do not call an output function. The REPL
52 will catch exceptions and syntax errors; the only major features it's missing
53 now are editing and autocompletion.
54
55 Junctions are now implemented.
56
57 Subset and enum are available, completing the standard roster of type
58 declarators. As usual, no BEGIN means enum initializers are limited.
59 Bool is an enum now.
60
61 Handling of packages has been considerably redone. Foo::Bar now goes through
62 the WHO slot on Foo, like it was always supposed to. Packages can now be
63 overwritten by non-packages if necessary.
64
65 Niecza's parser has been modified to not keep a redundant second copy of the
66 symbol table, improving a number of corner cases (most notably the requirement
67 to use ::Foo::Bar with imported classes) and improving warnings.
68
69 Everything that can produce compile errors (except compiler bugs) is now
70 checked for during the parse, and results in a SORRY, not a random exception.
71
72 Object creation now supports BUILD submethods and has been greatly optimized;
73 it also uses CREATE, new, and bless as documented.
74
75 Sequence operators (... and ...^) are now supported.
76
77 Operator precedence traits (looser, tighter, equiv, assoc) are now supported.
78
79
80
81 [Minor new features]
82
83 It is now possible to use {YOU_ARE_HERE} in a loop; the -n and -p options
84 are now supported.
85
86 Magical increment/decrement of Str is now available.
87
88 Polymorphic comparison operators are starting to be stubbed in.
89
90 Sort can now take arity-one callbacks.
91
92 Assigning a single hash to a hash no longer dies.
93
94 Block parameters now default to Mu, and invocants to ::?CLASS.
95
96 Our subs are now supported.
97
98 It is now possible to bind to array and hash elements.
99
100 Packages and modules are now treated like classes, returning a type object
101 (which !~~ Mu, so is fairly useless), not Any.
102
103 :g/:global adverb to s/// now available.
104
105 Error messages (with line information) are now generated for duplicate
106 definitions of methods, attributes, and our-scoped symbols.
107
108 The ** quantifier now supports blocks on the right side, and properly handles
109 spaces around it.
110
111 Variables except parameters now default to a type of Mu but an initial value
112 of Any.
113
114 New setting variables: $*ARGFILES, %*ENV, $*PROGRAM_NAME.
115
116 New classes: Callable, Code, Block, Routine, Submethod, Method, EnumMap
117
118 &?BLOCK, &?ROUTINE, $?POSITION, $?FILE, and $?LINE are now supported.
119
120 New methods: Block.arity, Block.count, Code.outer, CallFrame.args,
121 CallFrame.subname, CallFrame.dynamic-caller, Rat.numerator,
122 Rat.denominator, Rat.nude, FatRat.new, (Solomon Foster) Complex.re,
123 Complex.im.
124
125 New setting functions: lines, floor, ceiling, round, truncate, conjugate,
126 sign, (Solomon Foster) abs.
127
be28ad1 @sorear Revise announcement
authored
128 infix:<**> now works in many more cases. (Solomon Foster)
129
1ea7e81 @sorear Draft v7 announce
authored
130
131 [Selected bug fixes]
132
133 Multiple inheritance now actually works.
134
135
136 [Very internal changes]
137
138
139
140 Getting involved
141
142 Contact sorear in irc.freenode.net #perl6 or via the sender address of
143 this mailing. Also check out the TODO file; whether you want to work
144 on stuff on it, or have cool ideas to add to it, both are good.
145
146 Future directions
147
148 Next month will see a major focus on spectests. Solomon Foster thinks
149 I can quadruple passing tests in a week; I'm not sure about that but
150 hope to at least do so in a month. Other features that are planned for
151 next month include transparent use of CLR libraries, Buf, roles, and
152 pseudo packages like OUTER::.
153
154 [1] https://github.com/downloads/sorear/niecza/niecza-7.zip
155 [2] https://github.com/sorear/niecza
Something went wrong with that request. Please try again.