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