Branching the hard way

Today I've tried branching like it was really meant ;) I've cut and chopped a whole tree into pieces and burned them. Really nice and a welcome change to the usual nightly coding sessions.

Threads & Vista

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.

Windows Vista

Microsoft released the Windows Vista Beta 2 recently and I'm downloading it at the moment (10% @ 600kb/s) ;) Stay tuned for some screenshots of niven on Vista!

From scratch we go

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.

Visual Studio 2005 - Hail Microsoft!

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.