For the past few years, I've been fiddling with OpenDarwin's libFoundation in my spare time -- of which there is admitedly very little. For those new to the party, OpenDarwin's libFoundation project was an attempt to rewrite, refactor, and otherwise port the original libFoundation, as written by Ovidiu Predescu, Mircea Oancea, and Helge Hess, to Darwin. The end goals were simple. In order of importance:
The first goal was easily achieved, and surprisingly enough, I've been making some good progress on the second. With OpenDarwin's impending cessation of operation, I decided to set aside a week of my copious vacation time supplied by my generous employer to find OpenDarwin's libFoundation a new home, and tackle some difficult problems, including a unicode-aware NSString. I'm pleased to say that the week was well spent, and the newly christened Objective-C Substrate was the end result.
In addition to renaming the project, migrating it to SourceForge, and setting up a new domain, I worked on implementing a few new features:
There's plenty of more features required for the NSString implementation, but with NSException, NSAutoreleasePools, NSData, NSObject, NSZone, NSRange, NSGeometry, and NSByteOrder implemented, documented, and unit tested, things are looking pretty good. It's my hope to be able to soon use libSubstrate for Objective-C projects such as the OpenVPN Auth-LDAP Plugin
As I mentioned, the project is silly in scope, and purpose, but it is a lot of fun. Besides, I think there's some value in an easy to use, light-weight BSD-licensed Foundation implementation -- I'd sure use it! If you'd like to chip in, drop me a line.