Application Binary Interface(ABI)
ABI - Application Binary Interface is about a machine code communication in runtime between two binary parts like - application, library, OS... ABI describes how objects are saved in memory, how functions are called(calling convention), mangling...
A good example of API and ABI is iOS ecosystem with Swift language from v5.
Application layer- When you create an application using different languages. For example you can create application usingSwiftandObjective-C[Mixing Swift and Objective-C]Application - OS layer- runtime -Swift Standard LibraryandSwift Run Time Library[About] are parts of OS and they should not be included into each bundle(e.g. app, framework). It is the same as like Objective-C uses. Available from iOS v12.2Library layer-Module Stabilitycase - compile time - you will be able to import a framework which was built with another version of Swift's compiler. It means that it is safety to create a closed-source(pre-build) binary which will be consumed by a different version of compiler(.swiftinterfaceis used with.swiftmodule[About]) and you will not getModule compiled with _ cannot be imported by the _ compiler //or Compiled module was created by a newer version of the compilerLibrary layer-Library Evolutioncase- Compile time - if a dependency was changed, a client has not to be recompiled.
- Runtime - a system library or a dynamic framework can be hot-swapped by a new one.