Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
7a28ad5
Actually setup jit targets when compiling packageimages instead of ta…
gbaraldi Jul 3, 2025
c96d507
`[backports-release-1.10]`: Distributed: Worker: Bind to the first no…
DilumAluthge Jul 8, 2025
2a53722
Fixes for bitcast bugs with LLVM 17 / opaque pointers (#54548)
maleadt May 22, 2024
54e1119
Add boundscheck in speccache_eq to avoid OOB access due to data race …
kpamnany Jun 18, 2024
1998364
fix special function `::Real` fallback stack overflow (#57790)
nsajko Mar 17, 2025
9c892c6
Logging: Improve threadsafety (#57591)
IanButterworth Apr 4, 2025
7ac9a80
Switch from segfault to `zip` behavior for mismatched indices in `map…
adienes Apr 19, 2025
029abad
Fix removal of globals with addrspaces in removeAddrspaces (#58322)
gbaraldi May 6, 2025
f507ecb
Update install link in warning (#58638)
IanButterworth Jun 5, 2025
623884c
Unicode: Force-inline isgraphemebreak! (#58674)
Keno Jun 10, 2025
6f3d23e
Test: Fix failfast for for loops (#58695)
IanButterworth Jun 11, 2025
8cf6158
Test: Hide REPL internals in backtraces (#58732)
IanButterworth Jun 20, 2025
3104bec
Add a `similar` method for `Type{<:CodeUnits}` (#57826)
ararslan Jul 2, 2025
ed63f5a
Fix nthreadpools size in JLOptions (#58937)
IanButterworth Jul 9, 2025
03b53d3
Clarify and enhance confusing precompile test (#59170)
IanButterworth Jul 31, 2025
951d565
Update the developer docs to reflect the use of JuliaSyntax.jl (#59300)
ajwheeler Aug 19, 2025
3fffb59
[backports-release-1.10] Remove bfloat16 condition accidentally backp…
imciner2 Aug 22, 2025
1a3c229
[OpenBLAS_jll] Include patches to fix CASUM in 1.10 (#59346)
imciner2 Sep 12, 2025
37d1127
remove workaround for controlling terminal behavior in repl_cmd (#58554)
vtjnash May 29, 2025
0269d45
`@nospecialize` for `string_index_err` (#57604)
nsajko Aug 21, 2025
ed38aed
Enable getting non-boxed LLVM type from Julia Type (#56890)
wsmoses Sep 5, 2025
d269b23
[backports-release-1.11] Don't forget to decay value on struct initia…
gbaraldi Sep 9, 2025
0741bfe
Fix intrinsics test on 1.10 backports branch
DilumAluthge Sep 14, 2025
05ee0aa
Remove bad test
gbaraldi Sep 15, 2025
6901dde
CI 1.10: Use the 1.10-specific Buildkite branch (#59761)
DilumAluthge Oct 6, 2025
7bf0208
Remove bitrotten debug-only code in 1.10 (#59917)
vchuravy Oct 22, 2025
8988c1b
[backports-release-1.10] fix accidental save (and restore) of sigmask…
kpamnany Nov 4, 2025
704fae4
Backport to 1.10: bump Documenter to 1.15.0
fingolfin Nov 13, 2025
6217311
doc: correct unicode-input table generation (#51328)
mortenpi Sep 15, 2023
c390c12
Update Documenter 0.27.23 => 1.2.1 (#47105)
mortenpi Dec 5, 2023
413d434
Fix docs builds when not in Git tree (#54445)
mortenpi May 13, 2024
bd15dbe
Backport to 1.10: bump Documenter to 1.16.1 (#60218)
fingolfin Dec 28, 2025
c927f6b
Unicode: Remove the allocations test added in #58674
DilumAluthge Jan 14, 2026
0c2ae55
1.10: add getter for global variable pointer matching jlvalue (#60683)
wsmoses Jan 15, 2026
ddab6aa
Backport "Fix structure test for strided matrices" (#57218)
dkarrasch Jan 16, 2026
c84bf04
Fix devcontainer definition (#57006)
M-PERSIC Jan 10, 2025
e211c0c
Remove GPL libraries from the Julia build for binary-dist target (#59…
ViralBShah Sep 22, 2025
36a1469
fix `powermod` correctness on unsigned power of half typemax (#59680)
adienes Sep 30, 2025
a52d5e0
also redirect JL_STDERR etc. when redirecting to devnull (#55958)
IanButterworth Oct 4, 2025
3688cec
Add note about `@threads` threadpool (#59802)
IanButterworth Oct 11, 2025
3354280
Don't trigger full rebuild if git is dirty (#60023)
IanButterworth Nov 5, 2025
8d0578b
allow finding stdlibs that are normal packages in the manifest but ar…
KristofferC Nov 10, 2025
583b570
Fix removal of GPL libs (#60100)
nalimilan Nov 13, 2025
b176b26
Logging: define isless between Integer and LogLevel (#60330)
EdsterG Dec 10, 2025
c9452de
add wb_back on all task switch paths (#60617)
vtjnash Jan 15, 2026
5501fd7
Correct version in which at-lock was exported (#60279)
giordano Nov 29, 2025
4a02acf
fix #45494, error in ssa conversion with complex type decl (#55744)
JeffBezanson Sep 13, 2024
fd43584
CI: Pin external actions to full-length commit hashes
DilumAluthge Jan 19, 2026
a6d3bd2
Fix `hygienic-scope`s in inner macro expansions (#58965)
mlechu Jul 11, 2025
75f1a80
1.10: Update cacert to 2025-12-02 (#60745)
eschnett Jan 19, 2026
f1d9e85
[1.10] [LLVMAllocOpt] Preserve metadata lowering an alloca (#60776) (…
wsmoses Jan 23, 2026
c5f8d0d
Make `jl_reinit_foreign_type` idempotent even with asserts (#60827)
fingolfin Jan 27, 2026
ec3ef8b
Merge pull request #60834 from rokke-git/patch-5
rokke-git Jan 28, 2026
0fcf161
Fix typo in partially_inline! (#60854)
oscardssmith Jan 29, 2026
c8be17d
1.10: Bump MbedTLS from 2.28.2 to 2.28.1010 (2.28.10 plus patches) (#…
DilumAluthge Feb 2, 2026
df86fe4
Revert "Fix `hygienic-scope`s in inner macro expansions (#58965)"
KristofferC Feb 3, 2026
925f31f
Fix test causing assertion
gbaraldi Feb 9, 2026
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
2 changes: 1 addition & 1 deletion .buildkite-external-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
main
release-julia-1.10
3 changes: 0 additions & 3 deletions .devcontainer/Dockerfile

This file was deleted.

16 changes: 10 additions & 6 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
{
"extensions": [
"julialang.language-julia",
"ms-vscode.cpptools"
],

"dockerFile": "Dockerfile"
"image": "docker.io/library/julia:latest",
"customizations": {
"vscode": {
"extensions": [
"julialang.language-julia",
"ms-vscode.cpptools"
]
}
},
"onCreateCommand": "apt-get update && apt-get install -y build-essential libatomic1 python3 gfortran perl wget m4 cmake pkg-config git"
}
2 changes: 1 addition & 1 deletion .github/workflows/LabelCheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 2
steps:
- uses: yogevbd/enforce-label-action@2.2.2
- uses: yogevbd/enforce-label-action@a3c219da6b8fa73f6ba62b68ff09c469b3a1c024 # 2.2.2
with:
# REQUIRED_LABELS_ANY: "bug,enhancement,skip-changelog"
# REQUIRED_LABELS_ANY_DESCRIPTION: "Select at least one label ['bug','enhancement','skip-changelog']"
Expand Down
1 change: 1 addition & 0 deletions base/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@
/uv_constants.jl
/version_git.jl
/version_git.jl.phony
/version_git_dirty
/userimg.jl
/JuliaSyntax
1 change: 1 addition & 0 deletions base/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -314,4 +314,5 @@ clean:
-rm -f $(BUILDDIR)/file_constants.jl
-rm -f $(BUILDDIR)/version_git.jl
-rm -f $(BUILDDIR)/version_git.jl.phony
-rm -f $(BUILDDIR)/version_git_dirty
-rm -f $(build_private_libdir)/lib*.$(SHLIB_EXT)*
15 changes: 4 additions & 11 deletions base/client.jl
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,6 @@ stackframe_lineinfo_color() = repl_color("JULIA_STACKFRAME_LINEINFO_COLOR", :bol
stackframe_function_color() = repl_color("JULIA_STACKFRAME_FUNCTION_COLOR", :bold)

function repl_cmd(cmd, out)
shell = shell_split(get(ENV, "JULIA_SHELL", get(ENV, "SHELL", "/bin/sh")))
shell_name = Base.basename(shell[1])

# Immediately expand all arguments, so that typing e.g. ~/bin/foo works.
cmd.exec .= expanduser.(cmd.exec)

Expand Down Expand Up @@ -63,19 +60,15 @@ function repl_cmd(cmd, out)
cd(dir)
println(out, pwd())
else
@static if !Sys.iswindows()
if shell_name == "fish"
shell_escape_cmd = "begin; $(shell_escape_posixly(cmd)); and true; end"
else
shell_escape_cmd = "($(shell_escape_posixly(cmd))) && true"
end
if !Sys.iswindows()
shell = shell_split(get(ENV, "JULIA_SHELL", get(ENV, "SHELL", "/bin/sh")))
shell_escape_cmd = shell_escape_posixly(cmd)
cmd = `$shell -c $shell_escape_cmd`
end
try
run(ignorestatus(cmd))
catch
# Windows doesn't shell out right now (complex issue), so Julia tries to run the program itself
# Julia throws an exception if it can't find the program, but the stack trace isn't useful
# Julia throws an exception if it can't find the cmd (which may be the shell itself), but the stack trace isn't useful
lasterr = current_exceptions()
lasterr = ExceptionStack([(exception = e[1], backtrace = [] ) for e in lasterr])
invokelatest(display_error, lasterr)
Expand Down
22 changes: 12 additions & 10 deletions base/intfuncs.jl
Original file line number Diff line number Diff line change
Expand Up @@ -384,18 +384,20 @@ julia> powermod(5, 3, 19)
function powermod(x::Integer, p::Integer, m::T) where T<:Integer
p == 0 && return mod(one(m),m)
# When the concrete type of p is signed and has the lowest value,
# `p != 0 && p == -p` is equivalent to `p == typemin(typeof(p))` for 2's complement representation.
# `p < 0 && p == -p` is equivalent to `p == typemin(typeof(p))` for 2's complement representation.
# but will work for integer types like `BigInt` that don't have `typemin` defined
# It needs special handling otherwise will cause overflow problem.
if p == -p
imod = invmod(x, m)
rhalf = powermod(imod, -(p÷2), m)
r::T = mod(widemul(rhalf, rhalf), m)
isodd(p) && (r = mod(widemul(r, imod), m))
#else odd
return r
elseif p < 0
return powermod(invmod(x, m), -p, m)
if p < 0
if p == -p
imod = invmod(x, m)
rhalf = powermod(imod, -(p÷2), m)
r::T = mod(widemul(rhalf, rhalf), m)
isodd(p) && (r = mod(widemul(r, imod), m))
#else odd
return r
else
return powermod(invmod(x, m), -p, m)
end
end
(m == 1 || m == -1) && return zero(m)
b = oftype(m,mod(x,m)) # this also checks for divide by zero
Expand Down
3 changes: 3 additions & 0 deletions base/loading.jl
Original file line number Diff line number Diff line change
Expand Up @@ -460,6 +460,8 @@ function locate_package_env(pkg::PkgId, stopenv::Union{String, Nothing}=nothing)
path = manifest_uuid_path(env, pkg)
# missing is used as a sentinel to stop looking further down in envs
if path === missing
# Before stopping, try stdlib fallback
is_stdlib(pkg) && @goto stdlib_fallback
path = nothing
@goto done
end
Expand All @@ -471,6 +473,7 @@ function locate_package_env(pkg::PkgId, stopenv::Union{String, Nothing}=nothing)
stopenv == env && break
end
end
@label stdlib_fallback
# Allow loading of stdlibs if the name/uuid are given
# e.g. if they have been explicitly added to the project/manifest
mbypath = manifest_uuid_path(Sys.STDLIB, pkg)
Expand Down
3 changes: 3 additions & 0 deletions base/lock.jl
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,9 @@ end
```
This is similar to using [`lock`](@ref) with a `do` block, but avoids creating a closure
and thus can improve the performance.

!!! compat
`@lock` was added in Julia 1.3, and exported in Julia 1.7.
"""
macro lock(l, expr)
quote
Expand Down
2 changes: 2 additions & 0 deletions base/logging.jl
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,8 @@ end
LogLevel(level::LogLevel) = level

isless(a::LogLevel, b::LogLevel) = isless(a.level, b.level)
isless(a::LogLevel, b::Integer) = isless(a.level, b)
isless(a::Integer, b::LogLevel) = isless(a, b.level)
+(level::LogLevel, inc::Integer) = LogLevel(level.level+inc)
-(level::LogLevel, inc::Integer) = LogLevel(level.level-inc)
convert(::Type{LogLevel}, level::Integer) = LogLevel(level)
Expand Down
2 changes: 1 addition & 1 deletion base/meta.jl
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,7 @@ function _partially_inline!(@nospecialize(x), slot_replacements::Vector{Any},
end
return x
elseif head === :cfunction
@assert !isa(type_signature, UnionAll) || !isempty(spvals)
@assert !isa(type_signature, UnionAll) || !isempty(static_param_values)
if !isa(x.args[2], QuoteNode) # very common no-op
x.args[2] = _partially_inline!(x.args[2], slot_replacements, type_signature,
static_param_values, slot_offset,
Expand Down
2 changes: 1 addition & 1 deletion base/options.jl
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ struct JLOptions
commands::Ptr{Ptr{UInt8}} # (e)eval, (E)print, (L)load
image_file::Ptr{UInt8}
cpu_target::Ptr{UInt8}
nthreadpools::Int16
nthreadpools::Int8
nthreads::Int16
nmarkthreads::Int16
nsweepthreads::Int8
Expand Down
17 changes: 11 additions & 6 deletions base/stream.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1215,7 +1215,15 @@ function _redirect_io_libc(stream, unix_fd::Int)
-10 - unix_fd, Libc._get_osfhandle(posix_fd))
end
end
dup(posix_fd, RawFD(unix_fd))
GC.@preserve stream dup(posix_fd, RawFD(unix_fd))
nothing
end
function _redirect_io_cglobal(handle::Union{LibuvStream, IOStream, Nothing}, unix_fd::Int)
c_sym = unix_fd == 0 ? cglobal(:jl_uv_stdin, Ptr{Cvoid}) :
unix_fd == 1 ? cglobal(:jl_uv_stdout, Ptr{Cvoid}) :
unix_fd == 2 ? cglobal(:jl_uv_stderr, Ptr{Cvoid}) :
C_NULL
c_sym == C_NULL || unsafe_store!(c_sym, handle === nothing ? Ptr{Cvoid}(unix_fd) : handle.handle)
nothing
end
function _redirect_io_global(io, unix_fd::Int)
Expand All @@ -1226,11 +1234,7 @@ function _redirect_io_global(io, unix_fd::Int)
end
function (f::RedirectStdStream)(handle::Union{LibuvStream, IOStream})
_redirect_io_libc(handle, f.unix_fd)
c_sym = f.unix_fd == 0 ? cglobal(:jl_uv_stdin, Ptr{Cvoid}) :
f.unix_fd == 1 ? cglobal(:jl_uv_stdout, Ptr{Cvoid}) :
f.unix_fd == 2 ? cglobal(:jl_uv_stderr, Ptr{Cvoid}) :
C_NULL
c_sym == C_NULL || unsafe_store!(c_sym, handle.handle)
_redirect_io_cglobal(handle, f.unix_fd)
_redirect_io_global(handle, f.unix_fd)
return handle
end
Expand All @@ -1239,6 +1243,7 @@ function (f::RedirectStdStream)(::DevNull)
handle = open(nulldev, write=f.writable)
_redirect_io_libc(handle, f.unix_fd)
close(handle) # handle has been dup'ed in _redirect_io_libc
_redirect_io_cglobal(nothing, f.unix_fd)
_redirect_io_global(devnull, f.unix_fd)
return devnull
end
Expand Down
2 changes: 2 additions & 0 deletions base/strings/basic.jl
Original file line number Diff line number Diff line change
Expand Up @@ -795,6 +795,8 @@ write(io::IO, s::CodeUnits) = write(io, s.s)
unsafe_convert(::Type{Ptr{T}}, s::CodeUnits{T}) where {T} = unsafe_convert(Ptr{T}, s.s)
unsafe_convert(::Type{Ptr{Int8}}, s::CodeUnits{UInt8}) = unsafe_convert(Ptr{Int8}, s.s)

similar(::Type{<:CodeUnits{T}}, dims::Dims) where {T} = similar(Array{T}, dims)

"""
codeunits(s::AbstractString)

Expand Down
4 changes: 2 additions & 2 deletions base/strings/string.jl
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ An error occurred when trying to access `str` at index `i` that is not valid.
"""
struct StringIndexError <: Exception
string::AbstractString
index::Integer
index::Int
end
@noinline string_index_err(s::AbstractString, i::Integer) =
@noinline string_index_err((@nospecialize s::AbstractString), i::Integer) =
throw(StringIndexError(s, Int(i)))
function Base.showerror(io::IO, exc::StringIndexError)
s = exc.string
Expand Down
2 changes: 1 addition & 1 deletion base/strings/unicode.jl
Original file line number Diff line number Diff line change
Expand Up @@ -725,7 +725,7 @@ isgraphemebreak(c1::AbstractChar, c2::AbstractChar) =
# Stateful grapheme break required by Unicode-9 rules: the string
# must be processed in sequence, with state initialized to Ref{Int32}(0).
# Requires utf8proc v2.0 or later.
function isgraphemebreak!(state::Ref{Int32}, c1::AbstractChar, c2::AbstractChar)
@inline function isgraphemebreak!(state::Ref{Int32}, c1::AbstractChar, c2::AbstractChar)
if ismalformed(c1) || ismalformed(c2)
state[] = 0
return true
Expand Down
6 changes: 6 additions & 0 deletions base/threadingconstructs.jl
Original file line number Diff line number Diff line change
Expand Up @@ -234,8 +234,14 @@ A macro to execute a `for` loop in parallel. The iteration space is distributed
coarse-grained tasks. This policy can be specified by the `schedule` argument. The
execution of the loop waits for the evaluation of all iterations.

Tasks spawned by `@threads` are scheduled on the `:default` threadpool. This means that
`@threads` will not use threads from the `:interactive` threadpool, even if called from
the main thread or from a task in the interactive pool. The `:default` threadpool is
intended for compute-intensive parallel workloads.

See also: [`@spawn`](@ref Threads.@spawn) and
`pmap` in [`Distributed`](@ref man-distributed).
For more information on threadpools, see the chapter on [threadpools](@ref man-threadpools).

# Extended help

Expand Down
29 changes: 26 additions & 3 deletions base/version_git.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
echo "# This file was autogenerated by base/version_git.sh"
echo "struct GitVersionInfo"
echo " commit::String"
echo " commit_short::String"
echo " commit_short_raw::String"
echo " branch::String"
echo " build_number::Int"
echo " date_string::String"
Expand All @@ -17,6 +17,24 @@ echo " build_system_commit::String"
echo " build_system_commit_short::String"
echo "end"
echo ""
echo "function Base.getproperty(info::GitVersionInfo, s::Symbol)"
echo " if s === :commit_short"
echo " commit = getfield(info, :commit_short_raw)"
echo " dirty_file = joinpath(Sys.BINDIR, Base.DATAROOTDIR, \"julia\", \"base\", \"version_git_dirty\")"
echo " dirty_str = try"
echo " read(dirty_file, String)"
echo " catch"
echo " \"\""
echo " end"
echo " if strip(dirty_str) == \"true\""
echo " return commit * \"*\""
echo " end"
echo " return commit"
echo " else"
echo " return getfield(info, s)"
echo " end"
echo "end"
echo ""

cd $1

Expand All @@ -38,8 +56,9 @@ git_time=$(git log -1 --pretty=format:%ct)
commit=$(git rev-parse HEAD)
commit_short=$(git rev-parse --short HEAD)
if [ -n "$(git status --porcelain)" ]; then
# append dirty mark '*' if the repository has uncommitted changes
commit_short="$commit_short"*
dirty="true"
else
dirty="false"
fi

# Our CI system checks commits out as a detached head, and so we must
Expand Down Expand Up @@ -117,3 +136,7 @@ echo " $fork_master_timestamp.0,"
echo " \"$build_system_commit\","
echo " \"$build_system_commit_short\","
echo ")"

# Write dirty status to a separate file to avoid triggering rebuilds
# when only the dirty status changes
echo "$dirty" > version_git_dirty
1 change: 0 additions & 1 deletion deps/checksums/cacert-2023-01-10.pem/md5

This file was deleted.

1 change: 0 additions & 1 deletion deps/checksums/cacert-2023-01-10.pem/sha512

This file was deleted.

1 change: 1 addition & 0 deletions deps/checksums/cacert-2025-12-02.pem/md5
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fafa2b78f98273ea332251e3d1628b02
1 change: 1 addition & 0 deletions deps/checksums/cacert-2025-12-02.pem/sha512
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
aef293e084ef15a55a4f9dee395ee4bbbadea1f5a49c0590e0ff67a0630b5298d2bc79699ab95d70be0d2d06f9f1e55fe676b3e1d5ff912df88f2d6bff0d5736
Loading