Skip to content

Commit ca268e1

Browse files
authored
Merge pull request #32592 from JuliaLang/backports-1.2.0
Backports for 1.2.0 release
2 parents 9248bf7 + bd375ac commit ca268e1

Some content is hidden

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

42 files changed

+916
-432
lines changed

Makefile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -434,10 +434,10 @@ ifeq ($(OS), WINNT)
434434
cd $(BUILDROOT)/julia-$(JULIA_COMMIT) && find * | sed -e 's/\//\\/g' -e 's/$$/\r/g' > etc/uninstall.log
435435

436436
# build nsis package
437-
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
437+
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
438438

439439
# compress nsis installer and combine with 7zip self-extracting header
440-
cd $(BUILDROOT) && $(JULIAHOME)/dist-extras/7z a -mx9 "julia-install-$(JULIA_COMMIT)-$(ARCH).7z" julia-installer.exe
440+
cd $(BUILDROOT) && $(JULIAHOME)/dist-extras/7z a -mx=9 "julia-install-$(JULIA_COMMIT)-$(ARCH).7z" julia-installer.exe
441441
cd $(BUILDROOT) && cat $(JULIAHOME)/contrib/windows/7zS.sfx $(JULIAHOME)/contrib/windows/7zSFX-config.txt "julia-install-$(JULIA_COMMIT)-$(ARCH).7z" > "$(JULIA_BINARYDIST_FILENAME).exe"
442442
chmod a+x "$(BUILDROOT)/$(JULIA_BINARYDIST_FILENAME).exe"
443443
-rm -f $(BUILDROOT)/julia-install-$(JULIA_COMMIT)-$(ARCH).7z
@@ -580,11 +580,11 @@ else
580580
$(error no win-extras target for ARCH=$(ARCH))
581581
endif
582582
cd $(JULIAHOME)/dist-extras && \
583-
$(JLDOWNLOAD) http://downloads.sourceforge.net/sevenzip/7z1805-extra.7z && \
584-
$(JLDOWNLOAD) https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/unsis/nsis-2.46.5-Unicode-setup.exe && \
583+
$(JLDOWNLOAD) https://sourceforge.net/projects/nsis/files/NSIS%203/3.04/nsis-3.04-setup.exe && \
584+
$(JLCHECKSUM) nsis-3.04-setup.exe && \
585585
chmod a+x 7z.exe && \
586586
chmod a+x 7z.dll && \
587-
$(call spawn,./7z.exe) x -y -onsis nsis-2.46.5-Unicode-setup.exe && \
587+
$(call spawn,./7z.exe) x -y -onsis nsis-3.04-setup.exe && \
588588
chmod a+x ./nsis/makensis.exe
589589

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

NEWS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ Standard library changes
8080
* Sparse vector outer products are more performant and maintain sparsity in products of the
8181
form `kron(u, v')`, `u * v'`, and `u .* v'` where `u` and `v` are sparse vectors or column
8282
views ([#24980]).
83+
* The `sprand` function is now 2 to 5 times faster ([#30494]). As a consequence of this change, the random stream of matrices produced with `sprand` and `sprandn` has changed.
8384

8485
#### Sockets
8586

@@ -116,6 +117,7 @@ External dependencies
116117
[#30323]: https://github.com/JuliaLang/julia/issues/30323
117118
[#30372]: https://github.com/JuliaLang/julia/issues/30372
118119
[#30382]: https://github.com/JuliaLang/julia/issues/30382
120+
[#30494]: https://github.com/JuliaLang/julia/issues/30494
119121
[#30577]: https://github.com/JuliaLang/julia/issues/30577
120122
[#30583]: https://github.com/JuliaLang/julia/issues/30583
121123
[#30584]: https://github.com/JuliaLang/julia/issues/30584
@@ -141,3 +143,4 @@ External dependencies
141143
[#31532]: https://github.com/JuliaLang/julia/issues/31532
142144
[#31561]: https://github.com/JuliaLang/julia/issues/31561
143145
[#31604]: https://github.com/JuliaLang/julia/issues/31604
146+
[#32260]: https://github.com/JuliaLang/julia/issues/32260

base/compiler/ssair/ir.jl

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -499,24 +499,28 @@ mutable struct IncrementalCompact
499499
cur_bb = 1
500500
for i = 1:length(bb_rename)
501501
if i != 1 && length(blocks[i].preds) == 0
502-
bb_rename[i] = 0
502+
bb_rename[i] = -1
503503
else
504504
bb_rename[i] = cur_bb
505505
cur_bb += 1
506506
end
507507
end
508508
for i = 1:length(bb_rename)
509-
bb_rename[i] == 0 && continue
509+
bb_rename[i] == -1 && continue
510510
preds, succs = blocks[i].preds, blocks[i].succs
511511
# Rename preds
512-
for j = 1:length(preds); preds[j] = bb_rename[preds[j]]; end
512+
for j = 1:length(preds)
513+
if preds[j] != 0
514+
preds[j] = bb_rename[preds[j]]
515+
end
516+
end
513517
# Dead blocks get removed from the predecessor list
514-
filter!(x->x !== 0, preds)
518+
filter!(x->x !== -1, preds)
515519
# Rename succs
516520
for j = 1:length(succs); succs[j] = bb_rename[succs[j]]; end
517521
end
518522
let blocks=blocks
519-
result_bbs = BasicBlock[blocks[i] for i = 1:length(blocks) if bb_rename[i] != 0]
523+
result_bbs = BasicBlock[blocks[i] for i = 1:length(blocks) if bb_rename[i] != -1]
520524
end
521525
else
522526
bb_rename = Vector{Int}()

base/compiler/ssair/passes.jl

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ function walk_to_defs(compact::IncrementalCompact, @nospecialize(defssa), @nospe
178178
found_def = false
179179
## Track which PhiNodes, SSAValue intermediaries
180180
## we forwarded through.
181-
visited = IdSet{Any}()
181+
visited = IdDict{Any, Any}()
182182
worklist_defs = Any[]
183183
worklist_constraints = Any[]
184184
leaves = Any[]
@@ -187,7 +187,7 @@ function walk_to_defs(compact::IncrementalCompact, @nospecialize(defssa), @nospe
187187
while !isempty(worklist_defs)
188188
defssa = pop!(worklist_defs)
189189
typeconstraint = pop!(worklist_constraints)
190-
push!(visited, defssa)
190+
visited[defssa] = typeconstraint
191191
def = compact[defssa]
192192
if isa(def, PhiNode)
193193
push!(visited_phinodes, defssa)
@@ -211,9 +211,15 @@ function walk_to_defs(compact::IncrementalCompact, @nospecialize(defssa), @nospe
211211
if isa(val, AnySSAValue)
212212
new_def, new_constraint = simple_walk_constraint(compact, val, typeconstraint)
213213
if isa(new_def, AnySSAValue)
214-
if !(new_def in visited)
214+
if !haskey(visited, new_def)
215215
push!(worklist_defs, new_def)
216216
push!(worklist_constraints, new_constraint)
217+
elseif !(new_constraint <: visited[new_def])
218+
# We have reached the same definition via a different
219+
# path, with a different type constraint. We may have
220+
# to redo some work here with the wider typeconstraint
221+
push!(worklist_defs, new_def)
222+
push!(worklist_constraints, tmerge(new_constraint, visited[new_def]))
217223
end
218224
continue
219225
end

base/compiler/typelimits.jl

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,13 @@ function _limit_type_size(@nospecialize(t), @nospecialize(c), sources::SimpleVec
9292
return t # easy case
9393
elseif isa(t, DataType) && isempty(t.parameters)
9494
return t # fast path: unparameterized are always simple
95-
elseif isa(unwrap_unionall(t), DataType) && isa(c, Type) && c !== Union{} && c <: t
96-
return t # t is already wider than the comparison in the type lattice
97-
elseif is_derived_type_from_any(unwrap_unionall(t), sources, depth)
98-
return t # t isn't something new
95+
else
96+
ut = unwrap_unionall(t)
97+
if isa(ut, DataType) && ut.name !== _va_typename && isa(c, Type) && c !== Union{} && c <: t
98+
return t # t is already wider than the comparison in the type lattice
99+
elseif is_derived_type_from_any(ut, sources, depth)
100+
return t # t isn't something new
101+
end
99102
end
100103
# peel off (and ignore) wrappers - they contribute no useful information, so we don't need to consider their size
101104
# first attempt to turn `c` into a type that contributes meaningful information

contrib/julia.svg

Lines changed: 1 addition & 62 deletions
Loading

contrib/mac/app/julia.icns

-60.5 KB
Binary file not shown.
Loading

contrib/windows/7zS.sfx

140 KB
Binary file not shown.

contrib/windows/7zSFX-config.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
;!@Install@!UTF-8!
2-
Title="The Julia Language"
2+
Title="Julia"
33
RunProgram="julia-installer.exe"
44
;!@InstallEnd@!

0 commit comments

Comments
 (0)