The past weekend i travelled to Frankfurt, Germany to visit a friend and online colleague, Dr. Marc Duerner. Marc works on the Arklinux project, developing a C++ application framework called Platinum (Pt). While there, i installed their latest release of Arklinux to give it a try. Unfortunately, under that distro, libs11n wouldn’t link - the core libstdc++ (from gcc 4.0.something) was missing some symbols! Marc had be backrev the compiler to a “special edition” of gcc 3.3.5, which Arklinux’s main developer, “Bero” Rosenkraenzer, had hacked on. Normally i’m not into using hacked copies of mainstream tools, but what the hell…
Wow! Under the standard compiler, the libs11n 1.2.3 source tree takes about 1 minute to compile on my machines. Under the hacked one, the whole thing builds in about 8 seconds. No joke.
After playing around with it some more (because i didn’t believe what i saw), the speedup appeared to be a combination of two things. When doing a first build after turning on my PC, it takes about the same time as under my standard distro (Suse Linux). After cleaning up and building again, it builds in under 10 seconds on subsequent runs. That implies that the kernel-level caching is more effective on the Arklinux distro. Go figure - Bero hacked the kernel, too. And he hacked KDE - it starts much more quickly than under Suse (takes 1/2 or 2/3rds as long to start).
Arklinux isn’t yet what i would call polished, but it is easy to install and works well. It is RPM-based and uses the “apt” family of tools to update software. This means that once you’re online, getting software and keeping it up to date is really easy. The “big” packages are kept very up to date, in particular KDE, the Kernel (they currently use 2.6.15, which isn’t yet released via kernel.org), and the compiler tools. Ark has several software mirrors, and the only halfway bad thing i can report is that there currently are no emacs or xemacs packages, so if you want a real editor you’ll have to build it from sources.
So if you’re up for trying out yet another Linux distro, give it a try.
i’ve got a few days off of work and not terribly much to do, so i thought i’d make an offer to potential s11n users out there:
Send me your source tree and show me what you want serialized. If it can reasonably be done in s11n, i’ll do it for you.
The reasons for this offer are:
a) To try to lure in some potential users who “aren’t quite sure…”
b) To challenge myself by including s11n support in trees other than my own. When i ported s11n into the pclasses tree it was a great chance for finding bugs, optimizations, and new ideas.
The only data types which are currently known to be problematic are:
a) Those which are not default constructable. This can be handled for some cases, but requires extra work.
b) Most types which hold references. By their nature, they cannot be default constructed.
c) Types without accessors to the data they want serialized. This requires intrusive serialization. This is only a problem in that it requires changing the class to make it serializable.
d) Graphs can be done, but each currently requires a custom algo for the pointer tracking to avoid duplicate serialization of cyclic objects.
So, if you’ve got types which don’t fall into those categories, feel free to send them my way. i am actually interested in looking at other people’s graph structures, to try to find a common way to handle these.
In response to the recent sqlite3 work in s11n, Eric McDonald pointed out Tero Laitinen’s LiteSQL project to the s11n-devel mailing list. LiteSQL is a database-centric serialization tool. It is fundamentally similar to s11n: it wants to save your objects for you. How it does so, however, is fundamentally different than s11n.
Its provides a DB abstraction layer, currently supporting MySQL, SQLite, and Postgres. As it is db-centric, it also allows you to deserialize based on queries, conceptually like saying “select MyObject where name like ‘%foo%’”.