The Vista review will take some time longer, I want to test some of the
new features like "Transactional NTFS" first. Moreover, I'm playing
around with the Microsoft PowerShell. niven isn't dead either, I've
finished another important milestone (basic thread library is working
now) and now I'll refactor the Configuration manager, after that I'll
dig in again into the packages.

Well, again no post with "Package manager working", but I've got a good
excuse why not ;) After digging a bit deeper into multithreading, the
currently available libs (Boost.Threads, etc.) had problems to do the
job, at least here. Plus, all of those libraries focus on low-level
abstractions while I needed a consistent low-to-high-level thread
framework. So I decided to roll my own ... :)

Threads

It's actually not that complicated, the basic primitives are rather easy
(mutex, semaphore, etc.). The only tricky one is a "Condition", at least
under Win32 where you have to be damn careful that the transition from
working->waiting and back is really atomic. I'm working on the
higher-level abstractions like producer/consumer or map/reduce, let's
see how I get on.

Although the Visual Studio 2005 was introduced some months ago, I didn't
get it until recently. It's by far the best IDE ever written, read on
for a complete review.

About Visual Studio 2005

I'm using the Visual Studio 2005 Professional and Standard German for
all my development now - only C++ though, so I won't comment on what
changed for C++/CLI and the other .NET languages. The new VS introduces
a more standards-compliant compiler, an updated MSDN & CRT and many
tweaks to the GUI. Let's take a look at each of the components.

First impression

The Pro Edition comes on 2 CDs plus 3 MSDN, same for the Standard.
Installing the complete Pro Edition took around 5 minutes on my
workstation PC. The standard edition took around 30 minutes on my
notebook here due to a weird problem with the installer. Being part of
the MSDN, I only get CD images. When you mount them one after the other
into the same drive, everything is fine - but if you mount them all at
once, the installation slows down extremly (5-10secs per file!). VS 2005
installs new, more friendly icons for source files, but still no 48x48
version of them so you still have crappy looking icons when using the
"Tiles" view. The startup time of the IDE has been significantly
enhanced. On my notebook, you can see the splash screen for maybe
one-two seconds while on my desktop it dissapears after a tenth of a
second.

The GUI

The new GUI is using the toolbar style introduced with Office 2003 and
looks overall more polished than the 2003 GUI. IntelliSense has been
improved dramatically - it finally supports things like
boost::shared_ptrs. Moreover, the syntax highlighter "knows" the value
of #defines and grays subsequent #ifdefs out if they're false. Other
changes include mostly polishing, for example, they finally settled down
with a deterministic window docking solution.

The compiler

The compiler (now at revision 14.00) supports both x86 and x86_64
targets. Adding a new platform is very easy. Porting too, unless you've
been using inline assembly which is no longer supported under x86_64 -
you have to use compiler intrisincs now which work actually quite good.
Portability is non-existant like before, but at least they're easier to
write. Moreover, more C++ standard stuff is on by default like RTTI or
exception handling while less Microsoft specific things are activated by
default. You still can't compile without the "compiler extensions"
though when you include windows.h or any other Windows header as they
rely on those extensions (anonymous structs, anyone?). The compiler
supports OpenMP 2.0, but I didn't have a chance to give it a try yet.

The new CRT

The Visual Studio 2005 comes with a new runtime library which introduces
secure versions of many functions like strcpy. This sounds fine at
first, but at least for me this is just a source of annoying problems.
First of all, you can only silence the warning but to get rid of them
you really have to go and "fix" your code which isn't broken in any way
(after all, you know what you've been doing when you wrote that
strcpy, don't ya?). And second, it also applies to the standard
library - things like std::string::copy are considered "deprecated"
now. I didn't manage to get the suggested fix (which simply replaces all
unsafe calls with their safe equivalents) working here.

The MSDN

The "new" MSDN is pretty much the old one (read: similar to the 2003
edition). The German Edition has a bug which prevents you from adding
other help collections using the Document Explorer. Microsoft is aware
of this issue, but a fix has been not made available yet (see
here
for the current status of the fix). The search function has been
updated: By default, it searches several online sources in parallel to
the local index. For unknown reasons, the MSDN online search is usually
much faster than the local search (even on my desktop with 2 GiB RAM
where the index should easily fit into). All in all, the new Visual
Studio is a big step forward, making developing under Windows even more
comfortable. I'm going to write another post about the new debugger
which is truly amazing, and deserves a post on his own. Stay tuned! And
kudos to Microsoft for such a good work.