Information regarding Project Releases and Project Resources. Note that the information here is a quote from Freecode.com page, and the downloads themselves may not be hosted on OSDN.
This release fixes double-retain in OFList. It will not ignore the timeout in OFStreamObserver when using select(). It performs -[OFURL copy] in a try block to prevent a leak when an exception occurs. It fixes a too large buffer in -[OFMutableString _applyTable:withSize:]. It calls madvise() on the correct length variable so that it covers the whole string. It fixes a warning when sizeof(size_t) < sizeof(long long). It skips possible BOMs when appending strings.
A workaround was made for a wrong warning produced by Apple GCC 4.0.1. This warning would cause the build to fail due to -Werror. objc_thread_{add,remove} is called when using the GNU runtime to make sure the runtime knows about the thread. A thread is detached before restarting if it was never joined. The old return value is released when restarting a thread.
%@ is now allowed in format strings. of_log has been added for easy logging. Exceptions have one header per exception now and lots of exception improvements were made. Huge improvements were made in XML handling and in socket handling. OFStreamObserver is designed for multi-threading. The new classes OFURL, OFHTTPRequest, and OFCondition were added. Improvements were made 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, a real Xcode project, and Haiku support were added. Lots of small bugfixes and countless small changes were made.
This release can be used under the terms of the QPL, GPLv2, and GPLv3. It has support for blocks, including a blocks runtime. It has support for the new GNU runtime, introduced in GCC 4.6. It has support for XML processing and building. There are many small changes and new features. The diff between 0.3.1 and 0.4-alpha1 has almost 24,000 lines.
A typographical error in OFMutableDictionary that prevented termination in case the last bucket is already used when the dictionary is resized was fixed. The mutations pointer is now correctly initialized in enumerators for 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.