home *** CD-ROM | disk | FTP | other *** search
/ Dream 41 / Amiga_Dream_41.iso / Amiga / Programmation / c / gcc / objam02.lha / objam / ReadMe < prev   
Encoding:
Text File  |  1995-04-16  |  13.3 KB  |  335 lines

  1.                ****************************************
  2.  
  3.                       The ObjectiveAmiga package
  4.  
  5.                 An Objective C environment for AmigaOS
  6.  
  7.                               Release 0.2
  8.  
  9.                   Copyleft 1994-1995 by Stefan Zeiger
  10.  
  11.                ****************************************
  12.  
  13. License
  14. *******
  15.  
  16.    ObjectiveAmiga is based on the GNU Objective C runtime system which
  17. comes with GNU CC 2.5.8. ObjectiveAmiga is subject to the same license
  18. conditions as the GNU CC 2.5.8 Objective C runtime:
  19.  
  20.    ObjectiveAmiga  is free software; you can redistribute it and/or
  21. modify it under  the  terms  of  the GNU General Public License as
  22. published by the Free Software Foundation; either version 2, or (at
  23. your option) any later version.
  24.  
  25.    ObjectiveAmiga  is  distributed  in  the  hope that it will be
  26. useful, but WITHOUT  ANY WARRANTY; without even the implied warranty of
  27. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  28. General Public License for more details.
  29.  
  30.    You  should  have  received a copy of the GNU General Public License
  31. along with ObjectiveAmiga; see the file COPYING.  If not, write to the
  32. Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  33.  
  34.    As  a special exception, if you link this library with files
  35. compiled with GCC  to produce an executable, this does not cause the
  36. resulting executable to be covered by the GNU General Public License.
  37. This exception does not however invalidate  any  other reasons why the
  38. executable file might be covered by the GNU General Public License.
  39.  
  40. Introduction
  41. ************
  42.  
  43.    ObjectiveAmiga  is a runtime system and class collection for the
  44. Objective C  language  as implemented by gcc 2.5.8.  Note that you
  45. first have to install gcc  2.5.8  (maybe  some  earlier  versions  will
  46. work,  too) in order to use ObjectiveAmiga.   If  you  should  get
  47. crashes from `ld', try installing an `ld' from  gcc 2.6.0 or later or
  48. even better install a full 2.6.0 (or later) system and  simply  add
  49. the  2.5.8  compilers directory.  The supplied Makefile will choose gcc
  50. 2.5.8, no matter which versions are installed.  See below for
  51. installation and deinstallation instructions.
  52.  
  53.    ObjectiveAmiga consists of 5 parts:
  54.  
  55.    * The runtime system (almost completely functional):
  56.  
  57.      A  standard  Objective C  runtime  system based on libobjc.a as
  58.      supplied with gcc 2.5.8 but with some AmigaOS specific
  59.      modifications.  My runtime system  also  tries  to  be  compatible
  60.      as far as possible (I can't test it...)  with  the  original  gcc,
  61.      with  the  NeXTSTEP  [2] and  in some points with the Stepstone
  62.      [3] runtime system. Note that not the whole runtime system is
  63.      indeed contained in `libbjc.a'. More and more parts are being
  64.      moved over into the shared runtime library `objc.library' which is
  65.      required by all ObjectiveAmiga applications.
  66.  
  67.    * The shared runtime library (under development; functional):
  68.  
  69.      Traditionally Objective C programs carry a huge overhead in their
  70.      code, due to the big runtime system. ObjectiveAmiga tries to
  71.      minimize this problem by moving as many as possible parts from the
  72.      linker library into a shared library which is placed into `libs:'
  73.      instead of being linked to all executables directly.
  74.  
  75.    * The basics library (very rudimentary):
  76.  
  77.      A  class  library  loosely  based  on  the  basic classes of
  78.      Stepstone's ICpak101  as described in [3].  This library might
  79.      depend in some places on  my  runtime system, but it doesn't make
  80.      direct use of AmigaOS.  Thus it should be portable, at least to
  81.      some degree.
  82.  
  83.    * The AmigaOS support library (under development; functional):
  84.  
  85.      This  library tries to encapsulate some AmigaOS functions in
  86.      Objective C classes. This is some kind of `AppKit' for
  87.      ObjectiveAmiga. I am including several classes (e.g. `RexxHost'
  88.      and `FileList') which are based on more or less reusable C code
  89.      which I have already used in multiple C programs.
  90.  
  91.    * The GUI library (under development; functional)
  92.  
  93.      This library (`libobjtriton.a') encapsulates the `Triton GUI
  94.      creation system' into Objetive C classes in order to make it
  95.      usable more easily in connection with `libobjam.a'.
  96.  
  97. Classes and functions
  98. *********************
  99.  
  100.    I am sorry, but currently there is no documentation for classes and
  101. functions.  Most of the functions are modeled after NeXTSTEP functions
  102. though. These are documented in [2]. The NeXT style extensions to the
  103. Object class are documented in [1], the StepStone methods can be found
  104. in [3]. The classes of `libobjbas.a' can be found in [3], too.
  105.  
  106.    The rest (mainly `libobjam.a' and `libobjtriton.a') are not
  107. documented yet. Use the source, Luke! The code is obvious ;)
  108.  
  109. Installation
  110. ************
  111.  
  112.    *Installation:*
  113.  
  114.   1. Make sure that you have installed gcc 2.6.0+ and the gcc 2.5.8
  115.      executables.
  116.  
  117.   2. CD to the directory where you found this file.
  118.  
  119.   3. Check the paths in the `Makefile'.
  120.  
  121.   4. Create the runtime system with 'make install'.
  122.  
  123.    *Deinstallation:*
  124.  
  125.   1. CD to the directory where you found this file.
  126.  
  127.   2. Type 'make remove'.
  128.  
  129.    *Updating:*
  130.  
  131.    In order to upate with a new release of ObjectiveAmiga, simply
  132. deinstall the old release (see above) and then install the new release
  133. from scratch (see above). The directory structures of new releases
  134. could change and header files `<objc/...>' are constantly being removed
  135. one by one when their functionality is taken over by the runtime
  136. library. Thus it would be unwise to install a new release over an
  137. existing one.
  138.  
  139.    *Source release only:*
  140.  
  141.    ObjectiveAmiga is currently distributed in source code only. I don't
  142. think this is a problem since you have already gone through the trouble
  143. of installing gcc. If gcc is up and running, it should be easy to
  144. compile and install ObjectiveAmiga.
  145.  
  146.    Please contact me when you encounter any problems with the
  147. installation or if you prefer a binary distribution. Note that the
  148. archive of a binary distribution would be *much* bigger than the
  149. current source archive!
  150.  
  151. Major changes to libobjc.a compared to the gcc 2.5.8 version
  152. ************************************************************
  153.  
  154.    * Changed defintion of BOOL, YES and NO to be compatible with the
  155.      AmigaOS defintions for boolean values.
  156.  
  157.    * Solved naming conflicts with Objective C and BOOPSI.  Especially
  158.      changed `Class' to `OCClass' for compatibility with BOOPSI.
  159.      `Class' can still be used as long as `<intuition/classes.h>' is
  160.      not included.
  161.  
  162.    * Added an NXZone implementation based on memory pools. Note that if
  163.      you define AMIGAOS_39 in `runtime/Makefile' (this is done by
  164.      default), `objc.library' (and thus all ObjectiveAmiga
  165.      applications) requires OS3.0. Undefine AMIGAOS_39 in order to
  166.      produce an `objc.library' which runs on OS2.04 and above.
  167.  
  168.    * Added an NXAtom implementation. Currently the strings are searched
  169.      directly in the atom list which is not very fast. I will change
  170.      this to hash table searching when I find the time to do that.
  171.  
  172.    * Added many new methods to Object, mainly in order to be more
  173.      compatible with NeXTSTEP. Added category  `Object
  174.      (StepstoneArchiving)' for Stepstone-type object archiving
  175.      functions. This makes sense because there is currently no
  176.      NXStreams implementation, thus archiving will be used mainly with
  177.      files (which is easier with the Stepstone methods).
  178.  
  179.    * Since the function names of GNU and NeXTSTEP implementations differ
  180.      although many functions do the same things, I have added
  181.      definitions for various NeXTSTEP functions. These will be changed
  182.      to inline functions when I find the time to do that.
  183.  
  184.    * Removed GCC source and IN_GCC dependencies.  Changed local
  185.      includes to global includes. The Objective C runtime can now be
  186.      compiled independently from GCC.
  187.  
  188. GNU Objective C release notes for gcc 2.4
  189. *****************************************
  190.  
  191.    *Note:* This chapter contains the release notes for the original GCC
  192. Objective C runtime which comes with GCC 2.5.8.
  193.  
  194. GNU Release notes
  195. =================
  196.  
  197.    Since gcc 2.3.3 the Objective C as part of gcc has changed a lot.
  198. This document is to explain what has been done, and a little about how
  199. specific features differ from other implementations.  The runtime has
  200. been completely rewritten.  The earlier runtime had several severe bugs
  201. and was rather incomplete.  The compiler has had several new features
  202. added as well.
  203.  
  204.    This is not documentation for Objective C, it is usable to someone
  205. who knows Objective C from somewhere else.
  206.  
  207. Runtime API functions
  208. =====================
  209.  
  210.    The runtime is moddeled after the NeXT Objective C runtime.  That is,
  211. most functions have semanthics as it is known from the NeXT.  The
  212. names, however, have changed.  All runtime API functions have names of
  213. lowercase letters and and underscores as opposed to the `traditional'
  214. mixed case names.
  215.  
  216.    The runtime api functions are not documented as of now.  Someone
  217. offered to write it, and did it, but we were not allowed to use it by
  218. his university (Very sad story).  We have started writing the
  219. documentation over again.  This will be announced appropriate places
  220. when it becomes avilable.
  221.  
  222. Protocols
  223. =========
  224.  
  225.    Protocols are now fully supported. The semanthics is exactly as on
  226. the NeXT.  There is a flag to specify how protocols should be
  227. typechecked when adopted to classes.  The normal typechecker requires
  228. that all methods in a given protocol must be implemented in the class
  229. that adopts it - it is not enough to inherit them.  The flag
  230. `-Wno-protocol' causes it to allow inherited methods, while
  231. `-Wprotocols' is the default which requires them defined.
  232.  
  233. +initialize
  234. ===========
  235.  
  236.    This method, if defined, is called before any other instance or class
  237. methods of that particular class.  This method is not inherited, and is
  238. thus not called as initializer for a subclass that doesn't define it
  239. itself.  Thus, each +initialize method is called exactly once (or never
  240. if no methods of that particular class is never called).  Besides this,
  241. it is allowed to have several +initialize methods, one for each
  242. category.  The order in which these (multiple methods) are called is
  243. not well defined.  I am not completely certain what the semathics of
  244. this method is for other implementations, but this is how it works for
  245. GNU Objective C.
  246.  
  247. Passivation/Activation/Typedstreams
  248. ===================================
  249.  
  250.    This is supported in the style of NeXT TypedStream's.  Consult the
  251. headerfile Typedstreams.h for api functions.  I (Kresten) have
  252. rewritten it in Objective C, but this implementation is not part of
  253. 2.4, it is available from the GNU Objective C prerelease archive.
  254.  
  255.    There is one semathic difference worth noting concerning objects
  256. stored with objc_write_object_reference (aka NXWriteObjectReference).
  257. When these are read back in, their object is not guaranteed to be
  258. available until the `-awake' method is called in the object that
  259. requests that object.  To objc_read_object you must pass a pointer to
  260. an id, which is valid after exit from the function calling it (like
  261. e.g. an instance variable).  In general, you should not use objects
  262. read in until the -awake method is called.
  263.  
  264. Acknowledgements
  265. ================
  266.  
  267.    The GNU Objective C team: Geoffrey Knauth <gsk@marble.com> (manager),
  268. Tom Wood <wood@next.com> (compiler) and Kresten Krab Thorup
  269. <krab@iesd.auc.dk> (runtime) would like to thank a some people for
  270. participating in the development of the present GNU Objective C.
  271.  
  272.    Paul Burchard <burchard@geom.umn.edu> and Andrew McCallum
  273. <mccallum@cs.rochester.edu> has been very helpful debugging the
  274. runtime.   Eric Herring <herring@iesd.auc.dk> has been very helpful
  275. cleaning up after the documentation-copyright disaster and is now
  276. helping with the new documentation.
  277.  
  278.    Steve Naroff <snaroff@next.com> and Richard Stallman
  279. <rms@gnu.ai.mit.edu> has been very helpful with implementation details
  280. in the compiler.
  281.  
  282. Prerelease Archive
  283. ==================
  284.  
  285.    Intermediate releases, bugfixes and additional other information of
  286. the GNU Objective C will be available from iesd.auc.dk in the directory
  287. /pub/ObjC.
  288.  
  289. Bug Reports
  290. ===========
  291.  
  292.    Please read the section `Submitting Bugreports' of the gcc manual
  293. before you submit any bugs.
  294.  
  295. The future
  296. **********
  297.  
  298.    The future could depend on *you*. I am constantly working at
  299. ObjectiveAmiga, but I do have other projects, too. Besides that there
  300. are so many parts of ObjectiveAmiga which need to be completed that I
  301. simply cannot do everything at once. If you want to help me with the
  302. development of ObjectiveAmiga, feel free to contact me.
  303.  
  304.    Of course I can't offer you anything for your work. I'm not getting
  305. anything either ;)
  306.  
  307. Getting in touch
  308. ****************
  309.  
  310.    If you want to contact me, send EMail to s.zeiger@laren.rhein-main.de
  311. or phone me at +49-6188-2525 after 7:00 PM CET (6:00 PM GMT).
  312.  
  313.    If you really want to use SnailMail (don't expect an answer via
  314. SnailMail from me ;), write to Stefan Zeiger, SeligenstΣdter Weg 24,
  315. 63796 Kahl, Germany.
  316.  
  317. Bibliography
  318. ************
  319.  
  320.      [1] NeXT Computers, Inc.:
  321.          NeXTSTEP Object-Oriented Programming and the Objective C Language
  322.          Release 3
  323.          Addison-Wesley 1993
  324.      
  325.      [2] NeXT Computers, Inc.:
  326.          NeXTSTEP General Reference, Volume 1
  327.          Release 3
  328.          Addison-Wesley 1992
  329.      
  330.      [3] Brad J. Cox, Andrew J. Novobilski:
  331.          Object-Oriented Programming - An Evolutionary Approach
  332.          Second Edition
  333.          Addison-Wesley 1991
  334.  
  335.