It's Like Déjà Vu All Over Again
"You could probably waste an entire day on the preceding links alone. But why take chances? We also give you Paul Snively..." — John Wiseman, lemonodor
There's way, way too much to write about, but I lack time at the moment. So for now let me just point to MetaKit and e4Graph. MetaKit is a wicked-cool embeddable database engine in C++. It's extremely lightweight and extremely fast. Perhaps most interestingly, it supports automatic schema evolution. Oh, and there are also TCL and Python bindings, making persistence for these popular scripting languages dirt simple. Apple used MetaKit in Mac OS X for the Address Book application. It would have been nice if they'd built it into a Framework. Maybe someday.
In the meantime, I'd Carbonized the last couple of versions and also integrated support for mmap()/munmap() when running under Mac OS X. There's a new version of MetaKit out, so I need to roll my patches forward again. I'll try to get this set into the mainline distribution.
e4Graph is a C++ persistence layer atop MetaKit. While MetaKit deals with the nuts and bolts of views and columns, e4Graph deals with the ins and outs of, well, object graphs: objects that contain points to other objects, which contain pointers to other objects... this is an awesome persistence solution for real-world apps. e4Graph also has a TCL binding, but no Python binding as of this writing.
So if you're looking for a fast, reliable, transactional persistence engine for your C++, TCL, or Python code, look no further. And watch this space for a note that I've Carbonized/mmap()ed the current release.
10:51:23 PM