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
340
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
ソフトウェア品質を数字で捉える技術。事業成長を支えるシステム品質の マネジメント
takuya542
2
14k
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
2
150
코딩 에이전트 체크리스트: Claude Code ver.
nacyot
0
870
チームのテスト力を総合的に鍛えて品質、スピード、レジリエンスを共立させる/Testing approach that improves quality, speed, and resilience
goyoki
5
1k
効率的な開発手段として VRTを活用する
ishkawa
0
150
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
330
NEWT Backend Evolution
xpromx
1
110
状態遷移図を書こう / Sequence Chart vs State Diagram
orgachem
PRO
2
170
初学者でも今すぐできる、Claude Codeの生産性を10倍上げるTips
s4yuba
16
12k
AI時代の『改訂新版 良いコード/悪いコードで学ぶ設計入門』 / ai-good-code-bad-code
minodriven
22
9k
ふつうの技術スタックでアート作品を作ってみる
akira888
1
1.1k
チームで開発し事業を加速するための"良い"設計の考え方 @ サポーターズCoLab 2025-07-08
agatan
1
450
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
980
Measuring & Analyzing Core Web Vitals
bluesmoon
7
510
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
How to train your dragon (web standard)
notwaldorf
96
6.1k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Documentation Writing (for coders)
carmenintech
72
4.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
RailsConf 2023
tenderlove
30
1.1k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Gamification - CAS2011
davidbonilla
81
5.4k
Agile that works and the tools we love
rasmusluckow
329
21k
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安定化