From owner-freebsd-hackers Sun Jul 6 11:11:35 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id LAA00352 for hackers-outgoing; Sun, 6 Jul 1997 11:11:35 -0700 (PDT) Received: from phaeton.artisoft.com (phaeton.Artisoft.COM [198.17.250.50]) by hub.freebsd.org (8.8.5/8.8.5) with SMTP id LAA00344 for ; Sun, 6 Jul 1997 11:11:29 -0700 (PDT) Received: (from terry@localhost) by phaeton.artisoft.com (8.6.11/8.6.9) id LAA16083; Sun, 6 Jul 1997 11:07:19 -0700 From: Terry Lambert Message-Id: <199707061807.LAA16083@phaeton.artisoft.com> Subject: Re: Application os version compatibility? To: kent@erlang.ericsson.se Date: Sun, 6 Jul 1997 11:07:19 -0700 (MST) Cc: freebsd-hackers@FreeBSD.ORG In-Reply-To: <199707060136.DAA28936@townsend.ericsson.se> from "Kent Boortz" at Jul 6, 97 03:36:17 am X-Mailer: ELM [version 2.4 PL24] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-hackers@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk > I know some just link "libc.2.2" to "libc.3.0" to get *some* > applications working that was built for another os version than > the one running but there must be a better way to create > applications that will survive over os version? > > A reasonable rule would be that > > - If changing the third version number applications with > shared libraries will still work. > > - If changing the second number staticly linked will still work. There is no reason for this distinction. Statically linked applications never quit working unless there is a system interface change without a backward compatability provision (it is policy that can not happen). A minor number rev on a shared library means 1) Interface or parametric functionality ADDED. 2) No interface or parametric functionality DELETED. 3) No interface or parametric functionality MODIFIED. A major number rev on a shared library means 1) Interface or parametric functionality MAY have been ADDED. AND 2) Interface or parameteric functionality was DELETED. OR 3) Interface or parametric functionality was MODIFIED. So for a library revision X.Y with an application linked against x.y: 1) if X > x, application MAY NOT work To work, the application MUST NOT reference DELETED or MODIFIED interfaces 2) if X < x, application MAY NOT work To work, the application MUST NOT reference ADDED or MODIFIED interfaces 3) if X == x, and Y > y, application MUST work y > Y, application MAY NOT work To work, the application MUST NOT reference ADDED interfaces Regards, Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers.