libs-base/TODO
fedor 4fa6aaea41 Various fixes, Frith-MacDonald, others.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@2805 72102866-910b-0410-8b05-ffd578937521
1998-05-29 15:25:41 +00:00

202 lines
6.4 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Todo
****
Projects Looking for Volunteers
===============================
If you think you can do one of these projects, please let me know. Your
help is greatly appreciated. Send email to `fedor@gnu.org'.
* Fix NSLog so it conforms to specs. Need to check that write to
stderr went ok, and if not write to syslog. Also need to serealize
output (with threads).
* Simplify NSException and NSAssertionHandler and make sure they
don't cause race conditions (if an exception is raised while
processing an exception.
* Fix all the places marked FIXME or xxx.
* Need to improve the testsuite and actually run it on gstep-base.
* Change all the assert()'s (especially in the archiving code) to
NSAssert()'s. This will help make D.O. servers more safe from bad
clients.
* Make NS... classes raise the NSExceptions they are supposed to.
Change many NSParameterAssert()'s into NSAssert()'s with
explanations.
* Many implementations could be made more efficient. The library
hasn't been efficiency tuned very much. Overridding more methods
in certain classes could make things more efficient (especially
EltNodeCollector). SplayTree's could be done using top-down
splaying. collhash could be completely reimplemented. ...and a
lot more...
* Implement efficient SmallInt and SmallFloat classes in the same
sort of way that Smalltalk does. Talk to me.
mccallum@gnu.ai.mit.edu.
McCallum's To Do's
==================
* Separate core and non-core code in NSDictionary, NSSet, etc, the
same way I did for NSArray.
* Separate Constant and non-Constant collections for the rest of the
GNU connection classes the same way I did for Array.
* Make sure the GNU Archiver/Unarchiver handle
-encodeConditionalObject: and -decodeObject: correctly.
* Reorganize some of the Categories to make a minimal NSObject-using
program smaller. Currently it is huge becuase it pulls in
archiving and therefore many of the collection classes. (But
perhaps this doesn't matter, since we recommend using shared
libraries anyway.)
* Make sure that Encoder's properly release their CStream and
Stream's. It seems that the Stream is not getting -delloc'ed, and
therefore may not be closed, and therefore may be missing data at
the end.
* Do low-level frobbing of TCP to reduce delays.
* Make UdpPort work; make MachPort work.
* Finish NotificationQueue, and make it interoperate with the
RunLoop properly.
* Make the NSTimer's work and interoperate with the RunLoop properly.
* Add Coding methods to all the collection classes.
* Finish Collection heirarchy clean ups. We need non-mutable
version for many of the classes.
* Possibly change implementation of `-(int)compare:anObject' for
Collection. How should non-Indexed collections be ordered?
Questions
=========
I would greatly appreciate your feedback on the questions below.
Please email your thoughts to mccallum@gnu.ai.mit.edu.
* I want to put method names in texinfo indices, but the colons in
the method names are interfering with info's notion of menu item
names and node names. Help. Any ideas? (Kresten?)
* HashTable.m (-initKeyDesc:valueDesc:capacity:) I tried to make it
portable, but I didn't try very hard. Anyone want to send in
fixes?
* I fixed -emptyCopy in all the subclasses, but the -emptyCopy scheme
seems pretty fragile. How about calling -initFoo: inside
-emptyCopy? This way we avoid having yet another method in which
instance vars must be initialized to some consistent state.
-allocCopy would never even get called. <<ObjC insiders: This is
a less well-expressed version of what we've just been discussing
in email.>>
* Does anyone really need the ability to set the collection element
comparison function independent of the -compare: method?
* How about adding flexibity in the method name that a LinkedList
sends a LinkedListNode to get/set the link ivars. This would
enable us to add a node to more than one linked list.
* Something like this needed? - elementDidChange: (elt*)elementPtr;
Currently you have to remove, change, add, for some classes.
Albin's To Do List
==================
I'm sure that there're other things to do, but these are the ones I
know now:
General
-------
* Make thread-safe all of my code that should be.
* Fully annotate all of my headers.
* Document my work and the use of its fruit.
Critical
--------
* Code:
+ (`src/array.m') `objects_array_check'
+ (`src/array.m') `objects_array_map_elements'
+ (`src/cbs-char-p.m') `objects_char_p_describe'
+ (`src/cbs-int-p.m') `objects_int_p_describe'
+ (`src/cbs-int.m') `objects_int_describe'
+ (`src/hash.m') `_objects_hash_hash'
+ (`src/hash.m') `objects_hash_check'
+ (`src/hash.m') `objects_hash_description'
+ (`src/list.m') `objects_list_is_equal_to_list'
+ (`src/map.m') `_objects_map_hash'
+ (`src/map.m') `objects_map_check'
+ (`src/map.m') `objects_map_description'
* Correct:
+ (`src/array.m') `objects_array_dealloc'
+ (`src/cbs-int.m') `_GNUSTEP_BASE_NOT_AN_INT_MARKER'
* Improve the error handling of:
+ (`src/array.m') `_objects_array_insert_bucket'
+ (`src/hash.m') `objects_hash_add_element_known_absent'
+ (`src/list.m') `objects_list_at_index_insert_element'
+ (`src/map.m') `objects_map_at_key_put_value_known_absent'
Not So Critical
---------------
* Strengthen my resolve on the correctness of:
+ (`src/cbs-char-p.m') `_GNUSTEP_BASE_NOT_A_CHAR_P_MARKER'
+ (`src/cbs-id.m') `_GNUSTEP_BASE_NOT_AN_ID_MARKER'
+ (`src/cbs-int-p.m') `_GNUSTEP_BASE_NOT_AN_INT_P_MARKER'
+ (`src/cbs-int-p.m') `objects_int_p_is_equal'
+ (`src/cbs-void-p.m') `_GNUSTEP_BASE_NOT_A_VOID_P_MARKER'
+ (`src/hash.m') `objects_hash_rightsize'
+ (`src/hash.m') `objects_hash_all_elements'
+ (`src/map.m') `objects_map_rightsize'
+ (`src/map.m') `objects_map_all_keys'
+ (`src/map.m') `objects_map_all_values'
* Improve the effeciency of:
+ (`src/array.m') `_objects_array_insert_bucket'
+ (`src/hash.m') `objects_hash_minus_hash'
+ (`src/list.m') `objects_list_at_index_insert_list'