TODO 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. TODO (listed from highest to lowest priority):
  2. ==============================================
  3. -memccpy(), bcopy() + test for all overloaded string functions
  4. -add additional target/compiler switches in GNUmakefile to build with
  5. 1- native Solaris compiler / linker
  6. 2- Microsoft compiler cl / link
  7. -integrate modifications of
  8. http://tutorial.gsse.at/dynamicmemory/
  9. http://tutorial.gsse.at/uploads/media/duma_iue.tgz
  10. -enhance detection of DUMA_MIN_ALIGNMENT in createconf
  11. use defines specifying the target architecture
  12. use compiler attributes which specify the necessary alignment
  13. -add autoconf/automake build process
  14. -use libtool to build shared libraries in Makefile
  15. depends on autoconf/automake
  16. -use configure to detect if f.e. pthread.h is installed and in search path
  17. check if pthread available before using it in Makefile
  18. depends on autoconf/automake
  19. -add feature to enable floating point exceptions
  20. by default C programs work with quiet NANs or similar values after an error
  21. this feature shall allow detecting of floating point division by zero, overflow, ..
  22. -test duma on several freely available/downloadable compilers:
  23. 1- OpenWatcom C/C++ compiler from http://www.openwatcom.org/
  24. 2- Digital MARS C/C++ compiler from http://www.digitalmars.com/
  25. 3- Intel C++ compiler from http://www.intel.com/cd/software/products
  26. /asmo-na/eng/compilers/clin/219856.htm
  27. 4- Borland C++ Builder from
  28. http://www.borland.com/products/downloads/download_cbuilder.html
  29. 5- Macintosh Programmer's Workshop from
  30. http://developer.apple.com/tools/mpw-tools/
  31. 6- TenDRA C/C++ compiler from http://www.tendra.org/
  32. or http://www.cse.unsw.edu.au/~patrykz/TenDRA/
  33. -test cmake, dmake, pmake, smake
  34. maybe no more necessary when build is done via autoconf/automake
  35. -find solution for errors, when duma used in combination with STL (and MFC)
  36. under MS Visual C++ on Windows
  37. -make new variants behave fully C++ conform
  38. at least new_handler() gets called now
  39. -implement a list structure over pages rather than an array for all slots.
  40. this would save copying all slot entries, when list grows
  41. -store __func__ additionally to __FILE__ and __LINE__
  42. depends on storing full filename (not just pointer) in slot
  43. -modification of manual page duma.3
  44. -check documents for line lengths of 80 coloumns
  45. -check and replace tabs in documents
  46. -config for
  47. long int sysconf (int parameter) Function
  48. This function is used to inquire about runtime system parameters. The
  49. parameter argument should be one of the _SC_ symbols listed below.
  50. The normal return value from sysconf is the value you requested. A value
  51. of -1 is returned both if the implementation does not impose a limit, and
  52. in case of an error.
  53. The following errno error conditions are defined for this function:
  54. EINVAL The value of the parameter is invalid.
  55. enums:
  56. _SC_PAGESIZE Inquire about the virtual memory page size of the machine.
  57. getpagesize returns the same value (see Query Memory Parameters).
  58. _SC_PHYS_PAGES Inquire about the number of physical pages in the system.
  59. _SC_AVPHYS_PAGES Inquire about the number of available physical pages in
  60. the system.
  61. -config for The ulimit Function:
  62. The ulimit function can be used to get and set certain process limits.
  63. #include <ulimit.h>
  64. long ulimit (int cmd, /* long newlimit */...);
  65. Returns: the value of the requested limit if OK, -1 on error
  66. The ulimit function allows a process to get or set some of its limits. The
  67. operation performed is determined by the value of the cmd argument, which
  68. must be one of the following four values:
  69. UL_GMEMLIM This returns the maximum amount of memory the process may use.
  70. On successful completion, the requested limit is returned. Otherwise, -1 is
  71. returned and the limit is not changed.
  72. ====================
  73. PRI LOW
  74. ====================
  75. -get duma running/compiling on all platforms which are supported on
  76. sourceforge.net's compile farms. see
  77. http://sourceforge.net/docman/display_doc.php?docid=762&group_id=1
  78. --> outdated: sourceforge's compile farm is no more available
  79. -use configuration file, which is read directly with system calls as
  80. replacement for the environment switches which use calls to the C library.
  81. this is to avoid hangs in the C library's getenv() function.
  82. --> outdated: now using char **environ variable instead getenv()
  83. -document 'J. "MUFTI" Scheurich' way of compiling/using DUMA's memory
  84. replacement functions only from own source files. Thus usage of DUMA
  85. for several system libraries is avoided.
  86. --> outdated with preprocessor option DUMA_NO_GLOBAL_MALLOC_FREE
  87. and compiler options "-include" (gcc) and "/FI" (MS Visual C++)
  88. ====================
  89. DONE
  90. ====================
  91. -define new thread-safe macros,
  92. which don't have to use the global variable DUMA_PROTECT_BELOW:
  93. 1- NEW_PROTECT_BELOW: a 'new' replacement which protects the lower bound
  94. 2- NEW_PROTECT_ABOVE: a 'new' replacement which protects the upper bound
  95. 3- MALLOC_PROTECT_BELOW: a 'malloc' replacement which protects the lower bound
  96. 4- MALLOC_PROTECT_ABOVE: a 'malloc' replacement which protects the upper bound
  97. --> done other way: thread safe macro DUMA_SET_PROTECT_BELOW(V) saves setting in TLS
  98. -implement/use TLS - Thread Local Storage for some variables
  99. f.e. file/line information per delete operator
  100. --> done
  101. -use "-include" option of preprocessor, when having gcc
  102. see http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_2.html#SEC11
  103. see http://gcc.gnu.org/onlinedocs/gcc-3.0.4/gcc_3.html#SEC14
  104. see http://gcc.gnu.org/onlinedocs/gcc-4.0.1/gcc/Preprocessor-Options.html
  105. --> done: see example_makes/ex6/Makefile
  106. -use "/FI" option of preprocessor, when having ms visual c++
  107. see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore
  108. /html/_core_.2f.fi.asp
  109. --> done: see win32-msvc.net/example6/example6.sln project settings
  110. -provide a function/macro, which tests the non-protectable side of an
  111. allocated memory block for illegal writes.
  112. --> done: duma_check(), duma_checkAll(), DUMA_CHECK() and DUMA_CHECKALL()
  113. -check and replace tabs in documents
  114. done in version 2.5.7
  115. - gain thread safety: get testmt.c work properly
  116. done in version 2.5.11
  117. - add environment variable DUMA_CHECK_FREQ to autmatically check
  118. no man's land at each n'th allocation/deallocation.
  119. n=0 for no automatic checks
  120. done for version 2.5.12
  121. - enhance testmt.c to run on Windows without pthread library
  122. done for version 2.5.15