-
Notifications
You must be signed in to change notification settings - Fork 70
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
target sdk version support #78
Comments
musl (#75) is one partial way to punt on this completely when targeting linux (although presumably musl still has to care about kernel versions and if you depend on openssl or whatever then you're still dealing with SDK versions to some extent). |
Here are some thoughts from a "Packaging C/C++ Applications" viewpoint, on your three platforms:
I don't know Rust's default linking model for crates (presumably it's static linking everything that was Rust code), but presumably as soon as you use FFI into C, you can break out of "statically link everything", so you might have to have a think about shared objects, especially where you might want to use the underlying system's shared libraries, so you don't have to rebuild your whole binary when a new version of openssl comes out. Hopefully these are useful pointers to get started. When I find the windows link I was thinking of I will send it over. |
This is the link for windows, which means it was very much aimed at headers not at something deeper (the MacOS sdk argument for ld64 does additional checking based on the min version): https://learn.microsoft.com/en-us/windows/win32/winprog/using-the-windows-headers |
I'd like to reiterate that on macOS, the chosen SDK is independent of the minimum supported version. And you can set the minimum supported version by doing |
chore(deps): bump console from 0.15.7 to 0.15.8
When making prebuilt binaries you "need" to decide how old of a system you're willing to support. i.e. if you want to rely on APIs introduced in windows 10, your binary won't necessarily work on windows 8.
Currently this is a big shrug and I think cargo/rust just uses whatever's available on the machine that built the binary (similar to target-cpu=native) that we only address by generating CI that uses the oldest (non-deprecated) Github runners.
Ideally we would help the user here with choosing SDK versions and getting everything setup to do that. Unfortunately this is 100% outside my domain of expertese and I have absolutely no idea how to do this for the 3 big desktop platforms!
The text was updated successfully, but these errors were encountered: