|
|
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.