EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: EPICS release series after 7.0: 7.1 or 8.0?
From: "Johnson, Andrew N. via Tech-talk" <[email protected]>
To: "J. Lewis Muir" <[email protected]>
Cc: "[email protected]" <[email protected]>
Date: Wed, 8 Jan 2020 20:54:39 +0000
On 1/8/20 12:21 PM, J. Lewis Muir wrote:
EPICS has never promised binary compatibility between releases, no
matter what the version number change has been, so you should always
rebuild everything downstream from source code after upgrading Base to
a new version. We don't have the resources to do compatibility testing
between binary versions, and we don't generally worry about whether
changes will break the ABI when making them. For example, in the latest
Base-3.15.7 and EPICS 7.0.3.1 releases the fields of some of the record
types were moved around while adding record reference documentation
to the dbd files, so any external device support built using earlier
versions would use the wrong field offsets when accessing the record
field structures.
Wow!  Didn't know that.  So, for even the least significant version
number increment in an EPICS release (e.g., EPICS 3.15.6 -> 3.15.7),
it could be the equivalent of a major version increment in the
Semantic Versioning scheme of <major>.<minor>.<patch>.  That's really
disappointing.
Remember that EPICS is much older than SemVer and tools to do ABI comparisons have only come along fairly recently. We don't have very many EPICS core developers, and the ones we do have all have other responsibilities too. If someone else wants to work with us and take on the role of ABI monitoring I think we'd be willing to look at changing our development practices, but we are going to need additional resources to be able to promise the kind of ABI compatibility you're wanting.

What about API compatibility (i.e., source code compatibility)?  Does
EPICS promise any API compatibility between releases, and if so, what?
We do try to be forward compatible with our APIs, so older code will generally compile and work on newer Base releases. There are times when we may break an API but if that happens deliberately we document that and show module developers how to change their code so it can be compiled against both the old and new APIs. If we do make an API change, code using the old API that needs to be modified should always break at compile-time, we don't want our users to find out they need to change their code after an upgrade when something doesn't work at 2am. We are very aware just how much out-of-tree support code is shared between the members of the EPICS collaboration, and most of the core developers have to maintain some of that either for the community of for their local site, so we see maintaining API compatibility as important.

Understood.  Yes, since every release, even an increment of the least
significant version number, could break ABI compatibility, there would
be no choice but to include the full version in the package name.
The UNIX-like concept of shared libraries and being able to update
them independently as long as backward compatibility is maintained is
completely lost on EPICS.
If you had to choose between more features and ABI compatibility, which would you prefer? This is a version of the old "Cheap, Fast, Good — pick 2" triangle.

- Andrew
-- 
Complexity comes for free, Simplicity you have to work for.

Replies:
Re: EPICS release series after 7.0: 7.1 or 8.0? J. Lewis Muir via Tech-talk
References:
EPICS release series after 7.0: 7.1 or 8.0? J. Lewis Muir via Tech-talk
Re: EPICS release series after 7.0: 7.1 or 8.0? Johnson, Andrew N. via Tech-talk
Re: EPICS release series after 7.0: 7.1 or 8.0? J. Lewis Muir via Tech-talk

Navigate by Date:
Prev: RE: CA link question Mark Rivers via Tech-talk
Next: Re: EPICS release series after 7.0: 7.1 or 8.0? J. Lewis Muir via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
Navigate by Thread:
Prev: Re: EPICS release series after 7.0: 7.1 or 8.0? J. Lewis Muir via Tech-talk
Next: Re: EPICS release series after 7.0: 7.1 or 8.0? J. Lewis Muir via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
ANJ, 08 Jan 2020 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·