Click here to Skip to main content
Click here to Skip to main content
Go to top

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

, 8 Nov 2002
Rate this:
Please Sign up or sign in to vote.
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)

Share

About the Author

Chris Maunder
Founder CodeProject
Canada Canada
Chris is the Co-founder, Administrator, Architect, Chief Editor and Shameless Hack who wrote and runs The Code Project. He's been programming since 1988 while pretending to be, in various guises, an astrophysicist, mathematician, physicist, hydrologist, geomorphologist, defence intelligence researcher and then, when all that got a bit rough on the nerves, a web developer. He is a Microsoft Visual C++ MVP both globally and for Canada locally.
 
His programming experience includes C/C++, C#, SQL, MFC, ASP, ASP.NET, and far, far too much FORTRAN. He has worked on PocketPCs, AIX mainframes, Sun workstations, and a CRAY YMP C90 behemoth but finds notebooks take up less desk space.
 
He dodges, he weaves, and he never gets enough sleep. He is kind to small animals.
 
Chris was born and bred in Australia but splits his time between Toronto and Melbourne, depending on the weather. For relaxation he is into road cycling, snowboarding, rock climbing, and storm chasing.
Follow on   Twitter   Google+   LinkedIn

Comments and Discussions

 
GeneralVisual editor PinmemberShamoon16-Nov-02 22:47 
GeneralRe: Visual editor PinmemberMartin Häsemeyer17-Nov-02 0:06 
GeneralA Suggestion PinmemberBarretto VN16-Nov-02 21:02 
GeneralAnother problem Pinmembermelwyn18-Nov-02 22:04 
GeneralA step backwards in GUI development PinsussAnonymous14-Nov-02 0:07 
GeneralRe: A step backwards in GUI development Pinmember.S.Rod.14-Nov-02 1:20 
GeneralRe: A step backwards in GUI development PinmemberPhilip Patrick16-Nov-02 5:36 
GeneralRe: A step backwards in GUI development PinsussStephan Schaem18-Feb-03 15:16 
QuestionNew Release of Visual Studio.NET ???? PinmemberBarretto VN13-Nov-02 22:01 
Is it true that Microsoft is releasing a new version of Visual Studio in such a short time , can't beleive it. Microsoft last released Visual Studio 6 sometime in the 1st quarter of 1998 (am i right) , and then nearly 5 years later released Visual Studio.Net, is Microsoft using "Updates to VC++" as an excuse to cover-up for a rather shoddy product (.NET), Sample the following
I start installing .NET , after 1 hr 15 mins and 60% completion the system re-boots, after re-booting i try to install again , it knows that an earlier installation was un-successful and cleans up the previously installed files, Install proceeds , buts this time around it re-boots after 50 mins , so what do i do , re-install again or throw .NET in the dustbin or buy a new machine, A friend had once told me , In Windows when nothing else works try "Safe Mode" , so i start in "Safe Mode" BUT in "Safe Mode" in Windows 2000 you can only use Low-Resolution screen , which means that if i start installation i will not be able to see the "Cancel" and "Contine or Next" buttons , even if i shift the Start-Bar to the right from the bottom, but any way by trial and error method , using the tab key and a little bit of judgement i manage to overcome this problem of installation.

And now regarding the Help System , if i search for a keyword which return 500 search results , if i try to hurriedly scroll through the results , there is a 50-50 chance that either the Help System will crash with and error about some RPC Server (don't remember the exact message) or the system might just re-boot (there is no Blue-Screen of Death in Windows 2000).
 
Visual Studio.NET frequently re-boots when in use.
Is it better with Win-XP , no there are similar problems , except you can start Win-XP in Safe-Mode with High-Resolution. Re-boots are still there to trouble you.
My System configuration is P-III 700 , 256 MB RAM and 8 GB of Free Space at Installation time.
 
BTW : I have stopped using Visual Studio.NET and prefer the Windows 98/ Visual Studio 6 combination for my development activity because of stability , a better looking GUI then Windows 2000
 

AnswerRe: New Release of Visual Studio.NET ???? PinmemberChristian Graus13-Nov-02 22:15 
GeneralRe: New Release of Visual Studio.NET ???? PinmemberBarretto VN14-Nov-02 0:34 
GeneralRe: New Release of Visual Studio.NET ???? PinmemberChristian Graus14-Nov-02 0:37 
GeneralRe: New Release of Visual Studio.NET ???? PinmemberBarretto VN14-Nov-02 0:58 
GeneralRe: New Release of Visual Studio.NET ???? PinmemberChristian Graus14-Nov-02 1:03 
AnswerRe: New Release of Visual Studio.NET ???? Pinmember.S.Rod.13-Nov-02 22:24 
AnswerRe: New Release of Visual Studio.NET ???? Pinmemberdjkno316-Nov-02 12:17 
AnswerRe: New Release of Visual Studio.NET ???? PinmemberIan Semmel20-Nov-02 7:43 
GeneralRe: New Release of Visual Studio.NET ???? PinsussAnonymous6-Mar-03 13:18 
GeneralIntel Compiler Support for VS 7.1 PinsussKarl Mutch13-Nov-02 6:06 
GeneralRe: Intel Compiler Support for VS 7.1 PinsussAnonymous13-Nov-02 23:53 
GeneralWe need a real upgrade for VC!! PinsussAnonymous12-Nov-02 21:56 
GeneralRe: We need a real upgrade for VC!! PinmemberNorm Almond14-Nov-02 1:11 
GeneralRe: We need a real upgrade for VC!! PinsussAnonymous14-Nov-02 17:17 
GeneralRe: We need a real upgrade for VC!! Pinmemberjhwurmbach18-Nov-02 23:09 
GeneralRe: We need a real upgrade for VC!! Pinmembersaierdia19-Jan-03 15:53 

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

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

| Advertise | Privacy | Mobile
Web01 | 2.8.140916.1 | Last Updated 9 Nov 2002
Article Copyright 2002 by Chris Maunder
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid