Skip to content
This repository
Newer
Older
100644 210 lines (133 sloc) 7.499 kb
ff52ee42 »
2012-01-29 s/13/14/ TimToady++
1 Announce: Niecza Perl 6 v14
989c185c »
2012-01-29 First half of changelog summarization
2
3 This is the fourteenth release of Niecza Perl 6, as usual scheduled on
4 the last Monday of the month. I'm on winter break now, which means lots
5 of time for improvements. Muahahaha. This month hasn't seen much of a
6 focus.
7
8 With this release, Niecza now passes a similar number of spectests as
9 Rakudo. (Note that they are not the same tests, and as such the test counts
10 are not completely comparable.) Solomon Foster has begun efforts to port
11 panda to niecza, with the goal of designing a multi-implementation ecosystem.
12
13 You can obtain a build of Niecza from [1]. This build contains a
14 working compiler as a set of .exe and .dll files suitable for use with
15 Mono or Microsoft .NET. If you wish to follow latest developments,
16 you can obtain the source from [2]; however, you will still need a
17 binary for bootstrapping, so you gain nothing from a "source is
18 better" perspective.
19
20 Niecza is a Perl 6 compiler project studying questions about the
21 efficient implementability of Perl 6 features. It currently targets
22 the Common Language Runtime; both Mono and Microsoft .NET are known to
23 work. On Windows, Cygwin is required for source builds only; see the
24 README for details.
25
26
27 List of changes
28
29
30 [Breaking changes]
31
32 Multiple dispatch has been changed to reject all cases of ambiguity using
33 an explicit list of conflictors; some ambiguous cases were formerly accepted.
34
35 List iteration has been modified to throw an exception when the list generator
36 tries to access the unreified part of the list. The previous code exhibited
37 undefined behavior that some code actually relied on.
38
830a9ed4 »
2012-01-29 Fix verb (diakopter)
39 Parameters like @foo and %foo now insist that their arguments be Positional and
989c185c »
2012-01-29 First half of changelog summarization
40 Associative respectively.
41
42 Rat and Complex stringification has been substantially changed.
43
44 Niecza now enforces "trusts".
45
eeed873e »
2012-01-29 Finish writing up announce.v14
46 &nextwith and CallFrame.args now conspire to hide the invocant parameter. If
47 you are calling nextwith directly, you no longer need to - and must no longer -
48 pass a self argument.
49
50 |$foo capture parameters now capture the logical "current" capture, rather
51 than the "initial" capture. In particular, 'method (|$foo)' no longer results
52 in $foo containing self.
989c185c »
2012-01-29 First half of changelog summarization
53
54
55 [Major features]
56
57 END blocks are now suppported.
58
59 The subroutine entry process has been significantly modified to allow
60 signatures to reference variables and anonymous code blocks.
61
62 Roles have been overhauled to much more closely match the Rakudo nom behavior.
63 Importantly, roles now have a $?CLASS parameter, and role blocks are not run
64 until that is available. Role composition at compile time is now supported,
65 as is role summation, attributes in roles, role conflict detection, type
66 checking against roles, etc. &infix:<does> and &infix:<but> now support
67 much more of specced behaviors.
68
69 Accompanying that, the old tag and mixin classes CommonEnum, IntBasedEnum,
70 StrBasedEnum, Callable, Positional, Associative, Numeric, and Real have been
71 converted into roles.
72
73 Major signature improvements: Added support for sub-signatures, where blocks,
74 proper MMD with subtypes, values used as types. Parameter and Signature
75 objects are now reified into Perl 6 space and support a subset of the Rakudo
76 nom introspection API.
77
78 Niecza now supports constant folding! If you mark a sub 'is pure' and call
79 it with sufficiently constant arguments, it will be replaced at compile time
80 with the result of the call, provided said call does not throw an exception.
81 What constitutes "sufficiently constant" is not documented, poorly defined,
82 and subject to change.
83
84 Niecza now keeps attributes from different classes in different namespaces,
85 so you can have $!x in both a parent and a child class without issues.
eeed873e »
2012-01-29 Finish writing up announce.v14
86 Additionally, the sigil is part of the name, so you can now have both $!x
87 and @!x.
88
89 val() is now supported, and is used automatically on <> lists.
90
91 MAIN is now supported.
92
93 STD-imported syntax changes: \foo and |foo parameters no longer require a
94 sigil. my \foo = ... works to declare a "raw" variable. Initializer
95 assignment now binds tightly to the declarator, so that e.g. (5 + my $x = 3)
96 does something more useful.
97
98 .WHICH has been added, and === does the correct thing with value types now.
99
100 Perl 5 interop improvements: can now be used from any directory and builds
101 much more robustly. Also supports more pass and return cases. (Paweł Murias)
989c185c »
2012-01-29 First half of changelog summarization
102
103
104 [Minor features]
105
eeed873e »
2012-01-29 Finish writing up announce.v14
106 No more pseudo-evaluators - all constructs which contain code that logically
107 is run at BEGIN time to produce a value, is now actually run rather than
108 attempting a static evaluation.
109
110 Binding to attributes is now supported.
111
112 Class attribute forms such as my $.foo, and the aliasing form has $foo, are
113 now supported.
114
115 Within a named 'anon sub', the name is visible, allowing for nicer recursion.
116
117 * now properly ignores assignments.
118
989c185c »
2012-01-29 First half of changelog summarization
119 $obj.Foo::bar, $obj.::("Foo::bar"), and /<::("Foo::bar")>/ are now accepted.
120
eeed873e »
2012-01-29 Finish writing up announce.v14
121 You can now set 'is iffy' and 'is diffy' for fully custom operators.
122
989c185c »
2012-01-29 First half of changelog summarization
123 Type adverbs :_ :U :D :T are now accepted.
124
125 Signatures like (Int, Int) are now allowed.
126
127 Phaser handling has been improved, and support added for CHECK.
128
129 Aliasing forms like <foo=$bar> are now allowed.
130
131 Version information is now embedded into the build, allowing for --version
132 and $?PERL support.
133
134 Printing of unhandled exceptions uses .gist.
135
136 Multiple dispatch now handles junctions.
137
eeed873e »
2012-01-29 Finish writing up announce.v14
138 Exporting multisubs from modules now approximately works.
139
140 Added ".Bridge" support. (Solomon Foster)
141
142 Attribute-binding parameters (:$!foo) now implemented.
143
144 :16() syntax is now supported.
145
146 Defaults and type constraints that are constants are now saved as such,
147 avoiding an unneeded block.
148
149 Str.perl now escapes special characters.
150
151 CLR interop now supports calls to shadowed and hidden methods, like
152 $obj.CLR::System::IDisposable.Dispose(). Note that this can NOT be used to
153 call overriden methods (callvirt semantics are used).
154
155 LTM processing ignores arguments and dispatchers forward the arguments to
156 multi regexes.
989c185c »
2012-01-29 First half of changelog summarization
157
158 infix:<cmp> supports pairs, ±Inf (Solomon Foster)
159
160 Hash.perl sorts the output to be slightly more useful.
161
eeed873e »
2012-01-29 Finish writing up announce.v14
162 New setting things:
989c185c »
2012-01-29 First half of changelog summarization
163 Cool.polar, Cool.roots, &roots, Array.delete, &infix:<minmax>, &rotate,
164 CommonEnum.pick, CommonEnum.roll, Any.min, Any.max, Any.minmax, Str.trans,
eeed873e »
2012-01-29 Finish writing up announce.v14
165 &elems, Any.reduce, &reduce, &shell, &categorize, &cwd, &chdir, $*CWD,
166 &printf, IO.copy, IO.chmod
989c185c »
2012-01-29 First half of changelog summarization
167 (Solomon Foster)
168
eeed873e »
2012-01-29 Finish writing up announce.v14
169 Hash.push (Moritz Lenz)
170
171 Int.base, Array.splice, &splice (Will Coleda)
989c185c »
2012-01-29 First half of changelog summarization
172
eeed873e »
2012-01-29 Finish writing up announce.v14
173 Set, Bag (Larry Wall, Solomon Foster)
989c185c »
2012-01-29 First half of changelog summarization
174
eeed873e »
2012-01-29 Finish writing up announce.v14
175 &prefix:<sleep>, Mu.clone, &undefine, $*OS, Order, $*OUT, $*ERR
989c185c »
2012-01-29 First half of changelog summarization
176
177 split and comb now support limits of Whatever (Solomon Foster)
178
179 Range coerces values to numbers according to spec (Solomon Foster)
180
181 &sort accepts a Callable first argument (Solomon Foster)
182
183 Added limit to &lines, :r and :rw to &open (Solomon Foster)
184
185 min and max support arbitrarily many arguments (Solomon Foster)
186
187 Changed sleep to return a value (Will Coleda)
188
189
190
191 [Other]
192
eeed873e »
2012-01-29 Finish writing up announce.v14
193 Daniel Ruoso is attempting an implementation of concurrent feeds.
989c185c »
2012-01-29 First half of changelog summarization
194
195
196 Getting involved
197
198 Contact sorear in irc.freenode.net #perl6 or via the sender address of
199 this mailing. Also check out the TODO file; whether you want to work
200 on stuff on it, or have cool ideas to add to it, both are good.
201
202 Future directions
203
eeed873e »
2012-01-29 Finish writing up announce.v14
204 Next month is likely to see fewer tuits in general. The only concrete plan
205 I have is to continue with 6model convergence, hopefully reaching a point
206 where user-defined metaclasses are possible.
989c185c »
2012-01-29 First half of changelog summarization
207
208
eeed873e »
2012-01-29 Finish writing up announce.v14
209 [1] https://github.com/downloads/sorear/niecza/niecza-14.zip
989c185c »
2012-01-29 First half of changelog summarization
210 [2] https://github.com/sorear/niecza
Something went wrong with that request. Please try again.