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
Should the "32-bit" Windows builds and Linux AppImages be dropped? #5732
Comments
I think I mistakenly downloaded & installed the 32-bit windows version a while back, trying to update my 64-bit version. Took me a while to realize, too. I'm dumb, but I might not be the only one who did that... |
Quick update...
The missing For the Linux AppImages, there's a dead end at Python 3.11, because lxml requires |
The Windows builds have been bumped from Python 3.11 to Python 3.12 now. The 3.12-based The Linux AppImages can't be bumped right now, as explained. They will stay on 3.11 for now until the |
I'm using the 64b builds on windows since long ago, in fact, the existence of 32bit builds just made me download them a couple of times due to not paying attention to the filenames... so I contributed to the 32b stats by mistake :) Same on a traveling laptop, updating via the 64b appimage builds every time I begin the trip. |
|
Asking this on the main repo for the sake of visiblity... Since it affects both the Windows builds and Linux AppImages, it doesn't make sense opening an issue on each of the issue trackers of the respective repos.
I could also simply ignore user feedback, but I'm interested to hear about actual use cases.
Issue
Both the
x86
Windows builds andi686
Linux AppImages are currently stuck on Python 3.11 and can't be upgraded to Python 3.12 due to missing wheels of some of Streamlink's dependencies. This blocks the upgrade of other architectures (x86_64
andaarch64
) from Python 3.11 to 3.12, because all builds are supposed to be kept on the same version of Python, to avoid unnecessary maintenance headaches and to avoid unnecessary end-user confusion. New dependency issues have also already come up...manylinux2014
(manylinux_2_17
) tomanylinux_2_28
streamlink-appimage#3The wheels which are missing could theoretically be built manually in separate repos here using GitHub CI, so the wheels could then be downloaded by the Windows builds and Linux AppImages from GitHub release assets instead of PyPI (where they are missing), but this requires maintenance of lots of build scripts for those third-party dependencies and their own dependencies. I absolutely don't want to spend any time on that, so this is not going to happen. I also don't want to have to deal with more dependency overrides in the build configs.
lxml
4.9.3
which was released in July still hasn't published py312 wheels forwin32
and fori686
(onmanylinux2014
aka.manylinux_2_17
), and their most recent release from yesterday (4.9.4
) has exactly the same issue. I had already pointed this out on their issue tracker in October when py312 was released, but this issue didn't get any attention by the project's developer until yesterday when I asked again while pointing out new issues. I didn't get a reply, but some of the pointed out issues like a PyPI deploy issue appear to be resolved now or are being worked on according to the project's commit log. Not sure though when all the missing wheels will be fully resolved by a new release.As you can see, it's been almost three months now and the issue still remains.
Reasoning
So why keep 32-bit Windows builds and Linux AppImages, even if those dependency issues may get fixed in the future?
x86
is not relevant today anymore. The last CPUs of that kind were built in 2008/2009 while 32-bit processors were deprecated for a long time already at that time. Those specific CPUs were low-power Intel Atom N2xx/Z6xx mobile chips (Intel ARK / Wikipedia). I don't think keeping builds forx86
(win32
/i686
) makes sense, considering that the number of actual users with CPUs from dozens of generations ago is tiny.Windows builds
I'm saying this because I'm pretty sure that most users on Windows who install the 32-bit builds simply don't care which one they choose, as it's compatible on
x86_64
systems anyway, or they don't know what they're doing and just choose anything without reading. According to the Steam hardware survey, which I'm aware is not an accurate source (it's the best one available though since there's nothing official from MS - and Windows is primarily/exclusively a desktop OS, so Steam gaming hardware survey is kind of okay), there are basically no users ofx86
Windows 10/11 (does MS even support this?), and the last remaining users ofx86
are stuck on Windows 7, which is already dead for 9 years (or 4 years with extended security updates). I don't care about users running anx86
OS on theirx86_64
CPUs.We still provide Python 3.8 builds for users of Windows 7, because people complained when we bumped the installers to py39 a few years ago, but py38 will finally see its own EOL next year, and I will definitely pull the plug on these builds by then. So with the other market share stats in mind, this means that there will be no reason to keep 32-bit Streamlink builds for Windows. The
streamlink/python-windows-embed
andstreamlink/FFmpeg-Builds
repos then also won't have to buildx86
release files anymore.The chocolatey package already only provides the 64-bit installer. scoop and winget however support both architectures for some reason, but not the py38 builds.
AppImages
On Linux, the situation is a bit different. Compatibility isn't granted on
x86_64
systems, which means you need to have 32-bit multiarch/compatibility packages ofglibc
,fuse
andzlib
installed on your system, which isn't the case for the vast majority of users who actually need the AppImages due to lack of available and updated Streamlink packages on their distro. It's far more likely that people who are actually using thei686
AppImages are running these on old and repurposed hardware because it's being run in a headless server configuration or what not. Maybe also on embedded devices or similar. Consuming modern streaming media surely isn't a pleasant experience on this old hardware, so I can't see these being used in a regular (desktop) use-case, except when using Streamlink for recording purposes only.Lots of Linux distros also have already phased out
i686
entirely, or are in the process of doing so. Distros like Debian which explicitly support outdated CPU architectures have up-to-date versions of Streamlink in their package repos, including its dependencies, so the AppImage is not needed. This renders thei686
AppImage even more irrelevant.<edit>
Debian apparently will be dropping support for
i386
in the near future, meaning it'll only be supported as multiarch onx86_64
host systems:</edit>
Download stats
Here are the download stats from the last 20 releases summed up (when py311 was added, which was
5.1.2-2
from last December).On Windows, 13.99% of all downloads are
x86
, while on Linux, it's 4.75%.These 13.99% however don't mean much, because as said, it's compatible on
x86_64
. Running thei686
Linux AppImages on ax86_64
system won't work though unless the required 32-bit-libs are installed, so it's at least a bit more accurate. But then you also have to consider why people use the AppImages in the first place, so the result is still very much skewed.Actual users / feedback
So who are the actual users here? Are there any?
I'd like to see some use-cases, so keeping the 32-bit builds can be justified.
Other upcoming changes
As mentioned, py38 will be dropped from the Windows builds, so Windows 7 and 8 won't be supported anymore.
The Linux AppImages also will be bumped next year in summer to
manylinux_2_28
when support formanylinux2014
/manylinux_2_17
runs out. This means that old distros won't be supported anymore and at least glibc 2.28 will be required (released in August 2018 - packaged by distros later).The text was updated successfully, but these errors were encountered: