# Announcement: breaking changes in AmplNLWriter.jl v0.4.0

**URL:** <https://discourse.julialang.org/t/announcement-breaking-changes-in-amplnlwriter-jl-v0-4-0/7342>\
**Category:** Optimization (Mathematical)\
**Created:** [November 28, 2017, 1:22am UTC](https://discourse.julialang.org/t/announcement-breaking-changes-in-amplnlwriter-jl-v0-4-0/7342 "2017-11-28T01:22:50Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![odow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/odow/32/28685_2.png) [@odow](https://discourse.julialang.org/u/odow)\
**Post date:** [November 28, 2017, 1:22am UTC](https://discourse.julialang.org/t/announcement-breaking-changes-in-amplnlwriter-jl-v0-4-0/7342/1 "2017-11-28T01:22:50Z")

</div>

Version 0.4.0 of [AmplNLWriter.jl](https://github.com/JuliaOpt/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

```julia
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

```julia
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:

```julia
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.
