discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

CoreBase Status


From: Stefan Bidi
Subject: CoreBase Status
Date: Tue, 3 Jan 2012 14:51:28 -0500

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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]