Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Swift5.0 ABI安定化について
Search
t.goda
October 25, 2019
Programming
0
330
Swift5.0 ABI安定化について
Swift5.0 と Swift5.1 のABI安定化とModule安定化について
t.goda
October 25, 2019
Tweet
Share
More Decks by t.goda
See All by t.goda
Distribute Binary Framework with Swift Package Manager
nivisunder7
0
120
XCTestでAPIのテストコードを書く
nivisunder7
0
380
App Clipについて
nivisunder7
1
68
SwiftUIの紹介
nivisunder7
0
32
Watch Kitのはまりどころ
nivisunder7
0
55
Docker in Docker Tips
nivisunder7
0
57
iOS11のここが素晴らしい
nivisunder7
0
80
iPhoneX時代のレイアウト
nivisunder7
0
92
SpriteKitでゲーム開発
nivisunder7
0
110
Other Decks in Programming
See All in Programming
イベントストーミング図からコードへの変換手順 / Procedure for Converting Event Storming Diagrams to Code
nrslib
2
820
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
260
脱Riverpod?fqueryで考える、TanStack Queryライクなアーキテクチャの可能性
ostk0069
0
140
効率的な開発手段として VRTを活用する
ishkawa
0
140
AI駆動のマルチエージェントによる業務フロー自動化の設計と実践
h_okkah
0
150
Team operations that are not burdened by SRE
kazatohiei
1
310
Is Xcode slowly dying out in 2025?
uetyo
1
270
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
0
210
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
550
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
530
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
1
250
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
3
480
Featured
See All Featured
The Invisible Side of Design
smashingmag
301
51k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
The Cost Of JavaScript in 2023
addyosmani
51
8.5k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.9k
A Modern Web Designer's Workflow
chriscoyier
695
190k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Building Adaptive Systems
keathley
43
2.7k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Scaling GitHub
holman
460
140k
Site-Speed That Sticks
csswizardry
10
690
Transcript
Swift5におけるABI安定化 2019/10/25
ABIとは? • Application Binary Interfaceの略 • アプリケーションプログラムとシステム間のバイナリレベルのインタフェー スのこと(by Wikipedia)
SwiftにおけるABI安定化の歴史 • Swift3でABI安定化めざすよ!! • だめでした • Swift4でABI安定化今度こそいれるよ! • 間に合いませんでした •
3度目の正直、Swift5で安定化するよ! • ついに達成!!!
ABI安定化したらどうなるの? • バージョンの異なるSwiftでビルドされたバイナリをそのまま使用できる • “Swift 5 provides binary compatibility for
apps: a guarantee that going forward, an app built with one version of the Swift compiler will be able to talk to a library built with another version” • もういちいちライブラリのビルドされてるバージョンとか確認しなくてよくな るんだ!!! • やった!!! • 我々は解き放たれた!!!
は?
前ページ解説 • Swift5.1でSwift5.0(でコンパイルされた)ライブラリをインポートするとエ ラーが発生した • 5.0時点でABI安定化しているので5.1なら動くはずでは?
ABI安定化についてもう少し • SwiftのABI安定化はランタイム時のSwiftバージョンの混在を許容するもの • “ABI stability is about mixing versions
of Swift at run time” • ではコンパイル時のバージョン差分は……? • 吸収してくれない • Swift5.0でコンパイルされたものとSwift5.1でコンパイルされたものは混在 できない
おわかりいただけただろうか
なにそれ
意味ある?
意味あるよ • ダウンロードサイズが小さくなる • Swiftランタイムライブラリを一緒に配布しないでよくなるため • ホストOSにより最適化されるのでSwiftで書かれたプログラムがより早く なってメモリ消費量も小さくなる • ほんとぉ?
• Module安定化が供給された場合、サードパーティ製のSwiftライブラリも バイナリ形式で提供して問題なくなる • これですよこれ!!
Module安定化とは • あるバージョンのコンパイラで作成されたバイナリフレームワークを別の バージョンのコンパイラでコンパイル可能になること • Swift5.1以降のコンパイラで作成されているならSwift5.2以降ならコンパ イルバージョンをあわせなくてよくなる
我々はついに解放される(多分) 執筆時点で5.1が最新だから 試せない……
まとめ • Swift5.0でABI安定化が実装された • ABI安定化だけではコンパイラのバージョン差分は吸収できない • Swift5.1でModule安定化が実装された • これによりバイナリフレームワーク等、コンパイラのバージョン差分を気 にしなくてよくなる
• SwiftのABI安定化 ≠ Module安定化