|
|
1.1 ! root 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 <[email protected]> (manager), ! 91: Tom Wood <[email protected]> (compiler) and Kresten Krab Thorup ! 92: <[email protected]> (runtime) would like to thank a some people for ! 93: participating in the development of the present GNU Objective C. ! 94: ! 95: Paul Burchard <[email protected]> and Andrew McCallum ! 96: <[email protected]> has been very helpful debugging the ! 97: runtime. Eric Herring <[email protected]> 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 <[email protected]> and Richard Stallman ! 102: <[email protected]> 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.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.