Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watmath!clyde!rutgers!husc6!endor!stew From: stew@endor.UUCP Newsgroups: comp.sys.mac Subject: Broken compilers Message-ID: <1953@husc6.UUCP> Date: Mon, 11-May-87 21:25:44 EDT Article-I.D.: husc6.1953 Posted: Mon May 11 21:25:44 1987 Date-Received: Thu, 14-May-87 01:44:15 EDT References: <949@batcomputer.tn.cornell.edu> <746@apple.UUCP> Sender: news@husc6.UUCP Reply-To: stew@endor.UUCP (Stew Rubenstein) Organization: Aiken Computation Lab Harvard, Cambridge, MA Lines: 61 Keywords: IMPORTANT WARNING LIGHTSPEED C In article <746@apple.UUCP> dgold@apple.UUCP (David Goldsmith) writes: >Well, er, ah, hmmm, it seems that there was this low memory global called >BasicGlob, which was reserved for use by the system, and System 4.1 is now >using it (it's been renamed ExpandMem), but, er, uh, ahem, it seems that >MacTerminal (against our own rules), was USING BasicGlob. So it is >incompatible with System 4.1. >-- >David Goldsmith >Apple Computer, Inc. Although I don't know if MegaMax was the culprit in this case, this is representative of a serious problem with some development systems, particularly MegaMax C and LightSpeed C. MacTerminal's not the only application broken by the reuse of BasicGlob. It seems that MegaMax used BasicGlob to store a pointer to the Application's globals. Thus, any application compiled with MegaMax C is broken under System 4.1. I don't use MegaMax C anymore, but the current release version of my program, ChemDraw 1.0, was compiled with MegaMax and consequently fails under System 4.1. WARNING: There is another similar disaster waiting to happen. All programs compiled with LightSpeed C WILL BREAK, GUARANTEED 100%, when Apple comes out with a 32 bit operating system for the Mac II or future hardware. This is true of LightSpeed C versions 1.02 and 2.01. The problem is that they use a BSET instruction to manipulate Handle state flags. Apple has repeatedly warned Developers (e.g., in Tech Note #2, dated January 21, 1986) that this is a no-no. DEVELOPERS: Do not distribute programs compiled with LightSpeed C unless you are prepared to deal with your users complaining that your program doesn't work when Apple improves its operating system. TO ALL CURRENT AND POTENTIAL DEVELOPMENT SYSTEM DEVELOPERS: If it is important for developers to follow the guidelines, then it is important squared for development system runtimes to follow the rules. Otherwise, you will make many, many programs break. Someone somewhere is going to test your standard disclaimer of liability, and you will be in for a legal nightmare. In a way, although I was seriously damaged by it, I am glad that Apple broke programs which used BasicGlob. I am somewhat afraid that the large number of programs which will break will deter Apple from providing a 32 bit operating system. Needless to say, I no longer plan to sell programs built with MegaMax or Lightspeed C. I hope that the MPW runtimes follow the rules... It would be nice if the developers of MPW and of new Macintosh hardware and operating system software could cooperate to head off problems like these in the future. I apologize to everyone for all this verbiage, but I AM PISSED at both MegaMax and LightSpeed for screwing me over like this. I can only thank my lucky stars that I discovered the problems with LightSpeed in time to avoid a costly mistake. Stew Rubenstein - Harvard University Chemistry Department - Cambridge Scientific Computing, Inc. - rubenstein@harvard.harvard.edu - seismo!harvard!rubenstein