Visual C++ Compiler Plans
Hi: my name is Jonathan Caves and I’m a developer on the Visual C++ Compiler Team. I thought I’d take a few moments to let you know about the plans our team has for the next release of Visual C++.
After the last release of Visual C++ we took a long, hard look at the compiler source base and decided we needed to take the time to seriously invest in reworking our existing code base – some parts of which are over 20 years old. We have plans to really improve the development process for both our existing native C++ customers as well as our newer C++/CLI customers. Unfortunately these changes are going to take time to implement and we definitely can’t do anything in the next release (called Orcas) which has a short development cycle.
So instead of working on the next release of Visual C++ most of the compiler development team will be full steam ahead working on the future generation compiler – we are not yet sure exactly what form this compiler will take but we do know that it will really improve and re-energize the C++ development process.
This does bring up the question of what C++ compiler enhancements will be in Orcas? Notice I said “most of the compiler development team” as we are not putting the whole team on the future generation compiler – instead we have left one developer, yours truly, to work on the current source base. We know that C++ is still one of the most widely used programming languages and that we can’t just let the current Visual C++ compiler stagnate so I’ll be working on keeping it ticking. This is mostly going to involve bug fixing (and I hope that most of the bugs I fix will be ones reported by our customers) though I also think that I may find time for a few small features!
One thing we did after Whidbey, as part of analyzing our source base, was to categorize the remaining bugs in the database. This analysis showed some areas of the C++ language in which the compiler support was less than what we would have wished it to be. We made an effort to address these areas and in some cases we think we can get this work into the next release of the compiler. One example is the interaction between friend functions and templates. In many other cases, however, the work became so big (like rewriting the code that handles the parsing of qualified-names) that we decided to just move it to the ‘future’ compiler. Going forward I know of other ‘problem’ areas in the compiler that I am pretty certain can be addressed without needing major reconstructive surgery.
But these small features aside, most of the work on the compiler for the next release is going to bug-fixing and I know from interacting with many of you over the last few years that you’ll be quite happy about this. I’m sure you’ll welcome a compiler that doesn’t introduce a lot of new features and instead focuses on improving the quality of what we have. So if you have a serious bug you feel we need to address you should definitely open an issue on the Product Feedback site but please be aware that I am only one person and so, unfortunately, I won’t be able to fix each and every bug. I can assure you though that as a team we will focus on the bugs we believe have the greatest impact – like compiler crashes (especially without any error message), bad code generation, blocking issues, etc.
I would welcome any feedback on this plan so feel free to add your comments below.
Jonathan C aves
Visual C++ Compiler Team