Skip to content

Commit

Permalink
Merge branch 'master' into jn/multireplacer
Browse files Browse the repository at this point in the history
  • Loading branch information
vtjnash committed May 27, 2021
2 parents a5b3b28 + 4cdcdb8 commit 6467f2f
Show file tree
Hide file tree
Showing 377 changed files with 6,686 additions and 13,545 deletions.
28 changes: 28 additions & 0 deletions .buildkite/pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
steps:
- label: "analyzegc"
commands:
- echo "--- Install apt-get pre-reqs"
- apt-get update
- apt-get install -y build-essential libatomic1 python python3 gfortran perl wget m4 cmake pkg-config curl
- echo "--- Install in-tree LLVM dependencies"
- make -j 6 -C deps install-llvm install-clang install-llvm-tools install-libuv install-utf8proc install-unwind
- echo "+++ run clangsa/analyzegc"
- make -j 6 -C test/clangsa
- make -j 6 -C src analyzegc
agents:
queue: "juliacpu" # this should be julia -- also in pipeline settings
# os: linux # tag missing for juliacpu queue
timeout_in_minutes: 60
- label: "llvmpasses"
commands:
- echo "--- Install apt-get pre-reqs"
- apt-get update
- apt-get install -y build-essential libatomic1 python python3 gfortran perl wget m4 cmake pkg-config curl
- echo "+++ run llvmpasses"
- make -j 6 release
- make -j 6 -C src install-analysis-deps
- make -j 6 -C test/llvmpasses
agents:
queue: "juliacpu" # this should be julia -- also in pipeline settings
# os: linux # tag missing for juliacpu queue
timeout_in_minutes: 60
1 change: 0 additions & 1 deletion .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,6 @@ StatementMacros:
- checked_intrinsic_ctype
- cvt_iintrinsic
- fpiseq_n
- fpislt_n
- ter_fintrinsic
- ter_intrinsic_ctype
- un_fintrinsic
Expand Down
4 changes: 3 additions & 1 deletion .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
/.github/workflows/ @JuliaLang/github-actions
CODEOWNERS @JuliaLang/github-actions
/.github/ @JuliaLang/github-actions
/.buildkite/ @JuliaLang/github-actions
66 changes: 3 additions & 63 deletions CITATION.bib
Original file line number Diff line number Diff line change
Expand Up @@ -8,68 +8,8 @@ @article{Julia-2017
pages={65--98},
year={2017},
publisher={SIAM},
doi={10.1137/141000671}
doi={10.1137/141000671},
url={https://epubs.siam.org/doi/10.1137/141000671}
}

% The following citations are about specific aspects of Julia.
@article{Julia-2019-a,
author = {Bezanson, Jeff and Chen, Jiahao and Chung, Benjamin and Karpinski, Stefan and Shah, Viral B. and Vitek, Jan and Zoubritzky, Lionel},
title = {Julia: Dynamism and Performance Reconciled by Design},
journal = {Proc. ACM Program. Lang.},
issue_date = {November 2018},
volume = {2},
number = {OOPSLA},
month = oct,
year = {2018},
issn = {2475-1421},
pages = {120:1--120:23},
articleno = {120},
numpages = {23},
url = {https://doi.acm.org/10.1145/3276490},
doi = {10.1145/3276490},
acmid = {3276490},
publisher = {ACM},
address = {New York, NY, USA},
keywords = {dynamic languages, just-in-time compilation, multiple dispatch},
}
@article{Julia-2019-b,
author = {Zappa Nardelli, Francesco and Belyakova, Julia and Pelenitsyn, Artem and Chung, Benjamin and Bezanson, Jeff and Vitek, Jan},
title = {Julia Subtyping: A Rational Reconstruction},
journal = {Proc. ACM Program. Lang.},
issue_date = {November 2018},
volume = {2},
number = {OOPSLA},
month = oct,
year = {2018},
issn = {2475-1421},
pages = {113:1--113:27},
articleno = {113},
numpages = {27},
url = {https://doi.acm.org/10.1145/3276483},
doi = {10.1145/3276483},
acmid = {3276483},
publisher = {ACM},
address = {New York, NY, USA},
keywords = {Multiple Dispatch, Subtyping},
}
@inproceedings{Julia-2014,
author = {Bezanson, Jeff and Chen, Jiahao and Karpinski, Stefan and Shah, Viral and Edelman, Alan},
title = {Array Operators Using Multiple Dispatch: A Design Methodology for Array Implementations in Dynamic Languages},
booktitle = {Proceedings of ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming},
series = {ARRAY'14},
year = {2014},
isbn = {978-1-4503-2937-8},
location = {Edinburgh, United Kingdom},
pages = {56:56--56:61},
articleno = {56},
numpages = {6},
url = {https://doi.acm.org/10.1145/2627373.2627383},
doi = {10.1145/2627373.2627383},
acmid = {2627383},
publisher = {ACM},
address = {New York, NY, USA},
keywords = {Julia, array indexing, dynamic dispatch, multiple dispatch, static analysis, type inference},
}
% For more details on research related to Julia, see https://julialang.org/research
10 changes: 5 additions & 5 deletions Make.inc
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ USE_SYSTEM_BLAS:=0
USE_SYSTEM_LAPACK:=0
USE_SYSTEM_GMP:=0
USE_SYSTEM_MPFR:=0
USE_SYSTEM_SUITESPARSE:=0
USE_SYSTEM_LIBSUITESPARSE:=0
USE_SYSTEM_LIBUV:=0
USE_SYSTEM_UTF8PROC:=0
USE_SYSTEM_MBEDTLS:=0
Expand Down Expand Up @@ -1168,7 +1168,7 @@ BB_TRIPLET := $(subst $(SPACE),-,$(filter-out cxx%,$(filter-out libgfortran%,$(s
LIBGFORTRAN_VERSION := $(subst libgfortran,,$(filter libgfortran%,$(subst -,$(SPACE),$(BB_TRIPLET_LIBGFORTRAN))))

# This is the set of projects that BinaryBuilder dependencies are hooked up for.
BB_PROJECTS := BLASTRAMPOLINE OPENBLAS LLVM SUITESPARSE OPENLIBM GMP MBEDTLS LIBSSH2 NGHTTP2 MPFR CURL LIBGIT2 PCRE LIBUV LIBUNWIND DSFMT OBJCONV ZLIB P7ZIP CSL
BB_PROJECTS := BLASTRAMPOLINE OPENBLAS LLVM LIBSUITESPARSE OPENLIBM GMP MBEDTLS LIBSSH2 NGHTTP2 MPFR CURL LIBGIT2 PCRE LIBUV LIBUNWIND DSFMT OBJCONV ZLIB P7ZIP CSL
define SET_BB_DEFAULT
# First, check to see if BB is disabled on a global setting
ifeq ($$(USE_BINARYBUILDER),0)
Expand All @@ -1187,7 +1187,7 @@ $(foreach proj,$(BB_PROJECTS),$(eval $(call SET_BB_DEFAULT,$(proj))))

# Warn if the user tries to build something that requires `gfortran` but they don't have it installed.
ifeq ($(FC_VERSION),)
ifneq ($(USE_BINARYBUILDER_OPENBLAS)$(USE_BINARYBUILDER_SUITESPARSE),11)
ifneq ($(USE_BINARYBUILDER_OPENBLAS)$(USE_BINARYBUILDER_LIBSUITESPARSE),11)
$(error "Attempting to build OpenBLAS or SuiteSparse without a functioning fortran compiler!")
endif
endif
Expand Down Expand Up @@ -1374,8 +1374,8 @@ endif
ifeq ($(USE_SYSTEM_BLAS),1)
# Since the names don't line up (`BLAS` vs. `OPENBLAS`), manually gate:
USE_BINARYBUILDER_OPENBLAS := 0
# Disable BB SuiteSparse if we're using system BLAS
USE_BINARYBUILDER_SUITESPARSE := 0
# Disable BB LIBSUITESPARSE if we're using system BLAS
USE_BINARYBUILDER_LIBSUITESPARSE := 0
endif
ifeq ($(USE_SYSTEM_LIBM),1)
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ JL_PRIVATE_LIBS-0 += libjulia-internal-debug
endif
ifeq ($(USE_GPL_LIBS), 1)
JL_PRIVATE_LIBS-0 += libsuitesparse_wrapper
JL_PRIVATE_LIBS-$(USE_SYSTEM_SUITESPARSE) += libamd libbtf libcamd libccolamd libcholmod libcolamd libklu libldl librbio libspqr libsuitesparseconfig libumfpack
JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBSUITESPARSE) += libamd libbtf libcamd libccolamd libcholmod libcolamd libklu libldl librbio libspqr libsuitesparseconfig libumfpack
endif
JL_PRIVATE_LIBS-$(USE_SYSTEM_PCRE) += libpcre2-8
JL_PRIVATE_LIBS-$(USE_SYSTEM_DSFMT) += libdSFMT
Expand All @@ -189,7 +189,7 @@ else
JL_PRIVATE_LIBS-$(USE_SYSTEM_ZLIB) += libz
endif
ifeq ($(USE_LLVM_SHLIB),1)
JL_PRIVATE_LIBS-$(USE_SYSTEM_LLVM) += libLLVM libLLVM-11jl
JL_PRIVATE_LIBS-$(USE_SYSTEM_LLVM) += libLLVM libLLVM-12jl
endif
JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBUNWIND) += libunwind

Expand Down
28 changes: 25 additions & 3 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,18 @@ New language features
as `.&&` and `.||`. ([#39594])
* `` (U+2AEA, `\Top`, `\downvDash`) and `` (U+2AEB, `\Bot`, `\upvDash`, `\indep`)
may now be used as binary operators with comparison precedence. ([#39403])
* Repeated semicolons may now be used inside array literals to separate dimensions of an array,
with the number of semicolons specifying the particular dimension. Just as the single semicolon
in `[A; B]` has always described concatenating along the first dimension (vertically), now two
semicolons `[A;; B]` do so in the second dimension (horizontally), three semicolons `;;;` in the
third, and so on. ([#33697])

Language changes
----------------

* `macroexpand`, `@macroexpand`, and `@macroexpand1` no longer wrap errors in a `LoadError`. To reduce breakage, `@test_throws` has been modified so that many affected tests will still pass ([#38379]].
* The middle dot `·` (`\cdotp` U+00b7) and the Greek interpunct `·` (U+0387) are now treated as equivalent to the dot operator `` (`\cdot` U+22c5) (#25157).
* The minus sign `` (`\minus` U+2212) is now treated as equivalent to the hyphen-minus sign `-` (U+002d).

Compiler/Runtime improvements
-----------------------------
Expand All @@ -39,11 +47,13 @@ New library functions

* Two argument methods `findmax(f, domain)`, `argmax(f, domain)` and the corresponding `min` versions ([#27613]).
* `isunordered(x)` returns true if `x` is value that is normally unordered, such as `NaN` or `missing`.
* New `keepat!(vector, inds)` function which is the inplace equivalent of `vector[inds]`
for a list `inds` of integers ([#36229]).
* New macro `Base.@invokelatest f(args...; kwargs...)` provides a convenient way to call `Base.invokelatest(f, args...; kwargs...)` ([#37971])
* New macro `Base.@invoke f(arg1::T1, arg2::T2; kwargs...)` provides an easier syntax to call `invoke(f, Tuple{T1,T2}; kwargs...)` ([#38438])
* Two arguments method `lock(f, lck)` now accepts a `Channel` as the second argument. ([#39312])
* New functor `Returns(value)`, which returns `value` for any arguments ([#39794])
* New macro `Base.@invoke f(arg1::T1, arg2::T2; kwargs...)` provides an easier syntax to call `invoke(f, Tuple{T1,T2}, arg1, arg2; kwargs...)` ([#38438])
* New macros `@something` and `@coalesce` which are short-circuiting versions of `something` and `coalesce`, respectively ([#40729])

New library features
--------------------
Expand All @@ -54,9 +64,11 @@ New library features
Standard library changes
------------------------

* Long strings are now elided using the syntax `"head" ⋯ 12345 bytes ⋯ "tail"` when displayed in the REPL ([#40736]).
* `count` and `findall` now accept an `AbstractChar` argument to search for a character in a string ([#38675]).
* `range` now supports the `range(start, stop)` and `range(start, stop, length)` methods ([#39228]).
* `range` now supports `start` as an optional keyword argument ([#38041]).
* Some operations on ranges will return a `StepRangeLen` instead of a `StepRange`, to allow the resulting step to be zero. Previously, `λ .* (1:9)` gave an error when `λ = 0`. ([#40320])
* `islowercase` and `isuppercase` are now compliant with the Unicode lower/uppercase categories ([#38574]).
* `iseven` and `isodd` functions now support non-`Integer` numeric types ([#38976]).
* `escape_string` can now receive a collection of characters in the keyword
Expand Down Expand Up @@ -86,7 +98,10 @@ Standard library changes
* `replace(::String)` now allows multiple patterns to be specified, and they
will be applied left-to-right simultaneously, so only one pattern will be
applied to any character, and the patterns will only be applied to the input
text, not the replacements. ([#TBD])
text, not the replacements ([#40484]).
* `@lock` is now exported from Base ([#39588]).
* The experimental function `Base.catch_stack()` has been renamed to `current_exceptions()`, exported from Base and given a more specific return type ([#29901])
* Some degree trigonometric functions, `sind`, `cosd`, `tand`, `asind`, `acosd`, `asecd`, `acscd`, `acotd`, `atand` now accept an square matrix ([#39758]).


#### Package Manager
Expand All @@ -101,6 +116,7 @@ Standard library changes
* The shape of an `UpperHessenberg` matrix is preserved under certain arithmetic operations, e.g. when multiplying or dividing by an `UpperTriangular` matrix. ([#40039])
* `cis(A)` now supports matrix arguments ([#40194]).
* `dot` now supports `UniformScaling` with `AbstractMatrix` ([#40250]).
* `det(M::AbstractMatrix{BigInt})` now calls `det_bareiss(M)`, which uses the [Bareiss](https://en.wikipedia.org/wiki/Bareiss_algorithm) algorithm to calculate precise values.([#40868]).

#### Markdown

Expand All @@ -116,6 +132,9 @@ Standard library changes

#### SparseArrays

* new `sizehint!(::SparseMatrixCSC, ::Integer)` method ([#30676]).
* `cholesky()` now fully preserves the user-specified permutation. ([#40560])
* `issparse` now applies consistently to all wrapper arrays, including nested, by checking `issparse` on the wrapped parent array ([#37644]).

#### Dates

Expand All @@ -137,10 +156,13 @@ Standard library changes

* `mmap` is now exported ([#39816]).

#### DelimitedFiles

* `readdlm` now defaults to `use_mmap=false` on all OSes for consistent reliability in abnormal filesystem situations ([#40415]).

Deprecated or removed
---------------------
- Multiple successive semicolons in an array expresion were previously ignored (e.g. `[1 ;; 2] == [1 ; 2]`). Multiple semicolons are being reserved for future syntax and may have different behavior in a future release.
- Multiple successive semicolons in an array expresion were previously ignored (e.g., `[1 ;; 2] == [1 ; 2]`). This is now being used to separate dimensions for array literals. (see **New language features**)


External dependencies
Expand Down
16 changes: 6 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ helpful to start contributing to the Julia codebase.

- [**StackOverflow**](https://stackoverflow.com/questions/tagged/julia-lang)
- [**Twitter**](https://twitter.com/JuliaLanguage)
- [**Meetup**](https://julia.meetup.com/)
- [**Learning resources**](https://julialang.org/learning/)

## Binary Installation
Expand Down Expand Up @@ -73,14 +72,14 @@ First, make sure you have all the [required
dependencies](https://github.com/JuliaLang/julia/blob/master/doc/build/build.md#required-build-tools-and-external-libraries) installed.
Then, acquire the source code by cloning the git repository:

git clone git:https://github.com/JuliaLang/julia.git
git clone https:https://github.com/JuliaLang/julia.git

By default you will be building the latest unstable version of
Julia. However, most users should use the most recent stable version
of Julia. You can get this version by changing to the Julia directory
and running:

git checkout v1.6.0
git checkout v1.6.1

Now run `make` to build the `julia` executable.

Expand Down Expand Up @@ -145,10 +144,7 @@ Support for editing Julia is available for many
[Sublime Text](https://github.com/JuliaEditorSupport/Julia-sublime), and many
others.

Supported IDEs include: [Juno](http:https://junolab.org/) (Atom plugin),
[julia-vscode](https://github.com/JuliaEditorSupport/julia-vscode) (VS
Code plugin), and
[julia-intellij](https://github.com/JuliaEditorSupport/julia-intellij)
(IntelliJ IDEA plugin). The popular [Jupyter](https://jupyter.org/)
notebook interface is available through
[IJulia](https://github.com/JuliaLang/IJulia.jl).
Supported IDEs include: [julia-vscode](https://github.com/JuliaEditorSupport/julia-vscode) (VS
Code plugin), [Juno](http:https://junolab.org/) (Atom plugin). [Jupyter](https://jupyter.org/)
notebooks are available through the [IJulia](https://github.com/JuliaLang/IJulia.jl) package, and
[Pluto](https://github.com/fonsp/Pluto.jl) notebooks through the Pluto.jl package.
11 changes: 8 additions & 3 deletions base/Base.jl
Original file line number Diff line number Diff line change
Expand Up @@ -213,12 +213,11 @@ include("methodshow.jl")
include("cartesian.jl")
using .Cartesian
include("multidimensional.jl")
include("permuteddimsarray.jl")
using .PermutedDimsArrays

include("broadcast.jl")
using .Broadcast
using .Broadcast: broadcasted, broadcasted_kwsyntax, materialize, materialize!
using .Broadcast: broadcasted, broadcasted_kwsyntax, materialize, materialize!,
broadcast_preserving_zero_d, andand, oror

# missing values
include("missing.jl")
Expand Down Expand Up @@ -293,6 +292,9 @@ end
include("reducedim.jl") # macros in this file relies on string.jl
include("accumulate.jl")

include("permuteddimsarray.jl")
using .PermutedDimsArrays

# basic data structures
include("ordering.jl")
using .Order
Expand Down Expand Up @@ -424,6 +426,9 @@ for match = _methods(+, (Int, Int), -1, get_world_counter())
Core.svec(1, 2) == Core.svec(3, 4)
any(t->t[1].line > 1, [(LineNumberNode(2,:none), :(1+1))])

# Code loading uses this
sortperm(mtime.(readdir(".")), rev=true)

break # only actually need to do this once
end

Expand Down
16 changes: 8 additions & 8 deletions base/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -218,14 +218,14 @@ $(eval $(call symlink_system_library,LIBSSH2,libssh2))
$(eval $(call symlink_system_library,NGHTTP2,libnghttp2))
$(eval $(call symlink_system_library,CURL,libcurl))
$(eval $(call symlink_system_library,LIBGIT2,libgit2))
$(eval $(call symlink_system_library,SUITESPARSE,libamd))
$(eval $(call symlink_system_library,SUITESPARSE,libcamd))
$(eval $(call symlink_system_library,SUITESPARSE,libccolamd))
$(eval $(call symlink_system_library,SUITESPARSE,libcholmod))
$(eval $(call symlink_system_library,SUITESPARSE,libcolamd))
$(eval $(call symlink_system_library,SUITESPARSE,libumfpack))
$(eval $(call symlink_system_library,SUITESPARSE,libspqr))
$(eval $(call symlink_system_library,SUITESPARSE,libsuitesparseconfig))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libamd))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libcamd))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libccolamd))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libcholmod))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libcolamd))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libumfpack))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libspqr))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libsuitesparseconfig))
# EXCLUDED LIBRARIES (installed/used, but not vendored for use with dlopen):
# libunwind
endif # WINNT
Expand Down
Loading

0 comments on commit 6467f2f

Please sign in to comment.