- Macro calls
@foo {...}
can now also be written@foo{...}
(without the space) ([#34498]). ⨟
is now parsed as a binary operator with times precedence. It can be entered in the REPL with\bbsemi
followed by TAB ([#34722]).
-
The interactive REPL now uses "soft scope" for top-level expressions: an assignment inside a scope block such as a
for
loop automatically assigns to a global variable if one has been defined already. This matches the behavior of Julia versions 0.6 and prior, as well as IJulia. Note that this only affects expressions interactively typed or pasted directly into the default REPL ([#28789], [#33864]). -
Outside of the REPL (e.g. in a file), assigning to a variable within a top-level scope block is considered ambiguous if a global variable with the same name exists. A warning is given if that happens, to alert you that the code will work differently than in the REPL. A new command line option
--warn-scope
controls this warning ([#33864]). -
Converting arbitrary tuples to
NTuple
, e.g.convert(NTuple, (1, ""))
now gives an error, where it used to be incorrectly allowed. This is becauseNTuple
refers only to homogeneous tuples (this meaning has not changed) ([#34272]). -
In docstrings, a level-1 markdown header "Extended help" is now interpreted as a marker dividing "brief help" from "extended help." The REPL help mode only shows the brief help (the content before the "Extended help" header) by default; prepend the expression with '?' (in addition to the one that enters the help mode) to see the full docstring. ([#25930])
-
The syntax
(;)
(which was deprecated in v1.4) now creates an empty named tuple ([#30115]).
- The
@ccall
macro has been added added to Base. It is a near drop-in replacement forccall
with more Julia-like syntax. It also wraps the newforeigncall
API for varargs of different types, though it lacks the the capability to specify an LLVM calling convention. ([#32748]) - New functions
mergewith
andmergewith!
supersedemerge
andmerge!
withcombine
argument. They don't have the restriction forcombine
to be aFunction
and also provide one-argument method that returns a closure. The old methods ofmerge
andmerge!
are still available for backward compatibility ([#34296]). - The new
isdisjoint
function indicates whether two collections are disjoint ([#34427]). - Add function
ismutable
and deprecateisimmutable
to check whether something is mutable.([#34652]) include
now accepts an optionalmapexpr
first argument to transform the parsed expressions before they are evaluated ([#34595]).- New function
bitreverse
for reversing the order of bits in a fixed-width integer ([#34791]). - New function
bitrotate(x, k)
for rotating the bits in a fixed-width integer ([#33937]).
-
Function composition now works also on one argument
∘(f) = f
(#34251) -
@NamedTuple{key1::Type1, ...}
macro for convenientNamedTuple
declarations ([#34548]). -
isapprox
(or≈
) now has a one-argument "curried" methodisapprox(x)
which returns a function, likeisequal
(or==
)` ([#32305]). -
Ref{NTuple{N,T}}
can be passed toPtr{T}
/Ref{T}
ccall
signatures ([#34199]) -
accumulate
,cumsum
, andcumprod
now supportTuple
([#34654]). -
In
splice!
with no replacement, values to be removed can now be specified with an arbitrary iterable (instead of aUnitRange
) ([#34524]).
- The
@timed
macro now returns aNamedTuple
([#34149]) - New
supertypes(T)
function returns a tuple of all supertypes ofT
([#34419]). - Sorting-related functions such as
sort
that take the keyword argumentslt
,rev
,order
andby
now do not discardorder
ifby
orlt
are passed. In the former case, the order fromorder
is used to compare the values ofby(element)
. In the latter case, any order different fromForward
orReverse
will raise an error about the ambiguity.
- The BLAS submodule now supports the level-2 BLAS subroutine
hpmv!
([#34211]). normalize
now supports multidimensional arrays ([#34239])lq
factorizations can now be used to compute the minimum-norm solution to under-determined systems ([#34350]).- The BLAS submodule now supports the level-2 BLAS subroutine
spmv!
([#34320]).
lu!
acceptsUmfpackLU
as an argument to make use of its symbolic factorization.- The
trim
keyword argument for the functionsfkeep!
,tril!
,triu!
,droptol!
,dropzeros!
anddropzeros
has been removed in favour of always trimming. Calling these withtrim=false
could result in invalid sparse arrays.
launch_on_machine
now supports and parses ipv6 square-bracket notation ([#34430])