2 Dec 2001 deven   » (Journeyer)

Gangplank:

I was so focused on getting the initial release out the door that I plum forgot the most important thing! I forgot to test the release! Damn thing didn't even compile. D'oh!

The reason is simple; there was a class named Assoc which implemented hashes (which used to be better known as "associative arrays", hence the Assoc name). Before the release, I decided I should rename the class to Hash to avoid confusion in terminology. I fixed all occurences of "Assoc" of course -- but I failed to notice that there was a Hash() function in the class. It was a private class method used for the hash function, but of course the C++ compiler thought it was a constructor, since I inadvertantly created that collision. I've fixed it now, renaming the Hash() method to HashFunction() to remove the conflict. Unfortunately, this makes the initial release a "brown paper bag" release -- not an auspicious start. *sigh*

This underscores the exact reason why I released it as a beta version (1.0.0.beta.1) instead of as a stable release (1.0.0) -- I didn't want any stable release to ever have a dumb mistake like this in it, so I decided that by policy, a stable release would always be identical to a development release, except for the version number.

There have been several serious bugs in the Linux kernel "stable" series which slipped through because untested code was added to the "stable" release. I wanted to avoid that. And I did -- even though the basic codebase is very stable, there were changes in the released version from the tested-but-unreleased version. Most of the changes were in the comments at the start of the files, but some involved actual code changes. Simple ones (like renaming some source files, occurrences of the system name, Assoc->Hash, etc.) but obviously not completely immune to error.

I guess I've proven the value of my stable release policy, but I wish I had been alert enough to remember to build and test the server before posting the release. Oh well. The new release (1.0.0.beta.2) does compile and run correctly. I tested it this time.

I still need to write more documentation, of course...

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!