2024-08-03, 13:40–14:10 (Asia/Taipei), TR411
儘管 Application Binary Interface (ABI) 通常就比較少人提起,但它的重要性不亞於更常聽到的 Application Programming Interface (API);例如我們到現在還能跑十年前編譯好的程式這件事,就是因爲有 ABI 才有辦法達成(精確地來說是 ABI 相容性的概念)。
這次議程中我們會介紹到底什麼是 ABI、它跟 API 有什麼不同、討論 ABI 相容性及列出 ABI 不相容時會發生什麼事、還有舉出一些 ABI 的實例(Linux Kernel ABI、Python's stable ABI、Foreign Function Interface)。
註:~60% 的內容都是以概念爲主,剩下的部分可能需要有計算機概論的基礎以及稍微看得懂 C 跟 組合語言(沒有的話一樣歡迎來聽)。
議程中大致上如下:
- What is an Application Binary Interface
- How it differs from API
- Chain of dependency (i.e. application ABI can depends on library ABI, which can further depends on OS ABI)
- ABI breakage
- What are the causes
- What are the symptoms (and why it's good to fail fast)
- Stability and compatibility guarantees
- Prevention, detection, and workarounds
- "Wrapper" functions
- Versioning
- Hashing
- Package manager
- Libabigail
- Case Studies
- Linux Kernel ABI (syscalls and symbols)
- Python's Stabel ABI
- Foreign Function Interface (benefit of mimicking call convention)
Kernel Engineer at SUSE working on BPF