From dd119ac442186a619ae003bf98522329062324c8 Mon Sep 17 00:00:00 2001 From: Michael Schlottke-Lakemper Date: Thu, 19 Dec 2024 09:02:36 +0100 Subject: [PATCH] Increase minimum supported Julia version to v1.10 --- .github/workflows/Downgrade.yml | 4 +-- .github/workflows/ci.yml | 6 +---- .github/workflows/downstream.yml | 2 +- NEWS.md | 4 +++ Project.toml | 2 +- README.md | 2 +- docs/src/index.md | 2 +- docs/src/troubleshooting.md | 3 +-- ext/TrixiConvexECOSExt.jl | 10 ++------ ext/TrixiMakieExt.jl | 7 +----- ext/TrixiNLsolveExt.jl | 7 +----- src/Trixi.jl | 43 -------------------------------- src/auxiliary/precompile.jl | 16 ++++++------ src/equations/equations.jl | 1 + 14 files changed, 24 insertions(+), 85 deletions(-) diff --git a/.github/workflows/Downgrade.yml b/.github/workflows/Downgrade.yml index b9bdca5aeac..001f2c2cf94 100644 --- a/.github/workflows/Downgrade.yml +++ b/.github/workflows/Downgrade.yml @@ -35,8 +35,8 @@ jobs: fail-fast: false matrix: version: - - '1.9' - # - '~1.9.0-0' # including development versions + - '1.10' + # - '~1.10.0-0' # including development versions # - 'nightly' os: - ubuntu-latest diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8862747fefc..54f23758c59 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -81,11 +81,7 @@ jobs: - mpi - threaded include: - - version: '1.8' - os: ubuntu-latest - arch: x64 - trixi_test: threaded_legacy - - version: '1.9' + - version: '1.11' os: ubuntu-latest arch: x64 trixi_test: threaded_legacy diff --git a/.github/workflows/downstream.yml b/.github/workflows/downstream.yml index 13a01984827..3081a170598 100644 --- a/.github/workflows/downstream.yml +++ b/.github/workflows/downstream.yml @@ -54,7 +54,7 @@ jobs: fail-fast: false matrix: version: - - '1.9' + - '1.10' os: - ubuntu-latest arch: diff --git a/NEWS.md b/NEWS.md index c187f229519..8c6265679ef 100644 --- a/NEWS.md +++ b/NEWS.md @@ -14,6 +14,10 @@ for human readability. - `LobattoLegendreBasis` and related datastructures made fully floating-type general, enabling calculations with higher than double (`Float64`) precision ([#2128]) +#### Changed + +- The required Julia version is updated to v1.10. + ## Changes when updating to v0.9 from v0.8.x #### Added diff --git a/Project.toml b/Project.toml index 95e1da07fd0..0bcd704fecf 100644 --- a/Project.toml +++ b/Project.toml @@ -115,7 +115,7 @@ TriplotBase = "0.1" TriplotRecipes = "0.1" TrixiBase = "0.1.3" UUIDs = "1.6" -julia = "1.8" +julia = "1.10" [extras] Convex = "f65535da-76fb-5f13-bab9-19810c17039a" diff --git a/README.md b/README.md index 7397deb4cc4..a26e29ce44a 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ installation and postprocessing procedures. Its features include: ## Installation If you have not yet installed Julia, please [follow the instructions for your operating system](https://julialang.org/downloads/platform/). Trixi.jl works -with Julia v1.8 and newer. We recommend using the latest stable release of Julia. +with Julia v1.10 and newer. We recommend using the latest stable release of Julia. ### For users Trixi.jl and its related tools are registered Julia packages. Hence, you diff --git a/docs/src/index.md b/docs/src/index.md index 79da54f3cf9..d64330ae78a 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -68,7 +68,7 @@ installation and postprocessing procedures. Its features include: ## Installation If you have not yet installed Julia, please [follow the instructions for your operating system](https://julialang.org/downloads/platform/). Trixi.jl works -with Julia v1.8 and newer. We recommend using the latest stable release of Julia. +with Julia v1.10 and newer. We recommend using the latest stable release of Julia. ### For users Trixi.jl and its related tools are registered Julia packages. Hence, you diff --git a/docs/src/troubleshooting.md b/docs/src/troubleshooting.md index 3f1846ab39e..e8c8d0c874c 100644 --- a/docs/src/troubleshooting.md +++ b/docs/src/troubleshooting.md @@ -157,8 +157,7 @@ Julia compiles code to get good (C/Fortran-like) performance. At the same time, Julia provides a dynamic environment and usually compiles code just before using it. Over time, Julia has improved its caching infrastructure, allowing to store and reuse more results from (pre-)compilation. This often results in an -increased time to install/update packages, in particular when updating -to Julia v1.8 or v1.9 from older versions. +increased time to install/update packages. Some packages used together with [Trixi.jl](https://github.com/trixi-framework/Trixi.jl) provide options to configure the amount of precompilation. For example, diff --git a/ext/TrixiConvexECOSExt.jl b/ext/TrixiConvexECOSExt.jl index a83ac0a524f..224b1d814f0 100644 --- a/ext/TrixiConvexECOSExt.jl +++ b/ext/TrixiConvexECOSExt.jl @@ -2,14 +2,8 @@ module TrixiConvexECOSExt # Required for coefficient optimization in PERK scheme integrators -if isdefined(Base, :get_extension) - using Convex: MOI, solve!, Variable, minimize, evaluate - using ECOS: Optimizer -else - # Until Julia v1.9 is the minimum required version for Trixi.jl, we still support Requires.jl - using ..Convex: MOI, solve!, Variable, minimize, evaluate - using ..ECOS: Optimizer -end +using Convex: MOI, solve!, Variable, minimize, evaluate +using ECOS: Optimizer # Use other necessary libraries using LinearAlgebra: eigvals diff --git a/ext/TrixiMakieExt.jl b/ext/TrixiMakieExt.jl index 301a7656da9..164ccbf2190 100644 --- a/ext/TrixiMakieExt.jl +++ b/ext/TrixiMakieExt.jl @@ -2,12 +2,7 @@ module TrixiMakieExt # Required for visualization code -if isdefined(Base, :get_extension) - using Makie: Makie, GeometryBasics -else - # Until Julia v1.9 is the minimum required version for Trixi.jl, we still support Requires.jl - using ..Makie: Makie, GeometryBasics -end +using Makie: Makie, GeometryBasics # Use all exported symbols to avoid having to rewrite `recipes_makie.jl` using Trixi diff --git a/ext/TrixiNLsolveExt.jl b/ext/TrixiNLsolveExt.jl index 2e6bca0ba7b..e87aa4e7993 100644 --- a/ext/TrixiNLsolveExt.jl +++ b/ext/TrixiNLsolveExt.jl @@ -3,12 +3,7 @@ module TrixiNLsolveExt # Required for finding coefficients in Butcher tableau in the third order of # PERK scheme integrators -if isdefined(Base, :get_extension) - using NLsolve: nlsolve -else - # Until Julia v1.9 is the minimum required version for Trixi.jl, we still support Requires.jl - using ..NLsolve: nlsolve -end +using NLsolve: nlsolve # We use a random initialization of the nonlinear solver. # To make the tests reproducible, we need to seed the RNG diff --git a/src/Trixi.jl b/src/Trixi.jl index f8cc3a1a4d3..5c8d1aa4cc8 100644 --- a/src/Trixi.jl +++ b/src/Trixi.jl @@ -311,49 +311,6 @@ function __init__() @require Plots="91a5bcdd-55d7-5caf-9e0b-520d859cae80" begin using .Plots: Plots end - - # Until Julia v1.9 is the minimum required version for Trixi.jl, we still support Requires.jl - @static if !isdefined(Base, :get_extension) - @require Makie="ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" begin - include("../ext/TrixiMakieExt.jl") - end - end - - @static if !isdefined(Base, :get_extension) - @require Convex="f65535da-76fb-5f13-bab9-19810c17039a" begin - @require ECOS="e2685f51-7e38-5353-a97d-a921fd2c8199" begin - include("../ext/TrixiConvexECOSExt.jl") - end - end - end - - @static if !isdefined(Base, :get_extension) - @require NLsolve="2774e3e8-f4cf-5e23-947b-6d7e65073b56" begin - include("../ext/TrixiNLsolveExt.jl") - end - end - - # FIXME upstream. This is a hacky workaround for - # https://github.com/trixi-framework/Trixi.jl/issues/628 - # https://github.com/trixi-framework/Trixi.jl/issues/1185 - # The related upstream issues appear to be - # https://github.com/JuliaLang/julia/issues/35800 - # https://github.com/JuliaLang/julia/issues/32552 - # https://github.com/JuliaLang/julia/issues/41740 - # See also https://discourse.julialang.org/t/performance-depends-dramatically-on-compilation-order/58425 - if VERSION < v"1.9.0" - let - for T in (Float32, Float64) - u_mortars_2d = zeros(T, 2, 2, 2, 2, 2) - u_view_2d = view(u_mortars_2d, 1, :, 1, :, 1) - LoopVectorization.axes(u_view_2d) - - u_mortars_3d = zeros(T, 2, 2, 2, 2, 2, 2) - u_view_3d = view(u_mortars_3d, 1, :, 1, :, :, 1) - LoopVectorization.axes(u_view_3d) - end - end - end end include("auxiliary/precompile.jl") diff --git a/src/auxiliary/precompile.jl b/src/auxiliary/precompile.jl index 5a1de036808..300a15f352d 100644 --- a/src/auxiliary/precompile.jl +++ b/src/auxiliary/precompile.jl @@ -600,17 +600,15 @@ function _precompile_manual_() return nothing end -# Explicit precompilation running code only on Julia v1.9 and newer +# Explicit precompilation including running code using PrecompileTools: @setup_workload, @compile_workload -@static if VERSION >= v"1.9.0-beta4" - @setup_workload begin - # Setup code can go here +@setup_workload begin + # Setup code can go here - @compile_workload begin - # Everything inside this block will run at precompile time, saving the - # binary code to a cache in newer versions of Julia. - DGSEM(3) - end + @compile_workload begin + # Everything inside this block will run at precompile time, saving the + # binary code to a cache in newer versions of Julia. + DGSEM(3) end end diff --git a/src/equations/equations.jl b/src/equations/equations.jl index 0799a040bb6..3f5be3fe849 100644 --- a/src/equations/equations.jl +++ b/src/equations/equations.jl @@ -87,6 +87,7 @@ end @inline Base.ndims(::AbstractEquations{NDIMS}) where {NDIMS} = NDIMS +# TODO: @ranocha may this be removed? # Equations act like scalars in broadcasting. # Using `Ref(equations)` would be more convenient in some circumstances. # However, this does not work with Julia v1.9.3 correctly due to a (performance)