ITK and VTK as compiler regression test cases
As ITK (Insight Segmentation and Registration Toolkit) is a foundational library in medical image processing, on which many programs depend (such as 3D Slicer), we want it to properly compile both on quite old and very new compilers. As Visual Studio is my development environment of choice, I took advantage of the opportunity offered by Microsoft to download and test pre-release versions of Visual Studio, in order to make sure ITK has smooth sailing once the final release of Visual Studio 2017 is published.
However, trying to compile ITK was causing Visual Studio to report “fatal error C1001: An internal error has occurred in the compiler.” After confirming that it was not specific to my configuration of ITK and that it was occurring with default configuration, I submitted the bug report to Microsoft.
It took about two weeks for them to make a fix to their internal code, and a month and a half more for that fix to make it into a publicly downloadable release candidate. During that time, the bug report attracted 96 followers who were interested in the outcome.
In the discussion that followed from that bug report, Ulzii Luvsanbat, a developer on Microsoft’s Visual Studio team wrote: “Additionally, we’ve added ITK and VTK libraries from GitHub to our daily compiler testing and validations. So in short, from now on we will be releasing MSVC compiler versions to the public where live GitHub ITK and VTK sources will build clean. That’s a promise :).”
ITK and VTK are not only important libraries for medical imaging and visualization, but they also are large and complex collections of code (ITK: 1.75M lines of code and 502 person-years of effort; VTK: 5.67M lines of code and 1734 person-years of effort; statistics taken from Open Hub), employing advanced technologies, pushing the envelope in compiler and systems support. Their permissive open-source licenses allow them to be used commercially. This makes them great regression test cases for compiler writers, as Microsoft has shown with this example.
This is also a great benefit to the ITK and VTK community, knowing that their tools are now much more likely to work with future releases of Microsoft Visual Studio! We consider this level of testing and attention from Microsoft to be outstanding. Our statistics show that 64% of the visitors to ITK and VTK websites are running Windows.
That is a great outcome, and it is really good to see Microsoft embracing open source projects to ensure they work in future compiler releases! Thanks for writing this up and sharing. Building open source projects on Windows/MSVC has always been challenging, CMake makes it easier, but practices like this will improve things much more. It is worth pointing out that VTK (and I think ITK) build a number of other open source projects by default, which will also benefit from enhanced testing.