Building software in Debug mode under Windows uses a different ABI and runtime from release. This runtime adds in a bunch of extra compile-time and run-time checks.
For many years, ROS 2 has had a Windows Debug CI job running nightly. We’ve also shipped a Windows Debug package as part of our stable distribution patch releases, which is built by a packaging job.
However, it has become more and more difficult to support Windows Debug. Right now the Windows Debug jobs are failing because we aren’t quite using the correct interpreter when running tests. We are also stuck on an ancient version of Python partially because we would need to rebuild several packages in Windows Debug mode to upgrade. And finally, it is currently not possible to use Windows Debug with the new Conda development model we are switching to.
While all of that is fixable, the amount of time it would require to put into it does not justify the investment. Windows Debug does have some value, but much of that value can probably be achieved by doing more with our address sanitizer or ub-sanitizer Linux jobs. And based on the Windows survey we did last summer, it seems like few people are using Windows Debug.
Thus I am proposing that we discontinue the ROS 2 Windows Debug nightly CI and packaging jobs completely. That means that we will no longer build or test nightly on Windows Debug, and we will no longer ship binary Windows Debug packages with our releases. This would also retroactively apply to Humble and Jazzy, so new patch releases of those stable distributions would no longer have Windows Debug tarballs available. Note that there will be no change to the Windows Release tarballs; those will continue to be delivered as they are today.
If this change will negatively impact you, please comment here in this thread. We’ll try to work with you to mitigate your problems.