Skip to content

Commit fc8337a

Browse files
add rfc for removal of static-link files
1 parent a61d27a commit fc8337a

File tree

1 file changed

+53
-0
lines changed
  • rfcs/202250709-discontinuing-static-lib

1 file changed

+53
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
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

Comments
 (0)