COSCUP 2024

ABI 是什麼?跟 API 不一樣嗎?
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