Hi, Vladislav!
> Incompatible Change: The shared library version of the client
From http://dev.mysql.com/doc/refman/5.5/en/news-5-5-10.html library was increased to 18 to reflect ABI changes, and avoid compatibility problems with the client library in MySQL 5.1. Note that this is an incompatible change between 5.5.10 and earlier 5.5 versions, so client programs that use the 5.5 client library should be recompiled against the 5.5.10 client library.
Serg, as you have now probably have full insight into the MariaDB 5.5 code, is it possible to keep the API compatible with MariaDB 5.1 / MySQL 5.1 to not force all applications to have to be recompiled when upgrading to 5.5 ?
The API incompatibility was caused by migration to CMake. If you want to keep libraries compatible, if's something that Wlad may need to look into.
I do not really think it was CMake that broke it. The "official" ABI has not changed, however some people claim that API and ABI are 2 different things ;)
The main source of the breakage is migration to CMake: making libmysqlclient.so in 5.5 cmake builds don't use version script, and don't use -Wl,--whole-archive. I've run the gcc -shared line manually in 5.5 with the version script, whole-archive, and the version changed to 16. And mysql client from 5.1 happily loaded the resulted library. Regards, Sergei P.S. I had to do one more change, related to removed (from 5.5) safemalloc, I added this to libmysql.c: void my_no_flags_free(void *ptr) { free(ptr); } but as we are going to restore safemalloc in our 5.5, this won't be an issue. P.P.S.: the api was extended in 5.5, true. but it's not a reason to break backward compatibility - it was extended in a perfectly backward compatible way.