Skip to content

Commit 548deda

Browse files
authored
Merge branch 'master' into structured_opnorm
2 parents 0dbd827 + da39287 commit 548deda

File tree

1,055 files changed

+14478
-3888
lines changed

Some content is hidden

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

1,055 files changed

+14478
-3888
lines changed

.appveyor.yml

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
11
environment:
2-
# USEMSVC: "1"
2+
global:
3+
CCACHE_DIR: C:\ccache
4+
CYG_MIRROR: http://cygwin.mirror.constant.com
5+
CYG_CACHE: '%CYG_ROOT%\var\cache\setup'
6+
CYG_BASH: '%CYG_ROOT%\bin\bash'
7+
38
matrix:
4-
- ARCH: "i686"
9+
- MINGW_ARCH: "i686"
10+
CYG_ROOT: C:\cygwin
11+
CYG_SETUP: setup-x86.exe
512
JULIA_TEST_MAXRSS_MB: 500
6-
- ARCH: "x86_64"
13+
14+
- MINGW_ARCH: "x86_64"
15+
CYG_ROOT: C:\cygwin64
16+
CYG_SETUP: setup-x86_64.exe
717
JULIA_TEST_MAXRSS_MB: 450
818

919
# Only build on master and PR's for now, not personal branches
@@ -30,38 +40,26 @@ notifications:
3040
on_build_failure: false
3141
on_build_status_changed: false
3242

33-
clone_depth: 50
43+
cache:
44+
- '%CYG_CACHE%'
45+
- '%CCACHE_DIR%'
3446

3547
init:
36-
# Carriage returns are bad
3748
- git config --global core.autocrlf input
3849

39-
cache:
40-
# Cache large downloads to avoid network unreliability
41-
- C:\cygdownloads
42-
- llvm-3.9.1-i686-w64-mingw32-juliadeps-r07.7z
43-
- llvm-3.9.1-x86_64-w64-mingw32-juliadeps-r07.7z
44-
- C:\ccache
50+
install:
51+
- '%CYG_ROOT%\%CYG_SETUP% -gnq -R "%CYG_ROOT%" -s "%CYG_MIRROR%" -l "%CYG_CACHE%" -P make,python2,libiconv,curl,time,p7zip,ccache,mingw64-%MINGW_ARCH%-gcc-g++,mingw64-%MINGW_ARCH%-gcc-fortran > NULL 2>&1'
52+
- '%CYG_ROOT%\bin\cygcheck -dc cygwin'
4553

4654
build_script:
47-
# If there's a newer build queued for the same PR, cancel this one
48-
- ps: if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod `
49-
https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=50).builds | `
50-
Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { `
51-
throw "There are newer queued builds for this pull request, failing early." }
52-
# Remove C:\MinGW\bin from the path, the version of MinGW installed on
53-
# AppVeyor is not compatible with the cross-compiled Julia Windows binaries
54-
- set PATH=%PATH:C:\MinGW\bin;=%
55-
# Remove git's msys2 from path, since it conflicts with cygwin1.dll
56-
- set PATH=%PATH:C:\Program Files\Git\usr\bin;=%
57-
- ps: contrib/windows/install-cygwin.ps1
58-
# - '"%VS120COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64'
59-
- C:\cygwin-%ARCH%\bin\sh.exe --login /cygdrive/c/projects/julia/contrib/windows/appveyor_build.sh
55+
- 'echo Building Julia'
56+
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER && ./contrib/windows/appveyor_build.sh"'
6057

6158
test_script:
59+
- 'echo Testing Julia'
6260
- usr\bin\julia -e "Base.require(Main, :InteractiveUtils).versioninfo()"
6361
- usr\bin\julia --sysimage-native-code=no -e "true"
6462
- cd julia-* && .\bin\julia.exe --check-bounds=yes share\julia\test\runtests.jl all &&
65-
.\bin\julia.exe --check-bounds=yes share\julia\test\runtests.jl LibGit2/online Pkg/pkg download
63+
.\bin\julia.exe --check-bounds=yes share\julia\test\runtests.jl LibGit2/online download
6664
- cd ..
6765
- usr\bin\julia usr\share\julia\test\embedding\embedding-test.jl test\embedding\embedding.exe

.mailmap

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,9 @@ M. Prentis <[email protected]> <[email protected]>
199199
200200
Peter <[email protected]> <https://github.com/peter1000>
201201

202-
203-
202+
203+
204+
204205

205206
206207

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ before_install:
6161
ln -s /usr/bin/g++-5 $HOME/bin/x86_64-linux-gnu-g++;
6262
gcc --version;
6363
BAR="bar -i 30";
64-
BUILDOPTS="-j5 VERBOSE=1 FORCE_ASSERTIONS=1 LLVM_ASSERTIONS=1 USECCACHE=1 USE_BINARYBUILDER_LIBUV=0 USE_BINARYBUILDER_UNWIND=0 USE_BINARYBUILDER_LLVM=0";
64+
BUILDOPTS="-j5 VERBOSE=1 FORCE_ASSERTIONS=1 LLVM_ASSERTIONS=1 USECCACHE=1 USE_BINARYBUILDER_LIBUV=0 USE_BINARYBUILDER_LIBUNWIND=0 USE_BINARYBUILDER_LLVM=0";
6565
echo "override ARCH=$ARCH" >> Make.user;
6666
sudo sh -c "echo 0 > /proc/sys/net/ipv6/conf/lo/disable_ipv6";
6767
export JULIA_CPU_THREADS=4;
@@ -129,7 +129,7 @@ script:
129129
# skip tests if only files within the "doc" dir have changed
130130
- if [ $(echo "$FILES_CHANGED" | grep -cv '^doc/') -gt 0 ]; then
131131
/tmp/julia/bin/julia --check-bounds=yes runtests.jl $TESTSTORUN &&
132-
/tmp/julia/bin/julia --check-bounds=yes runtests.jl LibGit2/online Pkg/pkg download; fi
132+
/tmp/julia/bin/julia --check-bounds=yes runtests.jl LibGit2/online download; fi
133133
- popd
134134
# test that the embedding code works on our installation
135135
- mkdir /tmp/embedding-test &&

Make.inc

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -980,22 +980,37 @@ else
980980
endif
981981

982982
# BinaryBuilder options. We default to "on" for all the projects listed in BB_PROJECTS,
983-
# but only if contrib/normalize_triplet.py works for our requested triplet
983+
# but only if contrib/normalize_triplet.py works for our requested triplet.
984984
ifeq ($(shell python $(JULIAHOME)/contrib/normalize_triplet.py $(or $(XC_HOST),$(XC_HOST),$(BUILD_MACHINE)) >/dev/null 2>/dev/null; echo $$?),0)
985-
USE_BINARYBUILDER := 1
985+
USE_BINARYBUILDER ?= 1
986986
else
987987
ifneq ($(shell python $(JULIAHOME)/contrib/normalize_triplet.py x86_64-linux-gnu),x86_64-linux-gnu)
988988
$(warning python normalize_triplet.py appears to be non-functional, so BinaryBuilder disabled)
989989
endif
990-
USE_BINARYBUILDER := 0
990+
USE_BINARYBUILDER ?= 0
991991
endif
992992

993993
# This is the set of projects that BinaryBuilder dependencies are hooked up for.
994-
BB_PROJECTS := OPENBLAS LLVM SUITESPARSE OPENLIBM GMP MBEDTLS LIBSSH2 MPFR CURL LIBGIT2 PCRE LIBUV UNWIND DSFMT OBJCONV
995-
$(foreach proj,$(BB_PROJECTS),$(if $(USE_BINARYBUILDER_$(proj)),,$(eval USE_BINARYBUILDER_$(proj) := $(USE_BINARYBUILDER))))
994+
BB_PROJECTS := OPENBLAS LLVM SUITESPARSE OPENLIBM GMP MBEDTLS LIBSSH2 MPFR CURL LIBGIT2 PCRE LIBUV LIBUNWIND DSFMT OBJCONV
995+
define SET_BB_DEFAULT
996+
# First, check to see if BB is disabled on a global setting
997+
ifeq ($$(USE_BINARYBUILDER),0)
998+
USE_BINARYBUILDER_$(1) ?= 0
999+
else
1000+
# If it's not, check to see if it's disabled by a USE_SYSTEM_xxx flag
1001+
ifeq ($$(USE_SYSTEM_$(1)),1)
1002+
USE_BINARYBUILDER_$(1) ?= 0
1003+
else
1004+
USE_BINARYBUILDER_$(1) ?= 1
1005+
endif
1006+
endif
1007+
endef
1008+
$(foreach proj,$(BB_PROJECTS),$(eval $(call SET_BB_DEFAULT,$(proj))))
1009+
1010+
9961011

9971012
# Use the Assertions build
998-
BINARYBUILDER_LLVM_ASSERTS := 0
1013+
BINARYBUILDER_LLVM_ASSERTS ?= 0
9991014

10001015

10011016

@@ -1033,10 +1048,7 @@ else ifeq ($(OS), Darwin)
10331048
RPATH_ESCAPED_ORIGIN := $(RPATH_ORIGIN)
10341049
RPATH_LIB := -Wl,-rpath,'@loader_path/julia/' -Wl,-rpath,'@loader_path/'
10351050
else
1036-
RPATH := -Wl,-rpath,'$$ORIGIN/$(build_libdir_rel)' -Wl,-rpath-link,$(build_shlibdir) -Wl,-z,origin
1037-
ifeq ($(OS), FreeBSD)
1038-
RPATH += -Wl,-rpath,'$$ORIGIN/$(build_private_libdir_rel)'
1039-
endif
1051+
RPATH := -Wl,-rpath,'$$ORIGIN/$(build_libdir_rel)' -Wl,-rpath,'$$ORIGIN/$(build_private_libdir_rel)' -Wl,-rpath-link,$(build_shlibdir) -Wl,-z,origin
10401052
RPATH_ORIGIN := -Wl,-rpath,'$$ORIGIN' -Wl,-z,origin
10411053
RPATH_ESCAPED_ORIGIN := -Wl,-rpath,'\$$\$$ORIGIN' -Wl,-z,origin -Wl,-rpath-link,$(build_shlibdir)
10421054
RPATH_LIB := -Wl,-rpath,'$$ORIGIN/julia' -Wl,-rpath,'$$ORIGIN' -Wl,-z,origin
@@ -1058,14 +1070,15 @@ IFUNC_DETECT_SRC := 'void (*f0(void))(void) { return (void(*)(void))0L; }; void
10581070
ifeq (supported, $(shell echo $(IFUNC_DETECT_SRC) | $(CC) -Werror -x c - -S -o /dev/null > /dev/null 2>&1 && echo supported))
10591071
JCPPFLAGS += -DJULIA_HAS_IFUNC_SUPPORT=1
10601072
endif
1073+
JLDFLAGS := -Wl,-Bdynamic
10611074
ifneq ($(SANITIZE),1)
10621075
ifneq ($(SANITIZE_MEMORY),1)
10631076
ifneq ($(LLVM_SANITIZE),1)
10641077
OSLIBS += -Wl,--version-script=$(JULIAHOME)/src/julia.expmap
1078+
JLDFLAGS += -Wl,-no-undefined
10651079
endif
10661080
endif
10671081
endif
1068-
JLDFLAGS := -Wl,-Bdynamic -Wl,-no-undefined
10691082
ifeq (-Bsymbolic-functions, $(shell $(LD) --help | grep -o -e "-Bsymbolic-functions"))
10701083
JLIBLDFLAGS := -Wl,-Bsymbolic-functions
10711084
else
@@ -1230,6 +1243,19 @@ LDFLAGS += -cxxlib-nostd -static-intel
12301243
endif
12311244
endif
12321245

1246+
# Some special restrictions on BB usage:
1247+
ifeq ($(USE_SYSTEM_BLAS),1)
1248+
# Since the names don't line up (`BLAS` vs. `OPENBLAS`), manually gate:
1249+
USE_BINARYBUILDER_OPENBLAS := 0
1250+
# Disable BB SuiteSparse if we're using system BLAS
1251+
USE_BINARYBUILDER_SUITESPARSE := 0
1252+
endif
1253+
1254+
ifeq ($(USE_SYSTEM_LIBM),1)
1255+
# If we're using system libm, disable BB OpenLibm
1256+
USE_BINARYBUILDER_OPENLIBM := 0
1257+
endif
1258+
12331259
# Make tricks
12341260

12351261
define dir_target
@@ -1322,6 +1348,7 @@ JULCOLOR:="\033[34;1m"
13221348
GOAL=$(subst ','\'',$(subst $(abspath $(JULIAHOME))/,,$(abspath $@)))
13231349
13241350
PRINT_CC = printf ' %b %b\n' $(CCCOLOR)CC$(ENDCOLOR) $(SRCCOLOR)$(GOAL)$(ENDCOLOR); $(1)
1351+
PRINT_ANALYZE = printf ' %b %b\n' $(CCCOLOR)ANALYZE$(ENDCOLOR) $(SRCCOLOR)$(GOAL)$(ENDCOLOR); $(1)
13251352
PRINT_LINK = printf ' %b %b\n' $(LINKCOLOR)LINK$(ENDCOLOR) $(BINCOLOR)$(GOAL)$(ENDCOLOR); $(1)
13261353
PRINT_PERL = printf ' %b %b\n' $(PERLCOLOR)PERL$(ENDCOLOR) $(BINCOLOR)$(GOAL)$(ENDCOLOR); $(1)
13271354
PRINT_FLISP = printf ' %b %b\n' $(FLISPCOLOR)FLISP$(ENDCOLOR) $(BINCOLOR)$(GOAL)$(ENDCOLOR); $(1)
@@ -1330,6 +1357,7 @@ PRINT_JULIA = printf ' %b %b\n' $(JULIACOLOR)JULIA$(ENDCOLOR) $(BINCOLOR)$(GO
13301357
else
13311358
QUIET_MAKE =
13321359
PRINT_CC = echo '$(subst ','\'',$(1))'; $(1)
1360+
PRINT_ANALYZE = echo '$(subst ','\'',$(1))'; $(1)
13331361
PRINT_LINK = echo '$(subst ','\'',$(1))'; $(1)
13341362
PRINT_PERL = echo '$(subst ','\'',$(1))'; $(1)
13351363
PRINT_FLISP = echo '$(subst ','\'',$(1))'; $(1)

Makefile

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ all: debug release
99
# sort is used to remove potential duplicates
1010
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))
1111
ifneq ($(BUILDROOT),$(JULIAHOME))
12-
BUILDDIRS := $(BUILDROOT) $(addprefix $(BUILDROOT)/,base src ui doc deps stdlib test test/embedding test/llvmpasses)
12+
BUILDDIRS := $(BUILDROOT) $(addprefix $(BUILDROOT)/,base src src/clangsa ui doc deps stdlib test test/embedding test/llvmpasses)
1313
BUILDDIRMAKE := $(addsuffix /Makefile,$(BUILDDIRS)) $(BUILDROOT)/sysimage.mk
1414
DIRS := $(DIRS) $(BUILDDIRS)
1515
$(BUILDDIRMAKE): | $(BUILDDIRS)
@@ -264,7 +264,7 @@ endef
264264
ifeq (,$(findstring $(OS),FreeBSD WINNT))
265265
julia-base: $(build_libdir)/libgfortran*.$(SHLIB_EXT)*
266266
$(build_libdir)/libgfortran*.$(SHLIB_EXT)*: | $(build_libdir) julia-deps
267-
-$(CUSTOM_LD_LIBRARY_PATH) PATH=$(PATH):$(build_depsbindir) $(JULIAHOME)/contrib/fixup-libgfortran.sh --verbose $(build_libdir)
267+
-$(CUSTOM_LD_LIBRARY_PATH) PATH="$(PATH):$(build_depsbindir)" $(JULIAHOME)/contrib/fixup-libgfortran.sh --verbose $(build_libdir)
268268
JL_PRIVATE_LIBS-0 += libgfortran libgcc_s libquadmath
269269
endif
270270

@@ -462,10 +462,10 @@ ifeq ($(OS), WINNT)
462462
cd $(BUILDROOT)/julia-$(JULIA_COMMIT) && find * | sed -e 's/\//\\/g' -e 's/$$/\r/g' > etc/uninstall.log
463463

464464
# build nsis package
465-
cd $(BUILDROOT) && $(call spawn,$(JULIAHOME)/dist-extras/nsis/makensis.exe) -NOCD -DVersion=$(JULIA_VERSION) -DArch=$(ARCH) -DCommit=$(JULIA_COMMIT) -DMUI_ICON="$(call cygpath_w,$(JULIAHOME)/contrib/windows/julia.ico)" $(call cygpath_w,$(JULIAHOME)/contrib/windows/build-installer.nsi) | iconv -f latin1
465+
cd $(BUILDROOT) && $(call spawn,$(JULIAHOME)/dist-extras/nsis/makensis.exe) -NOCD -DVersion=$(JULIA_VERSION) -DArch=$(ARCH) -DCommit=$(JULIA_COMMIT) -DJULIAHOME="$(call cygpath_w,$(JULIAHOME))" $(call cygpath_w,$(JULIAHOME)/contrib/windows/build-installer.nsi) | iconv -f latin1
466466

467467
# compress nsis installer and combine with 7zip self-extracting header
468-
cd $(BUILDROOT) && $(JULIAHOME)/dist-extras/7z a -mx9 "julia-install-$(JULIA_COMMIT)-$(ARCH).7z" julia-installer.exe
468+
cd $(BUILDROOT) && $(JULIAHOME)/dist-extras/7z a -mx=9 "julia-install-$(JULIA_COMMIT)-$(ARCH).7z" julia-installer.exe
469469
cd $(BUILDROOT) && cat $(JULIAHOME)/contrib/windows/7zS.sfx $(JULIAHOME)/contrib/windows/7zSFX-config.txt "julia-install-$(JULIA_COMMIT)-$(ARCH).7z" > "$(JULIA_BINARYDIST_FILENAME).exe"
470470
chmod a+x "$(BUILDROOT)/$(JULIA_BINARYDIST_FILENAME).exe"
471471
-rm -f $(BUILDROOT)/julia-install-$(JULIA_COMMIT)-$(ARCH).7z
@@ -593,29 +593,29 @@ endif
593593
endif
594594
ifneq (,$(filter $(ARCH), i386 i486 i586 i686))
595595
cd $(JULIAHOME)/dist-extras && \
596-
$(JLDOWNLOAD) http://downloads.sourceforge.net/sevenzip/7z1900.exe && \
596+
$(JLDOWNLOAD) https://sourceforge.net/projects/sevenzip/files/7-Zip/19.00/7z1900.exe && \
597+
$(JLCHECKSUM) 7z1900.exe && \
597598
7z x -y 7z1900.exe 7z.exe 7z.dll && \
598599
../contrib/windows/winrpm.sh http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_Leap_42.2 \
599600
"mingw32-libexpat1 mingw32-zlib1" && \
600601
cp usr/i686-w64-mingw32/sys-root/mingw/bin/*.dll .
601602
else ifeq ($(ARCH),x86_64)
602603
cd $(JULIAHOME)/dist-extras && \
603-
$(JLDOWNLOAD) 7z1900-x64.msi http://downloads.sourceforge.net/sevenzip/7z1900-x64.msi && \
604-
7z x -y 7z1900-x64.msi _7z.exe _7z.dll && \
605-
mv _7z.dll 7z.dll && \
606-
mv _7z.exe 7z.exe && \
604+
$(JLDOWNLOAD) https://downloads.sourceforge.net/project/sevenzip/7-Zip/19.00/7z1900-x64.exe && \
605+
$(JLCHECKSUM) 7z1900-x64.exe && \
606+
7z x -y 7z1900-x64.exe 7z.exe 7z.dll && \
607607
../contrib/windows/winrpm.sh http://download.opensuse.org/repositories/windows:/mingw:/win64/openSUSE_Leap_42.2 \
608608
"mingw64-libexpat1 mingw64-zlib1" && \
609609
cp usr/x86_64-w64-mingw32/sys-root/mingw/bin/*.dll .
610610
else
611611
$(error no win-extras target for ARCH=$(ARCH))
612612
endif
613613
cd $(JULIAHOME)/dist-extras && \
614-
$(JLDOWNLOAD) http://downloads.sourceforge.net/sevenzip/7z1900-extra.7z && \
615-
$(JLDOWNLOAD) https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/unsis/nsis-2.46.5-Unicode-setup.exe && \
614+
$(JLDOWNLOAD) https://sourceforge.net/projects/nsis/files/NSIS%203/3.04/nsis-3.04-setup.exe && \
615+
$(JLCHECKSUM) nsis-3.04-setup.exe && \
616616
chmod a+x 7z.exe && \
617617
chmod a+x 7z.dll && \
618-
$(call spawn,./7z.exe) x -y -onsis nsis-2.46.5-Unicode-setup.exe && \
618+
$(call spawn,./7z.exe) x -y -onsis nsis-3.04-setup.exe && \
619619
chmod a+x ./nsis/makensis.exe
620620

621621
# various statistics about the build that may interest the user

NEWS.md

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Julia v1.3 Release Notes
44
New language features
55
---------------------
66

7+
* Support for Unicode 12.1.0 ([#32002]).
78

89
Language changes
910
----------------
@@ -20,26 +21,42 @@ Build system changes
2021
New library functions
2122
---------------------
2223

24+
* `findfirst`, `findlast`, `findnext` and `findprev` now accept a character as first argument
25+
to search for that character in a string passed as the second argument ([#31664]).
2326
* New `findall(pattern, string)` method where `pattern` is a string or regex ([#31834]).
2427

2528
Standard library changes
2629
------------------------
2730

2831
* `Regex` can now be multiplied (`*`) and exponentiated (`^`), like strings ([#23422]).
29-
* Cmd interpolation (`` `$(x::Cmd) a b c` `` where) now propagates `x`'s process flags
32+
* `Cmd` interpolation (`` `$(x::Cmd) a b c` `` where) now propagates `x`'s process flags
3033
(environment, flags, working directory, etc) if `x` is the first interpolant and errors
3134
otherwise ([#24353]).
35+
* `IPAddr` subtypes now behave like scalars when used in broadcasting ([#32133]).
36+
* `clamp` can now handle missing values ([#31066]).
37+
38+
#### Libdl
39+
40+
* `dlopen()` can now be invoked in `do`-block syntax, similar to `open()`.
3241

3342
#### LinearAlgebra
3443

3544
* The BLAS submodule no longer exports `dot`, which conflicts with that in LinearAlgebra ([#31838]).
3645
* `diagm` and `spdiagm` now accept optional `m,n` initial arguments to specify a size ([#31654]).
46+
* `Hessenberg` factorizations `H` now support efficient shifted solves `(H+µI) \ b` and determinants, and use a specialized tridiagonal factorization for Hermitian matrices. There is also a new `UpperHessenberg` matrix type ([#31853]).
3747

3848
#### SparseArrays
3949

4050

4151
#### Dates
4252

53+
* `DateTime` and `Time` formatting/parsing now supports 12-hour clocks with AM/PM via `I` and `p` codes, similar to `strftime` ([#32308]).
54+
* Fixed `repr` such that it displays `Time` as it would be entered in Julia ([#32103]).
55+
56+
#### Sockets
57+
58+
* `getipaddrs` returns IP addresses in the order provided by libuv ([#32260]).
59+
* `getipaddr` prefers to return the first `IPv4` interface address provided by libuv ([#32260]).
4360

4461
#### Statistics
4562

@@ -52,5 +69,11 @@ Standard library changes
5269
External dependencies
5370
---------------------
5471

72+
Tooling Improvements
73+
---------------------
74+
75+
* The `ClangSA.jl` static analysis package has been imported, which makes use of
76+
the clang static analyzer to validate GC invariants in Julia's C code. The analysis
77+
may be run using `make -C src analyzegc`.
5578

5679
<!--- generated by NEWS-update.jl: -->

0 commit comments

Comments
 (0)