All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] Add DSO symbol versioning to support backwards compatibility
@ 2014-09-15 19:23 Neil Horman
       [not found] ` <1410809031-19114-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
  0 siblings, 1 reply; 43+ messages in thread
From: Neil Horman @ 2014-09-15 19:23 UTC (permalink / raw)
  To: dev-VfR2kkLFssw

The DPDK ABI develops and changes quickly, which makes it difficult for
applications to keep up with the latest version of the library, especially when
it (the DPDK) is built as a set of shared objects, as applications may be built
against an older version of the library.

To mitigate this, this patch series introduces support for library and symbol
versioning when the DPDK is built as a DSO.  Specifically, it does 4 things:

1) Adds initial support for library versioning.  Each library now has a version
map that explicitly calls out what symbols are exported to using applications,
and assigns version(s) to them

2) Adds support macros so that when libraries create incompatible ABI's,
multiple versions may be supported so that applications linked against older
DPDK releases can continue to function

3) Adds library soname versioning suffixes so that when ABI's must be broken in
a fashion that requires a rebuild of older applications, they will break at load
time, rather than cause unexpected issues at run time.

4) Adds documentation for ABI policy, and provides space to document deprecated
ABI versions, so that applications might be warned of impending changes.

With these elements in place the DPDK has some support to allow for the extended
maintenence of older API's while still allowing the freedom to develop new and
improved API's.

Implementing this feature will require some additional effort on the part of
developers and reviewers.  When reviewing patches, must be checked against
existing exports to ensure that the function prototypes are not changing.  If
they are, the versioning macros must be used, and the library export map should
be updated to reflect the new version of the function.

When data structures change, if those structures are application accessible,
apis that accept or return instances of those data structures should have new
versions created so that users of the old data structure version might co-exist
at the same time.

Signed-off-by: Neil Horman <nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
CC: Thomas Monjalon <thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
CC: "Richardson, Bruce" <bruce.richardson-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>

^ permalink raw reply	[flat|nested] 43+ messages in thread
* Add DSO symbol versioning to supportbackwards compatibility
@ 2014-12-20 21:01 Neil Horman
       [not found] ` <1419109299-9603-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
  0 siblings, 1 reply; 43+ messages in thread
From: Neil Horman @ 2014-12-20 21:01 UTC (permalink / raw)
  To: dev-VfR2kkLFssw

GI: [PATCH 1/4] compat: Add infrastructure to support symbol versioninBI
develops and changes quickly, which makes it difficult for
applications to keep up with the latest version of the library, especially when
it (the DPDK) is built as a set of shared objects, as applications may be built
against an older version of the library.

To mitigate this, this patch series introduces support for library and symbol
versioning when the DPDK is built as a DSO.  Specifically, it does 4 things:

1) Adds initial support for library versioning.  Each library now has a version
map that explicitly calls out what symbols are exported to using applications,
and assigns version(s) to them

2) Adds support macros so that when libraries create incompatible ABI's,
multiple versions may be supported so that applications linked against older
DPDK releases can continue to function

3) Adds library soname versioning suffixes so that when ABI's must be broken in
a fashion that requires a rebuild of older applications, they will break at load
time, rather than cause unexpected issues at run time.

4) Adds documentation for ABI policy, and provides space to document deprecated
ABI versions, so that applications might be warned of impending changes.

With these elements in place the DPDK has some support to allow for the extended
maintenence of older API's while still allowing the freedom to develop new and
improved API's.

Implementing this feature will require some additional effort on the part of
developers and reviewers.  When reviewing patches, must be checked against
existing exports to ensure that the function prototypes are not changing.  If
they are, the versioning macros must be used, and the library export map should
be updated to reflect the new version of the function.

When data structures change, if those structures are application accessible,
apis that accept or return instances of those data structures should have new
versions created so that users of the old data structure version might co-exist
at the same time.

Note it was requested that this series be delayed until DPDK 2.0, so this is a
repost, now that DPDK 1.8 has been tagged.

Signed-off-by: Neil Horman <nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
CC: Thomas Monjalon <thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
CC: "Richardson, Bruce" <bruce.richardson-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
CC: "Robert Love" <robert.w.love-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>

^ permalink raw reply	[flat|nested] 43+ messages in thread

end of thread, other threads:[~2014-12-20 21:01 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-15 19:23 [PATCH 0/4] Add DSO symbol versioning to support backwards compatibility Neil Horman
     [not found] ` <1410809031-19114-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-09-15 19:23   ` [PATCH 1/4] compat: Add infrastructure to support symbol versioning Neil Horman
     [not found]     ` <1410809031-19114-2-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-09-23 10:39       ` Sergio Gonzalez Monroy
     [not found]         ` <20140923103923.GA4642-IWE99D/oH1/+pXziaqXtF9h3ngVCH38I@public.gmane.org>
2014-09-23 14:58           ` Neil Horman
     [not found]             ` <20140923145829.GB12884-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-09-23 16:29               ` Sergio Gonzalez Monroy
     [not found]                 ` <20140923162947.GA22463-IWE99D/oH1/+pXziaqXtF9h3ngVCH38I@public.gmane.org>
2014-09-23 17:31                   ` Neil Horman
2014-09-25 18:52       ` [PATCH 1/4 v2] " Neil Horman
     [not found]         ` <1411671152-27245-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-09-26 14:16           ` Sergio Gonzalez Monroy
     [not found]             ` <20140926141608.GA10993-IWE99D/oH1/+pXziaqXtF9h3ngVCH38I@public.gmane.org>
2014-09-26 15:16               ` Neil Horman
     [not found]                 ` <20140926151630.GD5619-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-09-26 15:33                   ` Sergio Gonzalez Monroy
     [not found]                     ` <20140926153304.GA16923-IWE99D/oH1/+pXziaqXtF9h3ngVCH38I@public.gmane.org>
2014-09-26 16:22                       ` Neil Horman
     [not found]                         ` <20140926162256.GF5619-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-09-26 19:19                           ` Neil Horman
2014-09-29 15:44       ` [PATCH 1/4 v3] " Neil Horman
     [not found]         ` <1412005443-20000-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-09-30  8:13           ` Sergio Gonzalez Monroy
2014-09-30 15:18       ` [PATCH 1/4 v4] " Neil Horman
     [not found]         ` <1412090280-9306-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-10-01 10:15           ` Sergio Gonzalez Monroy
     [not found]             ` <20141001101530.GA28292-IWE99D/oH1/+pXziaqXtF9h3ngVCH38I@public.gmane.org>
2014-10-01 10:38               ` Neil Horman
2014-10-01 11:28           ` Sergio Gonzalez Monroy
2014-09-15 19:23   ` [PATCH 2/4] Provide initial versioning for all DPDK libraries Neil Horman
     [not found]     ` <1410809031-19114-3-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-09-19  9:45       ` Bruce Richardson
2014-09-19 10:22         ` Neil Horman
2014-10-01 11:25       ` Sergio Gonzalez Monroy
     [not found]         ` <20141001112546.GA17019-IWE99D/oH1/+pXziaqXtF9h3ngVCH38I@public.gmane.org>
2014-10-01 14:43           ` Neil Horman
2014-09-15 19:23   ` [PATCH 3/4] Add library version extenstion Neil Horman
     [not found]     ` <1410809031-19114-4-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-10-01 11:27       ` Sergio Gonzalez Monroy
2014-09-15 19:23   ` [PATCH 4/4] docs: Add ABI documentation Neil Horman
     [not found]     ` <1410809031-19114-5-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-10-01 16:06       ` Sergio Gonzalez Monroy
2014-09-18 18:23   ` [PATCH 0/4] Add DSO symbol versioning to support backwards compatibility Thomas Monjalon
2014-09-18 19:14     ` Neil Horman
     [not found]       ` <20140918191401.GP20389-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-09-19  8:57         ` Richardson, Bruce
2014-09-19 14:18         ` Venkatesan, Venky
     [not found]           ` <541C3B3C.9070105-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-09-19 17:45             ` Neil Horman
2014-09-24 18:19         ` Neil Horman
     [not found]           ` <20140924181940.GB4651-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-09-26 10:41             ` Thomas Monjalon
2014-09-26 14:45               ` Neil Horman
     [not found]                 ` <20140926144549.GA5619-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-09-26 22:02                   ` Stephen Hemminger
2014-09-27  2:22                     ` Neil Horman
2014-10-01 18:59                   ` Neil Horman
     [not found]                     ` <20141001185940.GA27437-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-10-07 21:01                       ` Neil Horman
     [not found]                         ` <20141007210135.GH27719-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-10-08 15:57                           ` Thomas Monjalon
2014-10-08 18:46                             ` Butler, Siobhan A
2014-10-08 19:09                             ` Neil Horman
2014-12-20 21:01 Add DSO symbol versioning to supportbackwards compatibility Neil Horman
     [not found] ` <1419109299-9603-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-12-20 21:01   ` [PATCH 2/4] Provide initial versioning for all DPDK libraries Neil Horman

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.