More Visual C++ Q&A: A New Compiler Front-End

A few days ago, I blogged to answer to someone’s question about "where is Visual C++ going" by giving a number of resources and links, primarily about this year’s release now in public beta.

But their real question was about "where is Visual C++ going beyond VC++ 2008," and in particular whether we will continue to invest in the C++ compilers and native libraries, support new native and managed facilities like XAML via C++, and so on.

Now I can point to an answer that’s slightly more complete but also breaks some news: Our VP, Soma, blogged about this very topic this week. Here’s the key paragraph, some emphasis added:

This team will be significantly increasing support for native development tools. Central to this work is investigating ways to make C++ developers far more efficient in understanding, updating and validating the quality of large native code bases. In fact, the team is already working on a front-end rewrite that will allow for a vastly improved IntelliSense experience. This same work should pave the way for future enhancements such as refactoring and advanced source code analysis. In addition, the team intends to update the native libraries to simplify the development of rich-client user interfaces and access to underlying Windows platform innovation. The team will also work to provide “friction-free” interop between native & managed code through enhancements to C++/CLI and IJW.

From the comments section, Bill Dunlap from our VC++ group added some teasers, including (emphasis mine):

MFC – we are working on a huge update to MFC that should knock your socks off.  I can’t tell you too much right now, but this is closer than you might [think] <g>.

The Visual C++ "front-end rewrite" Soma mentions is indeed well under way, and one of the big benefits will be that it will make the compiler much more flexible (dare I say "agile"?) for us to work with and add features, including C++0x features. We’ll be able to say more about the new compiler and report progress in the coming year or two as it turns into real product you can see and touch.

[8:55am: updated to add Bill Dunlap’s comments and edit the last paragraph]

4 thoughts on “More Visual C++ Q&A: A New Compiler Front-End

  1. Over the last decade, I’ve worked with every Visual Studio since version VC++4. While it’s great that there are new features coming down the pipe (personally, I can’t wait for TR1) there seems to be a large disconnect between what is done for VC++ development and what people are actually asking for. The priority is clearly on checking off a list of added features, while ignoring bugs and major usability issues.

    Here is yet another summary of major issues with VS that are never addressed:

    1) The help system is really poor (both performance and quality of search results). Search through the feedback for Soma’s post (link above) for the word "Google" to see the complaints. From a computer science perspective it’s rather shameful that to get a more relevant MSDN page out of Google (even using an unrestricted search of the whole internet) than using the MSDN search itself.

    2) Visual Studio bugs. Why is there a) no list of known bugs b) hotfixes or workarounds for them. The standard response from Microsoft is that all of that registration is needed so they can follow up for more information. But that’s not what we want. How many times have you downloaded a new printer or video card driver to fix an issue. That should be the experience (no registration, just search, download, install, all in under 5 minutes).

    Read the "Customer looking for Customer Service" post here:
    http://blogs.msdn.com/scottwil/archive/2005/11/07/490007.aspx
    for what people are really asking for.

    3) Moving projects between Visual Studio versions (i.e. have VS2008 write 2005 and 2003 solution/project files)
    This isn’t that difficult (There are codeproject articles that do some of it). I can’t understand why this hasn’t been done, as this really slows adoption of a new version (at least at the places I’ve worked) because everyone knows that if that move to the new version, work for a month and find a show-stopper bug, we’re trapped (or have to re-build the project file in the old version). The end result? everyone stays on the old version until a service pack is out (which can be years, which is ridiculous – but that’s another story).

  2. For the last five years, C++ has been treated as a second class programming laguage by microsoft. The one highlight being the vc2003 compiler (the 2005 is even better, but 2003 was the mportant step). While Microsoft has been dotnetting, I’ve gone portable, replacing MFC with wxWidgets and relying on Boost, STL and other non-microsoft libraries for my other library needs. Microsofts treatment of OpenGL under Vista didn’t help the situation. Like many other developers, I’ve started to by Macs and run windows either in bootcamp or in Parallell Desktop.

    The one future direction that would be really exciting would be an implementation of your Concur project. That is, if it happens sometimes soon. An update to MFC wont catch my eye.

  3. I’m also not happy with the way Microsoft has marketed C++ lately. It always seemed to me that dot net is the second class citizen in the Windows application world. AFAIK, all new Windows APIs are still being developed in C/C++. So it’s great to hear that native development is getting improved. Thank you!

    Please keep up the excellent work on the compiler. The level of optimisation I’m getting from VS2005 is fantastic. I really can’t wait for C++0x. Any chance of it being C++08 rather than C++09? (please, please, please)

    Not wanting to turn your blog into another feature request list, but could we have some of the following addressed:

    1) The help system (in addition to HenrikVs)

    There seem to be many HTML styles in the help system. Could we see a common style being implemented. The GDI+ class help for instance is a real pain to use. Also, how about a filter on the main page for MFC, ATL, Win32, etc

    2) More optimisation support

    I often want to give a hint to the compiler to say where a branch is likely to be taken or so say that a variable is likely to be, or not be a given value. Some more directives for this would be useful.

    3) Improved macro recording

    The instant macro recorder is always been great to use, but has become really slow in the later versions of Studio. Could we also see an end to the balloon popup telling us that a macro is running (I already know this because I’m pressing the play button!)

    4) Integrated WTL support

    WTL is fantastic. The later versions are stable and powerful, so I am starting to replace my MFC applications with WTL. Could we have more direct support for WTL. New features added to MFC should be mirrored in WTL. Integrated help would also be nice.

  4. Just as the poster above i’ve been using vc++ since version 4. I really like our language too much to leave it alone and switch to managed code (i write a few managed things once in a while in c# but as i said: I like writing c++). In the last few years i didn’t want to write new applications using mfc any more and switched to other frameworks like qt. Also, i just had to accept that my applications looked somewhat different than what others get when using windows forms or wpf.
    i’m extremegly glad to hear that mfc is actively developed (never had any doubts about that) and maybe i will be able to use mfc to develop new applications again in the future. somehow the mfc model should be cleaned up quite a bit: just add a few tabs to a tabcontrol and you end up with loads of resources, classes and what not which nowadays isn#t acceptable any more. with these kinds of changes i don’t know if Microsoft should still call it mfc, though.

    really looking forward to whats coming for the native c++’ers!

Comments are closed.

In comments, use [code] [/code] for code blocks, and the same with angle brackets for code inside text paragraphs. I appreciate and try to acknowledge feedback on GotW articles; if you're suggesting an improvement for a GotW Solution post, please post under your real name (or include it in the comment text) if you would like to be acknowledged here and when the material is updated and expanded in future Exceptional C++ books.

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s