home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / gcc-2.4.5 / objc / README < prev    next >
Encoding:
Text File  |  1993-05-19  |  4.6 KB  |  119 lines

  1.  
  2. GNU Objective C release notes for gcc 2.4
  3. *****************************************
  4.  
  5. Since gcc 2.3.3 the Objective C as part of gcc has changed a lot.
  6. This document is to explain what has been done, and a little about
  7. how specific features differ from other implementations.  The runtime
  8. has been completely rewritten.  The earlier runtime had several
  9. severe bugs and was rather incomplete.  The compiler has had several
  10. new features added as well.
  11.  
  12. This is not documentation for Objective C, it is usable to someone
  13. who knows Objective C from somewhere else.
  14.  
  15.  
  16. Runtime API functions
  17. =====================
  18.  
  19. The runtime is moddeled after the NeXT Objective C runtime.  That is,
  20. most functions have semanthics as it is known from the NeXT.  The
  21. names, however, have changed.  All runtime API functions have names
  22. of lowercase letters and and underscores as opposed to the
  23. `traditional' mixed case names.  
  24.     The runtime api functions are not documented as of now.
  25. Someone offered to write it, and did it, but we were not allowed to
  26. use it by his university (Very sad story).  We have started writing
  27. the documentation over again.  This will be announced appropriate
  28. places when it becomes avilable.
  29.  
  30.  
  31. Protocols
  32. =========
  33.  
  34. Protocols are now fully supported. The semanthics is exactly as on the
  35. NeXT.  There is a flag to specify how protocols should be typechecked
  36. when adopted to classes.  The normal typechecker requires that all
  37. methods in a given protocol must be implemented in the class that
  38. adopts it -- it is not enough to inherit them.  The flag
  39. `-Wno-protocol' causes it to allow inherited methods, while
  40. `-Wprotocols' is the default which requires them defined.
  41.  
  42.  
  43. +initialize 
  44. ===========
  45.  
  46. This method, if defined, is called before any other instance or class
  47. methods of that particular class.  This method is not inherited, and
  48. is thus not called as initializer for a subclass that doesn't define
  49. it itself.  Thus, each +initialize method is called exactly once (or
  50. never if no methods of that particular class is never called).
  51. Besides this, it is allowed to have several +initialize methods, one
  52. for each category.  The order in which these (multiple methods) are
  53. called is not well defined.  I am not completely certain what the
  54. semathics of this method is for other implementations, but this is
  55. how it works for GNU Objective C.
  56.  
  57.  
  58. Passivation/Activation/Typedstreams
  59. ===================================
  60.  
  61. This is supported in the style of NeXT TypedStream's.  Consult the
  62. headerfile Typedstreams.h for api functions.  I (Kresten) have
  63. rewritten it in Objective C, but this implementation is not part of
  64. 2.4, it is available from the GNU Objective C prerelease archive. 
  65.    There is one semathic difference worth noting concerning objects
  66. stored with objc_write_object_reference (aka NXWriteObjectReference).
  67. When these are read back in, their object is not guaranteed to be
  68. available until the `-awake' method is called in the object that
  69. requests that object.  To objc_read_object you must pass a pointer to
  70. an id, which is valid after exit from the function calling it (like
  71. e.g. an instance variable).  In general, you should not use objects
  72. read in until the -awake method is called.
  73.  
  74.  
  75. argframe manipulation
  76. =====================
  77.  
  78. performv:: will not work properly on all targets.  A primitive
  79. heuristics is included which tries to determine if and how it should
  80. be done.  You will get a warning when compiling `objc-msg.c' if the
  81. euristics doesn't work.
  82.   Currently there is no notion of the marg_... macros available on the
  83. NeXT.  That is, the arguments to forward:: can only be used to apply
  84. the arguments in the stylle of performv::.  We are working on this.
  85.  
  86.  
  87. Acknowledgements
  88. ================
  89.  
  90. The GNU Objective C team: Geoffrey Knauth <gsk@marble.com> (manager),
  91. Tom Wood <wood@next.com> (compiler) and Kresten Krab Thorup
  92. <krab@iesd.auc.dk> (runtime) would like to thank a some people for
  93. participating in the development of the present GNU Objective C.
  94.  
  95. Paul Burchard <burchard@geom.umn.edu> and Andrew McCallum
  96. <mccallum@cs.rochester.edu> has been very helpful debugging the
  97. runtime.   Eric Herring <herring@iesd.auc.dk> has been very helpful
  98. cleaning up after the documentation-copyright disaster and is now
  99. helping with the new documentation.
  100.  
  101. Steve Naroff <snaroff@next.com> and Richard Stallman
  102. <rms@gnu.ai.mit.edu> has been very helpful with implementation details
  103. in the compiler.
  104.  
  105.  
  106. Prerelease Archive
  107. ==================
  108.  
  109. Intermediate releases, bugfixes and additional other information of
  110. the GNU Objective C will be available from iesd.auc.dk in the
  111. directory /pub/ObjC.
  112.  
  113.  
  114. Bug Reports
  115. ===========
  116.  
  117. Please read the section `Submitting Bugreports' of the gcc manual
  118. before you submit any bugs.
  119.