Skip to content

Commit 1e91a1f

Browse files
committed
NEWS: move breaking changes to before library improvements
1 parent 90d0c98 commit 1e91a1f

File tree

1 file changed

+49
-49
lines changed

1 file changed

+49
-49
lines changed

NEWS.md

+49-49
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,55 @@ Language changes
102102
* Parentheses are no longer allowed around iteration specifications, e.g.
103103
`for (i = 1:n)` ([#17668]).
104104

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+
105154
Library improvements
106155
--------------------
107156

@@ -300,55 +349,6 @@ New architectures
300349
* [Power](https://github.com/JuliaLang/julia/issues?utf8=%E2%9C%93&q=label%3Apower):
301350
[#16455], [#16404]
302351
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-
352352
Deprecated or removed
353353
---------------------
354354

0 commit comments

Comments
 (0)