|
| 1 | +# Discontinuing static-link library |
| 2 | + |
| 3 | +## Introduction |
| 4 | + |
| 5 | +When building oneDAL, it produces both shared libraries for dynamic linkage and |
| 6 | +static-link objects (`.a`/`.lib`). |
| 7 | + |
| 8 | +The produced builds are distributed through multiple channels, including PyPI, |
| 9 | +conda-forge, Intel's conda channel, Spack, NuGet, offline installers for Windows |
| 10 | +and Linux, and Intel repositories for Linux package managers like APT. |
| 11 | + |
| 12 | +Some of those distributions include only the shared library - for example, there |
| 13 | +are no static-link oneDAL libraries distributed in PyPI and NuGet due to file |
| 14 | +size constraints, nor in Spack. |
| 15 | + |
| 16 | +Most usage of oneDAL happens through the Python bindings with the extension for |
| 17 | +Scikit-Learn, which only uses the shared library of oneDAL. Other known public |
| 18 | +consumers of oneDAL, such as |
| 19 | +[OAP MLlib](https://github.com/oap-project/oap-mllib) and |
| 20 | +[ML.net](https://www.nuget.org/packages/Microsoft.ML.OneDal/) also use the |
| 21 | +shared library, and do so in the way of creating another library with bindings |
| 22 | +for oneDAL that are exposed to final users in more convenient languages. |
| 23 | + |
| 24 | +We are not aware of any users of the static-link library of oneDAL, whether |
| 25 | +public or private, and it is unclear whether there are good use-cases for a |
| 26 | +static-link oneDAL library. |
| 27 | + |
| 28 | +Procedures from oneDAL are unlikely to be used as building blocks in a broader |
| 29 | +algorithm the way other libraries such as MKL would, and applications training |
| 30 | +or serving machine learning models for tabular data typically do so from |
| 31 | +interpreted languages like Python. Use-cases such as embedded devices, where |
| 32 | +usage of C++ for serving machine learning models might be more common, are |
| 33 | +unlikely to rely on algorithms for tabular data like the ones offered by oneDAL. |
| 34 | + |
| 35 | +Yet, the static library is bundled in many distribution channels even if it |
| 36 | +doesn't get used, increasing download sizes very significantly, and increasing |
| 37 | +compilation times during development due to required production of these files. |
| 38 | + |
| 39 | +## Proposal |
| 40 | + |
| 41 | +The proposal here is to not produce static-link files for oneDAL at all, and to |
| 42 | +discontinue the package `dal-static`. |
| 43 | + |
| 44 | +Being a large breaking change, this would need to be done in a major release |
| 45 | +such as 2026.0. |
| 46 | + |
| 47 | +## Open Questions |
| 48 | + |
| 49 | +* Do other UXL members rely on the static-link files? |
| 50 | +* Are there any known consumers of the static-link oneDAL library? |
| 51 | +* Would it be better to remove the static-link library altogether, or to leave |
| 52 | + it as a non-default option? It might be hard to test it properly if not built |
| 53 | + and distributed by default, but could be a reasonable compromise. |
0 commit comments