[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] Introduce symbol versioning
[Thread Prev] | [Thread Next]
- Subject: Re: [PATCH] Introduce symbol versioning
- From: Andreas Schneider <asn@xxxxxxxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Mon, 12 Mar 2018 17:12:17 +0100
- To: libssh@xxxxxxxxxx
On Monday, 12 March 2018 16:13:24 CET Anderson Sasaki wrote: > Yes, the mechanism which builds the API is working properly, as well as the > SONAME handling. But this is not sufficient to keep the ABI stable. And > there are other problems that using only SONAME can't solve, like the > problems I listed in my first email. Just to make it easier, I'll copy the > list: > > * in an ABI change, there is no way to keep the old version for > compatibility and switch to the new version due to symbol clashes * in an > API change, there is no way to keep the old symbol for old applications, > and introduce a new symbol for the newly compiled applications * an > application cannot have two or more dependencies which are linked with > different versions of libssh Hi Anderson, we understand and value your effort, the problem is that we already have been there, we had a map file and we broke it. We added functions and forgot to update the map file. We even did released without updating the map file. Also it didn't work on Windows and we wanted a solution which is platform independent. That's why we were getting rid of it. The LIBSSH_API macro works since quite some years without any issues. Reintroducing it the way we already had it is probably not something we want. If we want to add it, we need a better solution. We need ABI checks as part of the build system so that we know something needs to be updated! Samba/libtalloc does ABI checks based on a script using nm and gdb. It is the only project I know which has working ABI checks. It has a signature file for every release making it easy to create the required map file. https://git.samba.org/?p=samba.git;a=tree;f=lib/talloc/ ABI;h=92e35481940c36344569ab71d866f075bd8aef52;hb=refs/heads/master It could be possible to achieve that using cmake scripts. If the cmake lang is too limiting it could be done with python. Best regards, Andreas -- Andreas Schneider GPG-ID: CC014E3D www.cryptomilk.org asn@xxxxxxxxxxxxxx
Re: [PATCH] Introduce symbol versioning | Anderson Sasaki <ansasaki@xxxxxxxxxx> |
[PATCH] Introduce symbol versioning | Anderson Sasaki <ansasaki@xxxxxxxxxx> |
Re: [PATCH] Introduce symbol versioning | Aris Adamantiadis <aris@xxxxxxxxxxxx> |
Re: [PATCH] Introduce symbol versioning | Anderson Sasaki <ansasaki@xxxxxxxxxx> |