Avatar
export(interface, implementation)は既存のinlinableとほぼ同じだが、それが必要な理由としては、 inlineableだと不要ならシンボルを生成しないことを許してしまう点がある Embedded Swiftだとアグレッシブに全部を静的リンクするからそういう事があるが、そうしたバイナリを後でCとリンクするときに公開シンボルがないと困る この点でexport(interface)はシンボルの生成を保証する
12:30 AM
またEmbedded Swiftでは動的なジェネリクスが使えないので、ジェネリック関数は、ライブラリエボリューションモードならexport(implementation)が必須になるらしい これってC++とRustと同じでパフォーマンス面で強力だけど、ビルドが遅くなりそうだな (edited)