Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 May 2008 21:35:30 +0100 (BST)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Mike Meyer <mwm@mired.org>
Cc:        freebsd-hackers@freebsd.org, Carl Shapiro <carl.shapiro@gmail.com>, Julian Elischer <julian@elischer.org>
Subject:   Re: binary compatibility query
Message-ID:  <20080510213323.E35578@fledge.watson.org>
In-Reply-To: <20080510152718.788d638f@bhuda.mired.org>
References:  <4dcb5abd0805050540m292b319aw52aa2cb8ba018e12@mail.gmail.com> <481F0DB3.9070505@FreeBSD.org> <481F48EE.3050806@elischer.org> <481F4EED.2030300@FreeBSD.org> <4dcb5abd0805051132o77d68e36u3f0ad38630a02afd@mail.gmail.com> <481F6990.9010007@elischer.org> <20080510134833.J63808@fledge.watson.org> <20080510152718.788d638f@bhuda.mired.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 10 May 2008, Mike Meyer wrote:

> On Sat, 10 May 2008 13:50:48 +0100 (BST)
> Robert Watson <rwatson@FreeBSD.org> wrote:
>> On Mon, 5 May 2008, Julian Elischer wrote:
>>> basically if you rely only on the standard posix interfaces and don't do
>>> anything exotic then you will "probably" be safe.
>> For "raw" UNIX applications, this rule of thumb works well, but not for 
>> applications that depend on third-party libraries, languages, or daemons.
>
> You can lose the dependency on third party libraries by compiling your 
> application to a static binary. That will also help with the few breakages 
> that occur with the system libraries, and with compatibility across major 
> releases using the backwards compatX packages.

However, if you do that, we'll probably shoot you in the foot by removing 
kernel support for the thread library you are linking against.  Since the 
removal of KSE, it appears our ABI compatibility promise is at the libc or 
libpthread layer, and not at the system call layer.  We haven't done the 
necessary compat work to let 6.x binaries using libkse work on an 8.x system 
yet, but will presumably do that with a backport of libthr to a 6.x userspace 
(i.e., 6.x library version).

On almost all (serious) OS's I'm aware of, static linking for applications is 
essentially forbidden for that reason -- vendors promise library 
compatibility, not system call compatibility, and rely on being able to change 
the implementations of system calls.

Robert N M Watson
Computer Laboratory
University of Cambridge



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080510213323.E35578>