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>