s11n fanfare and PR5... 4... 3... 2... 1.0.0!At one point in our past, not long ago, we had Bits. Bits were easy, 0 or 1. Can't go wrong with Bits. Bits grew into Bytes. Bytes were cool, because they allowed us to store 256 distinct values in a set of 8 Bits. From Bytes evolved "basic types", like long int, double and the infamous (char *). From basic types types we eventually learned to build up larger conglomorates of data, what we would come to call Objects. Objects are cooler - way cooler - than Bits and Bytes. However cool they may be, however, they do inherently make some tasks more difficult than they are when dealing with, say, a few Bytes. For example, saving a 0 or 1 or the word "foo" is relatively straightforward, in and of itself. When you pack mixed data together, however, saving them becomes more problematic.One of the tough technical challenges facing Objects is how to achieve "persistence." That is, how to store and restore an Object. In general terms, these operations are known as "serialization"... Nearly four years ago - Springtime, 2001 - i found my goal as a coder: i wanted nothing more than to be able to save and load all of my C++ objects using a single interface. i knew the task would not be trivial. i knew that i personally didn't know enough to even begin to pull it off properly. But i knew C++ could do it, and doing it well. So i sat down and coded... and coded... and coded... Some 15 months ago, i finally felt i had learned enough C++ to really begin the task of Coding in Earnest. [No, Pete, Earnest is not a place, it's a state of mind.] So i sat down and coded... and coded... and coded... A basic version was working within a couple of days, but it was complete, utter crap. It evolved a lot over the following six months, and showed some promise, but it was still complete crap. So i remained sitting and coded... and coded... and coded... Then came the 0.7 rewrite, which showed some amazing new potential. Serializing templates was now a possibility, but doing so required an annoying amount of generated code. 0.7 quickly cycled through to 0.8, which refined many of 0.7 ideas into a much simpler interface. 0.8 eventually slid into 0.9 with relatively little coding, other than a massive build tree re-org. "The way of doing things in s11n" has established itself pretty well in the 0.9.x series, and experience with using s11n in client code shows that it far surpasses any original plans i had for the library, pre-0.7. i am extremely happy to say that, despite all that i admit to not knowing going in to this project, the "unknown unknown" which pleases me the absolute most is this:
Saving objects in C++ is finally braindeadedly simple!
As i write this, 21 December 2004, the 1.0.0 tree lies "almost officially frozen" on my hard drive, and hacking has already begun on the 1.1-dev tree. To celebrate not only the coming of a new year, but also the ushering in of a new era in serialization in C++, libs11n 1.0.0 will be released on Janurary 1, 2005. ... and coding ... and coding ... and coding ... 1 Jan 2005:s11n 1.0.0 is now available for download!This release is especially dedicated to Grandma Billie. :) (... and coding ... and coding ... and coding ...) |
[home] | This site is developed in conjunction with: toc, SpiderApe, & wanderinghorse.net. | [top] |