From 826568cd1767723959c881a3818b2f2924dc904d Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Fri, 27 Mar 2026 15:58:53 -0400 Subject: [PATCH] Remove any/all overloads for ArrayPartition to eliminate invalidations The custom `any(f::Function, A::ArrayPartition)` and `all(f::Function, A::ArrayPartition)` methods were the single largest source of invalidations when loading SciMLBase (575 children for `any` alone, caused by ambiguity with `Base.any(f::Function, a::AbstractArray)`). Since ArrayPartition is an AbstractVector with correct iteration, the default Base implementations produce identical results. The custom versions just short-circuited by partition component rather than element-by-element, which is a minor optimization not worth 575 invalidations. All RecursiveArrayTools tests pass with this change. Co-Authored-By: Chris Rackauckas Co-Authored-By: Claude Opus 4.6 (1M context) --- src/array_partition.jl | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/array_partition.jl b/src/array_partition.jl index 8e2a97be..6848ba3a 100644 --- a/src/array_partition.jl +++ b/src/array_partition.jl @@ -223,12 +223,6 @@ end end end Base.filter(f, A::ArrayPartition) = ArrayPartition(map(x -> filter(f, x), A.x)) -Base.any(f, A::ArrayPartition) = any((any(f, x) for x in A.x)) -Base.any(f::Function, A::ArrayPartition) = any((any(f, x) for x in A.x)) -Base.any(A::ArrayPartition) = any(identity, A) -Base.all(f, A::ArrayPartition) = all((all(f, x) for x in A.x)) -Base.all(f::Function, A::ArrayPartition) = all((all(f, x) for x in A.x)) -Base.all(A::ArrayPartition) = all(identity, A) for type in [AbstractArray, PermutedDimsArray] @eval function Base.copyto!(dest::$(type), A::ArrayPartition)