Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 159 lines (100 sloc) 5.432 kB
989c185 @sorear First half of changelog summarization
authored
1 Announce: Niecza Perl 6 v13
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
39 Parameters like @foo and %foo now insist that their arguments to Positional and
40 Associative respectively.
41
42 Rat and Complex stringification has been substantially changed.
43
44 Niecza now enforces "trusts".
45
46
47
48 [Major features]
49
50 END blocks are now suppported.
51
52 The subroutine entry process has been significantly modified to allow
53 signatures to reference variables and anonymous code blocks.
54
55 Roles have been overhauled to much more closely match the Rakudo nom behavior.
56 Importantly, roles now have a $?CLASS parameter, and role blocks are not run
57 until that is available. Role composition at compile time is now supported,
58 as is role summation, attributes in roles, role conflict detection, type
59 checking against roles, etc. &infix:<does> and &infix:<but> now support
60 much more of specced behaviors.
61
62 Accompanying that, the old tag and mixin classes CommonEnum, IntBasedEnum,
63 StrBasedEnum, Callable, Positional, Associative, Numeric, and Real have been
64 converted into roles.
65
66 Major signature improvements: Added support for sub-signatures, where blocks,
67 proper MMD with subtypes, values used as types. Parameter and Signature
68 objects are now reified into Perl 6 space and support a subset of the Rakudo
69 nom introspection API.
70
71 Niecza now supports constant folding! If you mark a sub 'is pure' and call
72 it with sufficiently constant arguments, it will be replaced at compile time
73 with the result of the call, provided said call does not throw an exception.
74 What constitutes "sufficiently constant" is not documented, poorly defined,
75 and subject to change.
76
77 Niecza now keeps attributes from different classes in different namespaces,
78 so you can have $!x in both a parent and a child class without issues.
79
80
81 [Minor features]
82
83 $obj.Foo::bar, $obj.::("Foo::bar"), and /<::("Foo::bar")>/ are now accepted.
84
85 Type adverbs :_ :U :D :T are now accepted.
86
87 Signatures like (Int, Int) are now allowed.
88
89 Phaser handling has been improved, and support added for CHECK.
90
91 Aliasing forms like <foo=$bar> are now allowed.
92
93 Version information is now embedded into the build, allowing for --version
94 and $?PERL support.
95
96 Printing of unhandled exceptions uses .gist.
97
98 Multiple dispatch now handles junctions.
99
100
101 infix:<cmp> supports pairs, ±Inf (Solomon Foster)
102
103 Hash.perl sorts the output to be slightly more useful.
104
105 New setting subroutines and methods:
106
107 Cool.polar, Cool.roots, &roots, Array.delete, &infix:<minmax>, &rotate,
108 CommonEnum.pick, CommonEnum.roll, Any.min, Any.max, Any.minmax, Str.trans,
109 &elems, Any.reduce, &reduce, &shell
110 (Solomon Foster)
111
112 Hash.push
113 (Moritz Lenz)
114
115 Int.base
116 (Will Coleda)
117
118 &prefix:<sleep>, Mu.clone
119
120 split and comb now support limits of Whatever (Solomon Foster)
121
122 Range coerces values to numbers according to spec (Solomon Foster)
123
124 &sort accepts a Callable first argument (Solomon Foster)
125
126 Added limit to &lines, :r and :rw to &open (Solomon Foster)
127
128 min and max support arbitrarily many arguments (Solomon Foster)
129
130 Changed sleep to return a value (Will Coleda)
131
132
133
134 [Other]
135
136 Daniel Ruoso is attempting an implementation of concurrent feeds (not yet done).
137
138
139 Getting involved
140
141 Contact sorear in irc.freenode.net #perl6 or via the sender address of
142 this mailing. Also check out the TODO file; whether you want to work
143 on stuff on it, or have cool ideas to add to it, both are good.
144
145 Future directions
146
147 My current priorities are:
148 1. Make regexes much more feature-complete, including general Unicode
149 properties and grapheme mode
150 2. Prototype the debugger
151 3. 6model convergence work, including roles/native types
152 4. Figure out how modules and S11 stuff should work in Niecza. Do it.
153
154
155 [1] https://github.com/downloads/sorear/niecza/niecza-13.zip
156 [2] https://github.com/sorear/niecza
157 [3] http://www.unicode.org/reports/tr18/
158 [4] https://github.com/flussence/specgraphs/raw/master/impls.png
Something went wrong with that request. Please try again.