Closed
Description
Edit: Reduced to this:
1.3:
julia> mutable struct F end; f = F(); f == deepcopy(f)
false
1.2:
julia> mutable struct F end; f = F(); f == deepcopy(f)
true
Looking at the test regression for 1.3-RC3 vs 1.2 in Alpine.jl I find that on 1.3:
4|julia> m.minlp_solver == empty_solver
false
4|julia> m.minlp_solver
Alpine.UnsetSolver()
4|julia> empty_solver
Alpine.UnsetSolver()
while on 1.2
1|julia> m.minlp_solver == empty_solver
true
1|julia> m.minlp_solver
Alpine.UnsetSolver()
1|julia> empty_solver
Alpine.UnsetSolver()
UnsetSolver
is a singleton mutable struct defined here:
and the same constant is assigned to the field minlp_solver
field:
Making it non-mutable works around the problem.