From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/13869 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Alexander Revin Newsgroups: gmane.linux.lib.musl.general Subject: Re: ABI compatibility between versions Date: Tue, 26 Feb 2019 12:28:31 +0100 Message-ID: References: <20190226003353.GP23599@brightrain.aerifal.cx> <20190226095837.GC21289@port70.net> Reply-To: musl@lists.openwall.com Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="268360"; mail-complaints-to="usenet@blaine.gmane.org" To: musl@lists.openwall.com, Alexander Revin Original-X-From: musl-return-13885-gllmg-musl=m.gmane.org@lists.openwall.com Tue Feb 26 12:28:58 2019 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.89) (envelope-from ) id 1gyauw-0017i8-Kd for gllmg-musl@m.gmane.org; Tue, 26 Feb 2019 12:28:58 +0100 Original-Received: (qmail 24522 invoked by uid 550); 26 Feb 2019 11:28:56 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 24497 invoked from network); 26 Feb 2019 11:28:55 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :content-transfer-encoding; bh=TDLybcFHDh/ztvJD3gVhQxuX5MRrf1LbHL2/qWObJFM=; b=BIcnUAt2qtH5me8lXwP4EH/1RaXTW3stI9SW2e/0zwo4JoiOi5reOq0WygtXSwiA0z Lj4Th76wCzR0W3Uu8e8Q8EvlILXI6hG4pBhiyCzACGvQnZeZeboWKLJxEUfv6LMaiRHc HRg1ylVr+xIOOvHEFPMdFtAhwMc7QDczzw8PfJ4xWL0jbCNrxlOCW0Q2Xwxl6OQ/9rDe dvrv2YmRiNrGSzUUkEEddh2+Fm8EdufDHpLsWYVZ3e4n7Q23+qFewFdfKeZxCjYgLvuU 5G2exP+bDP7DKNjkXWBXFvniCEV84/vxN+gz8DnzKb4CEikMD+hRym0dIx3w484H5fTg X81Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:content-transfer-encoding; bh=TDLybcFHDh/ztvJD3gVhQxuX5MRrf1LbHL2/qWObJFM=; b=BLhmAquGmwG6GiaOmZEGCoua5DlQO/EHL/HZMIerUHpw7swtQcGqpTUGyOvpvMMaYy CurUQ//31j/webyYIrtYMoYqpynG2o2csck+4yucwdmVtu9PvdeUmhZJVqkoqAa02kz8 Yv9x/mLZyXgkwTeh2PwnTOisHvErXh05EsbFQFIjIVsHY7g9/wBFgheDWIqDgE1Z3HQH RCcYh2B4V8QUMOjPeqKZZPbrLEv+V8Sg1AalhqwHF4tsh604RmQ8fp6VeyPNMYfCVSK4 XfclVf7sV+JIKGtwwiRZgo5zmdrAGXhbWQ17OTWvHPSgowtomFhhpbtqwVSFdmgyBEZe ZbLA== X-Gm-Message-State: AHQUAuYu0+JaW1gOpGesri8pbM2TKqtx1eqAVM9a/5aCAuRda/+n84oS wkev4lrFyNKPEXiHChzfHOLRMvL/vNfhJ2k1fktaRrp7 X-Google-Smtp-Source: AHgI3IYbXvH+GfIwmfr5pAx6yNI20VVFuxm5FtgDFy2TVSv2xC0gPo6riomL4NjPA0Yualhi+CE7n5PS9Y0VZkRrfuU= X-Received: by 2002:a5d:8404:: with SMTP id i4mr12553391ion.251.1551180522774; Tue, 26 Feb 2019 03:28:42 -0800 (PST) In-Reply-To: <20190226095837.GC21289@port70.net> Xref: news.gmane.org gmane.linux.lib.musl.general:13869 Archived-At: Thanks for your answers. > but for this reason a binary compiled against a new version > of glibc is unlikely to work with an older version (which > is why anybody who wants to distribute a binary that works > across different linux distros, compiles against a very old > version of glibc, which of course means lots of old bugs) > while for musl such breakage is much more rare (happens > when a new symbol is introduced and the binary uses that). So it generally similar to glibc approach =E2=80=93 link against old musl, which doesn't expose new symbols? I'm asking this because I'm investigating efforts required to bring Python native modules support to musl (at the present moment it's impossible to install any Python native module on musl system without recompiling) =E2=80=93 discussion is here: https://mail.python.org/archives/list/distutils-sig@python.org/thread/H3323= AXRRLJAYOY2XZKS74IOUQMJUOYD/ On Tue, Feb 26, 2019 at 10:58 AM Szabolcs Nagy wrote: > > * Rich Felker [2019-02-25 19:33:53 -0500]: > > On Tue, Feb 26, 2019 at 12:18:06AM +0100, Alexander Revin wrote: > > > Hi all, > > > > > > I know this have been briefly discussed here before, but still: does > > > musl guarantee in some way that executable/library compiled against > > > one musl version will work with another (for example, 1.18 and 1.21) > > > ? > > > > > > I remember there were concerns against embedding versioning > > > information in musl like glibc does, but is there a way to somehow > > > ensure the stability between releases? > > > > It guarantees that there is no ABI mismatch. That's not entirely the > > same as guaranteeing that it will work. If the application was relying > > on a bug in an old version to function, or was poking at some > > accidentally-exposed libc internals not defined as a public interface, > > it's possible that updating libc.so will expose this bug in the > > application. > > > > This is different from the glibc approach, which is to use symbol > > versioning to attempt to retain "bug-compatibility" with the version > > of glibc the application was linked with. Such a system forces new > > application binaries that want to be able to run on systems with old > > glibc to link against the old glibc, and thereby get the buggy > > behaviors even if they're running on a system without the bugs. Myself > > and most of the musl community I'm aware of consider this entirely > > unreasonable, and that's why musl doesn't do it. > > i just want to add that glibc makes a distinction as well > between public api contract and implementation internals > and it does not aim to be compatible with anything that > depends on internals (unless there is a strong reason > to do so) so a binary may not work across glibc versions. > > other than the bug compatibility, a difference between the > two approaches is that glibc may do certain abi breaking > changes while keeping old binaries work, that musl cant do. > but for this reason a binary compiled against a new version > of glibc is unlikely to work with an older version (which > is why anybody who wants to distribute a binary that works > across different linux distros, compiles against a very old > version of glibc, which of course means lots of old bugs) > while for musl such breakage is much more rare (happens > when a new symbol is introduced and the binary uses that).