21/03/2023
  - remove use of std::bind2nd to improve compatibility with C++17, see #177

16/06/2020 OsiXpr
  - added functionality for switching between dual and primal simplex with hints
  - implemented getDualRays
  - implemented getBasisStatus

06/08/2019 OsiGrb
  - fix problem with loading a problem with ranged rows when already a problem has been loaded (#124)

06/08/2019 OsiSpx
  - fixed issue with objective sense getting lost when loading new problem (#123)

10/03/2019 OsiSpx
  - fixed problems with copy constructor / clone (#113)

10/03/2019 OsiMsk
  - fixed problem where no Mosek output was produced on cloned/copied OsiMsk instances
  - eliminated additional newline printed in Mosek output (#105)

10/03/2019 OsiCpx
  - fixed OsiCpx::setRowPrice(), see also #81

22/02/2019 OsiSolverInterfaceTest
  - remove nonsense test for whether a column solution exists *before* solve

23/01/2018 OsiMsk
  - add compatibility with Mosek 9.0 beta

20/04/2017 OsiSpx
  - add compatibility with SoPlex 3.0

31/05/2016 OsiMsk
  - get it compiling with Mosek 8 beta (conic MIP only with Mosek 7, MSK_initenv() removed)

18/05/2016 OsiCpx
  - switch from deprecated CPXcopymipstart to CPXaddmipstarts

10/03/2016 OsiMsk
  - improved performance of frequently called checkMSKerror() and MSKassert()
    functions (contributed by Geoff Leyland)

17/02/2016 OsiCpx
  - fixed handling of cplex message callbacks in OsiCpx::reset()

15/02/2016 OsiCpx
  - fixed OsiCpx::getRowActivity() when solved a MIP
  
09/06/2015 OsiSpx
  - added compatibility with SoPlex 2.2
  - added OsiSpx::getLpPtr()

12/06/2014 OsiSpx
  - added compatibility with SoPlex 2.0 (using SoPlex legacy interface)

10/02/2014 OsiMsk
  - fixed bug in OsiMsk::getPrimalRays() when number of rows < number of columns

17/01/2014 OsiGrb
  - fixed bug in OsiGrb::deleteCols() where the columns types got lost

11/18/2013 OsiMsk
  - changed MIP optimizer to Mosek's own conic MIP optimizer, if Mosek version >= 7

09/11/2013 OsiCpx
  - fixed getIterationCount() for MIPs (use CPXgetmipitcnt instead of CPXgetitcnt)

08/30/2013 OsiGrb
  - fixed bug in getObjectiveCoefficients and getBasisStatus for LPs without ranged rows

08/23/2013 OsiGrb
  - fixed bug in deleting row or column names when deleting several rows/columns at once

04/02/2013 OsiMsk
  - update to work with Mosek 7, too (contributed by Erling D. Andersen)

02/02/2013 OsiUnitTest
  - replace macro for asserting a condition and collecting its outcome by a function
    to improve compilation speed (contributed by Victor Zverovich)

29/11/2012 OsiMsk
  - added getRescode() to get result code of last MSK_optimize call

21/11/2012 OsiCpx
  - calling setWarmStart with a too small basis now disables the use of an
    advanced basis for the next LP solve

20/11/2012 OsiGlpk, OsiCpx
  - workaround problem in Glpk with empty problem name (patch by Bertrand Le Cun)
  - not using CPXsolninfo for MIPs with CPLEX < 11.0 anymore

25/07/2012 OsiGrb
  - fix mipstart option in OsiGrb: pass only values for discrete variables to Gurobi

26/11/2011 OsiGrb
  - add implementation of OsiGrb::applyCuts that batches the row cuts before transfering them to Gurobi

12/11/2011 OsiSpx
  - add resolve with cleared basis if solve fails with exception (which may be due to a singular startbasis),
    needs SoPlex >= 1.5.0.7

03/09/2011 OsiMsk
  - fix bug in one loadProblem method when NULL was passed as row range array

30/07/2011 Osi
  - fix writing LP files with names: the objective name was not copied, leading to a segfault in CoinLpIO

30/07/2011 OsiSpx, OsiGlpk
  - allow NULLs for row* arguments in some loadProblem call

28/07/2011 OsiSpx
  - invert dual ray in getDualRays to match Osi definition when testing infeasibility proof

12/07/2011 MSVisualStudio
  - updated MSVC++ v10 project files to catch up with buildsystem changes

25/06/2011 Osi
  - add generic implementations of is{Primal,Dual}ObjectiveLimitReached

25/06/2011 OsiCommonTest
  - add unittest command line parameter -onerror to specify behaviour in case of a failing test 

23/06/2011 OsiMsk
  - add isLicenseError() to check whether last solve was abandoned due to a mosek licensing issue 

22/06/2011 OsiCpx
  - fix handling of primal/dual objective limit so it correctly takes objoffset into account
  - preserve objective sense also when empty model is loaded
  - make sure getWarmStart returns proper atlower/atupper status for inequalities

13/06/2011 OsiCommonTest, unittest
  - removed now redundant counting of unittest failures, so test functions now return void 

03/06/2011 OsiMsk
  - fix caching flags (bitwise negation is ~, not !)
  - free all cached data when loading problem
  - fix getDualRay and getPrimalRay so they should return a ray now 
  - fixed various further issues in unittest, so OsiMsk passes it now

15/05/2011 OsiXpr
  - added option (mipstart) to pass column solution as initial solution to a MIP solve

30/04/2011 OsiCpx, OsiGrb
  - added option (mipstart) to pass column solution as initial solution to a MIP solve

29/04/2011 OsiMsk
  - fix loss of Mosek task when copying OsiMsk

25/04/2011 OsiSpx
  - add methods to set/get/check timelimit
  - fix bug in solve methods where cached result vectors where not cleared
  - fix setWarmStart to swap status for slack variables as in getWarmStart
  - fix caching flags (bitwise negation is ~, not !)
  - redirect set/get name discipline to base class
  - fix primal/dual objective limit: take objoffset into account, correct check if limit changed after solve
  - getColSolution and getObjValue now return lower bound and value in lower bound before solve

01/04/2011 OsiGlpk
  - if initial basis is invalid or singular in initialSolve or resolve,
    construct advanced basis and try again

31/03/2011 OsiGrb
  - fixed handling of free variables in setWarmStart

30/03/2011 OsiGrb
  - fixed memory leak in loadProblem

21/03/2011 OsiCommonTest, unittest
  - add classes TestOutcome{s} to collect outcome of unittests
  - add macros to simplify asserts and exception catching and storing results as TestOutcome
  - change general and OsiGlpk tests to use new macros
  - return number of unexpected errors as return code of unittest
  - add parameter -verbosity to unittest to specify amount of output of unittests
  - a bit cleanup

21/03/2011 started CHANGELOG
