|
|
1.1 root 1:
2: [ This is probably out of date -- ask Kresten for details if needed ]
3:
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.