Index: ChangeLog ================================================================== --- ChangeLog +++ ChangeLog @@ -1,229 +1,229 @@ Legend: - * Changes of existing features or bugfixes. - + New features. + * Changes of existing features or bugfixes + + New features ObjFW 0.7 -> ObjFW 0.7.1, 12.11.2012 - + Support for Haiku. - * Autorelease pools now work properly without __thread. - * Incorrect framework version in Xcode project fixed. - * Documentation fixes and improvements. + + Support for Haiku + * Autorelease pools now work properly without __thread + * Incorrect framework version in Xcode project fixed + * Documentation fixes and improvements * Blocks now only use 16 bits for the reference count in order to avoid - problems with newer Clang versions. - * More use of OF_SENTINEL. + problems with newer Clang versions + * More use of OF_SENTINEL ObjFW 0.6 -> ObjFW 0.7, 27.10.2012 Again, the differences are more than in any release before, thus listing them all would be too much. The major differences are: + ObjFW now comes with its own runtime, which greatly increases performance compared to the GNU runtime and is even faster than the Apple runtime - (using Clang >= 3.2 is recommended, but not necessary). - * Support for the GNU runtime has been dropped. - + New, much faster autorelease pool implementation (now inside the runtime). - + Support for Automatic Reference Counting (requires Clang >= 3.2). - + Forwarding has been implemented. - + Asynchronous stream handling. + (using Clang >= 3.2 is recommended, but not necessary) + * Support for the GNU runtime has been dropped + + New, much faster autorelease pool implementation (now inside the runtime) + + Support for Automatic Reference Counting (requires Clang >= 3.2) + + Forwarding has been implemented + + Asynchronous stream handling + New classes: OFThreadPool, OFRecursiveMutex, OFSortedList, OFTimer, OFRunLoop + New protocols: OFLocking, OFTLSSocket - * Lots of API changes to make APIs more future-proof. - + Support for the new Objective-C literals. - * OFHTTPRequest now implements HTTP/1.1. - * OFObject's memory handling has been improved, leading to better performance. - * Strings are allocated faster now. - + Support for JSON5. + * Lots of API changes to make APIs more future-proof + + Support for the new Objective-C literals + * OFHTTPRequest now implements HTTP/1.1 + * OFObject's memory handling has been improved, leading to better performance + * Strings are allocated faster now + + Support for JSON5 * All private methods use the prefix OF_ now instead of _, making it possible - to use the _ prefix in applications. + to use the _ prefix in applications * Most ObjC compiler feature checks are not part of configure anymore, making - it possible to use the same installation with different compilers. + it possible to use the same installation with different compilers ObjFW 0.5.4 -> ObjFW 0.6, 27.02.2012 The differences between 0.5.4 and 0.6 are too big to list them all. However, the major new features are: * OFString, OFArray, OFDictionary, OFSet and OFCountedSet are now class - clusters. - + Serialization and deserialization of objects into/from XML and JSON. - + New class OFIntrospection for introspecting classes. - + New class OFProcess for working with and controlling child processes. - * Lots of OFXMLParser and OFXMLElement improvements. + clusters + + Serialization and deserialization of objects into/from XML and JSON + + New class OFIntrospection for introspecting classes + + New class OFProcess for working with and controlling child processes + * Lots of OFXMLParser and OFXMLElement improvements + OFHTTPRequests can have a delegate now for status updates and processing - data as soon as it arrives. + data as soon as it arrives + There are several backends for OFStreamObserver now, including kqueue, poll - and select. - + SOCKS5 support for OFTCPSockets (client only). - * Several API changes. + and select + + SOCKS5 support for OFTCPSockets (client only) + * Several API changes ObjFW 0.5.3 -> ObjFW 0.5.4, 30.08.2011 - * The blocks runtime is now working correctly. - * Documentation fixes. - * -framework works with objfw-compile now. - + Support for QNX. - * Various small fixes. + * The blocks runtime is now working correctly + * Documentation fixes + * -framework works with objfw-compile now + + Support for QNX + * Various small fixes ObjFW 0.5.2 -> ObjFW 0.5.3, 01.07.2011 - * Lots of bugfixes, see Git log for details. + * Lots of bugfixes, see Git log for details ObjFW 0.5.1 -> ObjFW 0.5.2, 25.04.2011 - * Fix double-retain in OFList. - * Don't ignore the timeout in OFStreamObserver when using select(). - * Do -[OFURL copy] in a try block to prevent a leak when an exception occurs. - * Fix too big buffer in -[OFMutableString _applyTable:withSize:]. - * Call madvise() on the correct length variable so it covers the whole string. - * Fix a warning when sizeof(size_t) < sizeof(long long). - * Skip possible BOMs when appending strings. + * Fix double-retain in OFList + * Don't ignore the timeout in OFStreamObserver when using select() + * Do -[OFURL copy] in a try block to prevent a leak when an exception occurs + * Fix too big buffer in -[OFMutableString _applyTable:withSize:] + * Call madvise() on the correct length variable so it covers the whole string + * Fix a warning when sizeof(size_t) < sizeof(long long) + * Skip possible BOMs when appending strings ObjFW 0.5 -> ObjFW 0.5.1, 21.04.2011 * Work around a wrong warning produced by Apple GCC 4.0.1 which would cause - the build to fail due to -Werror. + the build to fail due to -Werror * Call objc_thread_{add,remove} when using the GNU runtime to make sure the - runtime knows about our thread. - * Detach a thread before restarting if it was never joined. - * Release the old return value when restarting a thread. + runtime knows about our thread + * Detach a thread before restarting if it was never joined + * Release the old return value when restarting a thread ObjFW 0.4-alpha1 -> 0.5, 09.04.2011 - + %@ is now allowed in format strings. - + Added of_log for easy logging. - * Exceptions have one header per exception now. - * Lots of exception improvements. - * Huge improvements in XML handling. - * Improvements in socket handling, including improved API. + + %@ is now allowed in format strings + + Added of_log for easy logging + * Exceptions have one header per exception now + * Lots of exception improvements + * Huge improvements in XML handling + * Improvements in socket handling, including improved API * OFStreamObserver is now thread-safe and stops the current observe call when - the set of streams to observe is modified. - + New class OFURL. - + New class OFHTTPRequest. - + New class OFCondition. - * Improvements in objfw-compile. - + Blocks can be used together with Cocoa now. - + When linking ObjFW and Cocoa, OFAutoreleasePools are used by both now. - + Support for Base64. - + Use a real Xcode project instead of just calling make. - + Add Haiku to the list of supported platforms. + the set of streams to observe is modified + + New class OFURL + + New class OFHTTPRequest + + New class OFCondition + * Improvements in objfw-compile + + Blocks can be used together with Cocoa now + + When linking ObjFW and Cocoa, OFAutoreleasePools are used by both now + + Support for Base64 + + Use a real Xcode project instead of just calling make + + Add Haiku to the list of supported platforms * Lots of small bugfixes and countless small changes. Read the commits! ObjFW 0.3.1 -> 0.4-alpha1, 03.01.2011 - * ObjFW is now available under the terms of the QPL, GPLv2 and GPLv3. - + Support for blocks was added, including a blocks runtime. - + Added support for the new GNU runtime, introduced in GCC 4.6. - * Objects returned from collections are no longer retained and autoreleased. + * ObjFW is now available under the terms of the QPL, GPLv2 and GPLv3 + + Support for blocks was added, including a blocks runtime + + Added support for the new GNU runtime, introduced in GCC 4.6 + * Objects returned from collections are no longer retained and autoreleased + Added new classes OFXMLParser, OFXMLElement, OFXMLAttribute and - OFXMLElementBuilder. - + Added new class OFStreamObserver to observe streams. - + Added new class OFDate for storing dates. - + Many new methods in almost all classes. - * OFAutoreleasePool was optimized. - * Handling of ASCII strings was optimized. - * OFSocket was renamed to OFStreamSocket. - * OFConstString was renamed to OFConstantString. - * objfw-compile now has a new syntax. - + objfw-compile can now compile libraries and plugins. - * Many small changes and new features that would be too much to list here. + OFXMLElementBuilder + + Added new class OFStreamObserver to observe streams + + Added new class OFDate for storing dates + + Many new methods in almost all classes + * OFAutoreleasePool was optimized + * Handling of ASCII strings was optimized + * OFSocket was renamed to OFStreamSocket + * OFConstString was renamed to OFConstantString + * objfw-compile now has a new syntax + + objfw-compile can now compile libraries and plugins + * Many small changes and new features that would be too much to list here The diff between 0.3.1 and 0.4-alpha1 has almost 24000 lines! ObjFW 0.3 -> 0.3.1, 19.06.2010 * Fix a typo in OFMutableDictionary that prevented termination in case - the last bucket is already used when the dictionary is resized. + the last bucket is already used when the dictionary is resized * The mutations pointer is now correctly initialized in enumerators for - immutable collections. + immutable collections * The objc_sync test was still using the old threads API and was - updated to use the new one now. - * PLATFORMS has been updated to be more specific. + updated to use the new one now + * PLATFORMS has been updated to be more specific ObjFW 0.2.1 -> 0.3, 09.05.2010 - + Many new methods were added to different classes. + + Many new methods were added to different classes + A huge amount of methods was added to OFStream, allowing easy binary - stream handling and even mixing string-based and binary operations. - + An optional write buffer was added to OFStream. + stream handling and even mixing string-based and binary operations + + An optional write buffer was added to OFStream + OFSeekableStream was added for streams that allow seeking, for example - OFFiles. - * OFNumber was completely reworked and got many new features now. + OFFiles + * OFNumber was completely reworked and got many new features now * Large parts of OFDictionary were rewritten for better readability, better - memory usage and to fix a bug with removing objects. - * OFThread has been greatly improved. - * Many small optimizations. - * Many documentation improvements. - * Method replacing was reworked and the methods renamed. - + Tests for OFStream were added. - * A bug with building ObjFW as a Universal Binary Framework was fixed. - + Support for ObjFW-RT, the ObjFW Objective C runtime, was added. - * Sockets are now properly closed before an exception is thrown. - * Error handling with sockets was improved. + memory usage and to fix a bug with removing objects + * OFThread has been greatly improved + * Many small optimizations + * Many documentation improvements + * Method replacing was reworked and the methods renamed + + Tests for OFStream were added + * A bug with building ObjFW as a Universal Binary Framework was fixed + + Support for ObjFW-RT, the ObjFW Objective C runtime, was added + * Sockets are now properly closed before an exception is thrown + * Error handling with sockets was improved * OFFile now uses open(), read() and write(), thus allowing -[readLine] to be - used on of_stdin and fixing many other annoyances. - * A few misc methods were renamed. - + OFApplication was added. - * All tests and the table generator are now using OFApplication. - + It is now possible to get the remote address of an OFTCPSocket. - + OFString can now build paths in the OS-native format. - + It is now possible to create a string with the contents of a file. - + Many new file operations were added to OFFile. - * The existing file operations in OFFile were improved. - * Almost all functions that returned self before now return void. + used on of_stdin and fixing many other annoyances + * A few misc methods were renamed + + OFApplication was added + * All tests and the table generator are now using OFApplication + + It is now possible to get the remote address of an OFTCPSocket + + OFString can now build paths in the OS-native format + + It is now possible to create a string with the contents of a file + + Many new file operations were added to OFFile + * The existing file operations in OFFile were improved + * Almost all functions that returned self before now return void + OFHash was added as a superclass for OFMD5Hash and OFSHA1Hash and OFHashes - renamed to OFHash. + renamed to OFHash + objfw-compile was added for easy compilation of ObjFW projects, which includes dependency checking for headers etc. - * The instance variable naming convention was changed so that properties work. + * The instance variable naming convention was changed so that properties work + Properties were added to the interfaces and are used if they are supported - by the compiler. + by the compiler + The library version is now included in the resulting dylib and libobjc is reexported now. Additionally, objfw-config offers --reexport now to produce - libraries that link against ObjFW and reexport it. + libraries that link against ObjFW and reexport it ObjFW 0.2 -> 0.2.1, 14.03.2010 - * Fix for OFNumbers not doing calculations. - * Improved -[hash] for OFNumbers with floats and doubles. - + Tests for OFNumber. - * Small optimization for OFArray's -[componentsJoinedByString:]. - * Documentation improvements. - * Updated copyright. + * Fix for OFNumbers not doing calculations + * Improved -[hash] for OFNumbers with floats and doubles + + Tests for OFNumber + * Small optimization for OFArray's -[componentsJoinedByString:] + * Documentation improvements + * Updated copyright ObjFW 0.1.2 -> 0.2, 01.02.2010 + Support for ObjC 2 Fast Enumerations on every platform which has - compiler support for fast enumerations. - + Support for ObjC 2 properties on every platform with compiler support. - + Fast Enumeration through arrays and dictionaries. - * OFIterator has been removed. + compiler support for fast enumerations + + Support for ObjC 2 properties on every platform with compiler support + + Fast Enumeration through arrays and dictionaries + * OFIterator has been removed + OFEnumerator was added to replace OFIterator, which is more general - and works with arrays and dictionaries. - + Portable implementation for atomic operations. + and works with arrays and dictionaries + + Portable implementation for atomic operations + Portable implementation for spinlocks. They use atomic operations if available, if not they fall back to pthread spinlocks. If both are - unavailable, mutexes are used as a last fallback. + unavailable, mutexes are used as a last fallback * -[retain] and -[release] are now atomic. If no atomic operations are available, spinlocks are used (which can fall back to mutexes, see - above). + above) * -[readLine] now handles \r\n without having the \r included in the - returned line. - + OFThread now has -[tryLock]. + returned line + + OFThread now has -[tryLock] * Mutation methods have been removed from immutable interfaces, thus - already giving an error at compilation instead of at runtime. + already giving an error at compilation instead of at runtime * Dependencies between headers have been reduced, leading to faster - compile times. + compile times * The interfaces of OFSocket and OFStream were cleaned up and some - methods were moved to OFTCPSocket, as they make sense only there. + methods were moved to OFTCPSocket, as they make sense only there * File methods unavailable on Windows don't throw an exception at runtime anymore, but instead are not even in the interface on Windows. This way, it is a compile time error instead of a runtime - error. + error ObjFW 0.1.1 -> 0.1.2, 15.01.2010 * Fix a bug in OFMutableArray's -[removeObject:] and -[removeObjectIdenticalTo:] that could lead to not removing all - occurrences of the object from the array and to out of bounds reads. - * Change the URL in the framework plist to the homepage. + occurrences of the object from the array and to out of bounds reads + * Change the URL in the framework plist to the homepage ObjFW 0.1 -> 0.1.1, 04.01.2010 * Fix a missing out of range check for -[removeNItems:atIndex:] that allowed the programmer to specify too big ranges so it would crash - instead of throwing an exception. + instead of throwing an exception * Fix missing calls to -[retain] and -[autorelease] when getting - objects from an OFArray or OFDictionary. + objects from an OFArray or OFDictionary * Safer and more fault-tolerant way to remove objects from an - OFMutableArray. + OFMutableArray * Calling +[dealloc] throws an exception now. If someone really calls [SomeClass dealloc], this should be punished and not ignored, as - this is a serious programmer error. + this is a serious programmer error * -[readLineWithEncoding:] is more fault-tolerant now and does not lose data when it stumbles upon invalid encoding. Instead, it allows - recalling with the correct encoding now. + recalling with the correct encoding now ObjFW 0.1, 24.12.2009 + Initial release