Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Apple 通知グループ

GitHub ラベル: O-macos, O-ios, O-tvos, O-watchos および O-visionos
Ping コマンド: @rustbot ping apple

このリストは、Apple 関連の問題の診断とテストの両方で支援を求めるため、また私たちの macOS/iOS/tvOS/watchOS/visionOS サポートに関する興味深い問題をどう解決するかについて提案を求めるために使われます。

このグループが何を行うのかをよりよく理解するために、最善の対応方針を決定する際に助言を求めるため、このグループに連絡していたであろう質問の種類の例をいくつか示します。

  • サポート対象の最低バージョンの引き上げ(例: #104385
  • 追加の Apple ターゲット(例: #121419
  • 分かりにくい Xcode リンカーの詳細(例: #121430

デプロイメントターゲット

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_AVAILABLEAPI_AVAILABLE、または類似のものなど)。