Updated documentation.

main
theraven 15 years ago
parent 709f238364
commit 975596f764

@ -8,16 +8,23 @@ release include:
- Support for the associated reference APIs introduced with OS X 10.6. This - Support for the associated reference APIs introduced with OS X 10.6. This
allows storing arbitrary objects associated with another object. allows storing arbitrary objects associated with another object.
- Concurrent, thread-safe, +initialize. The runtime will now send +initialize - Concurrent, thread-safe, +initialize. The runtime will now send +initialize
messages to different classes concurrently in multiple threads, but still messages to different classes concurrently in multiple threads, but still
ensures that no class receives another message until it has returned from ensures that no class receives another message until it has returned from
+initialize. Exceptions can now safely propagate out of +initialize methods. +initialize. Exceptions can now safely propagate out of +initialize methods.
- Better hiding of local symbols. Now the internal runtime functions are not - Better hiding of local symbols. Now the internal runtime functions are not
visible from outside of the runtime. visible from outside of the runtime.
- Dispatch table updates have been improved. Category loading no longer - Dispatch table updates have been improved. Category loading no longer
triggers dtable creation and partial dtable updates are faster. triggers dtable creation and partial dtable updates are faster.
- Improvements to the low memory profile. Uses 5-10% less memory running Gorm, - Improvements to the low memory profile. Uses 5-10% less memory running Gorm,
and now passes the entire GNUstep and EtoileFoundation test suites. and now passes the entire GNUstep and EtoileFoundation test suites. Build
with [g]make low_memory=yes to enable this mode. Note that the low memory
profile trades some CPU time for memory usage, so don't use it for CPU-bound
tasks.
You may obtain the code for this release from subversion at the following You may obtain the code for this release from subversion at the following
subversion branch: subversion branch:

@ -21,6 +21,7 @@ Both ABIs support the following feature above and beyond the GCC runtime:
- Efficient support for @synchronized() - Efficient support for @synchronized()
- Type-dependent dispatch, eliminating stack corruption from mismatched - Type-dependent dispatch, eliminating stack corruption from mismatched
selectors. selectors.
- Support for the associated reference APIs introduced with Mac OS X 10.6.
History History
------- -------
@ -35,7 +36,7 @@ Since then, all of the GCC code has been removed, leaving the remaining files
all MIT licensed, and allowing the entire work to be MIT licensed. all MIT licensed, and allowing the entire work to be MIT licensed.
The exception handling code uses a header file implementing the generic parts The exception handling code uses a header file implementing the generic parts
of the Itanium EH ABI. This file comes from PathScale's libc++rt. PathScale of the Itanium EH ABI. This file comes from PathScale's libcxxrt. PathScale
kindly allowed it to be MIT licensed for inclusion here. kindly allowed it to be MIT licensed for inclusion here.
Non-Fragile Instance Variables Non-Fragile Instance Variables
@ -365,12 +366,18 @@ sends are to a small number of methods. For example, an NSMutableDictionary is
most often sent -objectForKey: and -setObject:forKey:. If these two methods most often sent -objectForKey: and -setObject:forKey:. If these two methods
are in the cache, then the O(n) algorithm is almost never used. are in the cache, then the O(n) algorithm is almost never used.
The GNUstep runtime's low memory profile stores the slots in a sorted array.
This means that the worst case performance is O(log(n)) in terms of the number
of methods, as the uncached lookup proceeds using a binary search.
If you compile the GNUstep runtime with the low memory profile, it uses a If you compile the GNUstep runtime with the low memory profile, it uses a
similar strategy. The caches use the same slot-caching mechanism described similar strategy. The caches use the same slot-caching mechanism described
above and can be combined with caching at the call site. The runtime will not above and can be combined with caching at the call site. The runtime will not
create dispatch tables, which can save a few MB of RAM in projects with a lot create dispatch tables, which can save a few MB of RAM in projects with a lot
of classes, but can make message sending a lot slower in the worst case. of classes, but can make message sending a lot slower in the worst case.
To enable the low memory profile, add low_memory=yes to your make command line.
Objective-C 2 Features Objective-C 2 Features
---------------------- ----------------------

Loading…
Cancel
Save