* The new implementation is NOT compatible with the old implementation (or any other implementation I know). * Added a Message class to represent a Objective-C message. * Added a MSG() macro that allows creation of Message instances with intuitive syntax (e.g. Message *m = MSG(addObject:@"a"); // An autoreleased message). * Completely rewrote all methods to use the new Message object. This eliminates trampolines completely, allows new optimizations and makes the syntax much more natural. * CKWeakSet is no longer included with the framework. * The new iteration methods don't handle non-object return values. * Removed HOMObjCValue. * Removed NSInvocationAdditions. * Removed HOMMethodSignatureAdditions. * HOMObjectWrapper was replaced with HOMIteratedArgument. * Removed the HOM and HOMIteration protocols. * Renamed HOMHelperFunctions to HOMUtilities. * New ID() macro (see HOMMacros.h). * Added two macros - DP_SUBCLASS_MUST_IMPLEMENT and DPAssert() to HOMUtilities.h. * Cleaned up HOMUtilities and added some more (unsupported) useful stuff. * Iteration methods of NSSet now use their own implementation (rather than NSArray's) and return sets instead of arrays. * Iteration methods of NSDictionary now use their own implementation (rather than NSArray's) and return dictionaries instead of arrays. * Optimized iteration methods of NSArray, NSSet and NSDictionary (run HOMSpeedTest to see a comparison between HOM and "traditional" iterations). * Combined speed testing with unit testing and removed the old unit tests. * Replaced -single(Select/Reject)Where: with -(select/reject)SingleWhere: which accepts a variable number of messages. * Replaced -select: and -selectWhere: with -selectWhere: which accepts a variable number of messages. * Replaced -reject: and -rejectWhere: with -rejectWhere: which accepts a variable number of messages. * Added -rejectSingleWhere:. * Added -[NSObject repeatOf:for:], -[NSObject for:from:to:do:] and -[NSObject receive:].