We've now released release candidate 1 (RC1) of CasADi 3.0. The official 3.0 release will follow soon.
CasADi 3.0 is a major release and marks the end of a major refactoring effort to make CasADi more stable, more maintainable and easier to learn and use. Starting with this release, we will also try to be much more restrictive when it comes to syntax changes and pay more attention to backwards compatibility and documentation.
The following are some important changes in CasADi 3.0:
* The API has been made much smaller with fewer classes exposed to the user. There is now only a single public "Function" class which replaces MXFunction, SXFunction, Integrator, NlpSolver etc. For example:
f = Function('f', [x],[sin(x)])
instead of
f = SXFunction('f', [x],[sin(x)])
and
f = MXFunction('f', [x],[sin(x)])
As well as:
my_solver = casadi.nlpsol('my_solver', 'ipopt', {'x':v, 'f':f, 'g': g})
my_integrator = casadi.integrator('my_integrator', 'cvodes', {...})
my_rootfinder = casadi.rootfinder('my_rootfinder', 'newton', F)
(which are all functions returning casadi.Function instances) instead of
my_solver = casadi.NlpSolver('my_solver', 'ipopt', {'x':v, 'f':f, 'g': g})
my_integrator = casadi.Integrator('my_integrator', 'cvodes', {...})
my_rootfinder = casadi.ImplicitFunction('my_rootfinder', 'newton', F)
* A lot of functions in the API have been renamed. We now try to consistently name CasADi functions using lower case words separated by underscore. This means for example "is_square" instead of "issquare" and "substitute_inplace" instead of "substituteInplace". But a lot of functions have also had their names shortened or simplified, e.g. "stats" instead of "getStats" and "scc" instead of "stronglyConnectedComponents". We don't have a complete list of all these changes readily available, so you might want to have the API documentation ready if you want to update existing code. And post to the forum if you get stuck.
* The MATLAB API is now quite stable and has essentially all the features of the Python and C++ APIs.
* Entering QPs has been made much simpler - the syntax is now the same as for NLPs. This means that you can for example implement a direct collocation method and solve it with either a QP solver (if system is linear and cost quadratic) or an NLP solver. Mixed integer QPs can be solved using the (rewritten) interface to CPLEX and the (newly added) interface to GUROBI.
* Precompiled binaries are now available for both Python and MATLAB and for LINUX, OSX and Windows. This means that for most users, installing CasADi (including its 3rd party interfaces) should not take much more than 10-15 minutes, assuming nothing goes wrong.
Feel free to try out and don't hesitate to ask if you've got questions when migrating. Also please report any bugs asap so that we can have them fixed for the official release.
Best regards,
Joel on behalf of the CasADi team