Replies: 1 comment
-
[Off-topic] @junliume @JehandadKhan and all: |
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
-
Motivation
Usually we use workarounds when external components have issues that affect the library. As a rule, such issues begin with some version of the external component, and fixed in one of the subsequent versions.
The library, in turn, is also evolving. During this process, old versions of external components become a bottleneck, and we find ourselves forced to dismiss support of these old versions.
One typical example of such external components is the HIP compiler. A bug appears in some version, then in some other version it is fixed, then at some point in time the old version of the compiler is no longer supported by the library.
These three points should be reflected in the workaround life cycle. Ironically, the main objective of the life cycle is the end of life of the workaround, i.e. cleanup the workarounds that have become unnecessary.
Similar considerations apply to cases where the source of the issue is in the library, or is unknown. To resolve an issue quickly, we can apply workaround. This gives us the time needed for detailed research and / or making complete fix.
Guidelines
...WORKAROUND_<reference-to-the-issue>...
. Consistently use it across the source code...._ISSUE_XXX
in the macro name to refer to the public repo (preferred)...._MLOPEN_ISSUE_XXX
to refer to the private repo...._SWDEV_XXX
to denote Jura issue.#define WORKAROUND_ISSUE_2331 1
.WORKAROUND_ISSUE_2174_2222_2224_2243
, is not allowed. This situation means either duplicate issues or different issues that can be resolved by identical workaround.#if WORKAROUND_ISSUE_2174 || WORKAROUND_ISSUE_2222 || WORKAROUND_ISSUE_2224
for C/C++.fixed-version
and newer versions.fixed-version
.Beta Was this translation helpful? Give feedback.
All reactions