Friday, May 12, 2006

Has Express edition changed OSS' posture?

As you know, VisualStudio Express edition became free download. Some OSS Project seems to change the posture about the compiler. You don't need to be afraid of .NET when you use VisualStudio.NET C++ Express. Free VisualStudio.NET C++ can build the native code that runs without CLR (VM).[1]

OSS projects are demanded to support free compilers, free IDE and old environments, which are gcc, Code::Blocks, VisualC++ 6 and more. Do OSS projects need to support under VisualC++ 2003 now? VisualStudio Express edition has the latest microsoft's compiler.

VisualC++ 6 is an old compiler. Developer can't write the code that uses template. I was surprised when I heard this problem from Mr,Marijuana. You can't write the following code:

std::List<SceneNode>::iterator itr = ...

That code triggers syntax error. It's just inconceivable! It's impossible to write the program with STL. Developers must use 'typedef' to avoid that restriction.

typedef std::List<SceneNode> SCENENODE_LIST_T;
SCENENODE_LIST_T::iterator itr = ...

I didn't know because I didn't use VisualStudio series when VC++6 was active service. Of course, you don't meet such trouble at gcc, CodeWarrior and etc.

Under such restriction of VisualC++ 6, it's difficult to use STL for real. If OSS projects drop support old VisualC++, they can emancipate their source code from the restriction. OGRE project published the following opinion:

Lastly, if you use Visual C++, note that we have dropped support for old versions and officially support only VC7.1 (.Net 2003) and VC8 (.Net 2005) with this release. The standards support in older versions of VC++ (especially VC6) was just too bug ridden to tolerate any longer since it was constraining our development, and the upgrade path to VC8 Express is free, so there is no reason to continue to use outdated versions. You also have the choice of Code::Blocks.

I think that's right.

[1]In this case, don't choose use of managed code when you configure your project.

No comments: