[oi-dev] Copyright for contributors - not in files, OI branded zones, binary compatibility

Alan Coopersmith alan.coopersmith at oracle.com
Thu Jul 18 04:04:20 UTC 2013


On 07/17/13 08:37 PM, Alexander Pyhalov wrote:
> I don't know if Solaris has ever supported binary compatibility guarantee in
> such way for non-core libs.

The Solaris policy is actually very much the same as most other OS'es:
declare the areas you promise to keep compatible, and try hard not to
break those; don't worry about breaking the areas you didn't promise
not to change.

In Solaris, these are mostly recorded via the Stability levels in the
man pages - if it says "Committed" it shouldn't ever break, like the
core libc API's.   If it says "Volatile", or is undocumented, it may
break in the next patch or package update.   The attributes(5) man
pages lists the various levels in between.

For the GNOME libraries, Solaris basically followed the GNOME upstream
guidance - things like GTK would preserve compatibility across minor
releases (2.x to any higher 2.y version), but could be broken in a
major release (going from 2.x to 3.0 or later), but other libraries that
weren't part of the GNOME Desktop core could be changed incompatibility
between GNOME minor releases (such as 2.28 to 2.30).

Even Linux follows the same sort of policy - it's just made different
choices about which interfaces to preserve compatibility with or not.
For instance, since GNU libc & the Linux kernel are independently developed
and released asynchronously, Linux chose to make the system call interface
between them committed, and Linus will yell at anyone who tries to break
compatibility there.   In Solaris, since the kernel & libc are developed
and released together as essentially a single unit, the system call interface
is considered Volatile and subject to change without warning - applications
must depend on the Committed libc function wrappers around the low level
system calls in order to get binary compatibility across releases.  (This
is also one of the reasons Solaris always frowned on static linking of
libc.a and eventually removed it so you couldn't make applications that
couldn't be compatible across releases as easily.)

-- 
	-Alan Coopersmith-              alan.coopersmith at oracle.com
	 Oracle Solaris Engineering - http://blogs.oracle.com/alanc




More information about the oi-dev mailing list