Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
9494125
set VERSION to 1.12.3 (#60346)
KristofferC Dec 11, 2025
966d0af
release-1.12: Revert "build: More msys2 fixes (#59028)" (#60374)
KristofferC Dec 15, 2025
120dad2
Correct version in which at-lock was exported (#60279)
giordano Nov 29, 2025
a020033
Fix buffer overflow in jloptions (#60299)
vchuravy Dec 2, 2025
986bb5e
build: include `SuiteSparse` in pkgimages to precompile (#60291)
topolarity Dec 2, 2025
e35b957
Logging: define isless between Integer and LogLevel (#60330)
EdsterG Dec 10, 2025
a16e9c9
🤖 [release-1.12] Bump LinearAlgebra stdlib 997c4b7 → dd3ea72 (#60395)
DilumAluthgeBot Dec 16, 2025
be84d00
bump Pkg to latest 1.12
KristofferC Dec 16, 2025
cb92daf
use a "locally frozen world age" to invoke `_artifact_str` in (#60383)
KristofferC Dec 17, 2025
496a23a
MozillaCACerts: Update to 2025-11-04 (#60041)
eschnett Nov 4, 2025
8086974
Fix `remove-argument-side-effects` with keyword call (#60195)
mlechu Nov 22, 2025
dda7788
Make stdlib precompile failures throw (#60308)
IanButterworth Dec 3, 2025
32ebc18
Fix world age docs link, point to correct manual version (manual back…
fingolfin Dec 18, 2025
4c54caf
compiler: Fix typo in `abstract_invoke` (#60414)
aviatesk Dec 19, 2025
e7c011f
Backports for 1.12.4 (#60397)
KristofferC Dec 19, 2025
483d527
🤖 [release-1.12] Bump LinearAlgebra stdlib dd3ea72 → 7249e66
dkarrasch Dec 19, 2025
3b59c5a
🤖 [release-1.12] Bump Pkg stdlib 1dad5c513 → b322a8ff7
IanButterworth Dec 20, 2025
b322768
🤖 [release-1.12] Bump Pkg stdlib 1dad5c513 → b322a8ff7 (#60440)
ViralBShah Dec 20, 2025
ea46710
Merge branch 'release-1.12' into BumpStdlibs/LinearAlgebra-7249e66-re…
ViralBShah Dec 20, 2025
d415544
🤖 [release-1.12] Bump LinearAlgebra stdlib dd3ea72 → 7249e66 (#60424)
dkarrasch Dec 22, 2025
c7d674a
Don't create a subprocess in the REPL precompile script (#60326)
xal-0 Dec 6, 2025
4539b7b
[backports-release-1.12] Fix 7z rpath (#60419)
nhz2 Dec 22, 2025
f4fc113
Backports for 1.12.4 (#60449)
KristofferC Dec 22, 2025
f6eba2b
Fix JET warning in `_spawn_primitive` (#60452)
fingolfin Dec 23, 2025
46c22c8
Fix JET warnings in `copy_chunks!`, `copy_chunks_rtol!`, `fill_chunks…
fingolfin Dec 23, 2025
ae7a1c6
🤖 [release-1.12] Bump SparseArrays stdlib 5d674dc → f81a30d
dkarrasch Dec 23, 2025
d089750
Backports code quality PRs to 1.12 (#60455)
aviatesk Dec 23, 2025
2c50cb0
🤖 [release-1.12] Bump SparseArrays stdlib 5d674dc → f81a30d (#60457)
ViralBShah Dec 24, 2025
d15e1fb
Fix JET warning in `TOML.parse_array` (#60465)
fingolfin Dec 24, 2025
fb87ed4
Fix JET warning in Base.sendfile (#60466)
fingolfin Dec 24, 2025
798e447
Fix JET warning related to `_array_for` (#60461)
fingolfin Dec 27, 2025
368ae19
Backports more code quality PRs to v1.12 (#60469)
aviatesk Dec 27, 2025
01a2ead
set VERSION to 1.12.4 (#60539)
KristofferC Jan 6, 2026
9ef866a
[Windows][Makefile] Avoid installing `basecompiler-o.a` / `sysbase-o.a`
topolarity Jan 7, 2026
8c145c1
[release-1.12][Windows][Makefile] Avoid installing `basecompiler-o.a`…
gbaraldi Jan 8, 2026
de85ebb
🤖 [backports-release-1.12] Bump NetworkOptions stdlib 532992f → 7034c…
DilumAluthgeBot Dec 29, 2025
a198393
Docs: mention cmd line option for App Installer on Windows
davidanthoff Dec 23, 2025
5ae7e55
REPL: fix completion overwriting input after cursor (#60472)
IanButterworth Dec 25, 2025
eb2afda
Clarify that `cpu_info` times are expressed in milliseconds (#60480)
BioTurboNick Dec 27, 2025
387dd93
Fix `@allocated 1 .+ 1` (#60494)
N5N3 Dec 29, 2025
1ed5bdf
Fix JET warning by avoiding recursion in `getproperty(::DirEntry)` (#…
fingolfin Dec 29, 2025
89dc101
Fix JET warning in `artifact_meta` (#60507)
fingolfin Dec 29, 2025
e7b2b23
[backports-release-1.12] Fix build with USE_SYSTEM_P7ZIP=1 for 1.12 (…
nhz2 Jan 12, 2026
a6c2a27
1.12: add getter for global variable pointer matching jlvalue (#60685)
wsmoses Jan 14, 2026
ab6dd0a
Backport `@fastmath x^2` inlining regression to 1.12 (#60686)
oscardssmith Jan 14, 2026
634170e
Fix build with USE_SYSTEM_P7ZIP=1 (#60623)
nhz2 Jan 11, 2026
e1e955a
Don't set the owner of the string needlessly. (#60601)
gbaraldi Jan 14, 2026
b2bc423
add wb_back on all task switch paths (#60617)
vtjnash Jan 15, 2026
3c92c84
[LLVMAllocOpt] Preserve metadata lowering an alloca
wsmoses Jan 15, 2026
03eeb80
🤖 [backports-release-1.12] Bump SparseArrays stdlib f81a30d → 2376bf8…
DilumAluthgeBot Jan 16, 2026
d6a0cd2
Remove potential unitialized memory in the GC stack (#60651)
gbaraldi Jan 16, 2026
a7ec7a2
Print `full_name` after precompiling extension (#60456)
DilumAluthge Jan 16, 2026
30e745e
Add heap sized based full gc heuristic (#60376)
gbaraldi Dec 16, 2025
951ca46
[release-1.12] Fix JET warnings in `show(::IOBuffer, ::StackFrame)` (…
lgoettgens Jan 19, 2026
3484631
[JuliaSyntax] Bump version for 1.12 (#60641)
JamesWrigley Jan 19, 2026
b8fbf49
[1.12] Reland "Add getter for get llvm codeinstances" (#60738)
gbaraldi Jan 19, 2026
10ccaaf
[1.12] Reland "Enable getting non-boxed LLVM type from Julia Type" (#…
wsmoses Jan 20, 2026
e2ff74f
[1.12] LateLowerGCFrame: More relevant diagnostic information on non-…
wsmoses Jan 20, 2026
ce066ed
Preserve the scope across the exception handler (#60647)
vchuravy Jan 14, 2026
bf91f30
[1.12] Backport #60718+#60746: Fix and test `jl_method_lookup_by_tt` …
maleadt Jan 20, 2026
13b377a
[1.12] Don't skip CIs from external absints (#60741)
gbaraldi Jan 20, 2026
0d0c031
codegen: Use `emit_static_roots` for "allroots" case (#60656)
topolarity Jan 14, 2026
b8e84ae
[1.12] Fix `codeinfo_for_const` missing `nargs` and `isva` fields (#6…
maleadt Jan 24, 2026
3d40701
llvm: Fix alloca alignment and type selection in AllocOpt (#60699)
gbaraldi Jan 21, 2026
0f21d93
bindings: Define behavior of `using` an ambiguous binding (#60804)
Keno Jan 24, 2026
164ac88
Temporarily reintroduce a global type inference lock (#60689)
xal-0 Jan 20, 2026
a1391e5
bump Pkg to latest release-1.12
KristofferC Jan 28, 2026
422f456
Make `jl_reinit_foreign_type` idempotent even with asserts (#60827)
fingolfin Jan 27, 2026
fc45339
`deps/checksums`: Remove old Pkg checksums, and add new Pkg checksums
DilumAluthge Jan 29, 2026
0429a63
compiler/ssair: preserve negative NewSSAValue (#60688)
KristofferC Jan 29, 2026
eaba5ed
Fix typo in partially_inline! (#60854)
oscardssmith Jan 29, 2026
be1545c
ssair: fix phi edge cleanup for current block (#60697)
KristofferC Jan 29, 2026
f575438
inference: fix union split handling for custom lattices (#60857)
aviatesk Jan 29, 2026
4938a3e
Merge pull request #60834 from rokke-git/patch-5
rokke-git Jan 28, 2026
a93bf9a
Backports for 1.12.5 (#60612)
KristofferC Feb 3, 2026
91f65e4
[release-1.12] Bump julia-actions/setup-julia from 2.6.0 to 2.6.1
dependabot[bot] Feb 6, 2026
990220f
[release-1.12] Bump actions/checkout from 4.1.7 to 6.0.2
dependabot[bot] Feb 6, 2026
77485e1
Merge pull request #60948 from JuliaLang/dependabot/github_actions/re…
ViralBShah Feb 7, 2026
d59217a
Merge pull request #60950 from JuliaLang/dependabot/github_actions/re…
ViralBShah Feb 7, 2026
5fe89b8
set VERSION to 1.12.5
KristofferC Feb 9, 2026
1966e88
RAI: Add 'RAI' as the build part of the semantic version
NHDaly Dec 5, 2025
8289758
Add GitHub template and workflows needed on the default branch (#135)
Drvi Mar 19, 2024
6616647
RAI: Track blocks and bytes allocated for GC pools
d-netto Jan 6, 2025
e576370
RAI: Change task ordering behavior to prioritize older tasks
kpamnany Aug 9, 2023
edf4b9a
RAI: Disable huge pages for all mmap'ed memory
kpamnany Aug 21, 2023
5e6cc5c
RAI: Never use MADV_FREE
kuszmaul Aug 22, 2023
6a5344b
RAI: Prepend "thread (%d) " to output from `jl_print_task_backtraces()`
kpamnany Oct 9, 2023
15c1fea
RAI: Add heartbeat capability
kpamnany Oct 7, 2023
0cb4f3e
RAI: --safe-crash-log-file flag
d-netto Mar 22, 2024
ade7465
RAI: Write heartbeat thread output to safe crash log
kpamnany May 27, 2024
5ce7490
RAI: fix string interpolation on OPENBLAS_BUILD_OPTS
d-netto Jan 6, 2025
ef079da
RAI: Prepend signal number and thread ID on backtraces
kpamnany Aug 21, 2023
e8145da
RAI: do not prepend thread ID to backtraces from signal handler context
kpamnany Apr 18, 2024
9e34cda
Add `Base.isprecompilable` (#58805)
kpamnany Jul 2, 2025
69c4135
Fix GC corruption via two upstream PRs. (#272)
NHDaly Jan 16, 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
3 changes: 3 additions & 0 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# See https://github.com/actions/labeler
port-to-master: '**'
port-to-v1.10: '**'
14 changes: 14 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<!---
PRs to RelationalAI/julia must be opened to the correct branch (see
https://github.com/RelationalAI/raicode/blob/master/nix/julia-version.json).
-->
## PR Description

_What does this PR do?_

## Checklist

Requirements for merging:
- [ ] I have opened an issue or PR upstream on JuliaLang/julia: <link to JuliaLang/julia>
- [ ] I have removed the `port-to-*` labels that don't apply.
- [ ] I have opened a PR on raicode to test these changes: <link to raicode>
2 changes: 1 addition & 1 deletion .github/workflows/Typos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
timeout-minutes: 5
steps:
- name: Checkout the JuliaLang/julia repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Check spelling with typos
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/Whitespace.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ jobs:
timeout-minutes: 2
steps:
- name: Checkout the JuliaLang/julia repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: julia-actions/setup-julia@9b79636afcfb07ab02c256cede01fe2db6ba808c # v2.6.0
- uses: julia-actions/setup-julia@5c9647d97b78a5debe5164e9eec09d653d29bd71 # v2.6.1
with:
version: '1'
- name: Check whitespace
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cffconvert.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out a copy of the repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false

Expand Down
17 changes: 17 additions & 0 deletions .github/workflows/labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# See https://github.com/actions/labeler
name: "Pull Request Labeler"
on:
pull_request_target:
types:
- opened

jobs:
triage:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v4
with:
dot: true
16 changes: 16 additions & 0 deletions .github/workflows/stale.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: "Close stale PRs"
on:
schedule:
- cron: "0 0 * * *" # every night at midnight

jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v8
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-pr-message: 'This PR is stale because it has been open 30 days with no activity. Comment or remove stale label, or this PR will be closed in 5 days.'
days-before-stale: 30
days-before-close: 5
stale-pr-label: 'stale'
28 changes: 28 additions & 0 deletions .github/workflows/update-upstream-branches.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: "Update upstream branches"
on:
schedule:
- cron: "0 0 * * *" # every night at midnight
workflow_dispatch:

jobs:
PullUpstream:
runs-on: ubuntu-latest
strategy:
fail-fast: false # run all jobs in the matrix even if one fails
matrix:
branch:
- "master"
- "backports-release-1.10"
steps:
- name: Checkout RAI/julia
uses: actions/checkout@v3
with:
ref: ${{ matrix.branch }}
- name: Update ${{ matrix.branch }}
run: |
git config --global user.email "julia-engineering@relational.ai"
git config --global user.name "RAI CI (GitHub Action Automation)"

git remote add upstream https://github.com/JuliaLang/julia
git pull upstream ${{ matrix.branch }}
git push origin ${{ matrix.branch }}
2 changes: 1 addition & 1 deletion Compiler/src/abstractinterpretation.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2247,7 +2247,7 @@ function abstract_invoke(interp::AbstractInterpreter, arginfo::ArgInfo, si::Stmt
return Future(CallMeta(Bottom, ErrorException, EFFECTS_THROWS, NoCallInfo()))
end
# TODO: When we add curing, we may want to assume this is nothrow
if (method_or_ci.owner === Nothing && method_ir_ci.def.def isa Method)
if (method_or_ci.owner === Nothing && method_or_ci.def.def isa Method)
exct = Union{exct, ErrorException}
end
update_valid_age!(sv, callee_valid_range)
Expand Down
31 changes: 23 additions & 8 deletions Compiler/src/ssair/ir.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1373,8 +1373,19 @@ function kill_edge!(ir::IRCode, from::Int, to::Int, callback=nothing)
kill_edge!(ir.cfg.blocks, from, to, callback)
end

# N.B.: from and to are non-renamed indices
function kill_edge!(compact::IncrementalCompact, active_bb::Int, from::Int, to::Int)
@inline function compacted_stmt_range(compact::IncrementalCompact, bb::BasicBlock, active_bb::Int, to::Int)
to == active_bb && return StmtRange(first(bb.stmts), compact.result_idx - 1)
return bb.stmts
end

"""
kill_edge_terminator!(compact::IncrementalCompact, active_bb::Int, from::Int, to::Int)

Kill a CFG edge while compacting a terminator in `active_bb`. Assumes all PhiNode
block statements in `to` have already been processed, so the active BB may only
scan the compacted prefix when `to == active_bb`. `from` and `to` are non-renamed indices.
"""
function kill_edge_terminator!(compact::IncrementalCompact, active_bb::Int, from::Int, to::Int)
# Note: We recursively kill as many edges as are obviously dead.
(; bb_rename_pred, bb_rename_succ, result_bbs, domtree) = compact.cfg_transform
preds = result_bbs[bb_rename_succ[to]].preds
Expand All @@ -1390,7 +1401,7 @@ function kill_edge!(compact::IncrementalCompact, active_bb::Int, from::Int, to::
for succ in copy(to_succs)
new_succ = findfirst(x::Int->x==succ, bb_rename_pred)
new_succ === nothing && continue
kill_edge!(compact, active_bb, to, new_succ)
kill_edge_terminator!(compact, active_bb, to, new_succ)
end
empty!(preds)
empty!(to_succs)
Expand All @@ -1412,8 +1423,9 @@ function kill_edge!(compact::IncrementalCompact, active_bb::Int, from::Int, to::
# Remove this edge from all phi nodes in `to` block
# NOTE: It is possible for `to` to contain only `nothing` statements,
# so we must be careful to stop at its last statement
if to < active_bb
stmts = result_bbs[bb_rename_succ[to]].stmts
if to <= active_bb
bb = result_bbs[bb_rename_succ[to]]
stmts = compacted_stmt_range(compact, bb, active_bb, to)
idx = first(stmts)
while idx <= last(stmts)
stmt = compact.result[idx][:stmt]
Expand Down Expand Up @@ -1493,14 +1505,14 @@ function process_node!(compact::IncrementalCompact, result_idx::Int, inst::Instr
if cond
ssa_rename[idx] = nothing
result[result_idx][:stmt] = nothing
kill_edge!(compact, active_bb, active_bb, stmt.dest)
kill_edge_terminator!(compact, active_bb, active_bb, stmt.dest)
# Don't increment result_idx => Drop this statement
else
label = bb_rename_succ[stmt.dest]
@assert label > 0
ssa_rename[idx] = SSAValue(result_idx)
result[result_idx][:stmt] = GotoNode(label)
kill_edge!(compact, active_bb, active_bb, active_bb+1)
kill_edge_terminator!(compact, active_bb, active_bb, active_bb+1)
result_idx += 1
end
else
Expand Down Expand Up @@ -1675,7 +1687,10 @@ function process_node!(compact::IncrementalCompact, result_idx::Int, inst::Instr
stmt = ssa_rename[stmt.id]
end
elseif isa(stmt, NewSSAValue)
stmt = SSAValue(stmt.id)
if stmt.id > 0
# Negative ids reference new_new_nodes and must remain NewSSAValue.
stmt = SSAValue(stmt.id)
end
else
# Constant assign, replace uses of this ssa value with its result
end
Expand Down
2 changes: 2 additions & 0 deletions Compiler/src/typeinfer.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1052,6 +1052,8 @@ function codeinfo_for_const(interp::AbstractInterpreter, mi::MethodInstance, @no
tree.ssaflags = [IR_FLAG_NULL]
tree.rettype = Core.Typeof(val)
tree.edges = Core.svec()
tree.nargs = UInt(nargs)
tree.isva = method.isva
set_inlineable!(tree, true)
tree.parent = mi
return tree
Expand Down
5 changes: 3 additions & 2 deletions Compiler/src/typeutils.jl
Original file line number Diff line number Diff line change
Expand Up @@ -277,8 +277,9 @@ function _switchtupleunion(𝕃::AbstractLattice, t::Vector{Any}, i::Int, tunion
_switchtupleunion(𝕃, t, i - 1, tunion, origt)
end
t[i] = origti
elseif has_extended_unionsplit(𝕃) && !isa(ti, Const) && !isvarargtype(ti) && isa(widenconst(ti), Union)
for ty in uniontypes(ti)
elseif (has_extended_unionsplit(𝕃) && !isa(ti, Const) && !isvarargtype(ti) &&
(wty = widenconst(ti); isa(wty, Union)))
for ty in uniontypes(wty)
t[i] = ty
_switchtupleunion(𝕃, t, i - 1, tunion, origt)
end
Expand Down
9 changes: 9 additions & 0 deletions Compiler/test/inference.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2591,6 +2591,15 @@ end == Integer
Val(isdefined(xxx.value, :x))
end == Val{true}

# Test union splitting for MustAlias
struct GetSomethingA; x::Union{Nothing,Int}; end
struct GetSomethingB; x::Int; end
getsomethingx(a::GetSomethingA) = something(a.x, 0)
getsomethingx(b::GetSomethingB) = b.x
@test Base.infer_return_type((Union{GetSomethingA,GetSomethingB},); interp=MustAliasInterpreter()) do x
getsomethingx(x)
end == Int

@testset "issue #56913: `BoundsError` in type inference" begin
R = UnitRange{Int}
@test Type{AbstractVector} == Base.infer_return_type(Base.promote_typeof, Tuple{R, R, Vector{Any}, Vararg{R}})
Expand Down
16 changes: 16 additions & 0 deletions Compiler/test/irpasses.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2059,3 +2059,19 @@ let src = code_typed1((Vector{Any},)) do xs
end
@test count(iscall((src, Core.svec)), src.code) == 1
end

# Negative NewSSAValue ids must be preserved during compaction
function f_57827(op, init, x)
v = op(init, x)
i = 0
while i < 1
v = op(v, x)
i += 1
end
return v
end
let rf = (acc, x) -> ifelse(x > acc[1], (x,), (acc[1],))
@test f_57827(rf, (0.0,), 1) === (1,)
ir = first(only(Base.code_ircode(f_57827, (typeof(rf), Tuple{Float64}, Int64); optimize_until="CC: SROA")))
@test ir isa Compiler.IRCode
end
43 changes: 43 additions & 0 deletions Compiler/test/ssair.jl
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,21 @@ let cfg = CFG(BasicBlock[
@test length(compact.cfg_transform.result_bbs) == 4 && 0 in compact.cfg_transform.result_bbs[3].preds
end

# Test that removing a self-edge during compaction only scans compacted phi statements.
let code = Any[
# Block 1
Compiler.GotoNode(2),
# Block 2
Core.PhiNode(Int32[1, 3], Any[1, 2]),
Compiler.GotoIfNot(true, 2),
# Block 3
Compiler.ReturnNode(0),
]
ir = make_ircode(code)
ir = Compiler.compact!(ir, true)
@test Compiler.verify_ir(ir) === nothing
end

# Issue #32579 - Optimizer bug involving type constraints
function f32579(x::Int, b::Bool)
if b
Expand Down Expand Up @@ -838,3 +853,31 @@ end
let ir = Base.code_ircode(_worker_task57153, (), optimize_until="CC: COMPACT_2")[1].first
@test findfirst(x->x==0, ir.cfg.blocks[1].preds) !== nothing
end

# codeinfo_for_const should set nargs and isva
let
_const_return_func(@nospecialize(x)) = 42
mi = Compiler.specialize_method(only(methods(_const_return_func)), Tuple{typeof(_const_return_func), Int}, Core.svec())
ci = Compiler.codeinfo_for_const(Compiler.NativeInterpreter(), mi, 42)
@test ci.nargs == 2
@test ci.isva == false
# inflate_ir! should succeed now that nargs/isva are set
ir = Compiler.inflate_ir!(ci, mi)
@test ir isa Compiler.IRCode
end

# Tests that CFG edge cleanup during compaction doesn't corrupt iteration codegen.
Trips_60660 = let
Ts = (Float64, Float32)
[(Ta, Tb, Tc) for Ta in Ts for Tb in Ts for Tc in Ts]
end
@test Trips_60660 == [
(Float64, Float64, Float64),
(Float64, Float64, Float32),
(Float64, Float32, Float64),
(Float64, Float32, Float32),
(Float32, Float64, Float64),
(Float32, Float64, Float32),
(Float32, Float32, Float64),
(Float32, Float32, Float32),
]
2 changes: 1 addition & 1 deletion Make.inc
Original file line number Diff line number Diff line change
Expand Up @@ -381,7 +381,7 @@ $(foreach D,build_libdir build_private_libdir,$(eval $(call cache_rel_path,$(D),
# Save a special one: reverse_private_libdir_rel: usually just `../`, but good to be general:
reverse_private_libdir_rel_eval = $(call rel_path,$(private_libdir),$(libdir))
reverse_private_libdir_rel = $(call hit_cache,reverse_private_libdir_rel_eval)
reverse_private_libexecdir_rel_eval = $(call rel_path,$(private_libexecdir),$(libdir))
reverse_private_libexecdir_rel_eval = $(call rel_path,$(private_libexecdir),$(private_libdir))
reverse_private_libexecdir_rel = $(call hit_cache,reverse_private_libexecdir_rel_eval)
reverse_build_private_libexecdir_rel_eval = $(call rel_path,$(build_private_libexecdir),$(build_libdir))
reverse_build_private_libexecdir_rel = $(call hit_cache,reverse_build_private_libexecdir_rel_eval)
Expand Down
36 changes: 33 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ default: $(JULIA_BUILD_MODE) # contains either "debug" or "release"
all: debug release

# sort is used to remove potential duplicates
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))
DIRS := $(sort $(build_bindir) $(build_depsbindir) $(build_libdir) $(build_private_libdir) $(build_private_libexecdir) $(build_libexecdir) $(build_includedir) $(build_includedir)/julia $(build_sysconfdir)/julia $(build_datarootdir)/julia $(build_datarootdir)/julia/stdlib $(build_man1dir))
ifneq ($(BUILDROOT),$(JULIAHOME))
BUILDDIRS := $(BUILDROOT) $(addprefix $(BUILDROOT)/,base src src/flisp src/support src/clangsa cli doc deps stdlib test test/clangsa test/embedding test/gcext test/llvmpasses)
BUILDDIRMAKE := $(addsuffix /Makefile,$(BUILDDIRS)) $(BUILDROOT)/sysimage.mk $(BUILDROOT)/pkgimage.mk
Expand Down Expand Up @@ -325,8 +325,7 @@ else ifeq ($(JULIA_BUILD_MODE),debug)
-$(INSTALL_M) $(build_libdir)/libjulia-debug.dll.a $(DESTDIR)$(libdir)/
-$(INSTALL_M) $(build_libdir)/libjulia-internal-debug.dll.a $(DESTDIR)$(libdir)/
endif
-$(INSTALL_M) $(wildcard $(build_private_libdir)/*.a) $(DESTDIR)$(private_libdir)/
-rm -f $(DESTDIR)$(private_libdir)/sys-o.a
-$(INSTALL_M) $(filter-out %-bc.a %-o.a,$(wildcard $(build_private_libdir)/lib*.a)) $(DESTDIR)$(private_libdir)/

-$(INSTALL_M) $(build_bindir)/libopenlibm.dll.a $(DESTDIR)$(libdir)/
-$(INSTALL_M) $(build_libdir)/libssp.dll.a $(DESTDIR)$(libdir)/
Expand Down Expand Up @@ -485,6 +484,37 @@ else ifeq ($(JULIA_BUILD_MODE),debug)
$(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT)
$(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-codegen-debug.$(SHLIB_EXT)
endif
endif

ifeq ($(OS), Darwin)
ifneq ($(DARWIN_FRAMEWORK),1)
for j in $(JL_PRIVATE_TOOLS) ; do \
[ -L $(DESTDIR)$(private_libexecdir)/$$j ] && continue; \
install_name_tool -rpath @loader_path/$(build_libdir_rel) @executable_path/$(reverse_private_libexecdir_rel) $(DESTDIR)$(private_libexecdir)/$$j || exit 1; \
done
endif
else ifneq (,$(findstring $(OS),Linux FreeBSD))
for j in $(JL_PRIVATE_TOOLS) ; do \
[ -L $(DESTDIR)$(private_libexecdir)/$$j ] && continue; \
$(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN/$(reverse_private_libexecdir_rel)' $(DESTDIR)$(private_libexecdir)/$$j || exit 1; \
done
endif

ifneq ($(reverse_private_libexecdir_rel),$(reverse_build_private_libexecdir_rel))
ifeq ($(OS), Darwin)
ifneq ($(DARWIN_FRAMEWORK),1)
for j in $(JL_PRIVATE_EXES) ; do \
[ $$j = 7z ] && continue; \
[ -L $(DESTDIR)$(private_libexecdir)/$$j ] && continue; \
install_name_tool -rpath @executable_path/$(reverse_build_private_libexecdir_rel) @executable_path/$(reverse_private_libexecdir_rel) $(DESTDIR)$(private_libexecdir)/$$j || exit 1; \
done
endif
else ifneq (,$(findstring $(OS),Linux FreeBSD))
for j in $(JL_PRIVATE_EXES) ; do \
[ -L $(DESTDIR)$(private_libexecdir)/$$j ] && continue; \
$(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN/$(reverse_private_libexecdir_rel)' $(DESTDIR)$(private_libexecdir)/$$j || exit 1; \
done
endif
endif

# Fix rpaths for dependencies. This should be fixed in BinaryBuilder later.
Expand Down
2 changes: 1 addition & 1 deletion NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ New language features
entry points. Entry points can be marked using `Base.Experimental.entrypoint` ([#55047]). Not all
code is expected to work with this option, and since it is experimental you may encounter problems.
* Redefinition of constants is now well defined and follows world age semantics ([#57253]). Additional redefinitions
(e.g. of types) are now allowed. See [the new manual chapter on world age](https://docs.julialang.org/en/v1.13-dev/manual/worldage/).
(e.g. of types) are now allowed. See [the new manual chapter on world age](https://docs.julialang.org/en/v1/manual/worldage/).
* A new keyword argument `usings::Bool` has been added to `names`, returning all names visible
via `using` ([#54609]).
* The `@atomic` macro family now supports reference assignment syntax, e.g. `@atomic :monotonic v[3] += 4`,
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.12.2
1.12.5+RAI
Loading
Loading