From owner-freebsd-hackers@FreeBSD.ORG Sat May 10 20:35:31 2008 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 46B94106564A for ; Sat, 10 May 2008 20:35:31 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [209.31.154.42]) by mx1.freebsd.org (Postfix) with ESMTP id 194578FC14 for ; Sat, 10 May 2008 20:35:31 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [209.31.154.41]) by cyrus.watson.org (Postfix) with ESMTP id 96D4746B45; Sat, 10 May 2008 16:35:30 -0400 (EDT) Date: Sat, 10 May 2008 21:35:30 +0100 (BST) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: Mike Meyer In-Reply-To: <20080510152718.788d638f@bhuda.mired.org> Message-ID: <20080510213323.E35578@fledge.watson.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> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: freebsd-hackers@freebsd.org, Carl Shapiro , Julian Elischer Subject: Re: binary compatibility query X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 May 2008 20:35:31 -0000 On Sat, 10 May 2008, Mike Meyer wrote: > On Sat, 10 May 2008 13:50:48 +0100 (BST) > Robert Watson 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