Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

INFO: folly dependencies' runtime requirements export #185

Open
jjerphan opened this issue Apr 9, 2024 · 0 comments
Open

INFO: folly dependencies' runtime requirements export #185

jjerphan opened this issue Apr 9, 2024 · 0 comments

Comments

@jjerphan
Copy link
Member

jjerphan commented Apr 9, 2024

Context

The conda packages' model inherently was made to distribute C/C++ libraries as a set of headers and dynamic shared objects. A necessary condition for this model to work in practice is to have all the stack's projects' ABI to be respected as an ABI mismatch at runtime can cause a variety of fatal failures for programs (such as missing symbols reported by Python library, crashes, silent errors, etc.).

Major versions of project are expected to change the ABI. Although it is expected that the ABI does not change on patch (or even minor) version for project using semantic versioning 2.0.0, it might be the case in practice. Hence there are no general rules for the compatible version range: this is really is project-dependent. ABI laboratory might give clues about some projects' expected ABI stability.

conda packages solve this problem by exporting runtime requirements to specify the compatibility range for projects' version.

Situation

folly was not designed to be distributed as a shared library, yet it is distributed on conda-forge as such for Unix.

In the past, folly's or one of its dependencies' builds have had ABI mismatch.

Bellow are referenced all the compilers' and dependencies' runtime requirements exports used by folly as of today to check whether its builds are sane.

Compilers related Runtime requirements export
libgcc-ng Expected to be stable.
_libgcc_mutex Expected to be stable.
llvm-openmp Expected to be stable.
libstdcxx-ng Expected to be stable.
Folly dependency Runtime requirements export ABI Laboratory observation
libjemalloc max_pin=None Change on major version
jemalloc max_pin=None Change on major version
libboost max_pin="x.x" Change on minor version
libboost-headers max_pin="x.x" Change on minor version
libzlib max_pin="x.x" Change on minor version; not up to date
zstd max_pin="x.x" Change on minor version
bzip2 Default, i.e. max_pin="x" None
gflags max_pin="x.x" Change on minor version
lz4-c max_pin="x.x" Change on minor version
glog max_pin="x.x" Change on minor version; not up to date
fmt max_pin="x" Change on minor version
xz Default, i.e. max_pin="x" Stable
icu Default, i.e. max_pin="x" None
snappy max_pin="x.x" Change on minor version
libsodium max_pin="x.x.x" Change on patch version
double-conversion max_pin="x.x" Seems stable apart from a change on minor version
libevent max_pin="x.x.x" Change on patch version
openssl max_pin="x" Change on major version
libaio max_pin="x.x" Seems stable
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant