You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: NEWS.md
+73-41Lines changed: 73 additions & 41 deletions
Original file line number
Diff line number
Diff line change
@@ -44,7 +44,8 @@ Language changes
44
44
a function like other operators. The dotted version `.-->` is now parsed as well.
45
45
For backwards compatibility, `-->` still parses using its own expression head
46
46
instead of `:call`.
47
-
* The `a[begin, k]` syntax now calls `firstindex(a, 1)` rather than `first(axes(a, 1))` ([#35779]), but the former now defaults to the latter for any `a` ([#38742]).
47
+
* The `a[begin, k]` syntax now calls `firstindex(a, 1)` rather than `first(axes(a, 1))` ([#35779]),
48
+
but the former now defaults to the latter for any `a` ([#38742]).
48
49
*`⌿` (U+233F) and `¦` (U+00A6) are now infix operators with times-like and plus-like precedence,
49
50
respectively. Previously they were parsed as identifier characters ([#37973]).
50
51
@@ -86,7 +87,8 @@ Build system changes
86
87
New library functions
87
88
---------------------
88
89
89
-
* New function `Base.kron!` and corresponding overloads for various matrix types for performing Kronecker product in-place ([#31069]).
90
+
* New function `Base.kron!` and corresponding overloads for various matrix types for performing Kronecker
91
+
product in-place ([#31069]).
90
92
* New function `Base.readeach(io, T)` for iteratively performing `read(io, T)` ([#36150]).
91
93
*`Iterators.map` is added. It provides another syntax `Iterators.map(f, iterators...)`
92
94
for writing `(f(args...) for args in zip(iterators...))`, i.e. a lazy `map` ([#34352]).
@@ -101,9 +103,11 @@ New library functions
101
103
New library features
102
104
--------------------
103
105
104
-
* The `redirect_*` functions now accept `devnull` to discard all output redirected to it, and as an empty input. ([#36146]).
105
-
* The `redirect_*` functions can now be called on `IOContext` objects. ([#36688]).
106
-
*`findfirst`, `findnext`, `findlast`, and `findall` now support `AbstractVector{<:Union{Int8,UInt8}}` (pattern, array) arguments ([#37283]).
106
+
* The `redirect_*` functions now accept `devnull` to discard all output redirected to it, and as an empty
107
+
input ([#36146]).
108
+
* The `redirect_*` functions can now be called on `IOContext` objects ([#36688]).
109
+
*`findfirst`, `findnext`, `findlast`, and `findall` now support `AbstractVector{<:Union{Int8,UInt8}}`
110
+
(pattern, array) arguments ([#37283]).
107
111
* New constructor `NamedTuple(iterator)` that constructs a named tuple from a key-value pair iterator.
108
112
* A new `reinterpret(reshape, T, a::AbstractArray{S})` reinterprets `a` to have eltype `T` while potentially
109
113
inserting or consuming the first dimension depending on the ratio of `sizeof(T)` and `sizeof(S)`.
@@ -117,59 +121,68 @@ New library features
117
121
`haystack` ([#38475]).
118
122
* New methods `∉(collection)`, `∋(item)`, and `∌(item)` returning corresponding containment-testing
119
123
functions ([#38475]).
120
-
121
-
Standard library changes
122
-
------------------------
123
-
124
-
* It is no longer possible to create a `LinRange`, `StepRange`, or `StepRangeLen` with a `<: Integer` eltype but non-integer step ([#32439]).
125
-
*`pkg> precompile` is now parallelized through depth-first precompilation of dependencies. Errors will only throw for
126
-
direct dependencies listed in the `Project.toml`.
127
-
*`pkg> precompile` is now automatically triggered whenever Pkg changes the active manifest. Auto-precompilation will
128
-
remember if a package has errored within the given environment and will not retry until it changes.
129
-
Auto-precompilation can be gracefully interrupted with a `ctrl-c` and disabled by setting the environment variable
130
-
`JULIA_PKG_PRECOMPILE_AUTO=0`.
131
124
* The `nextprod` function now accepts tuples and other array types for its first argument ([#35791]).
132
125
* The `reverse(A; dims)` function for multidimensional `A` can now reverse multiple dimensions at once
133
126
by passing a tuple for `dims`, and defaults to reversing all dimensions; there is also a multidimensional
134
127
in-place `reverse!(A; dims)` ([#37367]).
135
-
* The function `isapprox(x,y)` now accepts the `norm` keyword argument also for numeric (i.e., non-array) arguments `x` and `y` ([#35883]).
128
+
* The function `isapprox(x,y)` now accepts the `norm` keyword argument also for numeric (i.e., non-array)
129
+
arguments `x` and `y` ([#35883]).
136
130
*`ispow2(x)` now supports non-`Integer` arguments `x` ([#37635]).
137
131
*`view`, `@view`, and `@views` now work on `AbstractString`s, returning a `SubString` when appropriate ([#35879]).
138
132
* All `AbstractUnitRange{<:Integer}`s now work with `SubString`, `view`, `@view` and `@views` on strings ([#35879]).
139
133
*`sum`, `prod`, `maximum`, and `minimum` now support `init` keyword argument ([#36188], [#35839]).
140
134
*`unique(f, itr; seen=Set{T}())` now allows you to declare the container type used for
141
135
keeping track of values returned by `f` on elements of `itr` ([#36280]).
142
-
*`Libdl` has been moved to `Base.Libc.Libdl`, however it is still accessible as an stdlib ([#35628]).
143
136
*`first` and `last` functions now accept an integer as second argument to get that many
144
137
leading or trailing elements of any iterable ([#34868]).
145
-
*`intersect` on `CartesianIndices` now returns `CartesianIndices` instead of `Vector{<:CartesianIndex}` ([#36643]).
146
138
*`CartesianIndices` now supports step different from `1`. It can also be constructed from three
147
139
`CartesianIndex`es `I`, `S`, `J` using `I:S:J`. `step` for `CartesianIndices` now returns a
148
140
`CartesianIndex` ([#37829]).
149
-
*`push!(c::Channel, v)` now returns channel `c`. Previously, it returned the pushed value `v` ([#34202]).
150
141
*`RegexMatch` objects can now be probed for whether a named capture group exists within it through `haskey()` ([#36717]).
151
-
* For consistency `haskey(r::RegexMatch, i::Integer)` has also been added and returns if the capture group for `i` exists ([#37300]).
142
+
* For consistency `haskey(r::RegexMatch, i::Integer)` has also been added and returns if the capture group
143
+
for `i` exists ([#37300]).
144
+
145
+
Standard library changes
146
+
------------------------
147
+
152
148
* A new standard library `TOML` has been added for parsing and printing [TOML files](https://toml.io) ([#37034]).
153
-
* The composition operator `∘` now returns a `Base.ComposedFunction` instead of an anonymous function ([#37517]).
154
-
* A new standard library `Downloads` has been added, which replaces the old `Base.download` function with `Downloads.download`, providing cross-platform, multi-protocol, in-process download functionality implemented with [libcurl](https://curl.haxx.se/libcurl/) ([#37340]).
155
-
* The `Pkg.BinaryPlatforms` module has been moved into `Base` as `Base.BinaryPlatforms` and heavily reworked.
156
-
Applications that want to be compatible with the old API should continue to import `Pkg.BinaryPlatforms`,
157
-
however new users should use `Base.BinaryPlatforms` directly ([#37320]).
158
-
* Logging (such as `@warn`) no longer catches exceptions in the logger itself ([#36600]).
159
-
* The `Pkg.Artifacts` module has been imported as a separate standard library. It is still available as
160
-
`Pkg.Artifacts`, however starting from Julia v1.6+, packages may import simply `Artifacts` without importing
161
-
all of `Pkg` alongside ([#37320]).
149
+
* A new standard library `Downloads` has been added, which replaces the old `Base.download` function with
with [libcurl](https://curl.haxx.se/libcurl/) ([#37340]).
152
+
*`Libdl` has been moved to `Base.Libc.Libdl`, however it is still accessible as an stdlib ([#35628]).
162
153
* To download artifacts lazily, `LazyArtifacts` now must be explicitly listed as a dependency, to avoid needing the
163
154
support machinery to be available when it is not commonly needed ([#37844]).
155
+
* It is no longer possible to create a `LinRange`, `StepRange`, or `StepRangeLen` with a `<: Integer` eltype but
156
+
non-integer step ([#32439]).
157
+
*`intersect` on `CartesianIndices` now returns `CartesianIndices` instead of `Vector{<:CartesianIndex}` ([#36643]).
158
+
*`push!(c::Channel, v)` now returns channel `c`. Previously, it returned the pushed value `v` ([#34202]).
159
+
* The composition operator `∘` now returns a `Base.ComposedFunction` instead of an anonymous function ([#37517]).
160
+
* Logging (such as `@warn`) no longer catches exceptions in the logger itself ([#36600]).
164
161
*`@time` now reports if the time presented included any compilation time, which is shown as a percentage ([#37678]).
165
162
*`@varinfo` can now report non-exported objects within modules, look recursively into submodules, and return a sorted
166
163
results table ([#38042]).
167
164
*`@testset` now supports the option `verbose` to show the test result summary
168
165
of the children even if they all pass ([#33755]).
169
166
167
+
#### Package Manager
168
+
169
+
*`pkg> precompile` is now parallelized through depth-first precompilation of dependencies. Errors will only throw for
170
+
direct dependencies listed in the `Project.toml`.
171
+
*`pkg> precompile` is now automatically triggered whenever Pkg changes the active manifest. Auto-precompilation will
172
+
remember if a package has errored within the given environment and will not retry until it changes.
173
+
Auto-precompilation can be gracefully interrupted with a `ctrl-c` and disabled by setting the environment variable
174
+
`JULIA_PKG_PRECOMPILE_AUTO=0`.
175
+
* The `Pkg.BinaryPlatforms` module has been moved into `Base` as `Base.BinaryPlatforms` and heavily reworked.
176
+
Applications that want to be compatible with the old API should continue to import `Pkg.BinaryPlatforms`,
177
+
however new users should use `Base.BinaryPlatforms` directly ([#37320]).
178
+
* The `Pkg.Artifacts` module has been imported as a separate standard library. It is still available as
179
+
`Pkg.Artifacts`, however starting from Julia v1.6+, packages may import simply `Artifacts` without importing
180
+
all of `Pkg` alongside ([#37320]).
181
+
170
182
#### LinearAlgebra
171
183
172
-
* New method `LinearAlgebra.issuccess(::CholeskyPivoted)` for checking whether pivoted Cholesky factorization was successful ([#36002]).
184
+
* New method `LinearAlgebra.issuccess(::CholeskyPivoted)` for checking whether pivoted Cholesky factorization was
185
+
successful ([#36002]).
173
186
*`UniformScaling` can now be indexed into using ranges to return dense matrices and vectors ([#24359]).
174
187
* New function `LinearAlgebra.BLAS.get_num_threads()` for getting the number of BLAS threads ([#36360]).
175
188
*`(+)(::UniformScaling)` is now defined, making `+I` a valid unary operation ([#36784]).
@@ -182,12 +195,17 @@ Standard library changes
182
195
183
196
#### Markdown
184
197
198
+
185
199
#### Printf
186
200
187
-
* Complete overhaul of internal code to use the ryu float printing algorithms (from Julia 1.4); leads to consistent 2-5x performance improvements.
188
-
* New `Printf.tofloat` function allowing custom float types to more easily integrate with Printf formatting by converting their type to `Float16`, `Float32`, `Float64`, or `BigFloat`.
189
-
* New `Printf.format"..."` and `Printf.Format(...)` functions that allow creating `Printf.Format` objects that can be passed to `Printf.format` for easier dynamic printf formatting.
190
-
*`Printf.format(f::Printf.Format, args...)` as a non-macro function that applies a printf format `f` to provided `args`.
201
+
* Complete overhaul of internal code to use the ryu float printing algorithms (from Julia 1.4); leads to
202
+
consistent 2-5x performance improvements.
203
+
* New `Printf.tofloat` function allowing custom float types to more easily integrate with Printf formatting
204
+
by converting their type to `Float16`, `Float32`, `Float64`, or `BigFloat`.
205
+
* New `Printf.format"..."` and `Printf.Format(...)` functions that allow creating `Printf.Format` objects
206
+
that can be passed to `Printf.format` for easier dynamic printf formatting.
207
+
*`Printf.format(f::Printf.Format, args...)` as a non-macro function that applies a printf format `f` to
208
+
provided `args`.
191
209
192
210
#### Random
193
211
@@ -214,10 +232,8 @@ Standard library changes
214
232
+`numoptions`, returning the number of items in the menu, has been added as an alternative to implementing `options`.
215
233
+`suppress_output` (primarily a testing option) has been added as a keyword argument to `request`,
216
234
rather than a configuration option.
217
-
218
235
* Tab completion now supports runs of consecutive sub/superscript characters,
219
236
e.g. `\^(3)` tab-completes to `⁽³⁾` ([#38649]).
220
-
221
237
* Windows REPL now supports 24-bit colors, by correctly interpreting virtual terminal escapes.
222
238
223
239
#### SparseArrays
@@ -242,9 +258,10 @@ Standard library changes
242
258
243
259
#### Distributed
244
260
245
-
* Now supports invoking Windows workers via ssh (via new keyword argument `shell=:wincmd` in `addprocs`) ([#30614])
246
-
247
-
* Other new keyword arguments in `addprocs`: `ssh` to specify the ssh client path, `env` to pass environment variables to workers, and `cmdline_cookie` to work around an ssh problem with Windows workers that run older (pre-ConPTY) versions of Windows, Julia or OpenSSH. ([#30614])
261
+
* Now supports invoking Windows workers via ssh (via new keyword argument `shell=:wincmd` in `addprocs`) ([#30614]).
262
+
* Other new keyword arguments in `addprocs`: `ssh` to specify the ssh client path, `env` to pass environment
263
+
variables to workers, and `cmdline_cookie` to work around an ssh problem with Windows workers that run older
264
+
(pre-ConPTY) versions of Windows, Julia or OpenSSH ([#30614]).
248
265
249
266
#### UUIDs
250
267
@@ -259,7 +276,8 @@ Standard library changes
259
276
Deprecated or removed
260
277
---------------------
261
278
262
-
* The `Base.download` function has been deprecated (silently, by default) in favor of the new `Downloads.download` standard library function ([#37340]).
279
+
* The `Base.download` function has been deprecated (silently, by default) in favor of the new `Downloads.download`
280
+
standard library function ([#37340]).
263
281
* The `Base.Grisu` code has been officially removed (float printing was switched to the ryu algorithm code in 1.4).
264
282
The code is available from [JuliaAttic](https://github.com/JuliaAttic/Grisu.jl) if needed.
0 commit comments