Seeing as it's been exactly 2 years since I started working on CoreBase, a CoreFoundation implementation, I thought this would be a good time to give a brief status of where the project currently stands and what the plans are for the coming year. I also want to make it clear that I'm open to suggestions and would welcome any comments.
Let me start out by giving some background and this should help explain why I chose the current direction for the project. GNUstep-corebase started out as a simple wrapper around GNUstep-base classes and helped me get it off it's feet quite quickly because most CF-types are toll-free bridged to Foundation classes. This approach, however, could not support some of CF's features, such as NULL callbacks for CFArray, CFDictionary, etc. In 2011 I started re-writing these classes to be pure C and not just wrappers around GNUstep-base. Since then, I've been able to rewrite all but CFPropertyList, CFStream and CFURL. This allows some more flexibility and example code from Apple to be compiled and run on top for -corebase. There are still a few things, such as CFMachPort and anything that requires blocks and/or mach_port_t that will not be implemented. As a general rule, I've been trying to keep dependencies down to a minimum. Due to its internationalization features ICU is also a hard dependency and the library cannot be built without it. For toll-free bridging, libobjc is also required, and I have recently been toying around with the idea of making libobjc an optional dependency. To keep dependencies down, native functions are used wherever possible. For example, atomic_* function are used on FreeBSD for atomic operations instead of GCC's __sync_*, and native Win32 such as Interlocked* and CriticalSection functions on Windows. A few basic tests are setup for a few of the types, but do not test nearly as many types as have been recently added. I do not own a Mac, so all these tests are what I think they should be, not what they should actually be. I would really appreciate bug reports in the for of tests for the testsuite. Lastly, I'd like to mention something about releases. The current plan is to release version 0.1 of -corebase during Q1 2012. Realistically, the release will likely happen mid-to-late March. It would include all the more basic types, plus any of the ones that are easy to implement. Base, Byte-Order and Time Utilities as well as the following CF-types have been implemented: CFAllocator CFArray CFBag CFBinaryHeap CFBitVector CFBoolean CFCalendar CFCharacterSet CFData CFDate CFDateFormatter CFDictionary CFError CFLocale CFMessagePort CFMutableArray CFMutableBag CFMutableBitVector CFMutableCharacterSet CFMutableData CFMutableDictionary CFMutableSet CFMutableString CFNull CFNumber CFNumberFormatter CFSet CFString CFTree CFType CFUUID CFXMLNode CFXMLTree The first release (0.1) will include everything above plus URL Access Utilities and these 4 types: CFPropertyList CFTimeZone CFURL CFXMLParser The next release (0.2) will be tentatively release Q4 2012 and will tentatively all other types: CFAttributedString CFBundle CFFileDescriptor CFMutableAttributedString CFNotificationCenter CFPlugIn CFPlugInInstance CFReadStream CFRunLoop CFRunLoopObserver CFRunLoopSource CFRunLoopTimer CFSocket CFStringTokenizer CFUserNotification CFWriteStream A 1.0 release will be released H1 2013 and will include any of the above types that had to be delayed for one reason or another. Please feel free to comment on anything I touched on here. I just wanted to get this e-mail out because recently it has felt that I will never finish. At least this way I have a few set goals for the new year and beyond. I'd just like to reiterate what I think is the most important point: Tests. I would really appreciate any tests that accurately reflect correct behavior. Thanks Stef
_______________________________________________ Discuss-gnustep mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnustep
