3849e25709
includes fixes for these 109 GCC PR's: 4520 13685 13983 17519 19505 20256 22209 22313 23454 24367 25211 25468 25519 25636 25636 26435 26504 26570 26719 26764 26881 26969 26983 26991 26991 26993 27075 27184 27226 27287 27287 27291 27334 27363 27428 27489 27490 27537 27558 27565 27566 27616 27639 27681 27697 27721 27724 27768 27793 27793 27795 27827 27878 27889 27893 28029 28075 28136 28148 28150 28162 28170 28187 28207 28207 28218 28221 28238 28243 28247 28257 28259 28267 28283 28286 28299 28386 28402 28403 28418 28473 28490 28493 28621 28634 28636 28649 28651 28677 28683 28726 28814 28825 28862 28900 28924 28946 28952 28960 28980 29006 29091 29119 29132 29154 29198 29230 29290 29323 |
||
---|---|---|
.. | ||
ChangeLog | ||
config-lang.in | ||
lang-specs.h | ||
Make-lang.in | ||
objc-act.c | ||
objc-act.h | ||
objc-lang.c | ||
objc-tree.def | ||
README |
GNU Objective C notes ********************* This document is to explain what has been done, and a little about how specific features differ from other implementations. The runtime has been completely rewritten in gcc 2.4. The earlier runtime had several severe bugs and was rather incomplete. The compiler has had several new features added as well. This is not documentation for Objective C, it is usable to someone who knows Objective C from somewhere else. Runtime API functions ===================== The runtime is modeled after the NeXT Objective C runtime. That is, most functions have semantics as it is known from the NeXT. The names, however, have changed. All runtime API functions have names of lowercase letters and underscores as opposed to the `traditional' mixed case names. The runtime api functions are not documented as of now. Someone offered to write it, and did it, but we were not allowed to use it by his university (Very sad story). We have started writing the documentation over again. This will be announced in appropriate places when it becomes available. Protocols ========= Protocols are now fully supported. The semantics is exactly as on the NeXT. There is a flag to specify how protocols should be typechecked when adopted to classes. The normal typechecker requires that all methods in a given protocol must be implemented in the class that adopts it -- it is not enough to inherit them. The flag `-Wno-protocol' causes it to allow inherited methods, while `-Wprotocols' is the default which requires them defined. +initialize =========== This method, if defined, is called before any other instance or class methods of that particular class. This method is not inherited, and is thus not called as initializer for a subclass that doesn't define it itself. Thus, each +initialize method is called exactly once (or never if no methods of that particular class is never called). Besides this, it is allowed to have several +initialize methods, one for each category. The order in which these (multiple methods) are called is not well defined. I am not completely certain what the semantics of this method is for other implementations, but this is how it works for GNU Objective C. Passivation/Activation/Typedstreams =================================== This is supported in the style of NeXT TypedStream's. Consult the headerfile Typedstreams.h for api functions. I (Kresten) have rewritten it in Objective C, but this implementation is not part of 2.4, it is available from the GNU Objective C prerelease archive. There is one difference worth noting concerning objects stored with objc_write_object_reference (aka NXWriteObjectReference). When these are read back in, their object is not guaranteed to be available until the `-awake' method is called in the object that requests that object. To objc_read_object you must pass a pointer to an id, which is valid after exit from the function calling it (like e.g. an instance variable). In general, you should not use objects read in until the -awake method is called. Acknowledgements ================ The GNU Objective C team: Geoffrey Knauth <gsk@marble.com> (manager), Tom Wood <wood@next.com> (compiler) and Kresten Krab Thorup <krab@iesd.auc.dk> (runtime) would like to thank a some people for participating in the development of the present GNU Objective C. Paul Burchard <burchard@geom.umn.edu> and Andrew McCallum <mccallum@cs.rochester.edu> has been very helpful debugging the runtime. Eric Herring <herring@iesd.auc.dk> has been very helpful cleaning up after the documentation-copyright disaster and is now helping with the new documentation. Steve Naroff <snaroff@next.com> and Richard Stallman <rms@gnu.ai.mit.edu> has been very helpful with implementation details in the compiler. Bug Reports =========== Please read the section `Submitting Bugreports' of the gcc manual before you submit any bugs.