mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-27 18:50:47 +00:00
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@2805 72102866-910b-0410-8b05-ffd578937521
202 lines
6.4 KiB
Text
202 lines
6.4 KiB
Text
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'
|
||
|