Skip to content

Commit b72ec5f

Browse files
Merge pull request #930 from SciML/recompile_invalidation
Setup recompilation on invalidations
2 parents 358bdde + de88aa2 commit b72ec5f

File tree

2 files changed

+100
-92
lines changed

2 files changed

+100
-92
lines changed

Project.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Markdown = "d6f4376e-aef5-505a-96c1-9c027394607a"
2020
MuladdMacro = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221"
2121
Parameters = "d96e819e-fc66-5662-9728-84c9c7592b0a"
2222
PreallocationTools = "d236fae5-4411-538c-8e31-a6e3d9e00b46"
23+
PrecompileTools = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
2324
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
2425
RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd"
2526
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"

src/DiffEqBase.jl

Lines changed: 99 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -7,101 +7,108 @@ if !isdefined(Base, :get_extension)
77
using Requires
88
end
99

10-
using ArrayInterface
11-
12-
using StaticArraysCore # data arrays
13-
14-
using LinearAlgebra, Printf
15-
16-
using DocStringExtensions
17-
18-
using FunctionWrappers: FunctionWrapper
19-
20-
using MuladdMacro, Parameters
10+
import PrecompileTools
11+
12+
PrecompileTools.@recompile_invalidations begin
13+
using ArrayInterface
14+
15+
using StaticArraysCore # data arrays
16+
17+
using LinearAlgebra, Printf
18+
19+
using DocStringExtensions
20+
21+
using FunctionWrappers: FunctionWrapper
22+
23+
using MuladdMacro, Parameters
24+
25+
using Statistics
26+
27+
using FastBroadcast: @.., True, False
28+
29+
using Static: reduce_tup
30+
31+
import ChainRulesCore
32+
import RecursiveArrayTools
33+
import SparseArrays
34+
import TruncatedStacktraces
35+
36+
import ChainRulesCore: NoTangent, @non_differentiable
37+
import ZygoteRules
38+
39+
using Setfield
40+
41+
using ForwardDiff
42+
43+
using EnumX
44+
45+
using Markdown
46+
47+
# Could be made optional/glue
48+
import PreallocationTools
49+
50+
import FunctionWrappersWrappers
51+
52+
using SciMLBase
53+
54+
using SciMLOperators: AbstractSciMLOperator, AbstractSciMLScalarOperator
55+
56+
using SciMLBase: @def, DEIntegrator, DEProblem,
57+
AbstractDiffEqInterpolation,
58+
DECallback, AbstractDEOptions, DECache, AbstractContinuousCallback,
59+
AbstractDiscreteCallback, AbstractLinearProblem, AbstractNonlinearProblem,
60+
AbstractOptimizationProblem, AbstractSteadyStateProblem,
61+
AbstractJumpProblem,
62+
AbstractNoiseProblem, AbstractEnsembleProblem, AbstractDynamicalODEProblem,
63+
DEAlgorithm, StandardODEProblem, AbstractIntegralProblem,
64+
AbstractSensitivityAlgorithm, AbstractODEAlgorithm,
65+
AbstractSDEAlgorithm, AbstractDDEAlgorithm, AbstractDAEAlgorithm,
66+
AbstractSDDEAlgorithm, AbstractRODEAlgorithm, DAEInitializationAlgorithm,
67+
AbstractSteadyStateAlgorithm, AbstractODEProblem, AbstractDiscreteProblem,
68+
AbstractSDEProblem, AbstractRODEProblem, AbstractDDEProblem,
69+
AbstractDAEProblem, AbstractSDDEProblem, AbstractBVProblem,
70+
AbstractTimeseriesSolution, AbstractNoTimeSolution, numargs,
71+
AbstractODEFunction, AbstractSDEFunction, AbstractRODEFunction,
72+
AbstractDDEFunction, AbstractSDDEFunction, AbstractDAEFunction,
73+
AbstractNonlinearFunction, AbstractEnsembleSolution,
74+
AbstractODESolution, AbstractRODESolution, AbstractDAESolution,
75+
AbstractDDESolution,
76+
EnsembleAlgorithm, EnsembleSolution, EnsembleSummary,
77+
NonlinearSolution,
78+
TimeGradientWrapper, TimeDerivativeWrapper, UDerivativeWrapper,
79+
UJacobianWrapper, ParamJacobianWrapper, JacobianWrapper,
80+
check_error!, has_jac, has_tgrad, has_Wfact, has_Wfact_t, has_paramjac,
81+
AbstractODEIntegrator, AbstractSDEIntegrator, AbstractRODEIntegrator,
82+
AbstractDDEIntegrator, AbstractSDDEIntegrator,
83+
AbstractDAEIntegrator, unwrap_cache, has_reinit, reinit!,
84+
postamble!, last_step_failed, islinear, has_stats,
85+
initialize_dae!, build_solution, solution_new_retcode,
86+
solution_new_tslocation, plot_indices,
87+
NullParameters, isinplace, AbstractADType, AbstractDiscretization,
88+
DISCRETE_OUTOFPLACE_DEFAULT, DISCRETE_INPLACE_DEFAULT,
89+
has_analytic, calculate_solution_errors!, AbstractNoiseProcess,
90+
has_colorvec, parameterless_type, undefined_exports,
91+
is_diagonal_noise, AbstractDiffEqFunction, sensitivity_solution,
92+
interp_summary, AbstractHistoryFunction, LinearInterpolation,
93+
ConstantInterpolation, HermiteInterpolation, SensitivityInterpolation,
94+
NoAD, @add_kwonly,
95+
calculate_ensemble_errors, DEFAULT_UPDATE_FUNC, isconstant,
96+
DEFAULT_REDUCTION, isautodifferentiable,
97+
isadaptive, isdiscrete, has_syms, AbstractAnalyticalSolution,
98+
RECOMPILE_BY_DEFAULT, wrap_sol, has_destats
99+
100+
import SciMLBase: solve, init, step!, solve!, __init, __solve, update_coefficients!,
101+
update_coefficients, isadaptive, wrapfun_oop, wrapfun_iip,
102+
unwrap_fw, promote_tspan, set_u!, set_t!, set_ut!
103+
104+
import SciMLBase: AbstractDiffEqLinearOperator # deprecation path
105+
106+
import Tricks
107+
end
21108

22109
using Reexport
110+
Reexport.@reexport using SciMLBase
23111

24-
using Statistics
25-
26-
using FastBroadcast: @.., True, False
27-
28-
using Static: reduce_tup
29-
30-
import ChainRulesCore
31-
import RecursiveArrayTools
32-
import SparseArrays
33-
import TruncatedStacktraces
34-
35-
import ChainRulesCore: NoTangent, @non_differentiable
36-
import ZygoteRules
37-
38-
using Setfield
39-
40-
using ForwardDiff
41-
42-
using EnumX
43-
44-
using Markdown
45-
46-
# Could be made optional/glue
47-
import PreallocationTools
48-
49-
import FunctionWrappersWrappers
50-
@reexport using SciMLBase
51-
52-
using SciMLOperators: AbstractSciMLOperator, AbstractSciMLScalarOperator
53-
54-
using SciMLBase: @def, DEIntegrator, DEProblem,
55-
AbstractDiffEqInterpolation,
56-
DECallback, AbstractDEOptions, DECache, AbstractContinuousCallback,
57-
AbstractDiscreteCallback, AbstractLinearProblem, AbstractNonlinearProblem,
58-
AbstractOptimizationProblem, AbstractSteadyStateProblem,
59-
AbstractJumpProblem,
60-
AbstractNoiseProblem, AbstractEnsembleProblem, AbstractDynamicalODEProblem,
61-
DEAlgorithm, StandardODEProblem, AbstractIntegralProblem,
62-
AbstractSensitivityAlgorithm, AbstractODEAlgorithm,
63-
AbstractSDEAlgorithm, AbstractDDEAlgorithm, AbstractDAEAlgorithm,
64-
AbstractSDDEAlgorithm, AbstractRODEAlgorithm, DAEInitializationAlgorithm,
65-
AbstractSteadyStateAlgorithm, AbstractODEProblem, AbstractDiscreteProblem,
66-
AbstractSDEProblem, AbstractRODEProblem, AbstractDDEProblem,
67-
AbstractDAEProblem, AbstractSDDEProblem, AbstractBVProblem,
68-
AbstractTimeseriesSolution, AbstractNoTimeSolution, numargs,
69-
AbstractODEFunction, AbstractSDEFunction, AbstractRODEFunction,
70-
AbstractDDEFunction, AbstractSDDEFunction, AbstractDAEFunction,
71-
AbstractNonlinearFunction, AbstractEnsembleSolution,
72-
AbstractODESolution, AbstractRODESolution, AbstractDAESolution,
73-
AbstractDDESolution,
74-
EnsembleAlgorithm, EnsembleSolution, EnsembleSummary,
75-
NonlinearSolution,
76-
TimeGradientWrapper, TimeDerivativeWrapper, UDerivativeWrapper,
77-
UJacobianWrapper, ParamJacobianWrapper, JacobianWrapper,
78-
check_error!, has_jac, has_tgrad, has_Wfact, has_Wfact_t, has_paramjac,
79-
AbstractODEIntegrator, AbstractSDEIntegrator, AbstractRODEIntegrator,
80-
AbstractDDEIntegrator, AbstractSDDEIntegrator,
81-
AbstractDAEIntegrator, unwrap_cache, has_reinit, reinit!,
82-
postamble!, last_step_failed, islinear, has_stats,
83-
initialize_dae!, build_solution, solution_new_retcode,
84-
solution_new_tslocation, plot_indices,
85-
NullParameters, isinplace, AbstractADType, AbstractDiscretization,
86-
DISCRETE_OUTOFPLACE_DEFAULT, DISCRETE_INPLACE_DEFAULT,
87-
has_analytic, calculate_solution_errors!, AbstractNoiseProcess,
88-
has_colorvec, parameterless_type, undefined_exports,
89-
is_diagonal_noise, AbstractDiffEqFunction, sensitivity_solution,
90-
interp_summary, AbstractHistoryFunction, LinearInterpolation,
91-
ConstantInterpolation, HermiteInterpolation, SensitivityInterpolation,
92-
NoAD, @add_kwonly,
93-
calculate_ensemble_errors, DEFAULT_UPDATE_FUNC, isconstant,
94-
DEFAULT_REDUCTION, isautodifferentiable,
95-
isadaptive, isdiscrete, has_syms, AbstractAnalyticalSolution,
96-
RECOMPILE_BY_DEFAULT, wrap_sol, has_destats
97-
98-
import SciMLBase: solve, init, step!, solve!, __init, __solve, update_coefficients!,
99-
update_coefficients, isadaptive, wrapfun_oop, wrapfun_iip,
100-
unwrap_fw, promote_tspan, set_u!, set_t!, set_ut!
101-
102-
import SciMLBase: AbstractDiffEqLinearOperator # deprecation path
103-
104-
import Tricks
105112
SciMLBase.isfunctionwrapper(x::FunctionWrapper) = true
106113

107114
"""

0 commit comments

Comments
 (0)