X-Git-Url: http://git.csclub.uwaterloo.ca/?p=kopensolaris-gnu%2Fglibc.git;a=blobdiff_plain;f=PROJECTS;h=0d4b744f69b77d750d2ae24533b7de5754068c3a;hp=d5be6313eb87435df7eca1145213f808fcfa9a99;hb=55111e974ba84681294ac4855ba00d5b00b15489;hpb=dba423be7fe62be2bb7411719fc57068a76bd22f diff --git a/PROJECTS b/PROJECTS index d5be6313eb..0d4b744f69 100644 --- a/PROJECTS +++ b/PROJECTS @@ -1,6 +1,6 @@ Open jobs for finishing GNU libc: --------------------------------- -Status: July 1998 +Status: February 2001 If you have time and talent to take over any of the jobs below please contact . @@ -37,10 +37,9 @@ contact . for the current status (of course better use a mirror of ftp.gnu.org). -[ 6] Write `long double' versions of the math functions. This should be - done in collaboration with the NetBSD and FreeBSD people. +[ 6] Write `long double' versions of the math functions. - The libm is in fact fdlibm (not the same as in Linux libc). + The libm is in fact fdlibm (not the same as in Linux libc 5). **** Partly done. But we need someone with numerical experiences for the rest. @@ -53,7 +52,7 @@ contact . with long double arguments. Beside this most of the complex math functions which are new in - ISO C 9X should be improved. Writing some of them in assembler is + ISO C99 should be improved. Writing some of them in assembler is useful to exploit the parallelism which often is available. @@ -77,6 +76,9 @@ contact . It is planned to do a complete rewrite. +*** We have now multibyte character support. But a rewrite is still + necessary. + [11] Write access function for netmasks, bootparams, and automount databases for nss_files and nss_db module. @@ -84,24 +86,21 @@ contact . hard and not all services must be supported at once. -[14] We need to write a library for on-the-fly transformation of streams - of text. In fact, this would be a recode-library (you know, GNU recode). - This is needed in several places in the GNU libc and I already have - rather concrete plans but so far no possibility to start this. - -*** The library is available, now it remains to be used in the streams. - - [15] Cleaning up the header files. Ideally, each header style should follow the "good examples". Each variable and function should have a short description of the function and its parameters. The prototypes should always contain variable names which can help to identify their meaning; better than - int foo __P ((int, int, int, int)); + int foo (int, int, int, int); Blargh! +*** The conformtest.pl tool helps cleaning the namespace. As far as + known the prototypes all contain parameter names. But maybe some + comments can be improved. + + [16] The libio stream file functions should be extended in a way to use mmap to map the file and use it as the buffer to user sees. For read-only streams this should be rather easy and it avoids all read() @@ -113,26 +112,52 @@ contact . to the page size and install the correct length only for fclose() and fflush() calls. + [18] Based on the sprof program we need tools to analyze the output. The result should be a link map which specifies in which order the .o files are placed in the shared object. This should help to improve code locality and result in a smaller foorprint (in code and data memory) since less pages are only used in small parts. + [19] A user-level STREAMS implementation should be available if the kernel does not provide the support. +*** This is a much lower priority job now that STREAMS are optional in + XPG. + + [20] More conversion modules for iconv(3). Existing modules should be extended to do things like transliteration if this is wanted. For often used conversion a direct conversion function should be available. + [21] The nscd program and the stubs in the libc should be changed so that each program uses only one socket connect. Take a look at http://www.cygnus.com/~drepper/nscd.html + An alternative approach is to use an mmap()ed file. The idea is + the following: + - the nscd creates the hash tables and the information it stores + in it in a mmap()ed region. This means no pointers must be + used, only offsets. + OR + if POSIX shared memory is available use a named shared memory + region to put the data in + - each program using NSS functionality tries to open the file + with the data. + - by checking some timestamp (which the nscd renews frequently) + the programs can test whether the file is still valid + - if the file is valid look through the nscd and locate the + appropriate hash table for the database and lookup the data. + If it is included we are set. + - if the data is not yet in the database we contact the nscd using + the currently implemented methods. + + [22] It should be possible to have the information gconv-modules in - a simple database which is faster to access. Using libdb is probably + a simple cache which is faster to access. Using libdb is probably overkill and loading it would probably be slower than reading the plain text file. But a file format with a simple hash table and some data it points to should be fine. Probably it should be @@ -140,16 +165,17 @@ contact . should start similar to this: if (stat ("gconv-modules", &stp) == 0 - && stat ("gconv-modules.db", %std) == 0 + && stat ("gconv-modules.db", &std) == 0 && stp.st_mtime < std.st_mtime) { - ... use the database ... + ... use the cache ... { else { ... use the plain file if it exists, otherwise the db ... } + [23] The `strptime' function needs to be completed. This includes among other things that it must get teached about timezones. The solution envisioned is to extract the timezones from the ADO timezone @@ -159,3 +185,17 @@ contact . treated as the `Eastern Australia Time' instead of the US `Eastern Standard Time' if the current TZ variable is set to, say, Australia/Canberra or if the current locale is en_AU. + + +[25] Sun's nscd version implements a feature where the nscd keeps N entries + for each database current. I.e., if an entries lifespan is over and + it is one of the N entries to be kept the nscd updates the information + instead of removing the entry. + + How to decide about which N entries to keep has to be examined. + Factors should be number of uses (of course), influenced by aging. + Just imagine a computer used by several people. The IDs of the current + user should be preferred even if the last user spent more time. + + +[26] ...done