@@ -102,6 +102,55 @@ Language changes
102
102
* Parentheses are no longer allowed around iteration specifications, e.g.
103
103
` for (i = 1:n) ` ([ #17668 ] ).
104
104
105
+ Breaking changes
106
+ ----------------
107
+
108
+ This section lists changes that do not have deprecation warnings.
109
+
110
+ * The assignment operations ` .+= ` , ` .*= ` and so on now generate calls
111
+ to ` broadcast! ` on the left-hand side (or call to ` view(a, ...) ` on the left-hand side
112
+ if the latter is an indexing expression, e.g. ` a[...] ` ). This means that they will fail
113
+ if the left-hand side is immutable (or does not support ` view ` ), and will otherwise
114
+ change the left-hand side in-place ([ #17510 ] , [ #17546 ] ).
115
+
116
+ * Method ambiguities no longer generate warnings when files are loaded,
117
+ nor do they dispatch to an arbitrarily-chosen method; instead, a call that
118
+ cannot be resolved to a single method results in a ` MethodError ` at run time,
119
+ rather than the previous definition-time warning. ([ #6190 ] )
120
+
121
+ * Array comprehensions preserve the dimensions of the input ranges. For example,
122
+ ` [2x for x in A] ` will have the same dimensions as ` A ` ([ #16622 ] ).
123
+
124
+ * The result type of an array comprehension depends only on the types of elements
125
+ computed, instead of using type inference ([ #7258 ] ). If the result is empty, then
126
+ type inference is still used to determine the element type.
127
+
128
+ * ` reshape ` is now defined to always share data with the original array.
129
+ If a reshaped copy is needed, use ` copy(reshape(a)) ` or ` copy! ` to a new array of
130
+ the desired shape ([ #4211 ] ).
131
+
132
+ * ` mapslices ` now re-uses temporary storage. Recipient functions that expect
133
+ input slices to be persistent should copy data to other storage ([ #17266 ] ).
134
+ All usages of ` mapslices ` should be carefully audited since this change can cause
135
+ silent, incorrect behavior, rather than failing noisily.
136
+
137
+ * Local variables and arguments are represented in lowered code as numbered ` Slot `
138
+ objects instead of as symbols ([ #15609 ] ).
139
+
140
+ * The information that used to be in the ` ast ` field of the ` LambdaStaticData ` type
141
+ is now divided among the fields ` code ` , ` slotnames ` , ` slottypes ` , ` slotflags ` ,
142
+ ` gensymtypes ` , ` rettype ` , ` nargs ` , and ` isva ` in the ` LambdaInfo ` type ([ #15609 ] ).
143
+
144
+ * ` A <: B ` is parsed as ` Expr(:(<:), :A, :B) ` in all cases ([ #9503 ] ).
145
+ This also applies to the ` >: ` operator.
146
+
147
+ * Simple 2-argument comparisons like ` A < B ` are parsed as calls instead of using the
148
+ ` :comparison ` expression type ([ #15524 ] ). The ` :comparison ` expression type is still
149
+ produced in ASTs when comparisons are chained (e.g. ` A < B ≤ C ` ).
150
+
151
+ * ` map ` on a dictionary now expects a function that expects and returns a ` Pair ` .
152
+ The result is now another dictionary instead of an array ([ #16622 ] ).
153
+
105
154
Library improvements
106
155
--------------------
107
156
@@ -300,55 +349,6 @@ New architectures
300
349
* [Power](https://github.com/JuliaLang/julia/issues?utf8=%E2%9C%93&q=label%3Apower):
301
350
[#16455], [#16404]
302
351
303
- Breaking changes
304
- ----------------
305
-
306
- This section lists changes that do not have deprecation warnings.
307
-
308
- * The assignment operations `.+=`, `.*=` and so on now generate calls
309
- to `broadcast!` on the left-hand side (or call to `view(a, ...)` on the left-hand side
310
- if the latter is an indexing expression, e.g. `a[...]`). This means that they will fail
311
- if the left-hand side is immutable (or does not support `view`), and will otherwise
312
- change the left-hand side in-place ([#17510], [#17546]).
313
-
314
- * Method ambiguities no longer generate warnings when files are loaded,
315
- nor do they dispatch to an arbitrarily-chosen method; instead, a call that
316
- cannot be resolved to a single method results in a `MethodError` at run time,
317
- rather than the previous definition-time warning. ([#6190])
318
-
319
- * Array comprehensions preserve the dimensions of the input ranges. For example,
320
- `[2x for x in A]` will have the same dimensions as `A` ([#16622]).
321
-
322
- * The result type of an array comprehension depends only on the types of elements
323
- computed, instead of using type inference ([#7258]). If the result is empty, then
324
- type inference is still used to determine the element type.
325
-
326
- * `reshape` is now defined to always share data with the original array.
327
- If a reshaped copy is needed, use `copy(reshape(a))` or `copy!` to a new array of
328
- the desired shape ([#4211]).
329
-
330
- * `mapslices` now re-uses temporary storage. Recipient functions that expect
331
- input slices to be persistent should copy data to other storage ([#17266]).
332
- All usages of `mapslices` should be carefully audited since this change can cause
333
- silent, incorrect behavior, rather than failing noisily.
334
-
335
- * Local variables and arguments are represented in lowered code as numbered `Slot`
336
- objects instead of as symbols ([#15609]).
337
-
338
- * The information that used to be in the `ast` field of the `LambdaStaticData` type
339
- is now divided among the fields `code`, `slotnames`, `slottypes`, `slotflags`,
340
- `gensymtypes`, `rettype`, `nargs`, and `isva` in the `LambdaInfo` type ([#15609]).
341
-
342
- * `A <: B` is parsed as `Expr(:(<:), :A, :B)` in all cases ([#9503]).
343
- This also applies to the `>:` operator.
344
-
345
- * Simple 2-argument comparisons like `A < B` are parsed as calls instead of using the
346
- `:comparison` expression type ([#15524]). The `:comparison` expression type is still
347
- produced in ASTs when comparisons are chained (e.g. `A < B ≤ C`).
348
-
349
- * `map` on a dictionary now expects a function that expects and returns a `Pair`.
350
- The result is now another dictionary instead of an array ([#16622]).
351
-
352
352
Deprecated or removed
353
353
---------------------
354
354
0 commit comments