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 <rothomp3@mac.com>.

July 2001: Integrated addition of headerdoc for CFBinaryHeap.h from
	Kevin Van Vechten <kevinvv@uclink4.berkeley.edu>.

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 <kevinvv@uclink4.berkeley.edu>.

Jan 2002: Windows(TM) port changes from Kevin Van Vechten <kevinvv@uclink4.berkeley.edu>.

Feb 2002: Some Windows(TM) port changes from Aleskey Dukhnyakov, Andrew Dzubandovsky,
	Roman Mukhin, and Sergey Zubarev; Orc Software<daa@orcsoftware.spb.ru>


