From owner-freebsd-current Sun May 31 15:13:22 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id PAA01938 for freebsd-current-outgoing; Sun, 31 May 1998 15:13:22 -0700 (PDT) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from smtp03.primenet.com (daemon@smtp03.primenet.com [206.165.6.133]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id PAA01933 for ; Sun, 31 May 1998 15:13:20 -0700 (PDT) (envelope-from tlambert@usr06.primenet.com) Received: (from daemon@localhost) by smtp03.primenet.com (8.8.8/8.8.8) id PAA18456; Sun, 31 May 1998 15:13:16 -0700 (MST) Received: from usr06.primenet.com(206.165.6.206) via SMTP by smtp03.primenet.com, id smtpd018435; Sun May 31 15:13:13 1998 Received: (from tlambert@localhost) by usr06.primenet.com (8.8.5/8.8.5) id PAA16988; Sun, 31 May 1998 15:13:11 -0700 (MST) From: Terry Lambert Message-Id: <199805312213.PAA16988@usr06.primenet.com> Subject: Re: Fix for undefined "__error" and discussion of shared object To: rkw@dataplex.net (Richard Wackerbarth) Date: Sun, 31 May 1998 22:13:11 +0000 (GMT) Cc: tlambert@primenet.com, current@FreeBSD.ORG In-Reply-To: from "Richard Wackerbarth" at May 31, 98 11:30:05 am X-Mailer: ELM [version 2.4 PL25] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG > >> As much as we might like to think otherwise, assumptions about the structure > >> of the underlying OS and "hardcoded" into the source of the program. :-( > > > >The point is to make a port for FreeBSD 3.x work on FreeBSD 235.x, not > >the reverse. In other words, "compile once, run anywhere". > > > >The binary compatability from FreeBSD 3.x to FreeBSD 235.x is a > >problem for the XANDF processor during the install. > > And for it to be possible, there must be a "compatability library" of some > kind. This is false. If you install from an XANDF "binary", you regenerate the assmebly code, and you relink. When you relink, you will relink against whatever the current libraries are. If you are worrying about binary compatability, well, we already shoulder this burden for previous releases of FreeBSD, and previous releases of Linux, for that matter. > FreeBSD in its totality. What are you going to do when a concept entirely > disappears? As an example, consider the impact of the eventual integration > of devfs. By the time we get to FreeBSD 235.x, do you really expect to be > able to support today's hack dejuor which relies on the present major/minor > device numbers? I think not. Quite right. Software which depends on these constructs will fail to operate. This is as expected as software depending on WIN32 constructs failing to operate on FreeBSD now. > As systems evolve, you are eventually forced to abandon the albatroses > of legacy compatability. But they make such lovely necklaces... ;-). > An even harder problem is related to timing assumptions that are > hardcoded into programs. Many programs "work" only because they > assume things about the hardware and/or compilers. Like support for generating 386 assembly inline in nominally machine independent code? I am aware of the issues. The timing issues are less important, cv: > Remember programs that "poked" an I/O register and controlled the > timing with delay loops? FreeBSD still has some of this; and yes, they fail on some systems where the I/O space is cached. Linux has "fixed" these by doing a write as well as a read, which results in a cache flush, and yes, FreeBSD still has some bugs in this area, especially inre. keyboards and LEDs. > They would never work today if a "decent" compiler were to get hold > of them and optimize away the code that simply created delays. Not permissible, if the memory and/or I/O space addresses are marked volatile, as they should be. > Where they were written, the languages never had the concept of > optimization. The languages *did* have this concept. The problem is the ANSI C committees decision to allow certain types of optimization unless it was specifically disallowed. Yes, this broke a lot of programs, until the 'volatile fairy' sprinkled 'volatile dust' throughout the code that depended on compilers that believed in "above all else, do no harm". I blame compiler writers, since compilers should know about the hardware they are pretending to target. But that is another discussion... ;-). > As a result, the programmers never put the necessary hooks into > the program to guide the compiler about which factors are important. The problem is that the language changed, and there was an (invalid) assumption of unimportance "unless otherwise stated". Negative logic tends to back you into this type of incompatability corner. Part of the other discussion (see above)... > All that I am saying is that I do not believe that it is possible to > both maintain infinity compatability and allow for future innovation. > At some point, the two concepts reach a point of unresolvable conflict. > After that point, one of then will no longer apply. Well, I am (I hope) well known as an advocate of "revolution instead of evolution"; technology moves too damn slow for me as it is, since I can see the next vista, tantalizingly just out of reach, and it annoys the hell out of me. 8-). It's not just computer science, either, it's everywhere. I agree that at some point you are going to lose backward compatability; I think, however, that XANDF will push this off, since most of the historical compatability issues can be resolved by regenerating the assembly code, and relinking, which is implied. I *really* look forward to the day when I can buy an XANDF Motif library, and use it on all my hardware, regardless of the CPU type. 8-0. Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message