=========================== BIG THINGS TO DO ==================================

- Distributed Objects
- Unicode support in NSString
- change the NSInvocation and NSMethodSignature machine dependent macros to
  use the macros defined into the GNU compiler. This should eventually become
  part of the GNU Objective-C runtime library.
- locale support?

========================== SMALL THINGS TO DO =================================

- Bug: descriptionWithCalendarFormat:timeZone:locale: does not honor timezone
  argument, at least with NSCalendarDate (SKYRIX Bug 1106)

- finish NSFileManager
- port to HP-UX (NSInvocation and NSMethodSignature)
  (what about OSF/1 and Ultrix?)
- serializer/deserializer
- change NSZone from class to struct
- finish NSByteOrder.h
- HH: avoid creating/releasing the formatter objects in common.m:Avsprintf
- HH: check return value of 'objc_thread_detach' in NSThread.m
- HH: description methods of NSCalendarFormat must be made timezone-aware
- HH: support GetTempPath() with mingw32
- HH: finish NSSearchPathForDirectoriesInDomains() function
- HH: merge implementation of -stringByTrimmingTailWhiteSpaces and 
      -stringByTrimmingTailWhiteSpaces? Or remove them altogether (not part
      of gstep-base anymore either?)

- HH: add -replaceOccurrencesOfString:withString:options:range: 

- NSCalendarDate parser can't parse '20041212' with %Y%m%d, because it uses
  scanInt: which parses that as a complete int (needs a char-count limit)

============================ general checks ===================================

(The following does not necessary mean they are missing ;-). These should
remind implementors what do they have to check for. )

- implement `copyWithZone:' and `mutableCopyWithZone:' for all classes

- implement `encodeWithCoder:' and `initWithCoder:' for all classes

- implement meaningful `description', `descriptionWithIndent:' or
`stringRepresentation'

- revise `hash' `isEqual:' and `compare:' methods for all containers so that
  isEqual/compare/hash shoud be consistent

- check that all `dealloc' calls [super dealloc] to release memory

- check that calls to [super init] are done before *any* ivar is set

- check imutable `copyWithZone:' for containers so that it performs a deep
  copy, making all its content imutable

- check mutable `mutableCopyWithZone:' for containers so that it performs a
  shallow copy, making all its content imutable

- thread-safe notes (comment with `// THREAD') where we access global variables

================================== CLASSES ====================================

NSArchiver, NSUnarchiver
	- more tests

NSArray, NSMutableArray
	- extended tests
	- init* methods for immutable should throw if called twice

NSAutoreleasePool
	- OK

NSBundle
	- implement unloading of code (need some patches to objc-runtime)

NSCharacterSet, NSMutableCharacterSet
	- init* methods for immutable should throw if called twice
	- extended tests

NSCoder
	- more tests with it and the NSArchiver for all methods

NSConnection, NSDistantObject, NSProxy
	- TODO

NSData, NSMutableData
	- extended tests
	- init* methods for immutable should throw if called twice
	- check subclasses for mmap and range

NSDate, NSCalendarDate
	- init* methods for immutable should throw if called twice
	- extended tests

NSDictionary, NSMutableDictionary
	- init* methods for immutable should throw if called twice
	- tests

NSDistributedLock
	- test that checks concurrence

NSEnumerator
	- OK

NSException
	- OK

NSFileHandle
	- tests

NSFileManager
	- tests
	- finish implementation (2-3 methods left)

NSInvocation
	- port and test on HPPA HPUX
	- test on Solaris

NSMethodSignature
	- port and test on HPPA HPUX
	- test on Solaris (code was written)

NSLock, NSRecursiveLock,  NSConditionLock
	- OK

NSNotification, NSNotificationCenter, NSNotificationQueue
	- OK

NSObject
	- OK

NSPipe
	- tests

NSPosixFileDescriptor
	- tests

NSProcessInfo
	- OK

NSRunLoop
	- write code that determines when the process is idle

NSScanner
	- OK

NSSerializer, NSDeserializer
	- TODO

NSSet, NSMutableSet,  NSCountedSet
	- tests for all methods
	- write init* in concrete classes
	- init* methods for immutable should throw if called twice

NSString, NSMutableString
	- add support for Unicode

NSTask
	- OK

NSThread
	- tests

NSTimeZone, NSTimeZoneDetail
	- tests

NSTimer
	- tests

NSUserDefaults
	- put command-line args in NSArgument domain

NSValue, NSNumber
	- tests

NSZone (NSDefaultZone)
	- make an allocator with zones using page-allocation functions
	- make a non-free zone and support recycle

UnixSignalHandler
	- OK

NSStream, NSInputStream, NSOutputStream
        - implement

NSError, NSURLError
        - implement

================================ DOCUMENTATION ===============================

- comment the headers about classes, functions, ivars
- comment sources about class structure and general ideas
- README.debugging

================================ NEW CLASSES =================================

Ascii Coder
	- TODO: human readable and easy modifiable format. Such a class was
	already designed and implemented and it is used for archiving
	and unarchiving GNUstep GUI objects.

Regexp support 
	- new class and support methods in a category to NSString

========================== Configure, Makefile, Porting ======================

We discussed long time ago about a makefile package to help developers
easily build libraries and applications using the current free
libraries written in Objective-C. This was finally implemented by
Scott Christley and Ovidiu Predescu in the GNUstep makefile package.
