Index: changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-4.6/changes.html,v
retrieving revision 1.58
diff -u -r1.58 changes.html
--- changes.html        7 Nov 2010 13:48:21 -0000       1.58
+++ changes.html        17 Nov 2010 09:11:46 -0000
@@ -293,6 +293,125 @@
 
 <h3>Java (GCJ)</h3>
 
+<h3 id="objective-c">Objective-C and Objective-C++</h3>
+
+  <ul>
+    <li>The <code>-fobjc-excceptions</code> flag is now required to
+    enable Objective-C exception and synchronization syntax
+    (introduced by the keywords <code>@try</code>,
+    <code>@catch</code>, <code>@finally</code> and
+    <code>@synchronized</code>).</li>
+
+    <li>A number of Objective-C 2.0 features and extensions are now
+    supported by GCC.  These features are enabled by default; you can
+    disable them by using the new <code>-fobjc-std=objc1</code>
+    command-line option.</li>
+
+    <li>The Objective-C 2.0 dot-syntax is now supported both in
+    Objective-C and Objective-C++.  The dot-syntax is an alternative
+    syntax for using getters and setters; <code>object.count</code> is
+    automatically converted into <code>[object count]</code> or
+    <code>[object setCount: ...]</code> depending on context; for
+    example <code>if (object.count > 0)</code> is automatically
+    compiled into the equivalent of <code>if ([object count] >
+    0)</code> while <code>object.count = 0;</code> is automatically
+    compiled into the equivalent ot <code>[object setCount:
+    0];</code>.  The dot-syntax can be used with instance and class
+    objects and with any setters or getters, no matter if they are
+    part of a declared property or not.</li>
+
+    <li>Objective-C 2.0 declared properties are now supported both in
+    Objective-C and Objective-C++.  Declared properties are declared
+    using the new <code>@property</code> keyword, and are most
+    commonly used in conjunction with the new Objective-C 2.0
+    dot-syntax.  The <code>nonatomic</code>, <code>readonly</code>,
+    <code>readwrite</code>, <code>assign</code>, <code>retain</code>,
+    <code>copy</code>, <code>setter</code> and <code>getter</code>
+    attributes are all supported.  Marking declared properties with
+    <code>__attribute__ ((deprecated))</code> is supported too.</li>
+
+    <li>The Objective-C 2.0 <code>@synthesize</code> and
+    <code>@dynamic</code> keywords are supported both in Objective-C
+    and Objective-C++.  <code>@synthesize</code> causes the compiler
+    to automatically synthesize a declared property, while
+    <code>@dynamic</code> is used to disable all warnings for a
+    declared property for which no implementation is provided at
+    compile time.  Synthesizing declared properties requires runtime
+    support in most useful cases; to be able to use it with the GNU
+    runtime, appropriate helper functions have been added to the GNU
+    Objective-C runtime ABI, and are implemented by the GNU
+    Objective-C runtime library shipped with GCC.</li>
+
+    <li>The Objective-C 2.0 fast enumeration syntax is supported in
+    Objective-C.  This is currently not yet available in
+    Objective-C++.  Fast enumeration requires support in the runtime,
+    and such support has been added to the GNU Objective-C runtime
+    library (shipped with GCC).</li>
+
+    <li>The Objective-C 2.0 <code>@optional</code> keyword is
+    supported in Objective-C and Objective-C++.  This keyword allows
+    you to mark methods or properties in a protocol as optional as
+    opposed to required.</li>
+
+    <li>The Objective-C 2.0 <code>@package</code> keyword is
+    supported in Objective-C and Objective-C++.  This keyword has
+    currently the same effect as the <code>@public</code>
+    keyword.</li>
+
+    <li>Objective-C 2.0 method attributes are supported both in
+    Objective-C and Objective-C++.  Currently the supported attributes
+    are <code>deprecated</code>, <code>sentinel</code>,
+    <code>noreturn</code> and <code>format</code>.</li>
+
+    <li>Objective-C 2.0 method argument attributes are supported
+    both in Objective-C and Objective-C++.  The most widely used
+    attribute is <code>unused</code>, to mark an argument as unused in
+    the implementation.</li>
+
+    <li>Objective-C 2.0 class and protocol attributes are parsed both
+    in Objective-C and Objective-C++, but are ignored.</li>
+  </ul>
+
+  <h4>Runtime Library (libobjc)</h4>
+
+  <ul>
+    <li>The GNU Objective-C runtime library now defines the macro
+    <code>__GNU_LIBOBJC__</code> (with a value that is increased at
+    every release where there is any change to the API) in
+    <code>objc/objc.h</code> making it easy to determine if the GNU
+    Objective-C runtime library is being used, and if so, which
+    version.  Previous versions of the GNU Objective-C library (and
+    other Objective-C runtime libraries such as the Apple one) do not
+    define this macro.</li>
+
+    <li>A new Objective-C 2.0 API, almost identical to the one
+    implemented by the Apple Objective-C runtime, has been implemented
+    in the GNU Objective-C runtime library.  The new API hides the
+    internals of most runtime structures but provides a more extensive
+    set of functions to operate on them.  It is much easier, for
+    example, to create or modify classes at runtime.  The new API also
+    makes it easier to port software from Apple to GNU as almost no
+    changes should be required.  The old API is still supported for
+    backwards compatibility; including the old
+    <code>objc/objc-api.h</code> header file automatically selects the
+    old API, while including the new <code>objc/runtime.h</code>
+    header file automatically selects the new API.  Support for the
+    old API is being phased out and upgrading the software to use the
+    new API is strongly recommended.  To check for the availability of
+    the new API, the <code>__GNU_LIBOBJC_</code> macro can be used as
+    older versions of the GNU Objective-C library, which do not
+    support the new API, do not define such a macro.</li>
+
+    <li>Runtime support for <code>@synchronized</code> has been added
+    to the runtime.</li>
+
+    <li>Runtime support for Objective-C 2.0 synthesized property
+    accessors has been added to the runtime.</li>
+
+    <li>Runtime support for Objective-C 2.0 fast enumeration has been
+    added to the runtime.</li>
+  </ul>
+
 <h2 id="targets">New Targets and Target Specific Improvements</h2>
 
 <h3>IA-32/x86-64</h3>
