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

Reply via email to