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
230
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
82
XCTestでAPIのテストコードを書く
nivisunder7
0
280
App Clipについて
nivisunder7
1
56
SwiftUIの紹介
nivisunder7
0
27
Watch Kitのはまりどころ
nivisunder7
0
48
Docker in Docker Tips
nivisunder7
0
50
iOS11のここが素晴らしい
nivisunder7
0
76
iPhoneX時代のレイアウト
nivisunder7
0
86
SpriteKitでゲーム開発
nivisunder7
0
110
Other Decks in Programming
See All in Programming
GraphQLサーバの構成要素を整理する #ハッカー鮨 #tsukijigraphql / graphql server technology selection
izumin5210
4
840
try! Swift Tokyo 初参加報告LT
hinakko2
0
220
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
680
FigmaとPHPで作る1ミリたりとも表示崩れしない最強の帳票印刷ソリューション
ttskch
43
19k
Prepare for Jakarta EE 11 - Performance and Developer Productivity
ivargrimstad
0
870
Apache Hive 4 on Treasure Data
ryukobayashi
0
350
コーンフレークから始める モデリング会話入門
ogurotakayuki
0
380
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
230
Fast JSX: Don't clone props object #28768
yossydev
1
130
if constexpr文はテンプレート世界のラムダ式である
faithandbrave
3
650
0→1と1→10の狭間で Javaという技術選定を振り返る/Reflecting on the Decision to Choose Java Between Scaling from 0 to 1 and 1 to 10
jaguar_imo
2
390
try!Swift Tokyo 2024 参加報告 LT
akidon0000
1
220
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
216
8.6k
Documentation Writing (for coders)
carmenintech
60
3.9k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
4 Signs Your Business is Dying
shpigford
175
21k
Creatively Recalculating Your Daily Design Routine
revolveconf
210
11k
Building Flexible Design Systems
yeseniaperezcruz
319
37k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
125
32k
A Modern Web Designer's Workflow
chriscoyier
689
190k
For a Future-Friendly Web
brad_frost
172
9k
Producing Creativity
orderedlist
PRO
337
39k
Embracing the Ebb and Flow
colly
80
4.1k
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安定化