@@ -20,31 +20,37 @@ permissions:
2020
2121jobs :
2222 test :
23- name : Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }}
2423 runs-on : ${{ matrix.os }}
2524 strategy :
2625 fail-fast : false
2726 matrix :
2827 version :
28+ - ' 1.10'
29+ - ' 1.11'
30+ - ' 1.12'
2931 - ' nightly'
30- - ' 1'
31- - ' 1.9'
3232 os :
3333 - ubuntu-latest
3434 - windows-latest
35- arch :
36- - x64
37- - x86
38- include :
39- - os : macOS-latest
40- arch : aarch64
41- version : ' 1'
42- - os : macOS-latest
43- arch : aarch64
44- version : ' nightly'
35+ - macos-15-intel # Intel
36+ - macos-latest # Apple Silicon
37+ julia-wordsize :
38+ # The value here only affects the version of Julia binary that we download.
39+ # It does not affect the architecture of the GitHub Runner (virtual machine) that
40+ # we run on.
41+ - ' 32' # 32-bit Julia. Only available on x86_64. Not available on aarch64.
42+ - ' 64' # 64-bit Julia.
4543 exclude :
46- - os : windows-latest # Killing workers doesn't work on windows in 1.9
47- version : ' 1.9'
44+ # Killing workers doesn't work on Windows in Julia 1.10:
45+ - os : windows-latest
46+ version : ' 1.10'
47+ # We don't have 32-bit builds of Julia for Intel macOS:
48+ - os : macos-15-intel # Intel
49+ julia-wordsize : ' 32'
50+ #
51+ # We don't have 32-bit builds of Julia for Apple Silicon macOS:
52+ - os : macos-latest # Apple Silicon
53+ julia-wordsize : ' 32'
4854
4955 steps :
5056 - uses : actions/checkout@v6
5359 - uses : julia-actions/setup-julia@v2
5460 with :
5561 version : ${{ matrix.version }}
56- arch : ${{ matrix.arch }}
62+ # If `julia-wordsize` is 32, then we set `arch` to `x86`, because we know that
63+ # 32-bit builds of Julia are only available for x86.
64+ #
65+ # If `julia-wordsize` is 64, then we set `arch` to `${{ runner.arch }}`, which
66+ # GitHub will automatically expand to the correct value (`x86_64` or `aarch64`)
67+ # based on the architecture of the underlying GitHub Runner (virtual machine).
68+ arch : ${{ github.ref == '32' && 'x86' || runner.arch }}
5769 - uses : actions/cache@v5
5870 env :
5971 cache-name : cache-artifacts
6577 ${{ runner.os }}-test-${{ matrix.os }}
6678 ${{ runner.os }}-
6779 - uses : julia-actions/julia-buildpkg@v1
80+ - name : Decide what the value of JULIA_NUM_THREADS should be
81+ id : decide-numthreads-str
82+ run : |
83+ if Base.VERSION >= v"1.12-"
84+ # The x,y format for threadpools requires Julia 1.9 or above.
85+ # However, Julia didn't begin starting with 1 interactive thread by default until Julia 1.12
86+ # So we don't need to bother with this on Julia 1.11 and earlier
87+ value = "1,0"
88+ else
89+ value = "1"
90+ end
91+ open(ENV["GITHUB_OUTPUT"], "a") do io
92+ name = "numthreads"
93+ line = "$(name)=$(value)"
94+ println(io, line)
95+ end
96+ shell : julia --color=yes {0}
6897 - uses : julia-actions/julia-runtest@v1
6998 env :
70- JULIA_NUM_THREADS : 4,4
99+ JULIA_NUM_THREADS : ${{ steps.decide-numthreads-str.outputs.numthreads }}
71100 - uses : julia-actions/julia-processcoverage@v1
72101 - uses : codecov/codecov-action@v5
73102 with :
0 commit comments