This is cool. Do you present this at FOSDEM?
Nikolaus Am 03.01.2012 um 20:51 schrieb Stefan Bidi: 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 Discuss-gnustep@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnustep
|