{"action":"created","issue":{"url":"https://api.github.com/repos/redis/hiredis/issues/327","labels_url":"https://api.github.com/repos/redis/hiredis/issues/327/labels{/name}","comments_url":"https://api.github.com/repos/redis/hiredis/issues/327/comments","events_url":"https://api.github.com/repos/redis/hiredis/issues/327/events","html_url":"https://github.com/redis/hiredis/issues/327","id":73542817,"number":327,"title":"SONAMEs and ABI compatibility","user":{"login":"thomaslee","id":93216,"avatar_url":"https://avatars.githubusercontent.com/u/93216?v=3","gravatar_id":"","url":"https://api.github.com/users/thomaslee","html_url":"https://github.com/thomaslee","followers_url":"https://api.github.com/users/thomaslee/followers","following_url":"https://api.github.com/users/thomaslee/following{/other_user}","gists_url":"https://api.github.com/users/thomaslee/gists{/gist_id}","starred_url":"https://api.github.com/users/thomaslee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thomaslee/subscriptions","organizations_url":"https://api.github.com/users/thomaslee/orgs","repos_url":"https://api.github.com/users/thomaslee/repos","events_url":"https://api.github.com/users/thomaslee/events{/privacy}","received_events_url":"https://api.github.com/users/thomaslee/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"badboy","id":2129,"avatar_url":"https://avatars.githubusercontent.com/u/2129?v=3","gravatar_id":"","url":"https://api.github.com/users/badboy","html_url":"https://github.com/badboy","followers_url":"https://api.github.com/users/badboy/followers","following_url":"https://api.github.com/users/badboy/following{/other_user}","gists_url":"https://api.github.com/users/badboy/gists{/gist_id}","starred_url":"https://api.github.com/users/badboy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/badboy/subscriptions","organizations_url":"https://api.github.com/users/badboy/orgs","repos_url":"https://api.github.com/users/badboy/repos","events_url":"https://api.github.com/users/badboy/events{/privacy}","received_events_url":"https://api.github.com/users/badboy/received_events","type":"User","site_admin":false},"milestone":null,"comments":2,"created_at":"2015-05-06T07:33:02Z","updated_at":"2015-05-06T08:27:18Z","closed_at":null,"body":"Or: \"backward compatibility between hiredis releases?\"\r\n\r\nA SONAME change implies ABI-incompatible changes in a shared library.\r\n\r\nPrior to v0.12.1, hiredis was explicitly setting its SONAME=0.10 implying each release from 0.10.x upward was ABI-compatible with the release before it. From 0.12.1 onward, hiredis sets the SONAME of its shared libraries to the MAJOR.MINOR version of each respective release.\r\n\r\nFrom a quick objdump comparison between v0.13.1 and v0.11.0, I can't see functions in 0.11.0 that are not in 0.13.1 -- it's possible that other things have changed to break compatibility between 0.11.x-0.12.x and 0.12.x-0.13.x, but I'm wondering if that's actually the case.\r\n\r\nIs 0.13.1 backward compatible with 0.12.1 and 0.11.0? If so, any possibility we could reconsider the way SONAMEs change between minor version bumps? It's kind of a pain for packaging hiredis downstream (e.g. Debian requires an entirely new binary package for each SONAME change so that multiple versions of the same potentially-backward-incompatible package can run side-by-side with one another. I'm not familiar enough with RedHat's policies to say if they do the same, but I'd be surprised if they didn't.)\r\n\r\nMore information available here: https://www.netfort.gr.jp/~dancer/column/libpkg-guide/libpkg-guide.html#sonameapiabi\r\n\r\nSee also the discussion on debian-mentors, where I'm asking silly questions about the topic: https://lists.debian.org/debian-mentors/2015/05/msg00041.html"},"comment":{"url":"https://api.github.com/repos/redis/hiredis/issues/comments/99377616","html_url":"https://github.com/redis/hiredis/issues/327#issuecomment-99377616","issue_url":"https://api.github.com/repos/redis/hiredis/issues/327","id":99377616,"user":{"login":"badboy","id":2129,"avatar_url":"https://avatars.githubusercontent.com/u/2129?v=3","gravatar_id":"","url":"https://api.github.com/users/badboy","html_url":"https://github.com/badboy","followers_url":"https://api.github.com/users/badboy/followers","following_url":"https://api.github.com/users/badboy/following{/other_user}","gists_url":"https://api.github.com/users/badboy/gists{/gist_id}","starred_url":"https://api.github.com/users/badboy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/badboy/subscriptions","organizations_url":"https://api.github.com/users/badboy/orgs","repos_url":"https://api.github.com/users/badboy/repos","events_url":"https://api.github.com/users/badboy/events{/privacy}","received_events_url":"https://api.github.com/users/badboy/received_events","type":"User","site_admin":false},"created_at":"2015-05-06T08:27:18Z","updated_at":"2015-05-06T08:27:18Z","body":"One more thing: If we would use SONAME=0, we would commit to not breaking API compatibility in all following 0.x released, correct?"}}