Skip to content

Float minmax v2 #9

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 97 commits into from
Aug 17, 2021
Merged
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
ba3be5f
Enable conversion of CompoundPeriod to Period
sostock May 12, 2021
6e85978
@propagate_inbounds on (get/set)index! for SharedArray
chriselrod Jun 11, 2021
20e260a
[ARM/AArch64] Use CreateFence instead of inline assembly
vchuravy Jul 19, 2021
860f994
Add isinf/isnan check for %g/%G formatting
Seelengrab Jul 20, 2021
6a7c78b
Add test for Inf/NaN handling in %g/%G Printf
Seelengrab Jul 20, 2021
4d7f886
optimizer: Refactor out redundant `nargs` parameter (#41699)
Keno Jul 26, 2021
86efda7
Export functions related to atomic fields in julia.h (#41704)
Taaitaaiger Jul 26, 2021
5f4c719
Merge pull request #41644 from JuliaLang/vc/emit_signal_fence
vchuravy Jul 26, 2021
8ece865
ASAN improvements (#41675)
maleadt Jul 27, 2021
86ad7c4
Add support for uprobes in the buildsystem
vchuravy Jul 23, 2021
2fbeef8
Init codegen during sysimg restore (#41676)
maleadt Jul 27, 2021
57ce0e6
add compat annotations for `replace` on tuples (#41701)
rfourquet Jul 28, 2021
1c951f7
Fix `length(::AbstractUnitRange)` and speed up `length(::AbstractUnit…
sostock Jul 28, 2021
b50bf04
upgrade libuv to v2-1.42.0 (#41710)
vtjnash Jul 28, 2021
d066a8e
doc: explain how to enable debug for multiple modules (#41719)
t-bltg Jul 28, 2021
66b40ad
add probes for GC phases
vchuravy Jul 23, 2021
fa30e64
Merge pull request #41685 from JuliaLang/vc/gc_probes
vchuravy Jul 29, 2021
6c4f216
add stream shutdown and support half-duplex operation (#40783)
vtjnash Jul 29, 2021
66f9b55
Revert "Merge pull request #38405 from JuliaLang/vc/distributed_ts" (…
vtjnash Jul 29, 2021
795935f
more type-stable type-inference (#41697)
aviatesk Jul 29, 2021
d245c68
Changed isone type to AbstractMatrix + added test (#41634)
Jul 30, 2021
6218ce3
make `@fastmath exp` not overflow to small negatives
oscardssmith Jul 31, 2021
d9fe331
Revert fix @fastmath exp
oscardssmith Jul 31, 2021
f0bc415
update mailmap
ViralBShah Jul 31, 2021
8556e93
Add the `CITATION.cff` file to take advantage of GitHub's new support…
storopoli Jul 31, 2021
bdacfa2
Fix my name in the CITATION.cff
ViralBShah Jul 31, 2021
4c3829d
guard `isempty (close #41656) (#41752)
bicycle1885 Aug 2, 2021
6f29690
make sure to use `io` passed to `UndefVarError_hint` (#41757)
aviatesk Aug 2, 2021
4bcdf9d
Small documentation enhancement and typo fix (#41758)
allenz-me Aug 2, 2021
ed13d09
Shuffle profile round robin thread order before taking every sample (…
NHDaly Aug 2, 2021
f711f0a
[CONTRIBUTING.md] Add note that we prefer `squash+merge` when merging…
NHDaly Aug 2, 2021
705f489
🤖 Bump the Pkg stdlib from 39cc95a6 to 5434d05f (#41766)
DilumAluthgeBot Aug 3, 2021
4f28e6f
Merge pull request #41650 from Seelengrab/printf-format-fix
quinnj Aug 3, 2021
b686e71
[Timing Imports] Use atomic_add! and atomic_sub! (#41737)
vchuravy Aug 3, 2021
cd200d1
Merge pull request #40803 from sostock/convert-compoundperiod-to-period
quinnj Aug 3, 2021
ca0331f
fix #40048, stack overflows in type intersection (#41687)
JeffBezanson Aug 3, 2021
81c29b2
Add `canonicalize` to Dates docs
jebej Aug 3, 2021
a27b844
Update networking-and-streams.md (#41486)
wjholden Aug 3, 2021
68db4b7
[Sockets] Embed note warning about broken DNS configuration (#41734)
staticfloat Aug 4, 2021
32b1141
Merge pull request #41775 from jebej/patch-1
quinnj Aug 4, 2021
e57dc3d
string: improve error message for in -> occursin (#41783)
johnnychen94 Aug 4, 2021
5118a1b
Add missing makefile header link (#41773)
Keno Aug 4, 2021
d18d8a4
compiler: speed up bootstrapping time by 25% (#41794)
aviatesk Aug 5, 2021
a86fe0f
fix `break` outside of loop in gc-debug (#41776)
JeffBezanson Aug 6, 2021
cb30aa7
CI (Buildkite): on the `platform_linux` jobs, after building Julia, m…
DilumAluthge Aug 6, 2021
131b75b
CI: Disable Codecov commit statuses (#41812)
DilumAluthge Aug 7, 2021
6fce8d5
CI (Buildbot): As soon as a PR is created or updated, create pending …
DilumAluthge Aug 7, 2021
d62e206
CI (Buildbot): for the "Create Pending Statuses" GitHub Actions workf…
DilumAluthge Aug 7, 2021
ed866b5
CI (Buildbot): Fix a bug in the "Create Pending Statuses" GitHub Acti…
DilumAluthge Aug 7, 2021
0e8bb95
CI (Buildbot): a simpler way of getting the SHA for the "Statuses" ac…
DilumAluthge Aug 7, 2021
08fae51
CI (Buildbot, GHA): in the "Statuses" workflow, we only need to creat…
DilumAluthge Aug 8, 2021
bdd7457
CI (Buildbot, GHA): in the "Statuses" workflow, remove the `macosaarc…
DilumAluthge Aug 8, 2021
ff4fe28
🤖 Bump the NetworkOptions stdlib from 6cea813 to 42a0b5f (#41804)
DilumAluthgeBot Aug 8, 2021
0d1e548
CI (Buildbot, GHA): in the "Statuses" workflow, remove the `tester_li…
DilumAluthge Aug 9, 2021
9665d2a
CI (Buildbot, GHA): In the "Statuses" workflow, remove the `tester_li…
DilumAluthge Aug 9, 2021
7005b7d
CI (Buildbot, GHA): add a note about token permissions (#41825)
DilumAluthge Aug 9, 2021
e87e30c
?(x, y)TAB completes methods accepting x, y (#38791)
timholy Aug 9, 2021
702cf55
Revert "Add vim bindings to TerminalMenus (#37940)"
timholy Aug 9, 2021
afc7e72
typo fix in documentation (#41838)
allenz-me Aug 9, 2021
727fe6a
InteractiveUtils: print assembly code for code_native (#41789)
vtjnash Aug 9, 2021
a1e9fd3
nit type-stability in `StackTraces.lookup` `line` variable (#41847)
thchr Aug 9, 2021
68c4585
🤖 Bump the Downloads stdlib from cd002c3 to 848d374 (#41803)
DilumAluthgeBot Aug 9, 2021
cd6e67f
Include an additional patch for OpenBLAS. (#41842)
maleadt Aug 10, 2021
c2b4b38
[IRShow] expose index information to postprinter (#41828)
simeonschaub Aug 10, 2021
34dc044
CI (Buildbot, GHA): Simplify the `permissions` key in the workflow fi…
DilumAluthge Aug 10, 2021
41ce35d
codegen: fix emission criteria for some special functions (#41813)
vtjnash Aug 10, 2021
2d81742
win: fix lock function call for backtrace collection (#41849)
vtjnash Aug 10, 2021
cc3fc0b
atomics: switch to using exact types for return pairs (#41659)
vtjnash Aug 10, 2021
c12e63f
Profile: allocate buffer for n instruction pointers per thread (#41821)
IanButterworth Aug 11, 2021
59fe04f
make clean external stdlib clones (#41861)
IanButterworth Aug 11, 2021
6469ca5
THIRDPARTY.md cleanup (#41674)
SamuraiAku Aug 11, 2021
b458894
Merge pull request #41835 from JuliaLang/teh/revert_37940
vchuravy Aug 11, 2021
2ebbb2b
Fix firstindex in replace_ref_begin_end (fixes #41630) (#41695)
phipsgabler Aug 11, 2021
48ed43f
improve `@something` hygine (#41797)
aviatesk Aug 12, 2021
79e2f2b
clarify that test macro throws outside a testset if it fails (#41756)
KristofferC Aug 12, 2021
01d439e
CI (Buildkite): `llvmpasses`: use the latest rootfs image (#41864)
DilumAluthge Aug 12, 2021
f19b9a2
MINSIGSTKSZ is no longer constant in glibc (#41860)
t-bltg Aug 12, 2021
6ea0b78
Merge pull request #41192 from chriselrod/propinboundssharedarray
vchuravy Aug 13, 2021
73e5522
nothing comparison improvement (#41881)
AtsushiSakai Aug 13, 2021
6bb978e
optimizer: minor code refactor (#41886)
aviatesk Aug 14, 2021
6f8bb64
`AbstractInterpreter`: remove dead logic within `transform_result_for…
aviatesk Aug 14, 2021
19629d7
don't look for packages in code that isn't going to be run this eval …
IanButterworth Aug 14, 2021
8cad32b
Add hint for :help to REPL.REPLCompletions.UndefVarError_hint (#41754)
mkitti Aug 14, 2021
5453b6a
fix: typo spelling grammar (#41883)
slowy07 Aug 15, 2021
b40ae6b
[LinearAlgebra] flesh out LBT API a bit more (#41452)
staticfloat Aug 15, 2021
398d1a0
fix `current_exceptions` docstring and annotate arguments (#41897)
aviatesk Aug 16, 2021
ab600f8
[REPL] 0nly do NFD normalization for latex tab-completion help if no …
GunnarFarneback Aug 16, 2021
9ae49bc
docs: add v1.7 compat for `@atomic` and fix links (#41873)
petvana Aug 16, 2021
cd43dda
searchsorted: add tests for issue #10966 (#41874)
sostock Aug 16, 2021
3306a8b
[Distributed] Fix finalizer_ref usage of lock/wait resulting in faile…
krynju Aug 16, 2021
5ff9e3a
Add `range(; stop)` and `range(; length)` (#39241)
mkitti Aug 16, 2021
d612c47
file.jl: add a note differentiating `cp` function from `cp` command (…
thazhemadam Aug 16, 2021
e8faf9d
ensure that the non-REPL precompile code actually get precompiled (#4…
KristofferC Aug 17, 2021
20cec5d
Merge branch 'JuliaLang:master' into float_minmax_v2
N5N3 Aug 17, 2021
c70db59
doc: add section about function types in the Types section (#41855)
tpapp Aug 17, 2021
504eae3
Merge branch 'JuliaLang:master' into float_minmax_v2
N5N3 Aug 17, 2021
556ac6a
Update math.jl
N5N3 Aug 17, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .buildkite/pipelines/main/misc/llvmpasses.yml
Original file line number Diff line number Diff line change
@@ -33,8 +33,8 @@ steps:
- JuliaCI/julia#v1:
version: 1.6
- staticfloat/sandbox#v1:
rootfs_url: https://github.com/JuliaCI/rootfs-images/releases/download/v3.1/package_linux.x86_64.tar.gz
rootfs_treehash: "8c33c341a864852629b8aac01a6eb6a79b73570e"
rootfs_url: https://github.com/JuliaCI/rootfs-images/releases/download/v3.8/package_linux.x86_64.tar.gz
rootfs_treehash: "84a323ae8fcc724f8ea5aca5901bbbf4bda3e519"
uid: 1000
gid: 1000
workspaces:
3 changes: 3 additions & 0 deletions .buildkite/pipelines/main/platforms/linux64.yml
Original file line number Diff line number Diff line change
@@ -35,6 +35,9 @@ steps:
make release
make install

echo "--- Make sure that the working directory is clean"
if [ -z "$(git status --short)" ]; then echo "INFO: The working directory is clean."; else echo "ERROR: The working directory is dirty."; echo "Output of git status:"; git status; exit 1; fi

echo "--- Print Julia version info"
./julia -e 'using InteractiveUtils; InteractiveUtils.versioninfo()'

4 changes: 4 additions & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
coverage:
status:
project: off
patch: off
6 changes: 4 additions & 2 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
CODEOWNERS @JuliaLang/github-actions
/.github/ @JuliaLang/github-actions
CODEOWNERS @JuliaLang/github-actions
/.github/ @JuliaLang/github-actions
/.buildkite/ @JuliaLang/github-actions

/.github/workflows/statuses.yml @DilumAluthge
74 changes: 74 additions & 0 deletions .github/workflows/statuses.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Please ping @DilumAluthge when making any changes to this file.

# This is just a short-term solution until we have migrated all of CI to Buildkite.
#
# 1. TODO: delete this file once we have migrated all of CI to Buildkite.
#
# 2. TODO: disable GitHub Actions on the `JuliaLang/julia` repository once we have migrated all
# of CI to Buildkite.

# Here are some steps that we take in this workflow file for security reasons:
# 1. We do not checkout any code.
# 2. We do not run any external actions.
# 3. We only give `GITHUB_TOKEN` the minimum necessary set of permissions.

name: Statuses

on:
push:
branches:
- 'master'
- 'release-*'
# When using the `pull_request_target` event, all PRs will get a `GITHUB_TOKEN` that has
# write permissions, even if the PR is from a fork.
# Therefore, for security reasons, we do not checkout any code in this workflow.
pull_request_target:
branches:
- 'master'
- 'release-*'

# These are the permissions for the `GITHUB_TOKEN` token.
# We should only give the token the minimum necessary set of permissions.
permissions:
statuses: write

jobs:
statuses:
name: statuses
runs-on: ubuntu-latest
if: github.repository == 'JuliaLang/julia'
strategy:
fail-fast: false
steps:
- run: echo "SHA=${{ github.event.pull_request.head.sha }}" >> $GITHUB_ENV
if: github.event_name == 'pull_request_target'

- run: echo "SHA=${{ github.sha }}" >> $GITHUB_ENV
if: github.event_name != 'pull_request_target'

- run: echo "The SHA is ${{ env.SHA }}"

# As we incrementally migrate individual jobs from Buildbot to Buildkite, we should
# remove them from the `context_list`.
- run: |
declare -a CONTEXT_LIST=(
"buildbot/tester_freebsd64"
"buildbot/tester_linux32"
"buildbot/tester_linux64"
"buildbot/tester_linuxaarch64"
"buildbot/tester_macos64"
"buildbot/tester_win32"
"buildbot/tester_win64"
)
for CONTEXT in "${CONTEXT_LIST[@]}"
do
curl \
-X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
-d "{\"context\": \"$CONTEXT\", \"state\": \"$STATE\"}" \
https://github.com/api/repos/JuliaLang/julia/statuses/${{ env.SHA }}
done
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
STATE: "pending"
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -22,6 +22,7 @@
*.so
*.dylib
*.dSYM
*.h.gen
*.jl.cov
*.jl.*.cov
*.jl.mem
3 changes: 3 additions & 0 deletions .mailmap
Original file line number Diff line number Diff line change
@@ -257,3 +257,6 @@ Curtis Vogt <[email protected]> <[email protected]>

Rafael Fourquet <[email protected]> <[email protected]>
Rafael Fourquet <[email protected]> <[email protected]>

Nathan Daly <[email protected]> <[email protected]>
Nathan Daly <[email protected]> <[email protected]>
41 changes: 41 additions & 0 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
cff-version: 1.2.0
message: "Cite this paper whenever you use Julia"
authors:
- family-names: "Bezanson"
given-names: "Jeff"
- family-names: "Edelman"
given-names: "Alan"
- family-names: "Karpinski"
given-names: "Stefan"
- family-names: "Shah"
given-names: "Viral B."
title: "Julia: A fresh approach to numerical computing"
version: "v1"
license: "MIT"
doi: "10.1137/141000671"
date-released: 2017-02-07
url: "https://julialang.org"
references:
- scope: "Cite this paper whenever you use Julia"
type: article
title: "Julia: A fresh approach to numerical computing"
authors:
- family-names: "Bezanson"
given-names: "Jeff"
- family-names: "Edelman"
given-names: "Alan"
- family-names: "Karpinski"
given-names: "Stefan"
- family-names: "Shah"
given-names: "Viral B."
doi: "10.1137/141000671"
journal: "SIAM Review"
volume: 59
number: 1
pages: 33
start: 65
end: 98
year: 2017
url: "https://dx.doi.org/10.1137/141000671"
publisher:
- name: "SIAM"
5 changes: 5 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -287,6 +287,11 @@ runtest harness).
- To remove whitespace relative to the `master` branch, run
`git rebase --whitespace=fix master`.

#### Git Recommendations For Pull Request Reviewers

- When merging, we generally like `squash+merge`. Unless it is the rare case of a PR with carefully staged individual commits that you want in the history separately, in which case `merge` is acceptable, but usually prefer `squash+merge`.


## Resources

* Julia
2 changes: 2 additions & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
@@ -143,6 +143,8 @@ Standard library changes
* `replace(::String)` now accepts multiple patterns, which 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 ([#40484]).
* New `replace` methods to replace elements of a `Tuple`.


#### Package Manager

2 changes: 1 addition & 1 deletion LICENSE.md
Original file line number Diff line number Diff line change
@@ -23,4 +23,4 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

end of terms and conditions

Please see THIRDPARTY.md for license information for other software used in this project.
Please see [THIRDPARTY.md](./THIRDPARTY.md) for license information for other software used in this project.
17 changes: 17 additions & 0 deletions Make.inc
Original file line number Diff line number Diff line change
@@ -75,6 +75,9 @@ HAVE_SSP := 0
WITH_GC_VERIFY := 0
WITH_GC_DEBUG_ENV := 0

# Enable DTrace support
WITH_DTRACE := 0

# Prevent picking up $ARCH from the environment variables
ARCH:=

@@ -87,6 +90,10 @@ endef
COMMA:=,
SPACE:=$(eval) $(eval)

# force a sane / stable configuration
export LC_ALL=C
export LANG=C

# We need python for things like BB triplet recognition and relative path computation.
# We don't really care about version, generally, so just find something that works:
PYTHON := "$(shell which python 2>/dev/null || which python3 2>/dev/null || which python2 2>/dev/null || echo "{python|python3|python2} not found")"
@@ -755,6 +762,13 @@ JCXXFLAGS += -DGC_DEBUG_ENV
JCFLAGS += -DGC_DEBUG_ENV
endif

ifeq ($(WITH_DTRACE), 1)
JCXXFLAGS += -DUSE_DTRACE
JCFLAGS += -DUSE_DTRACE
DTRACE := dtrace
else
endif

# ===========================================================================

# Select the cpu architecture to target, or automatically detects the user's compiler
@@ -1551,6 +1565,7 @@ LINKCOLOR:="\033[34;1m"
PERLCOLOR:="\033[35m"
FLISPCOLOR:="\033[32m"
JULIACOLOR:="\033[32;1m"
DTRACECOLOR:="\033[32;1m"

SRCCOLOR:="\033[33m"
BINCOLOR:="\033[37;1m"
@@ -1564,6 +1579,7 @@ PRINT_LINK = printf ' %b %b\n' $(LINKCOLOR)LINK$(ENDCOLOR) $(BINCOLOR)$(GOAL)
PRINT_PERL = printf ' %b %b\n' $(PERLCOLOR)PERL$(ENDCOLOR) $(BINCOLOR)$(GOAL)$(ENDCOLOR); $(1)
PRINT_FLISP = printf ' %b %b\n' $(FLISPCOLOR)FLISP$(ENDCOLOR) $(BINCOLOR)$(GOAL)$(ENDCOLOR); $(1)
PRINT_JULIA = printf ' %b %b\n' $(JULIACOLOR)JULIA$(ENDCOLOR) $(BINCOLOR)$(GOAL)$(ENDCOLOR); $(1)
PRINT_DTRACE = printf ' %b %b\n' $(DTRACECOLOR)DTRACE$(ENDCOLOR) $(BINCOLOR)$(GOAL)$(ENDCOLOR); $(1)

else
QUIET_MAKE =
@@ -1573,6 +1589,7 @@ PRINT_LINK = echo '$(subst ','\'',$(1))'; $(1)
PRINT_PERL = echo '$(subst ','\'',$(1))'; $(1)
PRINT_FLISP = echo '$(subst ','\'',$(1))'; $(1)
PRINT_JULIA = echo '$(subst ','\'',$(1))'; $(1)
PRINT_DTRACE = echo '$(subst ','\'',$(1))'; $(1)

endif

3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -573,3 +573,6 @@ endif
@time $(call spawn,$(build_bindir)/julia$(EXE) -e '')
@time $(call spawn,$(build_bindir)/julia$(EXE) -e '')
@time $(call spawn,$(build_bindir)/julia$(EXE) -e '')

print-locale:
@locale
8 changes: 8 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -41,10 +41,12 @@ New library features
Standard library changes
------------------------

* `range` accepts either `stop` or `length` as a sole keyword argument ([#39241])
* The `length` function on certain ranges of certain specific element types no longer checks for integer
overflow in most cases. The new function `checked_length` is now available, which will try to use checked
arithmetic to error if the result may be wrapping. Or use a package such as SaferIntegers.jl when
constructing the range. ([#40382])
* TCP socket objects now expose `shutdown` functionality and support half-open mode usage ([#40783]).

#### InteractiveUtils
* A new macro `@time_imports` for reporting any time spent importing packages and their dependencies ([#41612])
@@ -62,6 +64,12 @@ Standard library changes

#### REPL

* ` ?(x, y` followed by TAB displays all methods that can be called
with arguments `x, y, ...`. (The space at the beginning prevents entering help-mode.)
`MyModule.?(x, y` limits the search to `MyModule`. TAB requires that at least one
argument have a type more specific than `Any`; use SHIFT-TAB instead of TAB
to allow any compatible methods.

#### SparseArrays

#### Dates
29 changes: 15 additions & 14 deletions THIRDPARTY.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,52 @@
The Julia language is licensed under the MIT License (see `LICENSE.md`). The "language" consists
The Julia language is licensed under the MIT License (see [LICENSE.md](./LICENSE.md) ). The "language" consists
of the compiler (the contents of src/), most of the standard library (base/),
and some utilities (most of the rest of the files in this repository). See below
for exceptions.

- [crc32c.c](https://stackoverflow.com/questions/17645167/implementing-sse-4-2s-crc32c-in-software) (CRC-32c checksum code by Mark Adler) [[ZLib](https://opensource.org/licenses/Zlib)].
- [LDC](https://github.com/ldc-developers/ldc/blob/master/LICENSE) (for ccall/cfunction ABI definitions) [BSD-3]. The portion of code that Julia uses from LDC is [BSD-3] licensed.
- [LLVM](https://releases.llvm.org/3.9.0/LICENSE.TXT) (for parts of src/jitlayers.cpp and src/disasm.cpp) [BSD-3, effectively]
- [MUSL](https://git.musl-libc.org/cgit/musl/tree/COPYRIGHT) (for getopt implementation on Windows) [MIT]
- [LLVM](https://releases.llvm.org/3.9.0/LICENSE.TXT) (for parts of src/disasm.cpp) [UIUC]
- [MUSL](https://git.musl-libc.org/cgit/musl/tree/COPYRIGHT) (for src/getopt.c and src/getopt.h) [MIT]
- [MINGW](https://sourceforge.net/p/mingw/mingw-org-wsl/ci/legacy/tree/mingwrt/mingwex/dirname.c) (for dirname implementation on Windows) [MIT]
- [NetBSD](https://www.netbsd.org/about/redistribution.html) (for setjmp, longjmp, and strptime implementations on Windows) [BSD-3]
- [Python](https://docs.python.org/3/license.html) (for strtod and joinpath implementation on Windows) [BSD-3, effectively]
- [Google Benchmark](https://github.com/google/benchmark) (for cyclecount implementation) [Apache 2.0]
- [Python](https://docs.python.org/3/license.html) (for strtod implementation on Windows) [PSF]
- [FEMTOLISP](https://github.com/JeffBezanson/femtolisp) [BSD-3]

The following components included in Julia `Base` have their own separate licenses:

- base/ryu/* [Boost] (see [ryu](https://github.com/ulfjack/ryu/blob/master/LICENSE-Boost))
- base/grisu/* [BSD-3] (see [double-conversion](https://github.com/google/double-conversion/blob/master/LICENSE))
- base/special/{exp,rem_pio2,hyperbolic}.jl [Freely distributable with preserved copyright notice] (see [FDLIBM](https://www.netlib.org/fdlibm))
- base/special/{rem_pio2,hyperbolic}.jl [Freely distributable with preserved copyright notice] (see [FDLIBM](https://www.netlib.org/fdlibm))

The Julia language links to the following external libraries, which have their
own licenses:

- [FEMTOLISP](https://github.com/JeffBezanson/femtolisp) [BSD-3]
- [LIBUNWIND](https://git.savannah.gnu.org/gitweb/?p=libunwind.git;a=blob_plain;f=LICENSE;hb=master) [MIT]
- [LIBUV](https://github.com/joyent/libuv/blob/master/LICENSE) [MIT]
- [LLVM](https://releases.llvm.org/6.0.0/LICENSE.TXT) [BSD-3, effectively]
- [LIBUNWIND](https://github.com/libunwind/libunwind/blob/master/LICENSE) [MIT]
- [LIBUV](https://github.com/JuliaLang/libuv/blob/julia-uv2-1.39.0/LICENSE) [MIT]
- [LLVM](https://releases.llvm.org/6.0.0/LICENSE.TXT) [UIUC]
- [UTF8PROC](https://github.com/JuliaStrings/utf8proc) [MIT]

Julia's `stdlib` uses the following external libraries, which have their own licenses:

- [DSFMT](http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/LICENSE.txt) [BSD-3]
- [DSFMT](https://github.com/MersenneTwister-Lab/dSFMT/blob/master/LICENSE.txt) [BSD-3]
- [OPENLIBM](https://github.com/JuliaMath/openlibm/blob/master/LICENSE.md) [MIT, BSD-2, ISC]
- [GMP](https://gmplib.org/manual/Copying.html#Copying) [LGPL3+ or GPL2+]
- [LIBGIT2](https://github.com/libgit2/libgit2/blob/development/COPYING) [GPL2+ with unlimited linking exception]
- [CURL](https://curl.haxx.se/docs/copyright.html) [MIT/X derivative]
- [LIBSSH2](https://github.com/libssh2/libssh2/blob/master/COPYING) [BSD-3]
- [MBEDTLS](https://tls.mbed.org/how-to-get) [either GPLv2 or Apache 2.0]
- [MBEDTLS](https://github.com/ARMmbed/mbedtls/blob/development/LICENSE) [Apache 2.0]
- [MPFR](https://www.mpfr.org/mpfr-current/mpfr.html#Copying) [LGPL3+]
- [OPENBLAS](https://raw.github.com/xianyi/OpenBLAS/master/LICENSE) [BSD-3]
- [LAPACK](https://netlib.org/lapack/LICENSE.txt) [BSD-3]
- [PCRE](https://www.pcre.org/licence.txt) [BSD-3]
- [SUITESPARSE](http://suitesparse.com) [mix of LGPL2+ and GPL2+; see individual module licenses]
- [SUITESPARSE](https://github.com/DrTimothyAldenDavis/SuiteSparse/blob/master/LICENSE.txt) [mix of LGPL2+ and GPL2+; see individual module licenses]
- [LIBBLASTRAMPOLINE](https://github.com/staticfloat/libblastrampoline/blob/main/LICENSE) [MIT]
- [NGHTTP2](https://github.com/nghttp2/nghttp2/blob/master/COPYING) [MIT]

Julia's build process uses the following external tools:

- [PATCHELF](https://nixos.org/patchelf.html)
- [OBJCONV](https://www.agner.org/optimize/#objconv)
- [LIBWHICH](https://github.com/vtjnash/libwhich/blob/master/LICENSE) [MIT]

Julia bundles the following external programs and libraries:

3 changes: 3 additions & 0 deletions base/Base.jl
Original file line number Diff line number Diff line change
@@ -107,6 +107,9 @@ include("options.jl")
include("promotion.jl")
include("tuple.jl")
include("expr.jl")
Pair{A, B}(@nospecialize(a), @nospecialize(b)) where {A, B} = (@_inline_meta; Pair{A, B}(convert(A, a)::A, convert(B, b)::B))
#Pair{Any, B}(@nospecialize(a::Any), b) where {B} = (@_inline_meta; Pair{Any, B}(a, Base.convert(B, b)::B))
#Pair{A, Any}(a, @nospecialize(b::Any)) where {A} = (@_inline_meta; Pair{A, Any}(Base.convert(A, a)::A, b))
include("pair.jl")
include("traits.jl")
include("range.jl")
14 changes: 13 additions & 1 deletion base/boot.jl
Original file line number Diff line number Diff line change
@@ -171,7 +171,7 @@ export
# key types
Any, DataType, Vararg, NTuple,
Tuple, Type, UnionAll, TypeVar, Union, Nothing, Cvoid,
AbstractArray, DenseArray, NamedTuple,
AbstractArray, DenseArray, NamedTuple, Pair,
# special objects
Function, Method,
Module, Symbol, Task, Array, UndefInitializer, undef, WeakRef, VecElement,
@@ -813,4 +813,16 @@ _parse = nothing
# support for deprecated uses of internal _apply function
_apply(x...) = Core._apply_iterate(Main.Base.iterate, x...)

struct Pair{A, B}
first::A
second::B
# if we didn't inline this, it's probably because the callsite was actually dynamic
# to avoid potentially compiling many copies of this, we mark the arguments with `@nospecialize`
# but also mark the whole function with `@inline` to ensure we will inline it whenever possible
# (even if `convert(::Type{A}, a::A)` for some reason was expensive)
Pair(a, b) = new{typeof(a), typeof(b)}(a, b)
Pair{A, B}(a::A, b::B) where {A, B} = new(a, b)
Pair{Any, Any}(@nospecialize(a::Any), @nospecialize(b::Any)) = new(a, b)
end

ccall(:jl_set_istopmod, Cvoid, (Any, Bool), Core, true)
Loading