[wwwdocs]: Updated gcc-4.6/changes.html for Objective-C/Objective-C++
IainS
developer@sandoe-acoustics.co.uk
Wed Nov 17 10:53:00 GMT 2010
On 17 Nov 2010, at 10:13, Nicola Pero wrote:
>
>>> This patch updates the wwwdocs with the changes that were done
>>> for Objective-C and Objective-C++ for GCC 4.6. There's quite a lot
>>> of stuff :-) ... and I didn't include all the bugfixes.
>>
>> maybe we don't need to include all
>
> I don't see why not - interested users benefit a lot from well-
> formatted
> and well-organized lists of changes.
I meant "I don't think we need mention all bug-fixes" ;-)
[Of course, the enhancements are very important - I was not suggesting
to leave any out!]
> They are usually very eager to read
> such a list (as confirmed by the fact that we got people posting on
> the
> mailing list asking precisely for a list of the Objective-C changes
> in GCC 4.6.0!).
> They shouldn't have to go through ChangeLogs to figure out if ObjC
> method
> arguments are now supported or not. ;-)
>
> Users who are not interested in Objective-C/Objective-C++ will just
> skip
> the section.
>
>> - but we might mention that ObjC* now supports LTO.
>> and, perhaps that FSF gcc/ObjC* can, once again, build m32 NeXT
>> runtime on Darwin.
>
> Ok - good idea - here's a modified patch where I added a mention of
> these.
> I think the "can build m32 NeXT runtime on Darwin" would be very
> important/interesting
> for users, so I put it towards the top of the list ... in fact, at
> the very top,
> just after the mention of the command-line argument changes.
>
> I wasn't aware of changes in Objective-C wrt LTO (other than some
> bugfixes)
> but presumably these happened 6 months ago or so when I wasn't
> paying attention
> to GCC. Anyway, I added a mention of that as you suggested.
well, this is a bug-fix - but an important one.
>
> (the revised patch below also fixes a couple of places where I had
> written 'GNU Objective-C
> library' instead of 'GNU Objective-C runtime library')
>
> Ok to commit ?
>
> Thanks
>
> <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>
>
move this ...
> <li>GCC can now be used to build Objective-C and Objective-C++
> software that uses the m32 NeXT runtime on Darwin.</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>
... to here and maybe re-word a little:
<li>As a result of these enhancements, GCC can now be used to build
Objective-C and Objective-C++ software that uses Foundation and
other important system frameworks with the NeXT runtime on Darwin 9
and Darwin 10 (OSX 10.5 and 10.6). Currently this is for m32 code
only.</li>
> <li>GCC now supports LTO when compiling Objective-C and
> Objective-C++.</li>
??? maybe ==
<li>A serious bug was fixed that was preventing LTO when compiling
Objective-C and Objective-C++.</li>
== or perhaps a separate section for 'important' bug-fixes (as I said,
we could leave that for now).
> </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 runtime 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 runtime 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>
>
>
More information about the Gcc-patches
mailing list