[ANN] Introducing Upgradathon Fridays


You need master GitHub.jl for Checks I believe.


FemtoCleaner is working for me. I confirm I am on master GitHub, which is tagged v4.1.0


I tried to upgrade Ipopt.jl . Femtocleaner did not find anything.
Warning when using Ipopt:

julia> @time using Ipopt
WARNING: importing deprecated binding Base.Libdl into Sys.
WARNING: Base.Libdl is deprecated, run `using Libdl` instead
 in module Ipopt
in __init__ at /home/ufechner/.julia/packages/Ipopt/udV2/src/Ipopt.jl
┌ Warning: `contains(haystack, needle)` is deprecated, use `occursin(needle, haystack)` instead.
│   caller = (::getfield(Ipopt, Symbol("##1#2")))(::String) at Ipopt.jl:26
└ @ Ipopt Ipopt.jl:26
  1.425591 seconds (2.26 M allocations: 118.443 MiB, 4.80% gc time) 

The last warning was easy to fix. But how can I fix the first two warnings regarding Base.Libdl? I did not find where this depreciated code is used. It does not seam to happen in Ipopt.jl, but in some dependency.
Any idea?


Pkg3 question: if I want to keep up with the new package developments generally, do I have to

pkg> activate . 
pkg> up

separately in each package/project I am working on? My understanding is that unless I do this, the manifest in each project just remains fixed.

In contrast to v0.6, where the package state was global and a single Pkg.update() would update everything. Note that I am not complaining, I think the new way makes more sense, just asking a clarifying question.


No the package manifests are ignored on the global level AFAICT, so up in the top level environment is enough.


I found Base.Libdl in Ipopt.jl and replaced it with Libdl.

In addition I added at the top:

if VERSION >= v"0.7.0-DEV.3382"
    using Libdl

Is it suggested to use such an if statement?


Sure, or you can include using Compat.Libdl, which should work on both 0.6 and 0.7.


I started to fix the depreciations in the tests of Ipopt, but I realized that most of the depreciations appear in MathProgBase.jl, which is used by Ipopt. Unfortunately the tests of MathProgBase.jl fail, and fixing them is beyond my skills.
Have a look:

Any hints welcome!


Is there a standardized way of telling where a given package is in this upgrade process? For example, Trying to use Distributions.jl led me to problems with Arpack.jl, which were quickly fixed. Distributions still isn’t working. There a a few commits mentioning v0.7, but strangely there’s not a single issue mentioning it. Still, I can’t imagine I’m the only one trying to use it with 0.7 - is that possible?

I’m happy to learn the upgrade process and try to do a couple. But the uncertainty makes it really hard to judge what the road ahead looks like before I can get started on my own project. Any suggestions?


Just create an issue “Update Distributions.jl for Julia 0.7” and discuss the needed work with collaborators. :sunny:


Fair enough, maybe others are wondering the same as me. Thanks :slight_smile: