Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is a non-fragile ABI?

It may seem implied that everyone knows what a "Non Fragile ABI" is - considering the frequency and matter-of-fact-nature to which it is referred to - within Xcode. For example...

Subscript requires size of interface node which is not constant in non-fragile ABI

or

Select the Objective-C ABI version to use. Available versions are 1 (legacy "fragile" ABI), 2, (non-fragile ABI 1), and 3 (non-fragile ABI 2).

That said... What is a non-fragile ABI? (and why isn't it called something less-abstract / explained more clearly?)

like image 422
Alex Gray Avatar asked Sep 20 '12 22:09

Alex Gray


People also ask

What is the difference between Abi and non-Abi Entry Summary?

Manual Entry Summaries are not transmitted via ABI, however they are accepted into ACE. Entry Summary document and timeliness requirements are the same with Non-ABI Entry Summaries as they are with any other Entry Summary.

What are the different types of Abis?

For example... Select the Objective-C ABI version to use. Available versions are 1 (legacy "fragile" ABI), 2, (non-fragile ABI 1), and 3 (non-fragile ABI 2). That said... What is a non-fragile ABI? (and why isn't it called something less-abstract / explained more clearly?)

What is ankle-brachial index (ABI)?

What is the ankle-brachial index (ABI)? The ankle-brachial index (ABI) is a simple, noninvasive test for peripheral artery disease (PAD).

What does Abi mean in a blood pressure reading?

The ABI itself is the systolic blood pressure reading (top number) in your ankle divided by the systolic blood pressure reading in your arm. If your ABI is 0.9 or lower, you should make an appointment with a vascular medicine specialist.


1 Answers

The non-fragile ABI refers to the ability to add instance variables to a class without requiring recompilation of all subclasses.

I.e. in v1 (there really aren't true versions of ObjC), if Apple were to add an instance variable to, say, NSView (on Cocoa, 32 bit), then every subclass of NSView (or subclass of subclass) would have to be recompiled or they would blow up. v2 and v3 fix this.

It is explained in detail in this weblog post.

The documentation you are referring to is in the llvm/clang man page. Pretty rare place to be for most developers most of the time; unless you are writing a Makefile that is driving the compiler directly, there isn't much reason to read that page (unless spelunking -- which is quite educational, of course).

It is written in the style of a Unix man page and, no surprise, is a bit... obtuse. For almost all tasks, it is best to stick to the higher level documentation. I.e. the Xcode build settings documentation is general quite a bit less obtuse.

like image 163
bbum Avatar answered Sep 27 '22 16:09

bbum