-
インライン化関連
@inlineable
/@_inlineable
@inline
@usableFromInline
/@_versioned
@_transparent
⸺ https://github.com/apple/swift/blob/main/docs/TransparentAttr.md
-
@effects ⸺ 副作用や依存性を明示して最適化のヒントとする https://github.com/apple/swift/blob/main/docs/HighLevelSILOptimizations.rst#effects-attribute
-
@_fixed_layout
-
@_silgen_name
-
@_semantics ⸺ https://github.com/apple/swift/blob/main/docs/HighLevelSILOptimizations.rst#annotation-of-code-in-the-standard-library
-
@_specialize ⸺ genericsの特化型をなんかするっぽい https://github.com/apple/swift/blob/main/docs/archive/Generics.rst#specialization
-
公式資料
- dynamic ⸺ https://scrapbox.io/tasuwo-ios/dynamic
- Nominal Type / Structual Type
- Value Type / Reference type
- Value semantics ⸺ Value typeとは異なる。まだproposal https://heart-of-swift.github.io/value-semantics/ https://github.com/apple/swift/blob/main/docs/proposals/ValueSemantics.rst
- result builder
- existential type
- Opaque Type
- (Swift 5.4.xまで) Substring->Int は Substring->String->Int より重かった
- Value semantics ⸺ Value typeとは異なる。まだproposal https://heart-of-swift.github.io/value-semantics/ https://github.com/apple/swift/blob/main/docs/proposals/ValueSemantics.rst
- Optics (Lens, Prism, etc.) ⸺ Prismは失敗を表現できるLens。varを用いればLensは不要かも。WritableKeyPathともかぶっている。let のimmutableな構造体を書き換えるようなスタイルでは使えそう。ライブラリはSwiftz / Bow / Focus / CasePaths あたり。
- MLIR対応 ⸺ 検討はされたが実行されず。
- CUI shellの環境変数をXcodeに渡すには、
$ xed .
で起動します。(SwiftというよりiOS開発のtipsですが、ここに書いてしまいます。)- 複数のプロジェクトをやっているとプロジェクトごとの起動方法を忘れてしまいやすいので、起動方法をREADMEに書いておくといいと思います。
- direnvを使っていれば、この起動方法により
.envrc
で設定した環境変数がXcodeに渡るわけです。すばらしい✨ - セキュリティのため1Passwordを用いて環境変数を実行時に設定するプロジェクトでは
$ op run -- xed .
で起動します。
- 複数のリポジトリ・複数のプロジェクトの環境変数が混じってごっちゃになることを避けるため、また12factor appsに従うため、
direnv
等を用いると良いです。gitにおける.envrc
の無視を~/.config/git/ignore
などuser globalで行うことで、リポジトリローカルの.gitignore
におけるdirenvへの言及をなくすことができます。すなわちリポジトリ→direnvという依存をなくして透過的にdirenv
を用いることができます(TODO: TBC)。(これもSwiftに直接関係ありませんがとりあえずここに書きます。git-memo.mdに移したほうがいいかも) - iPhoneのLightning端子はJTAGでアクセスできる。 https://www.youtube.com/watch?v=8p3Oi4DL0eI