[PROPOSAL] Define a public interface and stop deploying internal headers #411
derobins
started this conversation in
Proposed Change
Replies: 1 comment
-
This will be addressed in 4.3.0 (#425) |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
PROBLEM
HDF4 deploys almost every header in the source code, making just about everything public.
This unfortunate decision was made long ago and makes maintenance of the library very difficult. Changing anything risks breaking someone's code, making meaningful refactoring almost impossible.
PROPOSED FIX
HEADERS
Internal API - not deployed in 4.3.0, but some functionality will move to the public header file
Candidate for not being deployed in 4.3.0 (internal data structures, etc.)
Deployed by CMake but not Autotools - will not be deployed in 4.3.0
xdr-related (xdr will be removed in 4.3.0)
HOW WOULD USERS BE AFFECTED?
PRO
➕ Allows refactoring without annoying users or breaking binary compatibility
➕ Better encapsulation
CON
➖ People have almost certainly built code using private HDF4 things
➖ Initial release of this feature will break binary compatibility
NEUTRAL
✔️ People who used "internal" things could continue to use 4.2.16 (perhaps we could make that a maintenance branch)
Beta Was this translation helpful? Give feedback.
All reactions