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
380
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
130
XCTestでAPIのテストコードを書く
nivisunder7
0
410
App Clipについて
nivisunder7
1
72
SwiftUIの紹介
nivisunder7
0
36
Watch Kitのはまりどころ
nivisunder7
0
57
Docker in Docker Tips
nivisunder7
0
58
iOS11のここが素晴らしい
nivisunder7
0
80
iPhoneX時代のレイアウト
nivisunder7
0
97
SpriteKitでゲーム開発
nivisunder7
0
110
Other Decks in Programming
See All in Programming
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
500
オブザーバビリティ駆動開発って実際どうなの?
yohfee
4
870
今からFlash開発できるわけないじゃん、ムリムリ! (※ムリじゃなかった!?)
arkw
0
100
AHC061解説
shun_pi
0
390
エラーログのマスキングの仕組みづくりに役立ったASTの話
kumoichi
0
240
AI 開発合宿を通して得た学び
niftycorp
PRO
0
140
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
230
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
160
ふつうのRubyist、ちいさなデバイス、大きな一年 / Ordinary Rubyists, Tiny Devices, Big Year
chobishiba
1
470
「やめとこ」がなくなった — 1月にZennを始めて22本書いた AI共創開発のリアル
atani14
0
400
Linux Kernelの1文字のミスで 権限昇格ができた話
rqda
0
1.4k
Rで始めるML・LLM活用入門
wakamatsu_takumu
0
190
Featured
See All Featured
Are puppies a ranking factor?
jonoalderson
1
3.1k
Music & Morning Musume
bryan
47
7.1k
How GitHub (no longer) Works
holman
316
150k
Statistics for Hackers
jakevdp
799
230k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
92
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
52k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
150
Joys of Absence: A Defence of Solitary Play
codingconduct
1
310
A Modern Web Designer's Workflow
chriscoyier
698
190k
Leo the Paperboy
mayatellez
4
1.5k
So, you think you're a good person
axbom
PRO
2
2k
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安定化