New release of Optizelle v1.2.0

Hi Nate! Quick update. I pulled down R2015a and, yes, the installer will definitely not work with that version. There’s a couple of reasons why I’d upgraded to newer versions:

  1. Sometime in 2016, MathWorks changed how MATLAB responds to environment variables on Windows. Basically, on MacOS and Linux, we could set MATLABPATH behind the scenes in order to insure that Optizelle was in the user path. Prior to the upgrade in 2016, MATLAB would break on Windows, badly, when this was done. Since then, it’s been fixed, which I’m grateful for.

  2. Prior to the environment variable change, the user needed to have their own startup.m file in some directory in order to add the Optizelle path. Workable, but I could never figure out a good way to automate this, so I documented it in a document that few people read. Basically, the takeaway was to automate it.

  3. MathWorks tends to lag support for compilers pretty far behind what’s available. I just checked and MinGW GCC 4.9 wasn’t supported on Windows until 2015b. GCC 4.9 wasn’t supported on Linux until 2016b. Prior to 2015b, there was no support for MinGW at all on Windows. Prior to 2016b, Linux was on GCC 4.7. Alright, so this was an issue because I recall there being a bug with the standard library on GCC 4.7 that was fixed somewhere around 4.8 or 4.9. As such, we needed newer compilers. In addition, although there was a way to compile with Visual Studio, we really needed MinGW on Windows because we needed a Fortran compiler to figure out the name mangling scheme in order to interact with LAPACK and BLAS. Technically, this can be done by hand and technically there’s a way to use GFortran with Visual Studio (or at least I think there is), but it’s a pain. Now, really, there were ways to make MinGW work prior to R2015b, but it needed to be done by hand, which is what we did then and do now. However, even then, this still caused issues on platforms like Linux. Basically, there were library incompatibilities between the different versions of libstdc++ because mex files used MATLAB’s version, which was pegged at 4.7 until R2016b. There was a way to get around this with LD_PRELOAD, but it was messy. Long story short, R2016b was the first version where all of the necessary compilers on all platforms finally lined up.

Alright, that’s probably more information than necessary, so here’s the technical question that I haven’t answered: On R2015a, does Optizelle work fine on Windows using MinGW 4.9 if the environment variables aren’t set behind the scenes? Probably. I’ve got a few things on my plate right now, so give me a bit more time to investigate.

Two more questions for you:

  1. Is your version of MATLAB fixed or could you just upgrade?

  2. Do you have a toolbox that requires MATLAB, or could you just use Octave on Windows?