From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-we0-f178.google.com (mail-we0-f178.google.com [74.125.82.178]) by dpdk.org (Postfix) with ESMTP id 134AE9AE7 for ; Tue, 3 Feb 2015 17:02:21 +0100 (CET) Received: by mail-we0-f178.google.com with SMTP id k48so45797427wev.9 for ; Tue, 03 Feb 2015 08:02:20 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:organization :user-agent:in-reply-to:references:mime-version :content-transfer-encoding:content-type; bh=+mmUvhpHgztPRJdhxKoRh/L0iLSUS2owReIwOt2JYLM=; b=j0EUFcr0LJygk8uu/rCdwab0nG+Oej1neFXYikvPeO1dSo+iJzdRClrqFhRsYhhbr1 rBAQ7FEjIvAiWwHXBTA3rXhSHCFaWrM6PxKVlXpuU1OjAhv9ZEHdfhRtjF7CbxIwW8xL kpOroHppH1+7eAPgFBNxf3yBms8/SGbptKKY68JgAEzTHR8+wb++flAr6OOyTx4/tFeh YGdc+LyMgS4I0FnQ4Yp0b97x0uh4UtmWEtBMHAX8zUkN+wdBpU2taatHggDkAvZS7bcS nm4LSqxOomj1r+LGXrh4SI5c9Tu5a8c8rd/Y01kgEhan3WSuskmXv20os+5NGwwY1mVQ RdlA== X-Gm-Message-State: ALoCoQkDW6ctpv3daRANyKDtQVbF3rYPZLMo5BA+tgRWp2zfEyrFd6pSQty/8sDJYg4Ui4c2Xyx0 X-Received: by 10.181.11.170 with SMTP id ej10mr35409020wid.46.1422979339930; Tue, 03 Feb 2015 08:02:19 -0800 (PST) Received: from xps13.localnet (136-92-190-109.dsl.ovh.fr. [109.190.92.136]) by mx.google.com with ESMTPSA id hn2sm33199006wjc.5.2015.02.03.08.02.17 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Feb 2015 08:02:18 -0800 (PST) From: Thomas Monjalon To: Neil Horman Date: Tue, 03 Feb 2015 17:01:51 +0100 Message-ID: <4840704.t0YkBNyamY@xps13> Organization: 6WIND User-Agent: KMail/4.14.4 (Linux/3.18.4-1-ARCH; KDE/4.14.4; x86_64; ; ) In-Reply-To: <1419109299-9603-1-git-send-email-nhorman@tuxdriver.com> References: <1419109299-9603-1-git-send-email-nhorman@tuxdriver.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Cc: dev@dpdk.org Subject: Re: [dpdk-dev] Add DSO symbol versioning to supportbackwards compatibility X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Feb 2015 16:02:21 -0000 2014-12-20 16:01, Neil Horman: > 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 > CC: Thomas Monjalon > CC: "Richardson, Bruce" > CC: "Robert Love" After updating to version 2.0, and sorting symbol lists, Applied It's probably an important change which makes 2.0 number meaningful. Thanks -- Thomas