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