This is the CoreFoundation framework project for Darwin, sometimes also known as "CF-lite", because it does not contain every facility available from the CoreFoundation framework in Mac OS X. The purpose of this README file is to share "what needs doing", "how to do things", and Q&A information about CF-lite, as this information is discovered. --- What Apple is NOT interested in, with CF-lite: * Everybody's little convenience methods. Just because "everybody has to write their own", it does not follow immediately that it is a good idea to add it to the system libraries. It is not a goal of CF to be a "Swiss Army Knife"; that just increases the size of the binaries, and the documentation and maintenance burden. Functions to reverse a string or merge two arrays by taking alternate elements from the two arrays are not compelling. --- Major changes since March 2000: * Partial port to Linux * CF runtime refactored into CFRuntime.[hc], changed how types are registered/known to the runtime * CFMachPort and CFMessagePort now public API. * Most private symbols now are flagged with __private_extern__ so they aren't exported from the binary. * Partial port to FreeBSD. * CFBundle, CFPlugIn APIs added to Darwin. --- CF-lite to-do list: [Note: when it says "Apple has code" below, that usually means "Apple has some code it could provide to start an effort here", not "Apple has some code in the pipe, don't bother with this item". Anyone known to be doing work on any of these items will be listed here, including Apple.] * Some classes have a fair number of assertions, nearly all related to parameter checking. More assertions are needed nearly everywhere. The assertions that are there have been often found to be valuable -- you just get a message about some bad parameter and there's the bug. * More header doc is needed. CFArray.h and CFDictionary.h are models. * An exception model, similar to Cocoa Foundation's. Apple has some code for this already, and try/catch model like C++ is simple enough to support; finally blocks a la Java don't seem to be practical within the confines of ANSI C. * A CFFileDescriptor is needed which can act as a run loop source. Or maybe it should be CFPipeDescriptor. This is NOT something for general file handling -- just monitoring a file descriptor which is a pipe (for which there are notifications or other async activity). Contributors ------------ March 2000: partial port to Linux by Pedro Ivo Tavares (ptavares@iname.com). This was mostly integrated by ckane@apple.com by CoreFoundation-5, but the style was changed, and the hand-crafted Makefile, which is new since this port, tries to take care of some of the things that are needed for Linux (and build a libCoreFoundation.a instead of a CoreFoundation.framework), but ckane does not have a Linux box and can't finish that and test building. December 2000: port to FreeBSD by Sarwat Khan (sarwat@sarwat.net). Port to FreeBSD, except for RunLoop.subproj items. Integrated by ckane@apple.com into CoreFoundation-8. ckane also marginally improved the Linux port in that version. March 2001: CoreFoundation-9, corresponding to CoreFoundation-197 in Mac OS X, synchronizes Darwin CF with Mac OS X's released CF. May 2001: CoreFoundation-10, corresponding to CoreFoundation-206.5 synchronizes Darwin CF with TOT CoreFoundation. June 2001: Linux port maintenance by Robert Thompson . July 2001: Integrated addition of headerdoc for CFBinaryHeap.h from Kevin Van Vechten . Sept 2001: CoreFoundation-14, sync with Mac OS X 10.1 Oct 2001: More header doc (e.g., CFSet.h) and some CFTree implementation from Kevin Van Vechten . Jan 2002: Windows(TM) port changes from Kevin Van Vechten . Feb 2002: Some Windows(TM) port changes from Aleskey Dukhnyakov, Andrew Dzubandovsky, Roman Mukhin, and Sergey Zubarev; Orc Software