Skip to content

Comments

CI: Add a CI job that runs the JET tests, and fix multiple JET errors#33

Draft
DilumAluthge wants to merge 13 commits intomasterfrom
dpa/jet
Draft

CI: Add a CI job that runs the JET tests, and fix multiple JET errors#33
DilumAluthge wants to merge 13 commits intomasterfrom
dpa/jet

Conversation

@DilumAluthge
Copy link
Member

@DilumAluthge DilumAluthge commented Feb 21, 2026

@codecov
Copy link

codecov bot commented Feb 21, 2026

Codecov Report

❌ Patch coverage is 90.90909% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 87.42%. Comparing base (fbca46f) to head (b813f6c).

Files with missing lines Patch % Lines
src/managers.jl 75.00% 2 Missing ⚠️
src/messages.jl 50.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master      #33      +/-   ##
==========================================
+ Coverage   87.39%   87.42%   +0.03%     
==========================================
  Files          11       11              
  Lines        2086     2092       +6     
==========================================
+ Hits         1823     1829       +6     
  Misses        263      263              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@JamesWrigley
Copy link
Collaborator

Thanks ❤️ Might take a week or two for me to get to this because there's some other updates for general Julia compatibility I also need to do.

…r` at a certain point (#169)

* Fix a JET error regarding the existence of the local variable `reducer` at a certain point

```
┌ var"@distributed"(__source__::LineNumberNode, __module__::Module, args::Vararg{Any}) @ Distributed /workpath/Distributed.jl/src/macros.jl:363
│ local variable `reducer` may be undefined: reducer::Any
└────────────────────
```

By the time we get to this location in the code, we know that the local variable `reducer` exists, by the following reasoning. If the number of arguments is 1, then we have already returned before this point. If the number of arguments is neither 1 nor 2, then we have already thrown an exception by this point. Thus, if we reach this line, the number of arguments must be 2. Since the number of arguments is 2, we know that we executed the `reducer = args[1]` line above, which means that `reducer` is defined.

(cherry picked from commit cdb110658e0e3a89de3739b05679863fefb5b91b)

* Define `reducer = identity` in the `na==1` branch

(cherry picked from commit 1bc91f97a75c1ac321ed28dfca072cbabfad7b4c)
```
┌  @ Distributed /workpath/Distributed.jl/src/process_messages.jl:321
│ no matching method found `send_msg_now(::Distributed.LocalProcess, ::Distributed.MsgHeader, ::Distributed.IdentifySocketAckMsg)` (1/2 union split): Distributed.send_msg_now(w, Distributed.MsgHeader()::Distributed.MsgHeader, Distributed.IdentifySocketAckMsg()::Distributed.IdentifySocketAckMsg)
└────────────────────
```

```
┌  @ Distributed /workpath/Distributed.jl/src/process_messages.jl:359
│ no matching method found `send_msg_now(::Distributed.LocalProcess, ::Distributed.MsgHeader, ::Distributed.JoinCompleteMsg)` (1/2 union split): Distributed.send_msg_now(controller::Union{Distributed.LocalProcess, Distributed.Worker}, Distributed.MsgHeader(Distributed.RRID(0, 0)::Distributed.RRID, (header::Distributed.MsgHeader).notify_oid::Distributed.RRID)::Distributed.MsgHeader, Distributed.JoinCompleteMsg((Distributed.Sys).CPU_THREADS::Int64, Distributed.getpid()::Int32)::Distributed.JoinCompleteMsg)
└────────────────────
```

```
┌ connect_to_peer(manager::Distributed.ClusterManager, rpid::Int64, wconfig::Distributed.WorkerConfig) @ Distributed /workpath/Distributed.jl/src/process_messages.jl:368
│ no matching method found `send_msg_now(::Distributed.LocalProcess, ::Distributed.MsgHeader, ::Distributed.IdentifySocketMsg)` (1/2 union split): Distributed.send_msg_now(w, Distributed.MsgHeader()::Distributed.MsgHeader, Distributed.IdentifySocketMsg(myid()::Int64)::Distributed.IdentifySocketMsg)
└────────────────────
```

```
┌ send_msg_now(s::Base.PipeEndpoint, header::Distributed.MsgHeader, msg::Distributed.ResultMsg) @ Distributed //workl/clones/JuliaLang/Distributed.jl/src/messages.jl:113
│ no matching method found `send_msg_now(::Distributed.LocalProcess, ::Distributed.MsgHeader, ::Distributed.(1/2 union split): Distributed.send_msg_now(Distributed.worker_from_id(id::Int64)::Union{Distributed.LocalProcess, Worker}, header::Distributed.MsgHeader, msg::Distributed.ResultMsg)
└────────────────────
```

(cherry picked from commit 305d6fc4280de14f015c13a080c785bf68c34785)
(cherry picked from commit 871e3d746ab0c7668462f7b88515a362da9c11f1)
….)` (#167)

```
┌ put_ref(rid::Distributed.RRID, caller::Int64, args::WeakRef) @ Distributed /workpath/Distributed.jl/src/remotecall.jl:709
│ no matching method found `lock(::Nothing)` (1/2 union split): Distributed.lock((rv::Distributed.RemoteValue).synctake::Union{Nothing, ReentrantLock})
└────────────────────
```

```
┌ put_ref(rid::Distributed.RRID, caller::Int64, args::WeakRef) @ Distributed /workpath/Distributed.jl/src/remotecall.jl:710
│ no matching method found `unlock(::Nothing)` (1/2 union split): Distributed.unlock((rv::Distributed.RemoteValue).synctake::Union{Nothing, ReentrantLock})
││││││││││││││└────────────────────
```

```
┌ take_ref(rid::Any, caller::Any, args::Vararg{Any}) @ Distributed /workpath/Distributed.jl/src/remotecall.jl:734
│ no matching method found `lock(::Nothing)` (1/2 union split): Distributed.lock((rv::Distributed.RemoteValue).synctake::Union{Nothing, ReentrantLock})
└────────────────────
```

```
┌ take_ref(rid::Any, caller::Any, args::Vararg{Any}) @ Distributed /workpath/Distributed.jl/src/remotecall.jl:742
│ no matching method found `unlock(::Nothing)` (1/2 union split): Distributed.unlock((rv::Distributed.RemoteValue).synctake::Union{Nothing, ReentrantLock})
└────────────────────
```

```
┌ (::Distributed.var"#handle_msg##2#handle_msg##3"{Distributed.CallMsg{…}, Distributed.MsgHeader, Base.PipeEndpoint})() @ Distributed /workpath/Distributed.jl/src/process_messages.jl:292
│ no matching method found `unlock(::Nothing)` (1/2 union split): Distributed.unlock(((v::Distributed.SyncTake).rv::Distributed.RemoteValue).synctake::Union{Nothing, ReentrantLock})
└────────────────────
```

(cherry picked from commit 01027d14d994da11b8962d9a20a2f5a6888dec5f)
(cherry picked from commit 9f6459f83f08e2ef147d102afc1ea5d6d8ab1ec1)
```
┌ send_msg(s::IO, header::Any, msg::Any) @ Distributed /workpath/Distributed.jl/src/messages.jl:105
│ no matching method found `send_msg(::Distributed.LocalProcess, ::Any, ::Any)` (1/2 union split): Distributed.send_msg(Distributed.worker_from_id(id::Int64)::Union{Distributed.LocalProcess, Distributed.Worker}, header::Any, msg::Any)
└────────────────────
```

(cherry picked from commit 7223f4f14dc3749515ae36e76973045e27791606)
(cherry picked from commit 56fa9f214afd5f2c487ac4132aee8e50daf19c0e)
…` (#174)

```
┌  @ Distributed /workpath/Distributed.jl/src/managers.jl:323
│ no matching method found `shell_escape_wincmd(::Nothing)` (1/2 union split): remotecmd = Distributed.shell_escape_wincmd(Distributed.escape_microsoft_c_args(tuple(exename::Any)::Tuple{Any}, exeflags::Cmd...)::Union{Nothing, String})
└────────────────────
```

(cherry picked from commit 75c559c21fa28cafba9c9c2e6fdc87d2d8b55f57)
```
┌ setup_launched_worker(manager::Distributed.SSHManager, wconfig::Distributed.WorkerConfig, launched_q::Vector{Int64}) @ Distributed /workpath/Distributed.jl/src/cluster.jl:563
│ no matching method found `getindex(::Nothing, ::Symbol)` (1/2 union split): cnt = ((wconfig::Distributed.WorkerConfig).environ::Union{Nothing, Dict})[:cpu_threads]
└────────────────────
```

(cherry picked from commit 61ff327e0aa53d25c29780327adab66ab4dcd244)
(cherry picked from commit d06aa735f9511ac2618884e77e7caf29fdaeb1b1)
* Fix a JET error around matching methods for `push!(...)`

```
┌  @ Distributed /workpath/Distributed.jl/src/process_messages.jl:387
│ no matching method found `push!(::Nothing, ::Any)` (1/2 union split): Distributed.push!(default_worker_pool()::Union{Nothing, Distributed.AbstractWorkerPool}, w.id::Any)
└────────────────────
```

(cherry picked from commit f15f306adaafbedc2f431c96087da2ea483c9558)

* Add a `::AbstractWorkerPool` return type annotation to `default_worker_pool()`

* Add a type annotation in an additional place, to fix another JET error

(cherry picked from commit b7c43b235a963d19ec1c5e5aa9b8a565b6e49c34)
…terManager` to a global constant `Ref{ClusterManager}` (#177)

(cherry picked from commit 2fe1aa4e267517565e99cd06664550dcd230cfc6)
…e()`; this fixes a JET error around matching methods for `run_work_thunk(...)` (#181)

This fixes the following JET error:

```
  │┌ run_work_thunk(rv::Distributed.RemoteValue, thunk::Bool) @ Distributed /workpath/Distributed.jl/src/process_messages.jl:79
  ││ no matching method found `run_work_thunk(::Bool, ::Bool)`: Distributed.run_work_thunk(thunk::Bool, false)
  │└────────────────────
```

(cherry picked from commit 2adcd26e81cec03dbf81fa94071b4c4499e539a1)
….)` (#171)

```
┌ connect(manager::Distributed.SSHManager, pid::Int64, config::Distributed.WorkerConfig) @ Distributed /workpath/Distributed.jl/src/managers.jl:582
│ no matching method found `read_worker_host_port(::Nothing)` (1/2 union split): Distributed.read_worker_host_port((config::Distributed.WorkerConfig).io::Union{Nothing, IO})
└────────────────────
```

(cherry picked from commit d259b8d3cc24686430a7285abeed574ed46768e7)
(cherry picked from commit 0cf99106072adf5527acd48c668cd95c925e114f)
…(x, y)` function (#175)

```
  ┌ create_worker(manager::Any, wconfig::Any) @ Distributed /workpath/Distributed.jl/src/cluster.jl:620
  │ no matching method found `kwcall(::NamedTuple{(:config,), <:Tuple{Any}}, ::Type{Distributed.Worker}, ::Any, ::Sockets.TCPSocket, ::Sockets.TCPSocket, ::Base.LibuvStream)` (1/2 union split): Core.kwcall(NamedTuple{(:config,)}(tuple(wconfig::Any)::Tuple{Any})::NamedTuple{(:config,), <:Tuple{Any}}, Distributed.Worker, (getfield(w::Core.Box, :contents)::Any).id::Any, r_s::Sockets.TCPSocket, w_s::Sockets.TCPSocket, manager::Union{Base.LibuvStream, Distributed.ClusterManager})
  └────────────────────
```

(cherry picked from commit 79b4ca8d7b498a728912bf9d66d31890ff0f8667)
(cherry picked from commit d65a9960ae358806312c1adf35f45c62f02caf0b)
@JamesWrigley
Copy link
Collaborator

BTW could we stick to multi-commit PRs like this in the future instead of the dozens of separate small PRs? 😅 That many different PRs is not really manageable.

@DilumAluthge DilumAluthge changed the title CI: Add a CI job that runs the JET tests CI: Add a CI job that runs the JET tests, and fix multiple JET errors Feb 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants