Skip to content

Commit 3aeb0e9

Browse files
authored
Merge branch 'master' into eschnett/reduce
2 parents 72a42f1 + 293031b commit 3aeb0e9

File tree

496 files changed

+18726
-9830
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

496 files changed

+18726
-9830
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ CODEOWNERS @JuliaLang/github-actions
22
/.github/ @JuliaLang/github-actions
33
/.buildkite/ @JuliaLang/github-actions
44

5-
/.github/workflows/retry.yml @DilumAluthge
5+
/.github/workflows/rerun_failed.yml @DilumAluthge
66
/.github/workflows/statuses.yml @DilumAluthge

CONTRIBUTING.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,6 @@ please remove the `backport-X.Y` tag from the originating pull request for the c
345345
- If you see any unrelated changes to submodules like `deps/libuv`, `deps/openlibm`, etc., try running `git submodule update` first.
346346
- Descriptive commit messages are good.
347347
- Using `git add -p` or `git add -i` can be useful to avoid accidentally committing unrelated changes.
348-
- GitHub does not send notifications when you push a new commit to a pull request, so please add a comment to the pull request thread to let reviewers know when you've made changes.
349348
- When linking to specific lines of code in discussion of an issue or pull request, hit the `y` key while viewing code on GitHub to reload the page with a URL that includes the specific version that you're viewing. That way any lines of code that you refer to will still make sense in the future, even if the content of the file changes.
350349
- Whitespace can be automatically removed from existing commits with `git rebase`.
351350
- To remove whitespace for the previous commit, run

HISTORY.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,8 @@ Standard library changes
115115

116116
#### InteractiveUtils
117117

118-
* New macro `@time_imports` for reporting any time spent importing packages and their dependencies ([#41612]).
118+
* New macro `@time_imports` for reporting any time spent importing packages and their dependencies, highlighting
119+
compilation and recompilation time as percentages per import ([#41612],[#45064]).
119120

120121
#### LinearAlgebra
121122

@@ -200,6 +201,11 @@ Standard library changes
200201
definitions, including to other function calls, while recording all intermediate test results ([#42518]).
201202
* `TestLogger` and `LogRecord` are now exported from the Test stdlib ([#44080]).
202203

204+
#### Distributed
205+
206+
* SSHManager now supports workers with csh/tcsh login shell, via `addprocs()` option `shell=:csh` ([#41485]).
207+
208+
203209
Deprecated or removed
204210
---------------------
205211

@@ -231,6 +237,7 @@ Tooling Improvements
231237
[#41312]: https://github.com/JuliaLang/julia/issues/41312
232238
[#41328]: https://github.com/JuliaLang/julia/issues/41328
233239
[#41449]: https://github.com/JuliaLang/julia/issues/41449
240+
[#41485]: https://github.com/JuliaLang/julia/issues/41485
234241
[#41551]: https://github.com/JuliaLang/julia/issues/41551
235242
[#41576]: https://github.com/JuliaLang/julia/issues/41576
236243
[#41612]: https://github.com/JuliaLang/julia/issues/41612
@@ -3293,7 +3300,7 @@ Deprecated or removed
32933300
array interface should define their own `strides` method ([#25321]).
32943301

32953302
* `module_parent`, `Base.datatype_module`, and `Base.function_module` have been deprecated
3296-
in favor of `parentmodule` ([#TODO]).
3303+
in favor of `parentmodule` ([#25629]).
32973304

32983305
* `rand(t::Tuple{Vararg{Int}})` is deprecated in favor of `rand(Float64, t)` or `rand(t...)`;
32993306
`rand(::Tuple)` will have another meaning in the future ([#25429], [#25278]).
@@ -3666,6 +3673,7 @@ Command-line option changes
36663673
[#25571]: https://github.com/JuliaLang/julia/issues/25571
36673674
[#25616]: https://github.com/JuliaLang/julia/issues/25616
36683675
[#25622]: https://github.com/JuliaLang/julia/issues/25622
3676+
[#25629]: https://github.com/JuliaLang/julia/issues/25629
36693677
[#25631]: https://github.com/JuliaLang/julia/issues/25631
36703678
[#25633]: https://github.com/JuliaLang/julia/issues/25633
36713679
[#25634]: https://github.com/JuliaLang/julia/issues/25634

Make.inc

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -689,7 +689,7 @@ SANITIZE_OPTS += -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-fra
689689
SANITIZE_LDFLAGS += $(SANITIZE_OPTS)
690690
endif
691691
ifeq ($(SANITIZE_ADDRESS),1)
692-
SANITIZE_OPTS += -fsanitize=address -mllvm -asan-stack=0
692+
SANITIZE_OPTS += -fsanitize=address
693693
SANITIZE_LDFLAGS += -fsanitize=address
694694
endif
695695
ifeq ($(SANITIZE_THREAD),1)
@@ -1223,6 +1223,9 @@ else
12231223
NO_WHOLE_ARCHIVE := -Wl,--no-whole-archive
12241224
endif
12251225

1226+
# Initialize these once, then add to them in OS-specific blocks
1227+
JLIBLDFLAGS :=
1228+
12261229
ifeq ($(OS), Linux)
12271230
OSLIBS += -Wl,--no-as-needed -ldl -lrt -lpthread -latomic -Wl,--export-dynamic,--as-needed,--no-whole-archive
12281231
# Detect if ifunc is supported
@@ -1236,14 +1239,14 @@ ifneq ($(SANITIZE),1)
12361239
JLDFLAGS += -Wl,-no-undefined
12371240
endif
12381241
ifeq (-Bsymbolic-functions, $(shell $(LD) --help | grep -o -e "-Bsymbolic-functions"))
1239-
JLIBLDFLAGS := -Wl,-Bsymbolic-functions
1240-
else
1241-
JLIBLDFLAGS :=
1242+
JLIBLDFLAGS += -Wl,-Bsymbolic-functions
1243+
endif
1244+
ifeq (--enable-new-dtags, $(shell $(LD) --help | grep -o -e "--enable-new-dtags"))
1245+
JLIBLDFLAGS += -Wl,--enable-new-dtags
12421246
endif
1247+
12431248
# Linker doesn't detect automatically that Julia doesn't need executable stack
12441249
JLIBLDFLAGS += -Wl,-z,noexecstack
1245-
else ifneq ($(OS), Darwin)
1246-
JLIBLDFLAGS :=
12471250
endif
12481251

12491252
ifeq ($(OS), FreeBSD)
@@ -1266,7 +1269,7 @@ OSLIBS += -framework CoreFoundation
12661269
WHOLE_ARCHIVE := -Xlinker -all_load
12671270
NO_WHOLE_ARCHIVE :=
12681271
HAVE_SSP := 1
1269-
JLIBLDFLAGS := -Wl,-compatibility_version,$(SOMAJOR) -Wl,-current_version,$(JULIA_MAJOR_VERSION).$(JULIA_MINOR_VERSION).$(JULIA_PATCH_VERSION)
1272+
JLIBLDFLAGS += -Wl,-compatibility_version,$(SOMAJOR) -Wl,-current_version,$(JULIA_MAJOR_VERSION).$(JULIA_MINOR_VERSION).$(JULIA_PATCH_VERSION)
12701273
endif
12711274

12721275
ifeq ($(OS), WINNT)
@@ -1279,7 +1282,13 @@ JLDFLAGS += -Wl,--large-address-aware
12791282
endif
12801283
JCPPFLAGS += -D_WIN32_WINNT=0x0502
12811284
UNTRUSTED_SYSTEM_LIBM := 1
1282-
endif
1285+
# Use hard links for files on windows, rather than soft links
1286+
# https://stackoverflow.com/questions/3648819/how-to-make-a-symbolic-link-with-cygwin-in-windows-7
1287+
# Usage: $(WIN_MAKE_HARD_LINK) <source> <target>
1288+
WIN_MAKE_HARD_LINK := cp --dereference --link --force
1289+
else
1290+
WIN_MAKE_HARD_LINK := true -ignore
1291+
endif # $(OS) == WINNT
12831292

12841293
# Threads
12851294
ifneq ($(JULIA_THREADS), 0)

Makefile

Lines changed: 39 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
JULIAHOME := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
22
include $(JULIAHOME)/Make.inc
3+
# import LLVM_SHARED_LIB_NAME
4+
include $(JULIAHOME)/deps/llvm-ver.make
35

46
VERSDIR := v`cut -d. -f1-2 < $(JULIAHOME)/VERSION`
57

@@ -22,12 +24,12 @@ configure-y: | $(BUILDDIRMAKE)
2224
configure:
2325
ifeq ("$(origin O)", "command line")
2426
@if [ "$$(ls '$(BUILDROOT)' 2> /dev/null)" ]; then \
25-
echo 'WARNING: configure called on non-empty directory $(BUILDROOT)'; \
27+
printf $(WARNCOLOR)'WARNING: configure called on non-empty directory'$(ENDCOLOR)' %s\n' '$(BUILDROOT)'; \
2628
read -p "Proceed [y/n]? " answer; \
2729
else \
2830
answer=y;\
2931
fi; \
30-
[ $$answer = 'y' ] && $(MAKE) configure-$$answer
32+
[ "y$$answer" = yy ] && $(MAKE) configure-$$answer
3133
else
3234
$(error "cannot rerun configure from within a build directory")
3335
endif
@@ -101,7 +103,7 @@ check-whitespace:
101103
ifneq ($(NO_GIT), 1)
102104
@# Append the directory containing the julia we just built to the end of `PATH`,
103105
@# to give us the best chance of being able to run this check.
104-
@PATH=$(PATH):$(dirname $(JULIA_EXECUTABLE)) $(JULIAHOME)/contrib/check-whitespace.jl
106+
@PATH="$(PATH):$(dir $(JULIA_EXECUTABLE))" $(JULIAHOME)/contrib/check-whitespace.jl
105107
else
106108
$(warn "Skipping whitespace check because git is unavailable")
107109
endif
@@ -162,14 +164,17 @@ julia-base-cache: julia-sysimg-$(JULIA_BUILD_MODE) | $(DIRS) $(build_datarootdir
162164
$(call cygpath_w,$(build_datarootdir)/julia/base.cache))
163165

164166
# public libraries, that are installed in $(prefix)/lib
167+
ifeq ($(JULIA_BUILD_MODE),release)
165168
JL_TARGETS := julia
166-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
167-
JL_TARGETS += julia-debug
169+
else ifeq ($(JULIA_BUILD_MODE),debug)
170+
JL_TARGETS := julia-debug
168171
endif
169172

170173
# private libraries, that are installed in $(prefix)/lib/julia
171-
JL_PRIVATE_LIBS-0 := libccalltest libllvmcalltest libjulia-internal libjulia-codegen
172-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
174+
JL_PRIVATE_LIBS-0 := libccalltest libllvmcalltest
175+
ifeq ($(JULIA_BUILD_MODE),release)
176+
JL_PRIVATE_LIBS-0 += libjulia-internal libjulia-codegen
177+
else ifeq ($(JULIA_BUILD_MODE),debug)
173178
JL_PRIVATE_LIBS-0 += libjulia-internal-debug libjulia-codegen-debug
174179
endif
175180
ifeq ($(USE_GPL_LIBS), 1)
@@ -192,7 +197,7 @@ else
192197
JL_PRIVATE_LIBS-$(USE_SYSTEM_ZLIB) += libz
193198
endif
194199
ifeq ($(USE_LLVM_SHLIB),1)
195-
JL_PRIVATE_LIBS-$(USE_SYSTEM_LLVM) += libLLVM libLLVM-13jl
200+
JL_PRIVATE_LIBS-$(USE_SYSTEM_LLVM) += libLLVM $(LLVM_SHARED_LIB_NAME)
196201
endif
197202
JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBUNWIND) += libunwind
198203

@@ -230,38 +235,32 @@ endef
230235

231236

232237
install: $(build_depsbindir)/stringreplace $(BUILDROOT)/doc/_build/html/en/index.html
233-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
234-
@$(MAKE) $(QUIET_MAKE) all
235-
else
236-
@$(MAKE) $(QUIET_MAKE) release
237-
endif
238+
@$(MAKE) $(QUIET_MAKE) $(JULIA_BUILD_MODE)
238239
@for subdir in $(bindir) $(datarootdir)/julia/stdlib/$(VERSDIR) $(docdir) $(man1dir) $(includedir)/julia $(libdir) $(private_libdir) $(sysconfdir) $(libexecdir); do \
239240
mkdir -p $(DESTDIR)$$subdir; \
240241
done
241242

242-
$(INSTALL_M) $(build_bindir)/julia $(DESTDIR)$(bindir)/
243-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
244-
$(INSTALL_M) $(build_bindir)/julia-debug $(DESTDIR)$(bindir)/
245-
endif
243+
$(INSTALL_M) $(JULIA_EXECUTABLE_$(JULIA_BUILD_MODE)) $(DESTDIR)$(bindir)/
246244
ifeq ($(OS),WINNT)
247-
-$(INSTALL_M) $(filter-out $(build_bindir)/libjulia-debug.dll,$(wildcard $(build_bindir)/*.dll)) $(DESTDIR)$(bindir)/
245+
-$(INSTALL_M) $(wildcard $(build_bindir)/*.dll) $(DESTDIR)$(bindir)/
246+
ifeq ($(JULIA_BUILD_MODE),release)
248247
-$(INSTALL_M) $(build_libdir)/libjulia.dll.a $(DESTDIR)$(libdir)/
248+
else ifeq ($(JULIA_BUILD_MODE),debug)
249+
-$(INSTALL_M) $(build_libdir)/libjulia-debug.dll.a $(DESTDIR)$(libdir)/
250+
endif
249251

250252
# We have a single exception; we want 7z.dll to live in libexec, not bin, so that 7z.exe can find it.
251253
-mv $(DESTDIR)$(bindir)/7z.dll $(DESTDIR)$(libexecdir)/
252-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
253-
-$(INSTALL_M) $(build_bindir)/libjulia-debug.dll $(DESTDIR)$(bindir)/
254-
-$(INSTALL_M) $(build_libdir)/libjulia-debug.dll.a $(DESTDIR)$(libdir)/
255-
endif
256254
-$(INSTALL_M) $(build_bindir)/libopenlibm.dll.a $(DESTDIR)$(libdir)/
257255
else
258256

259257
# Copy over .dSYM directories directly for Darwin
260258
ifneq ($(DARWIN_FRAMEWORK),1)
261259
ifeq ($(OS),Darwin)
260+
ifeq ($(JULIA_BUILD_MODE),release)
262261
-cp -a $(build_libdir)/libjulia.*.dSYM $(DESTDIR)$(libdir)
263262
-cp -a $(build_private_libdir)/sys.dylib.dSYM $(DESTDIR)$(private_libdir)
264-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
263+
else ifeq ($(JULIA_BUILD_MODE),debug)
265264
-cp -a $(build_libdir)/libjulia-debug.*.dSYM $(DESTDIR)$(libdir)
266265
-cp -a $(build_private_libdir)/sys-debug.dylib.dSYM $(DESTDIR)$(private_libdir)
267266
endif
@@ -276,10 +275,11 @@ endif
276275
done
277276
else
278277
# libjulia in Darwin framework has special location and name
278+
ifeq ($(JULIA_BUILD_MODE),release)
279279
$(INSTALL_M) $(build_libdir)/libjulia.$(SOMAJOR).$(SOMINOR).dylib $(DESTDIR)$(prefix)/$(framework_dylib)
280280
@$(DSYMUTIL) -o $(DESTDIR)$(prefix)/$(framework_resources)/$(FRAMEWORK_NAME).dSYM $(DESTDIR)$(prefix)/$(framework_dylib)
281281
@$(DSYMUTIL) -o $(DESTDIR)$(prefix)/$(framework_resources)/sys.dylib.dSYM $(build_private_libdir)/sys.dylib
282-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
282+
else ifeq ($(JULIA_BUILD_MODE),debug)
283283
$(INSTALL_M) $(build_libdir)/libjulia-debug.$(SOMAJOR).$(SOMINOR).dylib $(DESTDIR)$(prefix)/$(framework_dylib)_debug
284284
@$(DSYMUTIL) -o $(DESTDIR)$(prefix)/$(framework_resources)/$(FRAMEWORK_NAME)_debug.dSYM $(DESTDIR)$(prefix)/$(framework_dylib)_debug
285285
@$(DSYMUTIL) -o $(DESTDIR)$(prefix)/$(framework_resources)/sys-debug.dylib.dSYM $(build_private_libdir)/sys-debug.dylib
@@ -307,8 +307,9 @@ endif
307307
# Copy public headers
308308
cp -R -L $(build_includedir)/julia/* $(DESTDIR)$(includedir)/julia
309309
# Copy system image
310+
ifeq ($(JULIA_BUILD_MODE),release)
310311
$(INSTALL_M) $(build_private_libdir)/sys.$(SHLIB_EXT) $(DESTDIR)$(private_libdir)
311-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
312+
else ifeq ($(JULIA_BUILD_MODE),debug)
312313
$(INSTALL_M) $(build_private_libdir)/sys-debug.$(SHLIB_EXT) $(DESTDIR)$(private_libdir)
313314
endif
314315

@@ -358,33 +359,37 @@ endif
358359
RELEASE_TARGET=$(DESTDIR)$(prefix)/$(framework_dylib); \
359360
DEBUG_TARGET=$(DESTDIR)$(prefix)/$(framework_dylib)_debug; \
360361
fi; \
361-
$(call stringreplace,$${RELEASE_TARGET},sys.$(SHLIB_EXT)$$,$(private_libdir_rel)/sys.$(SHLIB_EXT)); \
362-
if [ "$(BUNDLE_DEBUG_LIBS)" = "1" ]; then \
362+
if [ "$(JULIA_BUILD_MODE)" = "release" ]; then \
363+
$(call stringreplace,$${RELEASE_TARGET},sys.$(SHLIB_EXT)$$,$(private_libdir_rel)/sys.$(SHLIB_EXT)); \
364+
elif [ "$(JULIA_BUILD_MODE)" = "debug" ]; then \
363365
$(call stringreplace,$${DEBUG_TARGET},sys-debug.$(SHLIB_EXT)$$,$(private_libdir_rel)/sys-debug.$(SHLIB_EXT)); \
364366
fi;
365367
endif
366368

367369
# Set rpath for libjulia-internal, which is moving from `../lib` to `../lib/julia`. We only need to do this for Linux/FreeBSD
368370
ifneq (,$(findstring $(OS),Linux FreeBSD))
371+
ifeq ($(JULIA_BUILD_MODE),release)
369372
$(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal.$(SHLIB_EXT)
370-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
373+
$(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-codegen.$(SHLIB_EXT)
374+
else ifeq ($(JULIA_BUILD_MODE),debug)
371375
$(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT)
376+
$(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-codegen-debug.$(SHLIB_EXT)
372377
endif
373378
endif
374379

375380

376381
ifneq ($(LOADER_BUILD_DEP_LIBS),$(LOADER_INSTALL_DEP_LIBS))
377382
# Next, overwrite relative path to libjulia-internal in our loader if $$(LOADER_BUILD_DEP_LIBS) != $$(LOADER_INSTALL_DEP_LIBS)
383+
ifeq ($(JULIA_BUILD_MODE),release)
378384
$(call stringreplace,$(DESTDIR)$(shlibdir)/libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT),$(LOADER_BUILD_DEP_LIBS)$$,$(LOADER_INSTALL_DEP_LIBS))
379-
ifeq ($(OS),Darwin)
380-
# Codesign the libjulia we just modified
381-
$(JULIAHOME)/contrib/codesign.sh "$(MACOS_CODESIGN_IDENTITY)" "$(DESTDIR)$(shlibdir)/libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT)"
382-
endif
383-
384-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
385+
else ifeq ($(JULIA_BUILD_MODE),debug)
385386
$(call stringreplace,$(DESTDIR)$(shlibdir)/libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT),$(LOADER_DEBUG_BUILD_DEP_LIBS)$$,$(LOADER_DEBUG_INSTALL_DEP_LIBS))
387+
endif
386388
ifeq ($(OS),Darwin)
387389
# Codesign the libjulia we just modified
390+
ifeq ($(JULIA_BUILD_MODE),release)
391+
$(JULIAHOME)/contrib/codesign.sh "$(MACOS_CODESIGN_IDENTITY)" "$(DESTDIR)$(shlibdir)/libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT)"
392+
else ifeq ($(JULIA_BUILD_MODE),debug)
388393
$(JULIAHOME)/contrib/codesign.sh "$(MACOS_CODESIGN_IDENTITY)" "$(DESTDIR)$(shlibdir)/libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT)"
389394
endif
390395
endif

NEWS.md

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,10 @@ Language changes
1616
* New builtins `getglobal(::Module, ::Symbol[, order])` and `setglobal!(::Module, ::Symbol, x[, order])`
1717
for reading from and writing to globals. `getglobal` should now be preferred for accessing globals over
1818
`getfield`. ([#44137])
19-
* A few basic operators have been generalized to more naturally support vector space structures:
20-
unary minus falls back to scalar multiplication with -1, `-(x) = Int8(-1)*x`,
21-
binary minus falls back to addition `-(x, y) = x + (-y)`, and, at the most generic level,
22-
left- and right-division fall back to multiplication with the inverse from left and right,
23-
respectively, as stated in the docstring. ([#44564])
19+
* The `@invoke` macro introduced in 1.7 is now exported. Additionally, it now uses `Core.Typeof(x)`
20+
rather than `Any` when a type annotation is omitted for an argument `x` so that types passed
21+
as arguments are handled correctly. ([#45807])
22+
* The `invokelatest` function and `@invokelatest` macro introduced in 1.7 are now exported. ([#45831])
2423

2524
Compiler/Runtime improvements
2625
-----------------------------
@@ -36,6 +35,8 @@ Compiler/Runtime improvements
3635
`@nospecialize`-d call sites and avoiding excessive compilation. ([#44512])
3736
* All the previous usages of `@pure`-macro in `Base` has been replaced with the preferred
3837
`Base.@assume_effects`-based annotations. ([#44776])
38+
* `invoke(f, invokesig, args...)` calls to a less-specific method than would normally be chosen
39+
for `f(args...)` are no longer spuriously invalidated when loading package precompile files. ([#46010])
3940

4041
Command-line option changes
4142
---------------------------
@@ -67,6 +68,11 @@ New library functions
6768
* `Iterators.flatmap` was added ([#44792]).
6869
* New helper `Splat(f)` which acts like `x -> f(x...)`, with pretty printing for
6970
inspecting which function `f` was originally wrapped. ([#42717])
71+
* New `pkgversion(m::Module)` function to get the version of the package that loaded
72+
a given module, similar to `pkgdir(m::Module)`. ([#45607])
73+
* New function `stack(x)` which generalises `reduce(hcat, x::Vector{<:Vector})` to any dimensionality,
74+
and allows any iterators of iterators. Method `stack(f, x)` generalises `mapreduce(f, hcat, x)` and
75+
is efficient. ([#43334])
7076

7177
Library changes
7278
---------------
@@ -79,7 +85,6 @@ Library changes
7985
* `RoundFromZero` now works for non-`BigFloat` types ([#41246]).
8086
* `Dict` can be now shrunk manually by `sizehint!` ([#45004]).
8187
* `@time` now separates out % time spent recompiling invalidated methods ([#45015]).
82-
* `@time_imports` now shows any compilation and recompilation time percentages per import ([#45064]).
8388
* `eachslice` now works over multiple dimensions; `eachslice`, `eachrow` and `eachcol` return
8489
a `Slices` object, which allows dispatching to provide more efficient methods ([#32310]).
8590

@@ -106,6 +111,9 @@ Standard library changes
106111

107112
#### Printf
108113

114+
* Error messages for bad format strings have been improved, to make it clearer what & where in the
115+
format string is wrong. ([#45366])
116+
109117
#### Random
110118

111119
* `randn` and `randexp` now work for any `AbstractFloat` type defining `rand` ([#44714]).
@@ -115,6 +123,10 @@ Standard library changes
115123
* `Meta-e` now opens the current input in an editor. The content (if modified) will be
116124
executed upon existing the editor.
117125

126+
* The contextual module which is active at the REPL can be changed (it is `Main` by default),
127+
via the `REPL.activate(::Module)` function or via typing the module in the REPL and pressing
128+
the keybinding Alt-m ([#33872]).
129+
118130
#### SparseArrays
119131

120132
#### Test
@@ -151,6 +163,8 @@ Standard library changes
151163

152164
#### DelimitedFiles
153165

166+
* DelimitedFiles has been promoted from being a standard library to a separate package. It now has to be explicitly installed to be used.
167+
154168

155169
Deprecated or removed
156170
---------------------
@@ -164,4 +178,7 @@ External dependencies
164178
Tooling Improvements
165179
---------------------
166180

181+
* Printing of `MethodError` and methods (such as from `methods(my_func)`) are now prettified and color consistent with printing of methods
182+
in stacktraces. ([#45069])
183+
167184
<!--- generated by NEWS-update.jl: -->

0 commit comments

Comments
 (0)