Announcement: breaking changes in AmplNLWriter.jl v0.4.0

Version 0.4.0 of AmplNLWriter.jl introduces a major breaking change for users:

BonminNLSolver(), CouenneNLSolver(), and IpoptNLSolver() have been removed and will now throw an error.

Users of Bonmin and Couenne should change their code to

using CoinOptServices, AmplNLWriter

# instead of BonminNLSolver()
solver = AmplNLSolver(CoinOptServices.bonmin)

# instead of CouenneNLSolver()
solver = AmplNLSolver(CoinOptServices.couenne)

Users of Ipopt should change their code to

using Ipopt, AmplNLWriter

# instead of IpoptNLSolver()
solver = AmplNLSolver(Ipopt.amplexe)

Alternatively, users can continue to pass the full path of the solver executable as the first argument to AmplNLSolver. i.e:

using AmplNLWriter
solver = AmplNLSolver("path/to/bonmin")

Other changes

The release also includes a number of other changes including improved error messages if the solver crashed without returning a result to AmplNLWriter.