/* Page prose (ja) */
"Swift6CompileTimeSafety" = "# Swift 6: 並行処理が安全であることを証明するコンパイラ\n\n一歩下がって、これまで組み立ててきた仕組みを見てみましょう。`Sendable` は*どの値が境界を越えられるか*を語ります。actor 分離（`@MainActor`、自分自身のグローバル actor、素の actor）は*コードの一部分がどのドメインに属するか*を語ります。組み合わせると、Swift 6 のコンパイラはプログラム内のすべての境界のクロスを追跡し、2 つのドメインが同じミュータブルな状態を同時に触れることが決してないことを証明できます。それを証明できないときは、**data race の代わりにコンパイルエラー**が得られます。\n\nこれは本当に新しい取り決めです。クラシックなモデルでは、競合は問題が起きた*後で*診断するものでした。断続的で、再現が難しく、コードレビューでは見えませんでした。この仕組みがあれば、同じミスはたいてい `Run` にたどり着けません。ここで学んだアノテーションは官僚主義ではありません。それは、コンパイラが代わりにチェックできるだけの十分な情報を、コンパイラに渡すことなのです。\n\nだから、Sendable や分離のエラーに出会ったときは、コンパイラが意地悪をしていると読まないでください。こう読んでください。*「2 つのコードが衝突しうる場所を見つけました。これがどのドメインに属するか教えてください。」* その問いに答えれば、エラーは晴れます。エラーは味方なのです。\n\n[前へ](@previous)  |  10 / 11 ページ  |  [次へ: まとめ](@next)";
