* Changes of existing features or bugfixes.
+ New features.
ObjFW 0.4-alpha1 -> ObjFW 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.
* 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.
* 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.
+ Added new classes OFXMLParser, OFXMLElement, OFXMLAttribute and
+ 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 mutations pointer is now correctly initialized in enumerators for
* 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.
ObjFW 0.2.1 -> 0.3, 09.05.2010
+ 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.
+ OFSeekableStream was added for streams that allow seeking, for example
* 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.
* 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.
+ OFHash was added as a superclass for OFMD5Hash and OFSHA1Hash and OFHashes
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.
+ Properties were added to the interfaces and are used if they are supported
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.
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.
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.
+ OFEnumerator was added to replace OFIterator, which is more general
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.
* -[retain] and -[release] are now atomic. If no atomic operations are
available, spinlocks are used (which can fall back to mutexes, see
* -[readLine] now handles \r\n without having the \r included in the
+ OFThread now has -[tryLock].
* Mutation methods have been removed from immutable interfaces, thus
already giving an error at compilation instead of at runtime.
* Dependencies between headers have been reduced, leading to faster
* The interfaces of OFSocket and OFStream were cleaned up and some
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
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.
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.
* Fix missing calls to -[retain] and -[autorelease] when getting
objects from an OFArray or OFDictionary.
* Safer and more fault-tolerant way to remove objects from an
* 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.
* -[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.
ObjFW 0.1, 24.12.2009
+ Initial release