
Maintaining binary compatability in C++ requires great effort and has performance implications, so I don't think it's reasonable to ask for it.
The performance implications are quite neligable, similar to usage of virtual functions, on the other hand, it even may improve performance because of smaller size of executable... But this is not the point; Nobody says keeping ABI is simple, especially when the library is not designed for it. However, if you do design it correctly, with all "d-pointers" needed to extend the functionality in future, it is not so hard.
Much of boost does tend to be source-compatible between versions, though.
Unfortunaly this is not enought. The problem is that Boost today is what JDK for Java. What would happen if every sinlge JDK minor release would require developers to compile version for specific JDK or user have all minor releases installed. What would happen to Qt or GTK if they were not keeping their ABI? Bad things. So what I call is to look at Boost as we look on Qt/GTKmm/JDK because it is not less important then other great libraries that do the right job. Artyom