What are some convincing arguments to upgrade from Visual Studio 6?
Asked Answered
C

14

12

I have a client who is still using Visual Studio 6 for building production systems. They write multi-threaded systems that use STL and run on mutli-processor machines.

Occasionally when they change the spec of or increase the load on one of their server machines they get 'weird' difficult to reproduce errors...

I know that there are several issues with Visual Studio 6 development and I'd like to convince them to move to Visual Stuio 2005 or 2008 (they have Visual Studio 2005 and use it for some projects).

The purpose of this question is to put together a list of known issues or reasons to upgrade along with links to where these issues are discussed or reported. It would also be useful to have real life 'horror stories' of how these issues have bitten you.

Clouet answered 10/10, 2008 at 13:23 Comment(4)
Thanks Rich, that's a much better way to phrase my question :)Clouet
@Len: No problem, kind of the format all questions should be in. Just working on it a little at a time...Leafstalk
A similar question was asked here some time ago, where I compiled a list of pros and cons: <https://mcmap.net/q/909483/-what-are-the-differences-between-visual-c-6-0-and-visual-c-2008>Effeminize
"Occasionally when they change the spec of or increase the load on one of their server machines they get 'weird' difficult to reproduce errors..." isn't this a compelling enough reason ?Perspex
M
18

Not supported on 64-bit systems, compatibility issues with Vista, and it was moved out of extended support by Microsoft on April 8, 2008

http://msdn.microsoft.com/en-us/vbrun/ms788708.aspx

Mastitis answered 10/10, 2008 at 13:28 Comment(0)
C
11

Unpatched VC6 STL is not thread safe. See here http://www.amanjit-gill.de/articles/vc6_stl.html, the patches aren't included in the service packs and you have to get them from Dinkumware directly (from here http://www.dinkumware.com/vc_fixes.html) and then apply them to each installation...

Clouet answered 10/10, 2008 at 13:32 Comment(2)
Even the patches do not guarantee thread safety. STL simply should not be used with VC6 in multithreaded environment. Period.Trunks
STLPort is a viable alternative to the STL that's shipped with VC6 though; it knows about and deals with the fact that VC6's operator new doesn't throw, etc.Clouet
L
10

The biggest problem that we've seen at my workplace is it's inability to handle even marginally complex templated classes or functions. This fact alone has force some of the most devoted VS6 fans in the company to upgrade and start using VS2005. In addition to the template problem, intellisense is much better, debugging is easier and more accurate, and many people find the IDE easier to navigate. The only downside that we have seen thus far is that builds take a bit longer in 2005 than they did in 6 (but that's probably a side effect of the compiler being more robust)

You can also check out these sites for a sampling of known issues in VS6:

I'm sure you could find more if you poked around a bit.

Lefevre answered 10/10, 2008 at 13:35 Comment(2)
Both your links link to the same page (ie the first link is broken as it links to the second page that you list...).Clouet
The link now links to the correct place but the place no longer exists ;) you're getting closer though ...Clouet
L
7

VS6 does not compile code according to the current C/C++ standard. For example,

  • it has incorrect (outdated) scoping rules for loops. At least one MSFT SDK have been updated now with code that expects the correct semantics, so the SDK won't even compile with VS6 any more.
  • It has trouble being able to compile all but the most trivial template constructs.
  • It will compile some template constructs that have been declared illegal in recent standards updates (because the constructs don't actually do what normal users expect).
Lalo answered 10/10, 2008 at 16:16 Comment(0)
C
3

operator new doesn't conform to the C++ spec and doesn't throw exceptions on allocation failure, fixing this is non trivial.

see: http://msdn.microsoft.com/en-us/magazine/cc164087.aspx

Clouet answered 10/10, 2008 at 13:29 Comment(0)
M
1

One of the biggest reasons for me to upgrade was the standard compliant C++ compiler ( although still not 100% ), so I could leverage more C++ features in my projects and not worry about strange hacks and workarounds that can lead to hard to find bugs.

Madwort answered 10/10, 2008 at 13:31 Comment(2)
True, but which compiler is? vc, gcc, intel's, none are 100% conformant but they're all pretty close (if you use standards mode flags).Toomay
The Comeau compiler (comeaucomputing.com) is about as close as you can get and has been for years. VC has come a long way since version 6, and is much much better than it was.Madwort
C
1

Not compatible with Vista. Heck, there's a long list of issues VS 2005 has with Vista.

That being said, most of the improvements in VS seem to apply to everything other than C++ native code. What I'm seeing is more standards compliance, which is important but hardly dramatic.

Conchoid answered 10/10, 2008 at 13:32 Comment(0)
C
1

Visual Studio 6 is not compatible with the lasted Windows SDKs, so it cannot utilize (at least easily) the latest OS features.

Cyan answered 10/10, 2008 at 13:34 Comment(3)
That's actually reasonably easy to work around, just grab a copy of sal.h from a later compiler. But I take your point.Clouet
The last SDK that supported VC6 was Feb 2003. Is is really as simple as getting a recent sal.h to get newer SDKs to work? That would amaze me.Framing
I have code building with the latest SDKs using VC6. I'll take a look at what was needed but it wasn't that hard.Clouet
P
1

Though I no longer have concrete details, I'll just throw in that when we upgraded at work, the new compiler found quite a few errors that VC 6 let slip through quietly. Improved product robustness just from the upgrade.

Pneumococcus answered 17/9, 2010 at 21:35 Comment(0)
R
0

If they use the STL, they may be interested in the recently-released feature pack, which includes an implementation of TR1.

Rheinlander answered 10/10, 2008 at 13:34 Comment(0)
S
0

I have upgraded my stuff but it's relatively uncomplicated. A con to upgrade is VS 2005 DLL Hell

Stanhope answered 10/10, 2008 at 13:34 Comment(0)
R
0

The VS 2008 version of the STL compiles with /clr, so if they're interested in transitioning to the managed world, they don't have to lose all their old code.

Rheinlander answered 10/10, 2008 at 13:35 Comment(0)
M
0

By defoult newer versions have better compiler and better libraries. But it's not always easy to port existing projects to newer studio, and you can upgrade both compiler and libraries manually.

I was using VS 6.0 with Intel compiler just year ago. We just had a bunch of old code then, which was threating iterators as pointers and vice versa, and it was all real messy and scary, so this holded us from an upgrade.

But I have had to upgrade after all, because the framework I'm currently using simply doesn't run on VS 6.0. Think this is the ultimative reason :-)

Municipalize answered 10/10, 2008 at 13:50 Comment(0)
D
0

Third-part libraries support only a limited number of compilers, too. Your client may not be able to accept bugfixes or feature upgrades as a result.

For instance, even a widely used library as Boost supports only VS 7.1 and later (source)

And you might have some problems with Data Execution Prevention (DEP) as well, because VC6 ships with an old ATL version. As usual, see Raymond Chen for details.

Diazole answered 10/10, 2008 at 14:9 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.