julia 1.1 returns a 6-element Array{Float64,1}
julia 1.7 returns a 6-element Vector{ComplexF64}
Why is it so? I spotted this change because 1.7 gives me an error further down the computation which was not there with 1.1, coming from taking the maximum of a complex-valued matrix.
maximum(eigvals(PP)) # 1.7
no method matching isless(::ComplexF64, ::ComplexF64)
Not 100% sure, but I think this change (returning Complex{T} eigvals for a Matrix{T<:Real}) would have been made to improve type-stability of eigvals. Matrices with all-real entries can have complex eigenvalues (in conjugate pairs). The only way the compiler can safely guess the eigvals output type is if complex eigenvalue arrays are always returned, even if all eigenvalues have zero imaginary part. Julia code is much faster when the compiler can infer the type of data returned by a function, so I would bet this change improved the performance of eigvals in some cases.