Skip to content
This repository
Browse code

Finish writing up announce.v14

  • Loading branch information...
commit eeed873ec2f6d17c8882fca678506d63a76ecf86 1 parent 989c185
Stefan O'Rear authored

Showing 1 changed file with 70 additions and 18 deletions. Show diff stats Hide diff stats

  1. +70 18 docs/announce.v14
88 docs/announce.v14
@@ -43,6 +43,13 @@ Rat and Complex stringification has been substantially changed.
43 43
44 44 Niecza now enforces "trusts".
45 45
  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.
46 53
47 54
48 55 [Major features]
@@ -76,12 +83,43 @@ and subject to change.
76 83
77 84 Niecza now keeps attributes from different classes in different namespaces,
78 85 so you can have $!x in both a parent and a child class without issues.
  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)
79 102
80 103
81 104 [Minor features]
82 105
  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 +
83 119 $obj.Foo::bar, $obj.::("Foo::bar"), and /<::("Foo::bar")>/ are now accepted.
84 120
  121 +You can now set 'is iffy' and 'is diffy' for fully custom operators.
  122 +
85 123 Type adverbs :_ :U :D :T are now accepted.
86 124
87 125 Signatures like (Int, Int) are now allowed.
@@ -97,25 +135,44 @@ Printing of unhandled exceptions uses .gist.
97 135
98 136 Multiple dispatch now handles junctions.
99 137
  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.
100 157
101 158 infix:<cmp> supports pairs, ±Inf (Solomon Foster)
102 159
103 160 Hash.perl sorts the output to be slightly more useful.
104 161
105   -New setting subroutines and methods:
106   -
  162 +New setting things:
107 163 Cool.polar, Cool.roots, &roots, Array.delete, &infix:<minmax>, &rotate,
108 164 CommonEnum.pick, CommonEnum.roll, Any.min, Any.max, Any.minmax, Str.trans,
109   -&elems, Any.reduce, &reduce, &shell
  165 +&elems, Any.reduce, &reduce, &shell, &categorize, &cwd, &chdir, $*CWD,
  166 +&printf, IO.copy, IO.chmod
110 167 (Solomon Foster)
111 168
112   -Hash.push
113   -(Moritz Lenz)
  169 +Hash.push (Moritz Lenz)
  170 +
  171 +Int.base, Array.splice, &splice (Will Coleda)
114 172
115   -Int.base
116   -(Will Coleda)
  173 +Set, Bag (Larry Wall, Solomon Foster)
117 174
118   -&prefix:<sleep>, Mu.clone
  175 +&prefix:<sleep>, Mu.clone, &undefine, $*OS, Order, $*OUT, $*ERR
119 176
120 177 split and comb now support limits of Whatever (Solomon Foster)
121 178
@@ -133,7 +190,7 @@ Changed sleep to return a value (Will Coleda)
133 190
134 191 [Other]
135 192
136   -Daniel Ruoso is attempting an implementation of concurrent feeds (not yet done).
  193 +Daniel Ruoso is attempting an implementation of concurrent feeds.
137 194
138 195
139 196 Getting involved
@@ -144,15 +201,10 @@ on stuff on it, or have cool ideas to add to it, both are good.
144 201
145 202 Future directions
146 203
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.
  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.
153 207
154 208
155   -[1] https://github.com/downloads/sorear/niecza/niecza-13.zip
  209 +[1] https://github.com/downloads/sorear/niecza/niecza-14.zip
156 210 [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

0 comments on commit eeed873

Please sign in to comment.
Something went wrong with that request. Please try again.