Figure out what the stdlib should do about apple's new required reason manifest. · Issue #114186 · rust-lang/rust (original) (raw)

Apple is cracking down on device fingerprinting by apps in the app-store. This is largely a good thing for users, but might be quite problematic for us.

https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api

From Fall 2023 you’ll receive an email from Apple if you upload an app to App Store Connect that uses required reason API without describing the reason in its privacy manifest file. From Spring 2024, apps that don’t describe their use of required reason API in their privacy manifest file won’t be accepted by App Store Connect.

That is, if you call some of the APIs listed, it needs to be for one of the reasons, and you also need to include a manifest file that explains why you're doing it.

This includes a number of APIs we use in the stdlib. I am for the moment going to assume these are only problematic if the APIs are actually called rather than if they are merely present, which will mostly mean we cannot call them implicitly for no reason (e.g. I think if a user calls an API in std that maps directly to one of these, it's fine -- they'll have to justify their usage to apple. But if we implicitly call it without a way to opt out, that's a problem, and if we implicitly call it when another option exists, that's also less than ideal).

The main problems that remain are: