Apple 通知グループ
GitHub ラベル: O-macos, O-ios, O-tvos, O-watchos および O-visionos
Ping コマンド: @rustbot ping apple
このリストは、Apple 関連の問題の診断とテストの両方で支援を求めるため、また私たちの macOS/iOS/tvOS/watchOS/visionOS サポートに関する興味深い問題をどう解決するかについて提案を求めるために使われます。
このグループが何を行うのかをよりよく理解するために、最善の対応方針を決定する際に助言を求めるため、このグループに連絡していたであろう質問の種類の例をいくつか示します。
デプロイメントターゲット
Apple プラットフォームには「デプロイメントターゲット」という概念があり、*_DEPLOYMENT_TARGET 環境変数で制御され、バイナリが実行される最低 OS バージョンを指定します。
標準ライブラリで、rustc が使用するデフォルトより新しい OS バージョンの API を使用すると、静的リンカーエラーまたは動的リンカーエラーのいずれかが発生します。このため、extern "C" API については、その API がどの OS バージョンで導入されたかをドキュメント化するよう提案し、それが rustc で使用されている現在のデフォルトより新しい場合は、weak linking を使用するよう提案してみてください。
App Store とプライベート API
Apple は文書化されていない API の使用に非常に厳格であるため、変更が新しい関数を使用する場合は常に、それらが実際に公開 API であることを確認することが重要です。というのも、文書化されていない API にバイナリ内で言及しているだけでも(それを呼び出していなくても)、App Store から却下される可能性があるためです。
たとえば、Darwin / XNU カーネルには実際には futex システムコールがありますが、それらは公開 API ではないため、std では使用できません。
一般に、Apple によって API が公開されていると見なされるには、次の条件を満たす必要があります。
- 公開ヘッダーに現れること(すなわち、Xcode とともに配布され、
xcrun --show-sdk-path --sdk $SDKの下で特定のプラットフォーム向けに見つかるもの)。 - それに availability 属性があること(
__API_AVAILABLE、API_AVAILABLE、または類似のものなど)。