kempf@hplabsz.UUCP (11/20/87)
Some recent postings to this group indicate that there may be some confusion about the different Lisp object systems. Practically everybody knows what Flavors(tm?) is, but what about all the others? Here is an attempt to shed some light on the other object systems: CommonLoops-An object-oriented language designed at Xerox PARC. Uses generic functions, like New Flavors(tm?) but has no method combination and features multiple argument dispatching (multimethods). Also has a metaclass kernel, for implementing other object oriented languages (see below). Reference: SIGPLAN Notices, 21(11), Sept.-Oct. 1986, pg. 17-29. Portable CommonLoops (PCL)-a portable implementation of CommonLoops done at Xerox PARC. Up until about Feb. 1987, PCL was CommonLoops, but now it is tracking the specification of the Common Lisp Object System (see below for more information). CommonObjects-an object-oriented Lisp extension designed at HP Labs. Features strict encapsulation (including restricting access of superclass internals from subclasses) and a Flavors(tm?) like syntax for method sends. Originally implemented and available through the HP Common Lisp product. Reference: SIGPLAN Notices, 21(10), Oct., 1986, pp. 19-28, also a language spec is available from cool@hplabs.hp.com as document ATC-85-01. CommonObjects on CommonLoops (COOL)- a portable implementation of CommonObjects on the PCL metaclass kernel. It was distributed via USENET comp.sources.unix in August, 1987, along with the PCL on which it runs, and is available from a USENET archive machine. Common Lisp Object System-Under the auspices of the ANSI X3J13 Common Lisp Standardization Committee, a subcommittee to design a new object-oriented Common Lisp extension was formed. The design is based on features of CommonLoops and New Flavors. Currently, a revised language specification is being prepared which reflects feedback from the full ANSI X3J13 committee and from users of the prototype PCL implementation. When accepted by the full committee, CLOS (pronounced "klos") will be the offical Lisp standard object-oriented programming language. A copy of the original draft specification is available from ANSI in New York (sorry, no address, try calling) as ANSI X3J13 documents 87-002 and 87-003. As mentioned above the PCL implementation is evolving to match the CLOS specification. Other object systems-There are a number of other object systems of which one hears. ObjectLisp was one of the original 4 systems being considered as the ANSI standard. CommonOrbit and ObjTalk are European object systems, the former from the Neatherlands and the latter from Germany (Univ. Stuttgart). As far as I know, none of these has been made widely available in a portable version. I hope this clears up any misconceptions about the relationship between the various object systems for Common Lisp. Jim Kempf kempf@hplabs.hp.com PS: In response to a posting last summer, a number of people got the 87-002 documents electronically and were unable to format them because of the lack of a TeX macro file. The revised language spec (which should be available sometime after the first of the year) will have a portable macro file, to make electronic distribution easier. Thank you for your patience, and apologies for the length of time involved in making this happen. In the interim, if you are interested in obtaining the original 87-002 spec, you might want to give ANSI a call.