Click here to Skip to main content
15,867,453 members
Articles / Programming Languages / C++
Article

Everett: The next Big Thing for Visual C++ developers

Rate me:
Please Sign up or sign in to vote.
5.00/5 (1 vote)
8 Nov 2002CPOL8 min read 261.4K   21   96
Microsoft's Visual C++ .NET Product Manager talks about the changes in store for the next version of Visual Studio .NET

Microsoft's Visual C++ .NET Product Manager on Everett.

Nick Hodapp is the Microsoft Visual C++ .NET Product Manager, and the author of our monthly Semicolon column. One of his primary jobs is to keep a finger on the pulse of the Visual C++ community and in turn feed that data back into his product team at Microsoft.  "It's a hard job - we're a dynamic (and sometimes unruly) bunch".

Back when Visual Studio .NET 2002 was released the shining star was C#, followed closely by VB.NET. C++ developers were in many cases left out in the cold. Sure, we had Managed Extensions and ATL Server, but no Windows Forms designer and no chance to use VC++.NET in ASP.NET (unless you enjoyed having IIS crash that is). We got some nice optimisations and inbuilt security checks but to many it seemed that Visual C++ had been ignored and would be relegated to system level programming. In short it seemed that Visual C++ would end up in the retirement home for antiquated languages swapping stories of glory days with FORTRAN.

Microsoft will soon be releasing Everett (the release date is yet unannounced; they are saying "early next year"). We've had teasers for almost a year on what will be included but nothing concrete. Today, however, Bill Gates has pulled much of the wraps off of Everett, as it were, and I spoke to Nick to get the low-down on what Everett includes for Visual C++ developers.

First off: What is Everett?

Everett is the codename for the next release of Visual Studio .NET - the official name is still under wraps.  Everett is a major release for Visual C++ developers, and is largely an incremental upgrade for C# and Visual Basic .NET developers.

So what's in it for C++ developers then?

The biggest things in Everett are: conformance to the ISO standard, support for the Windows Forms designer; new compiler optimizations and code security feature enhancements

There are also a few minor bug fixes for managed extensions, the MFC/ATL libraries and also a bunch of fixes in the Debugger and IDE. 

Microsoft people have been hinting about the conformance work in this release for well over a year.  What exactly are we getting?

In Everett we've achieved 98% conformance to the C++ ISO standard. No compiler reaches 100%, and it turns out that conformance is a difficult thing to measure since there is no singly accepted test suite.  We used 3 - Perennial, Plumb Hall, and Dinkumware - and are passing each above the 98% line.  But our favorite benchmark is that we're compiling the popular Boost, Blitz, and Loki libraries without the need for special workarounds.  We feel that the great number of innovations in C++ are occurring in these community written libraries, and it is important that Visual C++ be able to compile them. Visual C++ developers will now be able to use the same libraries that the rest of the C++ community, making them part of the greater C++ community.  That aside, we'll finally be able to write code using some of the advanced template features defined in the standard.

We're not at 100%, yet, but expect that we'll remain on the path towards full conformance.  In particular, the ISO features "Export" and "Exception Specifications" are tricky, and there is much debate as to their usefulness.  They remain on the plate.

Nick sent along a list of specific features that are now in the compiler. They include:

  • 2.2 Unicode identifiers 
  • 3.4.2 Full Koenig lookup 
  • 8.5.1 Empty aggregate initialization 
  • 9.8 Symbol lookup for local member functions 
  • 11.4 Friends in class templates (also 14.5.3) 
  • 13.3.1.1.2 Implicit invocation of ptr-to-func conversions 
  • 13.3.3.2 Ranking of derived to base conversions 
  • 14.1 Non-type template parameters (also 14.3.2)
  • 14.5.2 User-defined conversion templates
  • 14.5.4 Partial specialization of class templates
  • 14.5.5.2 Partial ordering of function templates
  • 14.7.1 Nested classes in class templates
  • 14.7.3 Explicit specialization of member templates
  • 15.5.2 The unexpected() function

VC7 already had some nice improvements in performance - which is impressive considering it was the 13th revision of the compiler and yet they still eked out something like a 10% gain. What do we get for 7.1? 

C++ is chosen for its performance so we always want to ensure our compiler is the best. To do this we've introduced new switches for apps targeting Pentium IV and Athlon chips that can potentially provide another 5-10%, depending on the type of code being written.  For heavy floating point operations you may see up to 15% performance gains.

Two new switches, /arch:SSE and /arch:SSE2 target Streaming SIMD instructions on modern processors. We see around a 2-3% perf boost when using this for floating point code.

And, we've enhanced existing optimizations like Whole Program Optimization.

You mentioned improved code security for C++ applications. In what form?

C++ is lean and mean but it can also is discredited in terms of code security. Microsoft is very focused on securing our own products as well as those of our customers so we introduced the /GS flag in VS.NET as a tool to help mitigate buffer overrun vulnerabilities. In Everett we've expanded the repertoire of attacks that the compiler 'understands'. We've also enhanced the feature so that it works in cooperation Windows .NET Server.

Applications compiled with /GS and running on Windows .NET Server will have their exception table loaded by the OS at load time. If an exception occurs while the program is running the OS will check the location of the instruction that the program is trying to jump to in order to handle the exception. If the address isn't in the table originally loaded by the OS then an attack is assumed underway and the program is halted immediately. This turns a potentially devastating problem into merely an ugly but safe problem.

But will applications suffer a performance hit if they use these security checks?

Generally "no". The new compiler produces code that is even more optimized than the shipping product or VC6, so the improved speed you get by compiling with Everett outweighs any perf hit you would get by compiling with /GS. The worst case scenario we have seen is a 2% degradation, but in general we hardly notice anything.  In Everett, there are only nine instructions for every successful security check, and all of those instructions are easy to cache and don’t cause branch mispredictions. So overall compiling code in Everett with optimizations and /GS is going to result in faster code than that produced by previous versions.

One of the most notable features missing from VS.NET was Windows Form designer support for VC++. It's been mentioned a ton of times but has it been delivered?

Yes. Everett includes RAD support for Windows Forms for VC++.NET.

What about ASP.NET support?

There is a known issue in the shipping product where components built using Managed C++ sometimes crashed IIS if called from ASP.NET pages. This is a documented App-Domain issue and it is fixed in Everett.  Managed C++ components can now be used freely in ASP.NET applications.

There is no Web Forms support for C++. It's something we've thought about a lot but to be honest there doesn't seem to be any demand to include it.

Have the bugs in the IDE related to VC++ been squashed?

What bugs are those again?  Seriously though, we've done a lot of work to refine the IDE for C++ developers.  It's not "all new" again, but we did fix a lot of problems with the project-build system, with the task list, and with dynamic help.  Oh, and some of the resource-editor bugs that keep getting mentioned on CodeProject.  I sure hope we got the majority of those.

So when do we see Visual Studio .NET 2003?

We're still aiming to RTM this year.  Assuming that it will hit the streets early next year.  Lots of factors combine to set a release date, and they're not all related to Visual C++.  Please be patient!

The Visual Studio .NET 'Everett' upgrade path

With a new version of Visual Studio .NET imminent, many developers are hesitant to purchase the current version of Visual Studio .NET out of fear that the product they've purchased will be out of date within months. Microsoft have announced in their roadmap that MSDN subscribers (Universal, Enterprise, or Professional) will get the update as soon as it's released, and that owners of Visual Studio .NET will be able to upgrade for $29 (to cover the cost of media, postage and handling). If you have Visual Studio .NET and don't wish to pay the $29 then Microsoft will be offering a free service pack at the same time that will include bug fixes to VS.NET only.

More News

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Founder CodeProject
Canada Canada
Chris Maunder is the co-founder of CodeProject and ContentLab.com, and has been a prominent figure in the software development community for nearly 30 years. Hailing from Australia, Chris has a background in Mathematics, Astrophysics, Environmental Engineering and Defence Research. His programming endeavours span everything from FORTRAN on Super Computers, C++/MFC on Windows, through to to high-load .NET web applications and Python AI applications on everything from macOS to a Raspberry Pi. Chris is a full-stack developer who is as comfortable with SQL as he is with CSS.

In the late 1990s, he and his business partner David Cunningham recognized the need for a platform that would facilitate knowledge-sharing among developers, leading to the establishment of CodeProject.com in 1999. Chris's expertise in programming and his passion for fostering a collaborative environment have played a pivotal role in the success of CodeProject.com. Over the years, the website has grown into a vibrant community where programmers worldwide can connect, exchange ideas, and find solutions to coding challenges. Chris is a prolific contributor to the developer community through his articles and tutorials, and his latest passion project, CodeProject.AI.

In addition to his work with CodeProject.com, Chris co-founded ContentLab and DeveloperMedia, two projects focussed on helping companies make their Software Projects a success. Chris's roles included Product Development, Content Creation, Client Satisfaction and Systems Automation.

Comments and Discussions

 
GeneralVisual editor Pin
Shamoon16-Nov-02 22:47
Shamoon16-Nov-02 22:47 
GeneralRe: Visual editor Pin
Martin Haesemeyer17-Nov-02 0:06
Martin Haesemeyer17-Nov-02 0:06 
GeneralA Suggestion Pin
Barretto VN16-Nov-02 21:02
Barretto VN16-Nov-02 21:02 
GeneralAnother problem Pin
melwyn18-Nov-02 22:04
melwyn18-Nov-02 22:04 
GeneralA step backwards in GUI development Pin
Anonymous14-Nov-02 0:07
Anonymous14-Nov-02 0:07 
GeneralRe: A step backwards in GUI development Pin
Stephane Rodriguez.14-Nov-02 1:20
Stephane Rodriguez.14-Nov-02 1:20 
GeneralRe: A step backwards in GUI development Pin
Philip Patrick16-Nov-02 5:36
professionalPhilip Patrick16-Nov-02 5:36 
GeneralRe: A step backwards in GUI development Pin
Stephan Schaem18-Feb-03 15:16
sussStephan Schaem18-Feb-03 15:16 
QuestionNew Release of Visual Studio.NET ???? Pin
Barretto VN13-Nov-02 22:01
Barretto VN13-Nov-02 22:01 
AnswerRe: New Release of Visual Studio.NET ???? Pin
Christian Graus13-Nov-02 22:15
protectorChristian Graus13-Nov-02 22:15 
GeneralRe: New Release of Visual Studio.NET ???? Pin
Barretto VN14-Nov-02 0:34
Barretto VN14-Nov-02 0:34 
GeneralRe: New Release of Visual Studio.NET ???? Pin
Christian Graus14-Nov-02 0:37
protectorChristian Graus14-Nov-02 0:37 
GeneralRe: New Release of Visual Studio.NET ???? Pin
Barretto VN14-Nov-02 0:58
Barretto VN14-Nov-02 0:58 
GeneralRe: New Release of Visual Studio.NET ???? Pin
Christian Graus14-Nov-02 1:03
protectorChristian Graus14-Nov-02 1:03 
AnswerRe: New Release of Visual Studio.NET ???? Pin
Stephane Rodriguez.13-Nov-02 22:24
Stephane Rodriguez.13-Nov-02 22:24 
A good advice : copy the DVD content to your hard drive, and install from there. 30 minutes instead of 1H30.

That said, if you have VC6 code, I highly recommend to have both VC6 and VC7 installed, because from my personal experience you are going to have a VERY HARD time getting your code compiled in VC7. (MFC7/ATL have some of their APIs changed).


Back to real work : D-16.
AnswerRe: New Release of Visual Studio.NET ???? Pin
djkno316-Nov-02 12:17
djkno316-Nov-02 12:17 
AnswerRe: New Release of Visual Studio.NET ???? Pin
Ian Semmel20-Nov-02 7:43
Ian Semmel20-Nov-02 7:43 
GeneralRe: New Release of Visual Studio.NET ???? Pin
Anonymous6-Mar-03 13:18
Anonymous6-Mar-03 13:18 
GeneralIntel Compiler Support for VS 7.1 Pin
Karl Mutch13-Nov-02 6:06
Karl Mutch13-Nov-02 6:06 
GeneralRe: Intel Compiler Support for VS 7.1 Pin
Anonymous13-Nov-02 23:53
Anonymous13-Nov-02 23:53 
GeneralWe need a real upgrade for VC!! Pin
Anonymous12-Nov-02 21:56
Anonymous12-Nov-02 21:56 
GeneralRe: We need a real upgrade for VC!! Pin
NormDroid14-Nov-02 1:11
professionalNormDroid14-Nov-02 1:11 
GeneralRe: We need a real upgrade for VC!! Pin
Anonymous14-Nov-02 17:17
Anonymous14-Nov-02 17:17 
GeneralRe: We need a real upgrade for VC!! Pin
jhwurmbach18-Nov-02 23:09
jhwurmbach18-Nov-02 23:09 
GeneralRe: We need a real upgrade for VC!! Pin
saierdia19-Jan-03 15:53
saierdia19-Jan-03 15:53 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.