X-Git-Url: http://git.csclub.uwaterloo.ca/?p=kopensolaris-gnu%2Fglibc.git;a=blobdiff_plain;f=PROJECTS;h=0d4b744f69b77d750d2ae24533b7de5754068c3a;hp=59b3d8a0f5d714322cb6f5213335910a8c207b37;hb=55111e974ba84681294ac4855ba00d5b00b15489;hpb=8e9fb4a908099b88d821a2a09efca5a0529aae84 diff --git a/PROJECTS b/PROJECTS index 59b3d8a0f5..0d4b744f69 100644 --- a/PROJECTS +++ b/PROJECTS @@ -1,9 +1,9 @@ Open jobs for finishing GNU libc: --------------------------------- -Status: April 1997 +Status: February 2001 If you have time and talent to take over any of the jobs below please -contact +contact . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -33,22 +33,13 @@ contact users can immediately benefit from this. Take a look at the matrix in - ftp://prep.ai.mit.edu/pub/gnu/ABOUT-NLS - for the current status (of course better use a mirror of prep). + ftp://ftp.gnu.org/pub/gnu/ABOUT-NLS + for the current status (of course better use a mirror of ftp.gnu.org). -[ 5] Write wordexp() function; this is described in POSIX.2, the - header already exists. +[ 6] Write `long double' versions of the math functions. - Implementation idea: use some functions from bash. - -**** Somebody is working on this. Help may or may not be appreciated. - - -[ 6] Write `long double' versions of the math functions. This should be - done in collaboration with the NetBSD and FreeBSD people. - - 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. @@ -58,10 +49,10 @@ contact - exp2 - each with float, double, and long double arguments. + 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. @@ -83,7 +74,10 @@ contact [10] Extend regex and/or rx to work with wide characters and complete implementation of character class and collation class handling. - It is planed to do a complete rewrite. + 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 @@ -92,28 +86,116 @@ contact hard and not all services must be supported at once. -[13] Several more or less small functions have to be written: - - + tcgetid() and waitid() from XPG4.2 - + grantpt(), ptsname(), unlockpt() from XPG4.2 - + getdate() from XPG4.2 - *** Probably underway - - More information are available on request. - - -[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. - - [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() + calls. + + A more sophisticated solution would use mmap also for writing. The + standards do not demand that the file on the disk is always in the + correct form so it would be possible to enlarge it always according + 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 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 + two tables, one for the aliases, one for the mappings. The code + should start similar to this: + + if (stat ("gconv-modules", &stp) == 0 + && stat ("gconv-modules.db", &std) == 0 + && stp.st_mtime < std.st_mtime) + { + ... 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 + specifications. Special care must be given names which are used + multiple times. Here the precedence should (probably) be according + to the geograhical distance. E.g., the timezone EST should be + 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