Today, ar is generally used only to create and update static library files that the link editor or linker uses and for generating .deb packages for the Debian family; it can be used to create archives for any purpose, but has been largely replaced by tar for purposes other than static libraries.
The rationale provided was that "the LSB does not include software development utilities nor does it specify .o and .a file formats.
Historically there have been other variants[5] including V6, V7, AIX (small and big), and Coherent, which all vary significantly from the common format.
"[7] Due to the limitations of file name length and format, both the GNU and BSD variants devised different methods of storing long filenames.
Although the common format does not suffer from the year 2038 problem, many implementations of the ar utility do and may need to be modified in the future to handle correctly timestamps in excess of 2147483647.
[6] BSD ar utility traditionally does not handle the building of a global symbol lookup table, and delegates this task to a separate utility named ranlib,[10] which inserts an architecture-specific file named __.SYMDEF as first archive member.
Since POSIX added the requirement for the -s option as a replacement of ranlib, however, newer BSD ar implementations have been rewritten to have this feature.
Then it stores multiple extended filenames in the data section of a file with the name "//", this record is referred to by future headers.
For operating systems such as HP-UX 11.0, this information is stored in a data structure based on the SOM file format.
The special file "/" is not terminated with a specific sequence; the end is assumed once the last symbol name has been read.
To overcome the 4 GiB file size limit some operating system like Solaris 11.2 and GNU use a variant lookup table.