From eebaa8042295f76d990e7929c17fd6989c8af674 Mon Sep 17 00:00:00 2001 From: William Moses Date: Sun, 1 Feb 2026 11:41:31 +1100 Subject: [PATCH 1/5] Update version check for Enzyme support --- test/runtests.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index aea21ec..e35e5a2 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -452,8 +452,8 @@ quadgk_segbuf_printnull(args...; kws...) = quadgk_segbuf_print(devnull, args...; end end -# Extension package only supported in 1.9+, but Enzyme doesn't yet support Julia 1.12 -@static if v"1.9" <= VERSION < v"1.12" +# Extension package only supported in 1.9+ +@static if v"1.9" <= VERSION using Enzyme f1(x) = quadgk(cos, 0., x)[1] f2(x) = quadgk(cos, x, 1)[1] From 28eceb6fa29fdeadf3337a9a3804f961f0b3ab8a Mon Sep 17 00:00:00 2001 From: William Moses Date: Wed, 24 Jun 2026 13:54:41 -0500 Subject: [PATCH 2/5] Refactor EnzymeRules and guaranteed_nonactive functions --- ext/QuadGKEnzymeExt.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ext/QuadGKEnzymeExt.jl b/ext/QuadGKEnzymeExt.jl index d10d21a..e754048 100644 --- a/ext/QuadGKEnzymeExt.jl +++ b/ext/QuadGKEnzymeExt.jl @@ -24,11 +24,11 @@ function Enzyme.EnzymeRules.augmented_primal(config, ofunc::Const{typeof(quadgk) dres = if !Enzyme.EnzymeRules.needs_shadow(config) nothing elseif EnzymeRules.width(config) == 1 - zero.(res...) + zero(eltype(RT)) else ntuple(Val(EnzymeRules.width(config))) do i Base.@_inline_meta - zero.(res...) + zero(eltype(RT)) end end @@ -63,7 +63,7 @@ struct ClosureVector{F} end @inline function guaranteed_nonactive(::Type{T}) where T - rt = Enzyme.Compiler.active_reg_inner(T, (), nothing) + rt = Enzyme.Compiler.active_reg_nothrow(T) return rt == Enzyme.Compiler.AnyState || rt == Enzyme.Compiler.DupState end From aee36fbba434c6342f4a5f350e677a393c1a0cdc Mon Sep 17 00:00:00 2001 From: William Moses Date: Wed, 24 Jun 2026 14:29:09 -0500 Subject: [PATCH 3/5] Update Project.toml --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 6ccfbcd..d8a215c 100644 --- a/Project.toml +++ b/Project.toml @@ -15,7 +15,7 @@ QuadGKEnzymeExt = "Enzyme" [compat] DataStructures = "0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19" LinearAlgebra = "<0.0.1, 1" -Enzyme = "0.12, 0.13" +Enzyme = "0.13.87" julia = "1.6" [extras] From 568ce95085e577564a9ee97c1dfc8cacc1405282 Mon Sep 17 00:00:00 2001 From: William Moses Date: Wed, 24 Jun 2026 14:59:08 -0500 Subject: [PATCH 4/5] Update QuadGKEnzymeExt.jl --- ext/QuadGKEnzymeExt.jl | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ext/QuadGKEnzymeExt.jl b/ext/QuadGKEnzymeExt.jl index e754048..b5a56d6 100644 --- a/ext/QuadGKEnzymeExt.jl +++ b/ext/QuadGKEnzymeExt.jl @@ -21,14 +21,22 @@ function Enzyme.EnzymeRules.augmented_primal(config, ofunc::Const{typeof(quadgk) end end + res = EnzymeRules.needs_primal(config) + retres + elseif Enzyme.EnzymeRules.needs_shadow(config) + quadgk(f.val, prims...; kws...) + else + nothing + end + dres = if !Enzyme.EnzymeRules.needs_shadow(config) nothing elseif EnzymeRules.width(config) == 1 - zero(eltype(RT)) + Enzyme.make_zero(res) else ntuple(Val(EnzymeRules.width(config))) do i Base.@_inline_meta - zero(eltype(RT)) + Enzyme.make_zero(res) end end From 7291997695987467544879558d6087ad2e05b548 Mon Sep 17 00:00:00 2001 From: William Moses Date: Wed, 24 Jun 2026 15:50:39 -0500 Subject: [PATCH 5/5] Update QuadGKEnzymeExt.jl --- ext/QuadGKEnzymeExt.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/QuadGKEnzymeExt.jl b/ext/QuadGKEnzymeExt.jl index b5a56d6..7e3f0f3 100644 --- a/ext/QuadGKEnzymeExt.jl +++ b/ext/QuadGKEnzymeExt.jl @@ -21,7 +21,7 @@ function Enzyme.EnzymeRules.augmented_primal(config, ofunc::Const{typeof(quadgk) end end - res = EnzymeRules.needs_primal(config) + res = if EnzymeRules.needs_primal(config) retres elseif Enzyme.EnzymeRules.needs_shadow(config) quadgk(f.val, prims...; kws...)