Skip to content

Commit 0c6bada

Browse files
authored
Merge branch 'master' into sds/prop_destruct_macroexpand
2 parents dbe3c99 + a632def commit 0c6bada

File tree

502 files changed

+19700
-10878
lines changed

Some content is hidden

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

502 files changed

+19700
-10878
lines changed

HISTORY.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,9 @@ Standard library changes
135135
* The contextual module which is active in the REPL can be changed (it is `Main` by default),
136136
via the `REPL.activate(::Module)` function or via typing the module in the REPL and pressing
137137
the keybinding Alt-m ([#33872]).
138-
* An "IPython mode" which mimics the behaviour of the prompts and storing the evaluated result in `Out` can be
139-
activated with `REPL.ipython_mode!()`. See the manual for how to enable this at startup ([#46474]).
138+
* A "numbered prompt" mode which prints numbers for each input and output and stores evaluated results in `Out` can be
139+
activated with `REPL.numbered_prompt!()`. See the manual for how to enable this at startup ([#46474]).
140+
* Tab completion displays available keyword arguments ([#43536])
140141

141142
#### SuiteSparse
142143

@@ -176,7 +177,7 @@ Standard library changes
176177

177178
#### DelimitedFiles
178179

179-
* DelimitedFiles has been moved out as a separate package. It now has to be explicitly installed to be used.
180+
* DelimitedFiles has been moved out as a separate package.
180181

181182
Deprecated or removed
182183
---------------------

Make.inc

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,15 @@ WITH_GC_DEBUG_ENV := 0
8989
# Enable DTrace support
9090
WITH_DTRACE := 0
9191

92+
# Enable ITTAPI integration
93+
WITH_ITTAPI := 0
94+
95+
# Enable Tracy support
96+
WITH_TRACY := 0
97+
98+
# Enable Timing Counts support
99+
WITH_TIMING_COUNTS := 0
100+
92101
# Prevent picking up $ARCH from the environment variables
93102
ARCH:=
94103

@@ -175,7 +184,7 @@ endif
175184
JULIA_VERSION := $(shell cat $(JULIAHOME)/VERSION)
176185
JULIA_MAJOR_VERSION := $(shell echo $(JULIA_VERSION) | cut -d'-' -f 1 | cut -d'.' -f 1)
177186
JULIA_MINOR_VERSION := $(shell echo $(JULIA_VERSION) | cut -d'-' -f 1 | cut -d'.' -f 2)
178-
JULIA_PATCH_VERSION := $(shell echo $(JULIA_VERSION) | cut -d'-' -f 1 | cut -d'.' -f 3)
187+
JULIA_PATCH_VERSION := $(shell echo $(JULIA_VERSION) | cut -d'-' -f 1 | cut -d'+' -f 1 | cut -d'.' -f 3)
179188

180189
# libjulia's SONAME will follow the format libjulia.so.$(SOMAJOR). Before v1.0.0,
181190
# SOMAJOR will be a two-decimal value, e.g. libjulia.so.0.5, whereas at and beyond
@@ -286,6 +295,9 @@ private_libdir := $(libdir)/julia
286295
endif
287296
build_private_libdir := $(build_libdir)/julia
288297

298+
private_libexecdir := $(libexecdir)/julia
299+
build_private_libexecdir := $(build_libexecdir)/julia
300+
289301
# A helper functions for dealing with lazily-evaluated, expensive operations.. Spinning
290302
# up a python process to, for exaxmple, parse a TOML file is expensive, and we must wait
291303
# until the TOML files are on-disk before we can parse them. This means that we cannot
@@ -310,7 +322,7 @@ define cache_rel_path
310322
$(1)_rel_eval = $(call rel_path,$(2),$($(1)))
311323
$(1)_rel = $$(call hit_cache,$(1)_rel_eval)
312324
endef
313-
$(foreach D,libdir private_libdir datarootdir libexecdir docdir sysconfdir includedir,$(eval $(call cache_rel_path,$(D),$(bindir))))
325+
$(foreach D,libdir private_libdir datarootdir libexecdir private_libexecdir docdir sysconfdir includedir,$(eval $(call cache_rel_path,$(D),$(bindir))))
314326
$(foreach D,build_libdir build_private_libdir,$(eval $(call cache_rel_path,$(D),$(build_bindir))))
315327

316328
# Save a special one: reverse_private_libdir_rel: usually just `../`, but good to be general:
@@ -446,7 +458,11 @@ endif
446458

447459
# Compiler specific stuff
448460

449-
CC_VERSION_STRING = $(shell $(CC) --version)
461+
CC := $(CROSS_COMPILE)$(CC) # attempt to add cross-compiler prefix, if the user
462+
# is not overriding the default, to form target-triple-cc (which
463+
# may not exist), and use that to decide what compiler the user
464+
# is using for the target build (or default to gcc)
465+
CC_VERSION_STRING = $(shell $(CC) --version 2>/dev/null)
450466
ifneq (,$(findstring clang,$(CC_VERSION_STRING)))
451467
USECLANG := 1
452468
USEGCC := 0
@@ -533,8 +549,8 @@ CC_BASE := $(shell echo $(CC) | cut -d' ' -f1)
533549
CC_ARG := $(shell echo $(CC) | cut -s -d' ' -f2-)
534550
CXX_BASE := $(shell echo $(CXX) | cut -d' ' -f1)
535551
CXX_ARG := $(shell echo $(CXX) | cut -s -d' ' -f2-)
536-
FC_BASE := $(shell echo $(FC) | cut -d' ' -f1)
537-
FC_ARG := $(shell echo $(FC) | cut -s -d' ' -f2-)
552+
FC_BASE := $(shell echo $(FC) 2>/dev/null | cut -d' ' -f1)
553+
FC_ARG := $(shell echo $(FC) 2>/dev/null | cut -s -d' ' -f2-)
538554
endif
539555

540556
JFFLAGS := -O2 $(fPIC)
@@ -674,7 +690,10 @@ SANITIZE_LDFLAGS :=
674690
ifeq ($(SANITIZE_MEMORY),1)
675691
SANITIZE_OPTS += -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer
676692
SANITIZE_LDFLAGS += $(SANITIZE_OPTS)
677-
endif
693+
ifneq ($(findstring $(OS),Linux FreeBSD),)
694+
SANITIZE_LDFLAGS += -Wl,--warn-unresolved-symbols
695+
endif # OS Linux or FreeBSD
696+
endif # SANITIZE_MEMORY=1
678697
ifeq ($(SANITIZE_ADDRESS),1)
679698
SANITIZE_OPTS += -fsanitize=address
680699
SANITIZE_LDFLAGS += -fsanitize=address
@@ -713,7 +732,23 @@ ifeq ($(WITH_DTRACE), 1)
713732
JCXXFLAGS += -DUSE_DTRACE
714733
JCFLAGS += -DUSE_DTRACE
715734
DTRACE := dtrace
716-
else
735+
endif
736+
737+
ifeq ($(WITH_ITTAPI), 1)
738+
JCXXFLAGS += -DUSE_ITTAPI
739+
JCFLAGS += -DUSE_ITTAPI
740+
LIBITTAPI:=-littnotify
741+
endif
742+
743+
ifeq ($(WITH_TRACY), 1)
744+
JCXXFLAGS += -DUSE_TRACY -DTRACY_ENABLE -DTRACY_FIBERS
745+
JCFLAGS += -DUSE_TRACY -DTRACY_ENABLE -DTRACY_FIBERS
746+
LIBTRACYCLIENT:=-lTracyClient
747+
endif
748+
749+
ifeq ($(WITH_TIMING_COUNTS), 1)
750+
JCXXFLAGS += -DUSE_TIMING_COUNTS
751+
JCFLAGS += -DUSE_TIMING_COUNTS
717752
endif
718753

719754
# ===========================================================================
@@ -831,7 +866,6 @@ endif
831866
# If we are running on powerpc64le or ppc64le, set certain options automatically
832867
ifneq (,$(filter $(ARCH), powerpc64le ppc64le))
833868
JCFLAGS += -fsigned-char
834-
OPENBLAS_DYNAMIC_ARCH:=0
835869
OPENBLAS_TARGET_ARCH:=POWER8
836870
BINARY:=64
837871
# GCC doesn't do -march= on ppc64le
@@ -1019,6 +1053,10 @@ PATCHELF := patchelf
10191053
else
10201054
PATCHELF := $(build_depsbindir)/patchelf
10211055
endif
1056+
# In the standard build system we want to patch files with `--set-rpath`, but downstream
1057+
# packagers like Spack may want to use `--add-rpath` instead, leave them the possibility to
1058+
# choose the command.
1059+
PATCHELF_SET_RPATH_ARG := --set-rpath
10221060

10231061
ifeq ($(USE_SYSTEM_LIBWHICH), 1)
10241062
LIBWHICH := libwhich
@@ -1164,7 +1202,7 @@ CSL_NEXT_GLIBCXX_VERSION=GLIBCXX_3\.4\.31|GLIBCXX_3\.5\.|GLIBCXX_4\.
11641202
# Note: we explicitly _do not_ define `CSL` here, since it requires some more
11651203
# advanced techniques to decide whether it should be installed from a BB source
11661204
# or not. See `deps/csl.mk` for more detail.
1167-
BB_PROJECTS := BLASTRAMPOLINE OPENBLAS LLVM LIBSUITESPARSE OPENLIBM GMP MBEDTLS LIBSSH2 NGHTTP2 MPFR CURL LIBGIT2 PCRE LIBUV LIBUNWIND DSFMT OBJCONV ZLIB P7ZIP LLD
1205+
BB_PROJECTS := BLASTRAMPOLINE OPENBLAS LLVM LIBSUITESPARSE OPENLIBM GMP MBEDTLS LIBSSH2 NGHTTP2 MPFR CURL LIBGIT2 PCRE LIBUV LIBUNWIND DSFMT OBJCONV ZLIB P7ZIP LLD LIBTRACYCLIENT
11681206
define SET_BB_DEFAULT
11691207
# First, check to see if BB is disabled on a global setting
11701208
ifeq ($$(USE_BINARYBUILDER),0)

Makefile

Lines changed: 26 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ all: debug release
2929
DIRS := $(sort $(build_bindir) $(build_depsbindir) $(build_libdir) $(build_private_libdir) $(build_libexecdir) $(build_includedir) $(build_includedir)/julia $(build_sysconfdir)/julia $(build_datarootdir)/julia $(build_datarootdir)/julia/stdlib $(build_man1dir))
3030
ifneq ($(BUILDROOT),$(JULIAHOME))
3131
BUILDDIRS := $(BUILDROOT) $(addprefix $(BUILDROOT)/,base src src/flisp src/support src/clangsa cli doc deps stdlib test test/clangsa test/embedding test/gcext test/llvmpasses)
32-
BUILDDIRMAKE := $(addsuffix /Makefile,$(BUILDDIRS)) $(BUILDROOT)/sysimage.mk
32+
BUILDDIRMAKE := $(addsuffix /Makefile,$(BUILDDIRS)) $(BUILDROOT)/sysimage.mk $(BUILDROOT)/pkgimage.mk
3333
DIRS += $(BUILDDIRS)
3434
$(BUILDDIRMAKE): | $(BUILDDIRS)
3535
@# add Makefiles to the build directories for convenience (pointing back to the source location of each)
@@ -104,7 +104,10 @@ julia-sysimg-release julia-sysimg-debug : julia-sysimg-% : julia-sysimg-ji julia
104104

105105
julia-debug julia-release : julia-% : julia-sysimg-% julia-src-% julia-symlink julia-libccalltest julia-libllvmcalltest julia-base-cache
106106

107-
debug release : % : julia-%
107+
stdlibs-cache-release stdlibs-cache-debug : stdlibs-cache-% : julia-%
108+
@$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT) -f pkgimage.mk all-$*
109+
110+
debug release : % : julia-% stdlibs-cache-%
108111

109112
docs: julia-sysimg-$(JULIA_BUILD_MODE)
110113
@$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT)/doc JULIA_EXECUTABLE='$(call spawn,$(JULIA_EXECUTABLE_$(JULIA_BUILD_MODE))) --startup-file=no'
@@ -116,7 +119,7 @@ check-whitespace:
116119
ifneq ($(NO_GIT), 1)
117120
@# Append the directory containing the julia we just built to the end of `PATH`,
118121
@# to give us the best chance of being able to run this check.
119-
@PATH="$(PATH):$(dir $(JULIA_EXECUTABLE))" $(JULIAHOME)/contrib/check-whitespace.jl
122+
@PATH="$(PATH):$(dir $(JULIA_EXECUTABLE))" julia $(call cygpath_w,$(JULIAHOME)/contrib/check-whitespace.jl)
120123
else
121124
$(warn "Skipping whitespace check because git is unavailable")
122125
endif
@@ -152,7 +155,7 @@ release-candidate: release testall
152155
@echo 10. Follow packaging instructions in doc/build/distributing.md to create binary packages for all platforms
153156
@echo 11. Upload to AWS, update https://julialang.org/downloads and http://status.julialang.org/stable links
154157
@echo 12. Update checksums on AWS for tarball and packaged binaries
155-
@echo 13. Update versions.json
158+
@echo 13. Update versions.json. Wait at least 60 minutes before proceeding to step 14.
156159
@echo 14. Push to Juliaup (https://github.com/JuliaLang/juliaup/wiki/Adding-a-Julia-version)
157160
@echo 15. Announce on mailing lists
158161
@echo 16. Change master to release-0.X in base/version.jl and base/version_git.sh as in 4cb1e20
@@ -234,6 +237,9 @@ JL_PRIVATE_LIBS-$(USE_SYSTEM_CSL) += libwinpthread
234237
else
235238
JL_PRIVATE_LIBS-$(USE_SYSTEM_CSL) += libpthread
236239
endif
240+
ifeq ($(WITH_TRACY),1)
241+
JL_PRIVATE_LIBS-0 += libTracyClient
242+
endif
237243

238244

239245
ifeq ($(OS),Darwin)
@@ -253,7 +259,7 @@ endef
253259

254260
install: $(build_depsbindir)/stringreplace docs
255261
@$(MAKE) $(QUIET_MAKE) $(JULIA_BUILD_MODE)
256-
@for subdir in $(bindir) $(datarootdir)/julia/stdlib/$(VERSDIR) $(docdir) $(man1dir) $(includedir)/julia $(libdir) $(private_libdir) $(sysconfdir) $(libexecdir); do \
262+
@for subdir in $(bindir) $(datarootdir)/julia/stdlib/$(VERSDIR) $(docdir) $(man1dir) $(includedir)/julia $(libdir) $(private_libdir) $(sysconfdir) $(private_libexecdir); do \
257263
mkdir -p $(DESTDIR)$$subdir; \
258264
done
259265

@@ -268,8 +274,8 @@ else ifeq ($(JULIA_BUILD_MODE),debug)
268274
-$(INSTALL_M) $(build_libdir)/libjulia-internal-debug.dll.a $(DESTDIR)$(libdir)/
269275
endif
270276

271-
# We have a single exception; we want 7z.dll to live in libexec, not bin, so that 7z.exe can find it.
272-
-mv $(DESTDIR)$(bindir)/7z.dll $(DESTDIR)$(libexecdir)/
277+
# We have a single exception; we want 7z.dll to live in private_libexecdir, not bindir, so that 7z.exe can find it.
278+
-mv $(DESTDIR)$(bindir)/7z.dll $(DESTDIR)$(private_libexecdir)/
273279
-$(INSTALL_M) $(build_bindir)/libopenlibm.dll.a $(DESTDIR)$(libdir)/
274280
-$(INSTALL_M) $(build_libdir)/libssp.dll.a $(DESTDIR)$(libdir)/
275281
# The rest are compiler dependencies, as an example memcpy is exported by msvcrt
@@ -331,14 +337,14 @@ endif
331337
done \
332338
done
333339
endif
334-
# Install `7z` into libexec/
335-
$(INSTALL_M) $(build_bindir)/7z$(EXE) $(DESTDIR)$(libexecdir)/
340+
# Install `7z` into private_libexecdir
341+
$(INSTALL_M) $(build_bindir)/7z$(EXE) $(DESTDIR)$(private_libexecdir)/
336342

337-
# Install `lld` into libexec/
338-
$(INSTALL_M) $(build_depsbindir)/lld$(EXE) $(DESTDIR)$(libexecdir)/
343+
# Install `lld` into private_libexecdir
344+
$(INSTALL_M) $(build_depsbindir)/lld$(EXE) $(DESTDIR)$(private_libexecdir)/
339345

340-
# Install `dsymutil` into libexec/
341-
$(INSTALL_M) $(build_depsbindir)/dsymutil$(EXE) $(DESTDIR)$(libexecdir)/
346+
# Install `dsymutil` into private_libexecdir/
347+
$(INSTALL_M) $(build_depsbindir)/dsymutil$(EXE) $(DESTDIR)$(private_libexecdir)/
342348

343349
# Copy public headers
344350
cp -R -L $(build_includedir)/julia/* $(DESTDIR)$(includedir)/julia
@@ -349,11 +355,6 @@ else ifeq ($(JULIA_BUILD_MODE),debug)
349355
$(INSTALL_M) $(build_private_libdir)/sys-debug.$(SHLIB_EXT) $(DESTDIR)$(private_libdir)
350356
endif
351357

352-
# Cache stdlibs
353-
@$(call PRINT_JULIA, $(call spawn,$(JULIA_EXECUTABLE)) --startup-file=no $(JULIAHOME)/contrib/cache_stdlibs.jl)
354-
# CI uses `--check-bounds=yes` which impacts the cache flags
355-
@$(call PRINT_JULIA, $(call spawn,$(JULIA_EXECUTABLE)) --startup-file=no --check-bounds=yes $(JULIAHOME)/contrib/cache_stdlibs.jl)
356-
357358
# Copy in all .jl sources as well
358359
mkdir -p $(DESTDIR)$(datarootdir)/julia/base $(DESTDIR)$(datarootdir)/julia/test
359360
cp -R -L $(JULIAHOME)/base/* $(DESTDIR)$(datarootdir)/julia/base
@@ -388,7 +389,7 @@ ifneq ($(DARWIN_FRAMEWORK),1)
388389
endif
389390
else ifneq (,$(findstring $(OS),Linux FreeBSD))
390391
for j in $(JL_TARGETS) ; do \
391-
$(PATCHELF) --set-rpath '$$ORIGIN/$(private_libdir_rel):$$ORIGIN/$(libdir_rel)' $(DESTDIR)$(bindir)/$$j; \
392+
$(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN/$(private_libdir_rel):$$ORIGIN/$(libdir_rel)' $(DESTDIR)$(bindir)/$$j; \
392393
done
393394
endif
394395

@@ -420,17 +421,17 @@ endif
420421
endif
421422
else ifneq (,$(findstring $(OS),Linux FreeBSD))
422423
ifeq ($(JULIA_BUILD_MODE),release)
423-
$(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal.$(SHLIB_EXT)
424-
$(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-codegen.$(SHLIB_EXT)
424+
$(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal.$(SHLIB_EXT)
425+
$(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-codegen.$(SHLIB_EXT)
425426
else ifeq ($(JULIA_BUILD_MODE),debug)
426-
$(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT)
427-
$(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-codegen-debug.$(SHLIB_EXT)
427+
$(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT)
428+
$(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-codegen-debug.$(SHLIB_EXT)
428429
endif
429430
endif
430431

431432
# Fix rpaths for dependencies. This should be fixed in BinaryBuilder later.
432433
ifeq ($(OS), Linux)
433-
-$(PATCHELF) --set-rpath '$$ORIGIN' $(DESTDIR)$(private_shlibdir)/libLLVM.$(SHLIB_EXT)
434+
-$(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN' $(DESTDIR)$(private_shlibdir)/libLLVM.$(SHLIB_EXT)
434435
endif
435436

436437
ifneq ($(LOADER_BUILD_DEP_LIBS),$(LOADER_INSTALL_DEP_LIBS))
@@ -440,14 +441,6 @@ ifeq ($(JULIA_BUILD_MODE),release)
440441
else ifeq ($(JULIA_BUILD_MODE),debug)
441442
$(call stringreplace,$(DESTDIR)$(shlibdir)/libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT),$(LOADER_DEBUG_BUILD_DEP_LIBS)$$,$(LOADER_DEBUG_INSTALL_DEP_LIBS))
442443
endif
443-
ifeq ($(OS),Darwin)
444-
# Codesign the libjulia we just modified
445-
ifeq ($(JULIA_BUILD_MODE),release)
446-
$(JULIAHOME)/contrib/codesign.sh "$(MACOS_CODESIGN_IDENTITY)" "$(DESTDIR)$(shlibdir)/libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT)"
447-
else ifeq ($(JULIA_BUILD_MODE),debug)
448-
$(JULIAHOME)/contrib/codesign.sh "$(MACOS_CODESIGN_IDENTITY)" "$(DESTDIR)$(shlibdir)/libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT)"
449-
endif
450-
endif
451444
endif
452445

453446
ifeq ($(OS),FreeBSD)
@@ -460,7 +453,7 @@ ifeq ($(OS),FreeBSD)
460453
# don't set libgfortran's RPATH, it won't be able to find its friends on systems
461454
# that don't have the exact GCC port installed used for the build.
462455
for lib in $(DESTDIR)$(private_libdir)/libgfortran*$(SHLIB_EXT)*; do \
463-
$(PATCHELF) --set-rpath '$$ORIGIN' $$lib; \
456+
$(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN' $$lib; \
464457
done
465458
endif
466459

@@ -503,10 +496,6 @@ ifeq ($(OS), Linux)
503496
endif
504497
ifeq ($(OS), WINNT)
505498
cd $(BUILDROOT)/julia-$(JULIA_COMMIT)/bin && rm -f llvm* llc.exe lli.exe opt.exe LTO.dll bugpoint.exe macho-dump.exe
506-
endif
507-
ifeq ($(OS),Darwin)
508-
# If we're on macOS, and we have a codesigning identity, then codesign the binary-dist tarball!
509-
$(JULIAHOME)/contrib/codesign.sh "$(MACOS_CODESIGN_IDENTITY)" "$(BUILDROOT)/julia-$(JULIA_COMMIT)"
510499
endif
511500
cd $(BUILDROOT) && $(TAR) zcvf $(JULIA_BINARYDIST_FILENAME).tar.gz julia-$(JULIA_COMMIT)
512501

NEWS.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,26 @@ New language features
77
Language changes
88
----------------
99

10+
* When a task forks a child, the parent task's task-local RNG (random number generator) is no longer affected. The seeding of child based on the parent task also takes a more disciplined approach to collision resistance, using a design based on the SplitMix and DotMix splittable RNG schemes ([#49110]).
11+
* A new morespecific rule for methods resolves ambiguities containing Union{} in favor of
12+
the method defined explicitly to handle the Union{} argument. This makes it possible to
13+
define methods to explicitly handle Union{} without the ambiguities that commonly would
14+
result previously. This also lets the runtime optimize certain method lookups in a way
15+
that significantly improves load and inference times for heavily overloaded methods that
16+
dispatch on Types (such as traits and constructors).
17+
* The "h bar" `` (`\hslash` U+210F) character is now treated as equivalent to `ħ` (`\hbar` U+0127).
1018

1119
Compiler/Runtime improvements
1220
-----------------------------
21+
1322
* The `@pure` macro is now deprecated. Use `Base.@assume_effects :foldable` instead ([#48682]).
23+
* The mark phase of the Garbage Collector is now multi-threaded ([#48600]).
1424

1525
Command-line option changes
1626
---------------------------
1727

28+
* New option `--gcthreads` to set how many threads will be used by the Garbage Collector ([#48600]).
29+
The default is set to `N/2` where `N` is the amount of worker threads (`--threads`) used by Julia.
1830

1931
Multi-threading changes
2032
-----------------------
@@ -27,6 +39,8 @@ Build system changes
2739
New library functions
2840
---------------------
2941
* `tanpi` is now defined. It computes tan(πx) more accurately than `tan(pi*x)` ([#48575]).
42+
* `fourthroot(x)` is now defined in `Base.Math` and can be used to compute the fourth root of `x`.
43+
It can also be accessed using the unicode character ``, which can be typed by `\fourthroot<tab>` ([#48899]).
3044

3145
New library features
3246
--------------------
@@ -40,6 +54,7 @@ Standard library changes
4054
------------------------
4155

4256
* `startswith` now supports seekable `IO` streams ([#43055])
57+
* printing integral `Rational`s will skip the denominator in `Rational`-typed IO context (e.g. in `Arrays`) ([#45396])
4358

4459
#### Package Manager
4560

@@ -66,6 +81,8 @@ Standard library changes
6681
`Factorization` ([#46874]).
6782
* New functions `hermitianpart` and `hermitianpart!` for extracting the Hermitian
6883
(real symmetric) part of a matrix ([#31836]).
84+
* The `norm` of the adjoint or transpose of an `AbstractMatrix` now returns the norm of the
85+
parent matrix by default, matching the current behaviour for `AbstractVector`s ([#49020]).
6986

7087
#### Printf
7188
* Format specifiers now support dynamic width and precision, e.g. `%*s` and `%*.*g` ([#40105]).
@@ -90,6 +107,7 @@ Standard library changes
90107

91108
* The `@test_broken` macro (or `@test` with `broken=true`) now complains if the test expression returns a
92109
non-boolean value in the same way as a non-broken test. ([#47804])
110+
* When a call to `@test` fails or errors inside a function, a larger stacktrace is now printed such that the location of the test within a `@testset` can be retrieved ([#49451])
93111

94112
#### Dates
95113

@@ -106,6 +124,7 @@ Standard library changes
106124
#### InteractiveUtils
107125

108126
* `code_native` and `@code_native` now default to intel syntax instead of AT&T.
127+
* `@time_imports` now shows the timing of any module `__init__()`s that are run ([#49529])
109128

110129
Deprecated or removed
111130
---------------------

0 commit comments

Comments
 (0)