Avatar
Avatar
omochimetaru
このバッティングよくわからなかったので、順を追った説明がほしい
1. 現状の @_inheritActorContext はglobal actor以外のcontextは暗黙的は引き継がないはnon-Sendableな値を暗黙的にキャプチャできない 2. @inheritsIsolation が提案されていて(すでにマージされてて使える)、それに変わると暗黙的に引き継がれるキャプチャできるようになる 3. そうすると、 async funcisolated 引数でactorを指定した場合も Task.init はcontextを引き継ぐで暗黙的キャプチャできる 4. 新しい nonisolated async func の提案が暗黙の isolated 引数を仕込むのなら、 Task.initcontextを引き継がない暗黙的キャプチャできないとおかしくない? って話。Proposalには引き継がないと書かれてるのでバッティング。でも、実際には仕込まれる暗黙の引数は Optional だから(おそらくactorの外から呼ばれた時は nil になる)引き継がなくて正しそう。 (edited)
12:38 PM
ただ、 Task-isolated な場合もcontext(というかisolation domain)を引き継ぐようにして(加えて、エントリーポイントから必ず Task 上で実行されることを保証することで常にいずれかのisolation domainに属することを保証して)暗黙の isolated 引数を非Optionalにした方がすっきりするんじゃないかというのが個人的な意見です。