Annotation of gcc/objc/README, revision 1.1.1.1

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.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.