Update.
[platform/upstream/glibc.git] / NEWS
1 GNU C Library NEWS -- history of user-visible changes.  1998-03-04
2
3 Copyright (C) 1992, 93, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
4 See the end for copying conditions.
5
6 Please send GNU C library bug reports using the `glibcbug' script to
7 <bugs@gnu.org>.  Questions and suggestions should be send to
8 <bug-glibc@gnu.org>.
9 \f
10 Version 2.1
11
12 * Richard Henderson corrected size of struct timeval on Linux/Alpha to
13   conform to POSIX member type requirements.  Symbol versions have been
14   adjusted as needed within the library, and for direct use by applications,
15   but there is potential for problems if third-party libraries use
16   struct timeval as part of their interface.  This does not present
17   a problem for X and other "essential" system libraries.
18
19 * An additional locale model to support C++ Standard Library locale
20   model and probably more was implemented by Ulrich Drepper.
21
22 * Eric Youngdale and Ulrich Drepper implemented versioning of objects on
23   symbol level.
24
25 * Miles Bader provided the `argp' function family to support hierachical
26   command line argument parsing, layered on top of getopt.
27
28 * strtod accepts new hexadecimal floating-point format from ISO C 9X.
29
30 * printf has two new specifiers %a and %A to print hexadecimal flaoting-point
31   numbers.
32
33 * scanf recognizes the %a and %A format for scanning floating point numbers.
34
35 * the new headers <stdint.h> and <inttypes.h> from ISO C 9X provides
36   information and interfaces for the available integer types.
37
38 * the new header <complex.h> contains definitions of the complex math
39   functions from ISO C 9X.
40
41 * the new header <tgmath.h> defines generic macros to use complex or
42   real valued functions.
43
44 * Thorsten Kukuk provided an implementation for NIS+, securelevel 0, 1 and 2.
45
46 * Andreas Jaeger provided a test suite for the math library.
47
48 * Mark Kettenis implemented the utmpx interface and an utmp daemon.
49
50 * Ulrich Drepper added character conversion functions.
51
52 * Optimized string functions have been added.
53
54 * The localedata addon is now part of glibc.
55
56 * An implementation of profiling shared libraries was added by Ulrich Drepper.
57
58 * Thorsten Kukuk and Ulrich Drepper provided an implementation for a caching
59   daemon for NSS (nscd).
60
61   Missing a better place here are some numbers on improvements.  Under
62   Linux 2.1.125 un-tar-ing the kernel sources takes
63
64                                 user    system  wall
65
66     using local files           12.19s   6.88s  22.91s
67
68     using NIS                   13.92s   8.91s  26.34s
69
70     using NIS & nscd            10.37s   7.34s  25.30s
71
72     using NIS & old nscd [1]    13.83s   8.32s  29.60s
73
74   When NIS+ is used instead of NIS the benefit from using nscd is much bigger.
75   Keep in mind that non-namelookup related operations dominate above times.
76   It was just a common complain that using NIS+ unpacking the kernel is
77   horribly slow.  When using nscd unpacking is now even faster than using
78   NIS.
79
80   [1] The old nscd implementation is not anymore available since it was
81   distributed with glibc up to version 2.0.98.
82
83 * Tim Waugh provided an implementation of the POSIX.2 wordexp function family.
84
85 * Mark Kettenis provided a Hesiod NSS module.
86
87 * The ELF dynamic loader knows how to process dynamic string tokens ($ORIGIN
88   and $PLATFORM) in RPATHs and similar strings (Ulrich Drepper).
89
90 * rcmd can now handle netgroups (Dick Streefland).
91
92 * Interface changes relative to the latest 2.0.x release:
93 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
94 addseverity                     NEW: fmtmsg
95 alphasort64                     NEW: LFS
96 argp_err_exit_status            NEW: argp
97 argp_error                      NEW: argp
98 argp_failure                    NEW: argp
99 argp_help                       NEW: argp
100 argp_parse                      NEW: argp
101 argp_program_bug_address        NEW: argp
102 argp_program_version            NEW: argp
103 argp_program_version_hook       NEW: argp
104 argp_state_help                 NEW: argp
105 argp_usage                      NEW: argp
106 authdes_create                  NEW: NIS+
107 authdes_getucred                NEW: NIS+
108 authdes_pk_create               NEW: NIS+
109 backtrace                       NEW: GNU ext.
110 backtrace_symbols               NEW: GNU ext.
111 backtrace_symbols_fd            NEW: GNU ext.
112 cacos                           NEW: ISO C 9x
113 cacosf                          NEW: ISO C 9x
114 cacosh                          NEW: ISO C 9x
115 cacoshf                         NEW: ISO C 9x
116 cacoshl                         NEW: ISO C 9x
117 cacosl                          NEW: ISO C 9x
118 capget                          NEW: kernel
119 capset                          NEW: kernel
120 carg                            NEW: ISO C 9x
121 cargf                           NEW: ISO C 9x
122 cargl                           NEW: ISO C 9x
123 casin                           NEW: ISO C 9x
124 casinf                          NEW: ISO C 9x
125 casinh                          NEW: ISO C 9x
126 casinhf                         NEW: ISO C 9x
127 casinhl                         NEW: ISO C 9x
128 casinl                          NEW: ISO C 9x
129 catan                           NEW: ISO C 9x
130 catanf                          NEW: ISO C 9x
131 catanh                          NEW: ISO C 9x
132 catanhf                         NEW: ISO C 9x
133 catanhl                         NEW: ISO C 9x
134 catanl                          NEW: ISO C 9x
135 cbc_crypt                       NEW: NIS+
136 ccos                            NEW: ISO C 9x
137 ccosf                           NEW: ISO C 9x
138 ccosh                           NEW: ISO C 9x
139 ccoshf                          NEW: ISO C 9x
140 ccoshl                          NEW: ISO C 9x
141 ccosl                           NEW: ISO C 9x
142 cexp                            NEW: ISO C 9x
143 cexpf                           NEW: ISO C 9x
144 cexpl                           NEW: ISO C 9x
145 cimag                           NEW: ISO C 9x
146 cimagf                          NEW: ISO C 9x
147 cimagl                          NEW: ISO C 9x
148 clearerr_locked                 REMOVED
149 clntunix_create                 NEW: sunrpc ext
150 clog                            NEW: ISO C 9x
151 clog10                          NEW: ISO C 9x
152 clog10f                         NEW: ISO C 9x
153 clog10l                         NEW: ISO C 9x
154 clogf                           NEW: ISO C 9x
155 clogl                           NEW: ISO C 9x
156 conj                            NEW: ISO C 9x
157 conjf                           NEW: ISO C 9x
158 conjl                           NEW: ISO C 9x
159 cpow                            NEW: ISO C 9x
160 cpowf                           NEW: ISO C 9x
161 cpowl                           NEW: ISO C 9x
162 cproj                           NEW: ISO C 9x
163 cprojf                          NEW: ISO C 9x
164 cprojl                          NEW: ISO C 9x
165 creal                           NEW: ISO C 9x
166 crealf                          NEW: ISO C 9x
167 creall                          NEW: ISO C 9x
168 creat64                         NEW: LFS
169 csin                            NEW: ISO C 9x
170 csinf                           NEW: ISO C 9x
171 csinh                           NEW: ISO C 9x
172 csinhf                          NEW: ISO C 9x
173 csinhl                          NEW: ISO C 9x
174 csinl                           NEW: ISO C 9x
175 csqrt                           NEW: ISO C 9x
176 csqrtf                          NEW: ISO C 9x
177 csqrtl                          NEW: ISO C 9x
178 ctan                            NEW: ISO C 9x
179 ctanf                           NEW: ISO C 9x
180 ctanh                           NEW: ISO C 9x
181 ctanhf                          NEW: ISO C 9x
182 ctanhl                          NEW: ISO C 9x
183 ctanl                           NEW: ISO C 9x
184 des_setparity                   NEW: NIS+
185 ecb_crypt                       NEW: NIS+
186 endutxent                       NEW: utmpx
187 exp10                           NEW: ISO C 9x
188 exp10f                          NEW: ISO C 9x
189 exp10l                          NEW: ISO C 9x
190 exp2                            NEW: ISO C 9x
191 exp2f                           NEW: ISO C 9x
192 exp2l                           NEW: ISO C 9x
193 fattach                         NEW: STREAMS
194 fdetach                         NEW: STREAMS
195 fdim                            NEW: ISO C 9x
196 fdimf                           NEW: ISO C 9x
197 fdiml                           NEW: ISO C 9x
198 feclearexcept                   NEW: ISO C 9x
199 fegetenv                        NEW: ISO C 9x
200 fegetexceptflag                 NEW: ISO C 9x
201 fegetround                      NEW: ISO C 9x
202 feholdexcept                    NEW: ISO C 9x
203 feof_locked                     REMOVED
204 feraiseexcept                   NEW: ISO C 9x
205 ferror_locked                   REMOVED
206 fesetenv                        NEW: ISO C 9x
207 fesetexceptflag                 NEW: ISO C 9x
208 fesetround                      NEW: ISO C 9x
209 fetestexcept                    NEW: ISO C 9x
210 feupdateenv                     NEW: ISO C 9x
211 fflush_locked                   REMOVED
212 ffsl                            NEW: GNU ext.
213 ffsll                           NEW: GNU ext.
214 fgetpos64                       NEW: LFS
215 fgets_unlocked                  NEW: GNU ext.
216 fileno_locked                   REMOVED
217 fma                             NEW: ISO C 9x
218 fmaf                            NEW: ISO C 9x
219 fmal                            NEW: ISO C 9x
220 fmax                            NEW: ISO C 9x
221 fmaxf                           NEW: ISO C 9x
222 fmaxl                           NEW: ISO C 9x
223 fmin                            NEW: ISO C 9x
224 fminf                           NEW: ISO C 9x
225 fminl                           NEW: ISO C 9x
226 fmtmsg                          NEW: fmtmsg
227 fopen64                         NEW: LFS
228 fputc_locked                    REMOVED
229 fputs_unlocked                  NEW: GNU ext.
230 fread_unlocked                  NEW: GNU ext.
231 freopen64                       NEW: LFS
232 fseeko                          NEW: Unix98
233 fsetpos64                       NEW: LFS
234 fstatfs64                       NEW: LFS
235 fstatvfs                        NEW: Unix98
236 fstatvfs64                      NEW: LFS
237 ftello                          NEW: Unix98
238 ftello64                        NEW: LFS
239 ftruncate64                     NEW: LFS
240 ftw64                           NEW: LFS
241 fwrite_unlocked                 NEW: GNU ext.
242 gai_strerror                    NEW: IPv6
243 gamma_r                         REMOVED
244 gammaf_r                        REMOVED
245 gammal_r                        REMOVED
246 getchar_locked                  REMOVED
247 getdate                         NEW: Unix98
248 getdate_err                     NEW: Unix98
249 getdate_r                       NEW: GNU ext.
250 getmsg                          NEW: STREAMS
251 getnameinfo                     NEW: IPv6
252 getnetname                      NEW: IPv6
253 getpmsg                         NEW: STREAMS
254 getpt                           NEW: Unix98 PTY
255 getrlimit64                     NEW: LFS
256 getutxent                       NEW: utmpx
257 getutxid                        NEW: utmpx
258 getutxline                      NEW: utmpx
259 glob64                          NEW: GNU ext.
260 globfree64                      NEW: GNU ext.
261 gnu_get_libc_release            NEW: GNU ext.
262 gnu_get_libc_version            NEW: GNU ext.
263 grantpt                         NEW: Unix98 PTY
264 host2netname                    NEW: IPv6
265 iconv                           NEW: iconv
266 iconv_close                     NEW: iconv
267 iconv_open                      NEW: iconv
268 if_freenameindex                NEW: IPv6
269 if_indextoname                  NEW: IPv6
270 if_nameindex                    NEW: IPv6
271 if_nametoindex                  NEW: IPv6
272 in6addr_any                     NEW: IPv6
273 in6addr_loopback                NEW: IPv6
274 inet6_isipv4mapped              NEW: IPv6
275 isastream                       NEW: STREAMS
276 iswblank                        NEW: GNU ext.
277 key_decryptsession              NEW: NIS+
278 key_decryptsession_pk           NEW: NIS+
279 key_encryptsession              NEW: NIS+
280 key_encryptsession_pk           NEW: NIS+
281 key_gendes                      NEW: NIS+
282 key_get_conv                    NEW: NIS+
283 key_secretkey_is_set            NEW: NIS+
284 key_setnet                      NEW: NIS+
285 key_setsecret                   NEW: NIS+
286 llrint                          NEW: ISO C 9x
287 llrintf                         NEW: ISO C 9x
288 llrintl                         NEW: ISO C 9x
289 llround                         NEW: ISO C 9x
290 llroundf                        NEW: ISO C 9x
291 llroundl                        NEW: ISO C 9x
292 log2                            NEW: ISO C 9x
293 log2f                           NEW: ISO C 9x
294 log2l                           NEW: ISO C 9x
295 lrint                           NEW: ISO C 9x
296 lrintf                          NEW: ISO C 9x
297 lrintl                          NEW: ISO C 9x
298 lround                          NEW: ISO C 9x
299 lroundf                         NEW: ISO C 9x
300 lroundl                         NEW: ISO C 9x
301 lseek64                         NEW: LFS
302 makecontext                     NEW: Unix98
303 mempcpy                         NEW: GNU ext.
304 mmap64                          NEW: LFS
305 moncontrol                      REMOVED
306 modify_ldt                      NEW: kernel
307 nan                             NEW: ISO C 9x
308 nanf                            NEW: ISO C 9x
309 nanl                            NEW: ISO C 9x
310 nearbyint                       NEW: ISO C 9x
311 nearbyintf                      NEW: ISO C 9x
312 nearbyintl                      NEW: ISO C 9x
313 netname2host                    NEW: IPv6
314 netname2user                    NEW: IPv6
315 nextafterx                      NEW: ISO C 9x
316 nextafterxf                     NEW: ISO C 9x
317 nftw                            NEW: Unix98
318 nftw64                          NEW: LFS
319 open64                          NEW: LFS
320 passwd2des                      NEW: NIS+
321 pow10                           NEW: GNU ext.
322 pow10f                          NEW: GNU ext.
323 pow10l                          NEW: GNU ext.
324 pread                           NEW: Unix98
325 pread64                         NEW: LFS
326 printf_size                     NEW: GNU ext.
327 printf_size_info                NEW: GNU ext.
328 profil_counter                  REMOVED
329 pthread_mutexattr_getkind_np    REPLACED
330 pthread_mutexattr_setkind_np    REPLACED
331 ptsname                         NEW: Unix98 PTY
332 ptsname_r                       NEW: Unix98 PTY
333 putc_locked                     REMOVED
334 putchar_locked                  REMOVED
335 putgrent                        NEW: GNU ext.
336 putmsg                          NEW: STREAMS
337 putpmsg                         NEW: STREAMS
338 pututxline                      NEW: utmpx
339 pwrite                          NEW: Unix98
340 pwrite64                        NEW: LFS
341 readdir64                       NEW: LFS
342 readdir64_r                     NEW: LFS
343 remquo                          NEW: ISO C 9x
344 remquof                         NEW: ISO C 9x
345 remquol                         NEW: ISO C 9x
346 round                           NEW: ISO C 9x
347 roundf                          NEW: ISO C 9x
348 roundl                          NEW: ISO C 9x
349 rtime                           NEW: GNU ext.
350 scalbln                         NEW: ISO C 9x
351 scalblnf                        NEW: ISO C 9x
352 scalblnl                        NEW: ISO C 9x
353 scandir64                       NEW: LFS
354 sendfile                        NEW: kernel
355 setcontext                      NEW: Unix98
356 setrlimit64                     NEW: LFS
357 setutxent                       NEW: utmpx
358 sighold                         NEW: Unix98
359 sigignore                       NEW: Unix98
360 sigqueue                        NEW: POSIX.1b
361 sigrelse                        NEW: Unix98
362 sigset                          NEW: POSIX.1b
363 sigtimedwait                    NEW: POSIX.1b
364 sigwaitinfo                     NEW: POSIX.1b
365 sincos                          NEW: GNU ext.
366 sincosf                         NEW: GNU ext.
367 sincosl                         NEW: GNU ext.
368 statfs64                        NEW: LFS
369 statvfs                         NEW: Unix98
370 statvfs64                       NEW: LFS
371 strcasestr                      NEW: GNU ext.
372 strfxtime                       NEW: ISO C 9x
373 strtoimax                       NEW: ISO C 9x
374 strtoumax                       NEW: ISO C 9x
375 strverscmp                      NEW: GNU ext.
376 svcauthdes_stats                NEW: NIS+
377 svcunix_create                  NEW: sunrpc etx
378 svcunixfd_create                NEW: sunrpc ext
379 swapcontext                     NEW: Unix98
380 tcgetsid                        NEW: Unix98 PTY
381 tdestroy                        NEW: GNU ext.
382 tgamma                          NEW: ISO C 9x
383 tgammaf                         NEW: ISO C 9x
384 tgammal                         NEW: ISO C 9x
385 tmpfile64                       NEW: LFS
386 trunc                           NEW: ISO C 9x
387 truncate64                      NEW: LFS
388 truncf                          NEW: ISO C 9x
389 truncl                          NEW: ISO C 9x
390 umount2                         NEW: kernel
391 unlockpt                        NEW: Unix98 PTY
392 updwtmpx                        NEW: utmpx
393 user2netname                    NEW: IPv6
394 utmpxname                       NEW: utmpx
395 versionsort                     NEW: GNU ext.
396 versionsort64                   NEW: LFS
397 waitid                          NEW: Unix98
398 wcscasecmp                      NEW: GNU ext.
399 wcsncasecmp                     NEW: GNU ext.
400 wcsnlen                         NEW: GNU ext.
401 wcstoimax                       NEW: ISO C 9x
402 wcstoll                         NEW: ISO C 9x
403 wcstoull                        NEW: ISO C 9x
404 wcstoumax                       NEW: ISO C 9x
405 wcswcs                          NEW: Unix98
406 wordexp                         NEW: POSIX.2
407 wordfree                        NEW: POSIX.2
408 write_profiling                 REMOVED
409 xdecrypt                        NEW: NIS+
410 xdr_authdes_cred                NEW: NIS+
411 xdr_authdes_verf                NEW: NIS+
412 xdr_cryptkeyarg                 NEW: NIS+
413 xdr_cryptkeyarg2                NEW: NIS+
414 xdr_cryptkeyres                 NEW: NIS+
415 xdr_getcredres                  NEW: NIS+
416 xdr_key_netstarg                NEW: NIS+
417 xdr_key_netstres                NEW: NIS+
418 xdr_keybuf                      NEW: NIS+
419 xdr_keystatus                   NEW: NIS+
420 xdr_netnamestr                  NEW: NIS+
421 xdr_sizeof                      NEW: NIS+
422 xdr_unixcred                    NEW: sunrpc ext
423 xencrypt                        NEW: NIS+
424 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
425 \f
426 Version 2.0.5
427
428 * more bug fixes
429
430 * inet_ntoa is thread-safe
431
432 * updwtmp is moved from libutil to libc
433
434 * rewrite of cbrt function
435
436 * update of timezone data
437 \f
438 Version 2.0.4
439
440 * more bug fixes
441 \f
442 Version 2.0.3
443
444 * more bug fixes
445 \f
446 Version 2.0.2
447
448 * more bug fixes
449
450 * add atoll function
451
452 * fix complex problems in Berkeley DB code
453
454 * fix math functions
455 \f
456 Version 2.0.1
457
458 * fixed lots of header problems (especially Linux/GNU specific)
459
460 * dynamic loader preserves all registers
461
462 * Roland McGrath provided support for handling of auxiliary objects in
463   the ELF dynamic loader.
464
465 * support for parallel builds is improved
466 \f
467 Version 2.0
468
469 * GNU extensions are no longer declared by default.  To enable them you
470   must define the macro `_GNU_SOURCE' in your program or compile with
471   `-D_GNU_SOURCE'.
472
473 * The library has changed from using GNU ld symbol aliases to using weak
474   symbols where available.  The ELF object file format supports weak
475   symbols; GNU ld also supports weak symbols in the a.out format.  (There
476   is also now support for other GNU ld extensions in ELF.  Use the
477   `--with-elf' option to configure to indicate you have ELF, and
478   `--with-gnu-ld' if using GNU ld.)  This change resulted in the deletion
479   of many files which contained only symbol aliases, reducing the size of
480   the source and the compiled library; many other files were renamed to
481   less cryptic names previously occupied by the symbol alias files.
482   There is a new header file <elf.h> for programs which operate on
483   files in the ELF format.
484
485 * Converted to Autoconf version 2, so `configure' has more options.
486   Run `configure --help' to see the details.
487
488 * The library can now be configured to build profiling, highly-optimized
489   (but undebuggable), and/or shared libraries (ELF with GNU ld only).  The
490   `--enable-profile', `--enable-omitfp', and `--enable-shared' options to
491   `configure' enable building these extra libraries.  The shared library is
492   built by default when using both ELF and GNU ld.  When shared libraries
493   are enabled, the new library `-ldl' is available for arbitrary run-time
494   loading of shared objects; its interface is defined in <dlfcn.h>.  The
495   new header file <link.h> gives access to the internals of the run-time
496   dynamic linker, `ld.so'.  The shell script `ldd' is similar to the
497   application of same name on other systems and it provides information
498   about dynamically linked binaries.
499
500 * The C library now provides the run-time support code for profiling
501   executables compiled with `-pg'.  Programs can control the profiling code
502   through the interface in <sys/gmon.h>.  The `gmon.out' files written by
503   the GNU C library can be read only by GNU `gprof' (from GNU binutils);
504   the support for this file format was contributed by David Mosberger-Tang.
505
506 * The math code has been replaced with a math library based on fdlibm from
507   Sun, and modified by JT Conklin and Ulrich Drepper with i387 support, by
508   Ian Taylor with `float' functions and by Ulrich Drepper with `long double'
509   functions.  The math functions now reside in a separate library,  so
510   programs using them will need to use `-lm' their linking commands.
511
512 * John C. Bowman contributed optimized ix87 assembler inline functions.
513
514 * Ulrich Drepper has contributed support for an `/etc/nsswitch.conf'
515   mechanism similar to that found in Solaris 2.  This is now used for the
516   group, passwd, hosts, networks, services, protocols, rpc, ethers,
517   shadow, netgroup, publickey, and alias databases.  The `nsswitch.conf'
518   file controls what services are used for each individual database.  This
519   works by loading shared libraries with names specified in `nsswitch.conf',
520   so service modules can be changed or added at any time without even
521   relinking any program.  Currently there are the file, db, and NIS based
522   NSS services available.
523
524 * The new functions `strtoq' and `strtouq' parse integer values from
525   strings, like `strtol' and `strtoul', but they return `long long int' and
526   `unsigned long long int' values, respectively (64-bit quantities).
527
528 * The new functions `strtof' and `strtold' parse floating-point values from
529   strings, like `strtod', but they return `float' and `long double' values,
530   respectively (on some machines `double' and `long double' are the same).
531
532 * Ulrich Drepper has contributed new implementations of the floating-point
533   printing and reading code used in the `printf' family of functions and
534   `strtod', `strtof', and `strtold'.  These new functions are perfectly
535   accurate, and much faster than the old ones.
536
537 * The implementation of the POSIX locale model was completely rewritten by
538   Ulrich Drepper.  This includes the new programs `localedef' and `locale'
539   to compile the POSIX locale definition.
540
541 * The former dummy implementations of the strcoll and strxfrm function are
542   now replaced by fully functional code contributed by Ulrich Drepper.  The
543   collation information comes from the POSIX locale definitions.
544
545 * The new header <langinfo.h> defines an interface for accessing
546   various locale-dependent data (using the locale chosen with `setlocale').
547
548 * Ulrich Drepper has contributed a new suite of functions for operation on
549   wide-character and multibyte-character strings, in <wchar.h>;
550   and classification and case conversion of wide characters, in <wctype.h>.
551   These new functions are conforming to the ISO C, Amendement 1 specification.
552
553 * There is now a second implementation of the standard I/O library available.
554   It comes from GNU libg++ as was written by Per Bothner, heavily modified
555   by Hongjiu Lu and made thread safe by Ulrich Drepper.
556
557 * You can now use positional parameter specifications in format strings
558   for the `printf' and `scanf' families of functions.  For example,
559   `printf ("Number %2$d, Mr %1$s\n", "Jones", 6);'' prints
560   ``Number 6, Mr Jones''.  This is mainly useful when providing different
561   format strings for different languages, whose grammars may dictate
562   different orderings of the values being printed.  To support this
563   feature, the interface for `register_printf_handler' has changed; see
564   the header file <printf.h> for details.
565
566 * The `printf' and `scanf' families of functions now understand a new
567   formatting flag for numeric conversions: the ' flag (e.g. %'d or %'f) says
568   to group numbers as indicated by the locale; for `scanf' and friends, this
569   says to accept as valid only a number with all the proper grouping
570   separators in the right places.  In the default "C" locale, numbers are
571   not grouped; but locales for specific countries will define the usual
572   conventions (i.e. separate thousands with `,' in the US locale).
573
574 * The pgrp functions have been regularized, slightly incompatibly but much
575   less confusingly.  The core functions are now `getpgid' and `setpgid',
576   which take arguments for the PID to operate on; the POSIX.1 `getpgrp' (no
577   argument) and BSD `setpgrp' (identical to `setpgid') functions are
578   provided for compatibility.  There is no longer an incompatible `getpgrp'
579   with an argument declared under _BSD_SOURCE; no BSD code uses it.
580
581 * The new header file <fts.h> and suite of functions simplify programs that
582   operate on directory trees.  This code comes from 4.4 BSD.
583
584 * The resolver code has been updated from the BIND 4.9.5-P1 release.
585   Parts of the code were heavily modified by Ulrich Drepper to fit in the
586   NSS scheme used in glibc.
587
588 * There is a new malloc debugging hook `__memalign_hook'.
589
590 * There are new typedefs `ushort' for `unsigned short int' and `uint' for
591   `unsigned int' in <sys/types.h>.  These are for compatibility only and
592   their use is discouraged.
593
594 * The `-lmcheck' library to enable standard malloc debugging hooks is now
595   done differently, so that it works even without GNU ld.
596
597 * New function `euidaccess' checks allowed access to a file like `access',
598   but using the effective IDs instead of the real IDs.
599
600 * The time zone data files have been updated for the latest and greatest
601   local time conventions of the countries of the world.
602
603 * The new function `dirfd' extracts the file descriptor used by a DIR stream;
604   see <dirent.h>.
605
606 * The new functions `ecvt', `fcvt', and `gcvt' provide an obsolete interface
607   for formatting floating-point numbers.  They are provided only for
608   compatibility; new programs should use `sprintf' instead.  There are
609   also equivalent function for the `long double' floating-point type and
610   all functions also exist in a reentrant form.
611
612 * The new auxiliary library `-lutil' from 4.4 BSD contains various
613   functions for maintaining the login-record files (primarily of use to
614   system programs such as `login'), and convenient functions for
615   allocating and initializing a pseudo-terminal (pty) device.
616
617 * Ulrich Drepper has contributed new support for System V style
618   shared memory and IPC on systems that support it.
619
620 * Ulrich Drepper has contributed several miscellaneous new functions found
621   in System V: The `hsearch' family of functions provide an effective
622   implementation of hash tables; `a64l' and `l64a' provide a very simple
623   binary to ASCII mapping; `drand48' and friends provide a 48-bit random
624   number generator.
625
626 * Ulrich Drepper has contributed new reentrant counterparts for the
627   `random' and `hsearch' families of functions; `random_r', `hsearch_r', etc.
628
629 * Ulrich Drepper has contributed new, highly-optimized versions of several
630   string functions for the i486/Pentium family of processors.
631
632 * Ulrich Drepper has updated the Linux-specific code, based largely
633   on work done in Hongjiu Lu's version of GNU libc for Linux.
634   The GNU library now supports Linux versions 2.0.10 and later,
635   using the ELF object file format (i[3456]86-*-linux).
636
637 * Andreas Schwab has ported the C library to Linux/m68k (m68k-*-linux).
638
639 * David Mosberger-Tang and Richard Henderson have ported the C library
640   to Linux/Alpha (alpha-*-linux).  Richard Henderson contributed the
641   dynamic linking support for ELF/Alpha.
642
643 * Richard Henderson contributed several Alpha optimized assembler function
644   for arithmetic and string handling.
645
646 * Ulrich Drepper has contributed a new set of message catalog functions to
647   support multiple languages using the <libintl.h> interface, for use with
648   his new package GNU gettext.  Translation volunteers have contributed
649   catalogs of the library's messages in Spanish, German, and Korean.
650
651 * For compatibility with XPG4, Ulrich Drepper has contributed the `gencat'
652   program and the `catgets' function for reading the catalog files it
653   creates.  (The <libintl.h> interface is preferred; we include the
654   <nl_types.h> interface using `catgets' only for source compatibility with
655   programs already written to use it.)
656
657 * New header file <values.h> gives SVID-compatible names for <limits.h>
658   constants.
659
660 * Various new macros, declarations, and small header files for compatibility
661   with 4.4 BSD.
662
663 * New function `group_member' is a convenient way to check if a process has
664   a given effective group ID.
665
666 * When using GCC 2.7 and later, the socket functions are now declared in a
667   special way so that passing an argument of type `struct sockaddr_in *',
668   `struct sockaddr_ns *', or `struct sockaddr_un *' instead of the generic
669   `struct sockaddr *' type, does not generate a type-clash warning.
670
671 * New function `error' declared in header file <error.h> is a convenient
672   function for printing error messages and optionally exiting; this is the
673   canonical function used in GNU programs.  The new functions `err', `warn',
674   and friends in header file <err.h> are the canonical 4.4 BSD interface for
675   doing the same thing.
676
677 * The <glob.h> interface has several new flags from 4.4 BSD that extend the
678   POSIX.2 `glob' function to do ~ and {...} expansion.
679
680 * New function `unsetenv' complements `setenv' for compatibility with 4.4 BSD.
681   `clearenv' which is used in POSIX.9 is also available.
682
683 * New function `getsid' returns session ID number on systems that support it.
684
685 * We have incorporated the 4.4 BSD `db' library (version 1.85).  New header
686   files <db.h> and <mpool.h> provide a rich set of functions for several
687   types of simple databases stored in memory and in files, and <ndbm.h> is
688   an old `ndbm'-compatible interface using the `db' functions.  Link with
689   `-ldb' to get these functions.
690
691 * New macro `strdupa' copies a string like `strdup', but uses local stack
692   space from `alloca' instead of dynamic heap space from `malloc'.
693
694 * New function `strnlen' is like `strlen' but searches only a given maximum
695   number of characters for the null terminator.  `stpncpy', `strndup' and
696   `strndupa' are similar variants for the `stpcpy', `strdup' and `strdupa'
697   function.
698
699 * New function `statfs' in header <sys/statfs.h>.
700
701 * The new <argz.h> and <envz.h> interfaces contributed by Miles Bader
702   provide convenient functions for operating on blocks of null-terminated
703   strings.
704
705 * A new suite of functions in <utmp.h> handle all the details of reading
706   and writing the utmp file.
707
708 * An implementation of the NIS/YP(tm) based NSS service was contributed by
709   Thorsten Kukuk.
710
711 * Paul Eggert and Ulrich Drepper modified the `strftime' function to be
712   completely POSIX compliant and also implemented the extended functionality
713   to handle alternate digit representation and alternate era date formats.
714
715 * Ulrich Drepper provided an implementation of the `strptime' function
716   defined in XPG4.2 which transforms a string into a `struct tm' value.
717
718 * Paul Eggert provided the tzselect shell script as part of the timezone
719   code.  The shell script makes it easy to select the correct timezone
720   specification.
721
722 * The implementation of the malloc family of functions is completely replaced
723   by a new implementation by Doug Lea with many improvements by Wolfram Gloger.
724   The implementation uses the mmap function (if available) and it is
725   optimized for the use in multi threaded programs.
726
727 * Ulrich Drepper contributed a MD5 "encryption" for the crypt family of
728   functions.  This new functionality is usable by specifying a special
729   salt string and it is compatible with implementation on *BSD systems.
730
731 * Lots of functions from the XPG4.2 standard were added by Ulrich Drepper:
732   `getsubopt' to handle second level command line options, `bsd_signal'
733   to access BSD style `signal' functionality, the obsolete `regexp' style
734   expression matcher.
735
736 * the `lchown' function is available on system which support this
737   functionality.
738
739 * The implementation of the shadow password handling function was contributed
740   by Ulrich Drepper.
741
742 * David Mosberger-Tang changed the SunRPC implementation to be 64bit safe.
743
744 * POSIX.1g support was added.  The <sys/select.h> header is available,
745   `isfdtype' and `pselect' are implemented.  Craig Metz contributed an
746   implementation of `getaddrinfo'.
747 \f
748 Version 1.09
749
750 * For cross-compilation you should now set `BUILD_CC' instead of `HOST_CC'.
751
752 * New header file <fstab.h> and new functions `getfsspec', `getfsent' and
753   friends, for parsing /etc/fstab.  This code comes from 4.4 BSD.
754
755 * The new function `daemon' from 4.4 BSD is useful for server programs that
756   want to put themselves in the background.
757
758 * Joel Sherrill has contributed support for several standalone boards that
759   run without an operating system.
760
761 * `printf', `scanf' and friends now accept a `q' type modifier for long
762   long int as well as `ll'.  Formats using these might be `%qu' or `%lld'.
763
764 * All of the code taken from BSD (notably most of the math and networking
765   routines) has been updated from the BSD 4.4-Lite release.
766
767 * The resolver code has been updated from the BIND-4.9.3-BETA9 release.
768
769 * The new functions `getdomainname' and `setdomainname' fetch or change the
770   YP/NIS domain name.  These are system calls which exist on systems which
771   have YP (aka NIS).
772
773 * The time zone data files have been updated for the latest international
774   conventions.
775
776 * The SunRPC programs `portmap' and `rpcinfo' are now installed in
777   $(sbindir) (usually /usr/local/sbin) instead of $(bindir).
778 \f
779 Version 1.08
780
781 * The C library now includes support for Sun RPC, from Sun's free
782   RPCSRC-4.0 distribution.  The `portmap', `rpcinfo', and `rpcgen' programs
783   are included.  (There is still no support for YP.)
784
785 * Tom Quinn has contributed a port of the C library to SGI machines running
786   Irix 4 (mips-sgi-irix4).
787
788 * The new `lockf' function is a simplified interface to the locking
789   facilities of `fcntl', included for compatibility.
790
791 * New time functions `timegm', `timelocal', and `dysize' for compatibility.
792
793 * New header file <sys/timeb.h> and new function `ftime' for compatibility.
794
795 * New header files <poll.h> and <sys/poll.h> and new function `poll' for
796   compatibility.
797
798 * The error message printed by `assert' for a failed assertion now includes
799   the name of the program (if using GNU ld) and the name of the calling
800   function (with versions of GCC that support this).
801
802 * The `psignal' function is now declared in <signal.h>, not <stdio.h>.
803
804 * The library now includes the <sys/mman.h> header file and memory
805   management functions `mmap', `munmap', `mprotect', `msync', and
806   `madvise', on systems that support those facilities.
807
808 * The interface for `mcheck' has changed slightly: the function called to
809   abort the program when an allocation inconsistency is detected now takes
810   an argument that indicates the type of failure.  The new function
811   `mprobe' lets you request a consistency check for a particular block at
812   any time (checks are normally done only when you call `free' or `realloc'
813   on a block).
814
815 * It is now possible to easily cross-compile the C library, building on one
816   system a library to run on another machine and/or operating system.  All
817   you need to do is set the variable `HOST_CC' in `configparms' to the
818   native compiler for programs to run on the machine you are building on (a
819   few generator programs are used on Unix systems); set `CC' to the
820   cross-compiler.
821
822 * The new function `fexecve' (only implemented on the GNU system) executes
823   a program file given a file descriptor already open on the file.
824 \f
825 Version 1.07
826
827 * Brendan Kehoe has contributed most of a port to the DEC Alpha
828   running OSF/1 (alpha-dec-osf1).  He says it is 75% complete.
829
830 * You can set the variable `libprefix' in `configparms' to specify a prefix
831   to be prepended to installed library files; this makes it easy to install
832   the GNU C library to be linked as `-lgnuc' or whatever.
833
834 * The new `stpncpy' is a cross between `stpcpy' and `strncpy': It
835   copies a limited number of characters from a string, and returns the
836   address of the last character written.
837
838 * You no longer need to check for whether the installed `stddef.h' is
839   compatible with the GNU C library.  configure now checks for you.
840
841 * You can now define a per-stream `fileno' function to convert the
842   stream's cookie into an integral file descriptor.
843
844 * ``malloc (0)'' no longer returns a null pointer.  Instead, it
845   allocates zero bytes of storage, and returns a unique pointer which
846   you can pass to `realloc' or `free'.  The behavior is undefined if
847   you dereference this pointer.
848
849 * The C library now runs on Sony NEWS m68k machines running either
850   NewsOS 3 or NewsOS 4.
851
852 * The new `syscall' function is a system-dependent primitive function
853   for invoking system calls.  It has the canonical behavior on Unix
854   systems, including unreliable return values for some calls (such as
855   `pipe', `fork' and `getppid').
856
857 * The error code `EWOULDBLOCK' is now obsolete; it is always defined
858   to `EAGAIN', which is the preferred name.  On systems whose kernels
859   use two distinct codes, the C library now translates EWOULDBLOCK to
860   EAGAIN in every system call function.
861 \f
862 Version 1.06
863
864 * The GNU C Library Reference Manual is now distributed with the library.
865   `make dvi' will produce a DVI file of the printed manual.
866   `make info' will produce Info files that you can read on line using C-h i
867   in Emacs or the `info' program.
868   Please send comments on the manual to bug-glibc-manual@gnu.org.
869
870 * The library now supports SVR4 on i386s (i386-unknown-sysv4).
871
872 * Brendan Kehoe has contributed a port to Sun SPARCs running Solaris 2.
873
874 * Jason Merrill has contributed a port to the Sequent Symmetry running
875   Dynix version 3 (i386-sequent-dynix).
876
877 * The library has been ported to i386s running SCO 3.2.4 (also known as SCO
878   ODT 2.0; i386-unknown-sco3.2.4) or SCO 3.2 (i386-unknown-sco3.2).
879
880 * New function `memory_warnings' lets you arrange to get warnings when
881   malloc is running out of memory to allocate, like Emacs gives you.
882
883 * The C library now contains the relocating allocator used in Emacs 19 for
884   its editing buffers.  This allocator (ralloc) minimizes allocation
885   overhead and fragmentation by moving allocated regions around whenever it
886   needs to.  You always refer to a ralloc'd region with a "handle" (a
887   pointer to a pointer--an object of type `void **').
888
889 * There is a new `printf' format: `%m' gives you the string corresponding
890   to the error code in `errno'.
891
892 * In `scanf' formats, you can now use `%as' or `%a[' to do the normal `%s'
893   or `%[' conversion, but instead of filling in a fixed-sized buffer you
894   pass, the `a' modifier says to fill in a `char **' you pass with a
895   malloc'd string.
896
897 * The `fnmatch' function supports the new flag bits `FNM_LEADING_DIR' and
898   `FNM_CASEFOLD'.  `FNM_LEADING_DIR' lets a pattern like `foo*' match a
899   name like `foo/bar'.  `FNM_CASEFOLD' says to ignore case in matching.
900
901 * `mkstemp' is a traditional Unix function to atomically create and open a
902   uniquely-named temporary file.
903 \f
904 Version 1.05
905
906 * The standard location for the file that says what the local timezone is
907   has changed again.  It is now `/usr/local/etc/localtime' (or more
908   precisely, `${prefix}/etc/localtime') rather than `/etc/localtime'.
909
910 * The distribution no longer contains any files with names longer than 14
911   characters.
912
913 * `struct ttyent' has two new flag bits: TTY_TRUSTED and TTY_CONSOLE.
914   These are set by the new `trusted' and `console' keywords in `/etc/ttys'.
915
916 * New functions `ttyslot' and `syslog' from 4.4 BSD.
917 \f
918 Version 1.04
919
920 * The configuration process has changed quite a bit.  The `configure'
921   script is now used just like the configuration scripts for other GNU
922   packages.  The `sysdeps' directory hierarchy is much rearranged.
923   The file `INSTALL' explains the new scheme in detail.
924
925 * The header files no longer need to be processed into ANSI C and
926   traditional C versions.  There is just one set of files to install, and
927   it will work with ANSI or old C compilers (including `gcc -traditional').
928
929 * Brendan Kehoe and Ian Lance Taylor have ported the library to the
930   MIPS DECStation running Ultrix 4.
931
932 * The Sun 4 startup code (crt0) can now properly load SunOS 4 shared libraries.
933   Tom Quinn contributed the initial code.  The GNU C library can NOT yet be
934   made itself into a shared library.
935
936 * Yet further improved support for the i386, running 4.3 BSD-like systems
937   (such as Mach 3 with the Unix single-server), or System V.
938
939 * New function `strncasecmp' to do case-insensitive string comparison
940   with limited length.
941
942 * New function `strsep' is a reentrant alternative to `strtok'.
943
944 * New functions `scandir' and `alphasort' for searching directories.
945
946 * New function `setenv' is a better interface to `putenv'.
947
948 * Ian Lance Taylor has contributed an implementation of the SVID `ftw'
949   function for traversing a directory tree.
950
951 * The GNU obstack package is now also part of the C library.
952   The new function `open_obstack_stream' creates a stdio stream that
953   writes onto an obstack; `obstack_printf' and `obstack_vprintf' do
954   formatted output directly to an obstack.
955
956 * Miscellaneous new functions: reboot, nice, sigaltstack (4.4 BSD only),
957   cfmakeraw, getusershell, getpass, swab, getttyent, seteuid, setegid.
958
959 * `FNM_FILE_NAME' is another name for `FNM_PATHNAME', used with `fnmatch'.
960
961 * The new functions `strfry' and `memfrob' do mysterious and wonderful
962   things to your strings.
963
964 * There are some new test programs: test-fseek, testmb, and testrand.
965
966 * Some work has been done to begin porting the library to 4.4 BSD and Linux.
967   These ports are not finished, but are a good starting place for really
968   supporting those systems.
969
970 * `/etc/localtime' is now the standard location for the file that says what
971   the local timezone is, rather than `/usr/local/lib/zoneinfo/localtime'.
972   This follows the general principle that `/etc' is the place for all local
973   configuration files.
974
975 * The C library header files now use `extern "C"' when used by the C++
976   compiler, so the C library should now work with C++ code.
977
978 * The header file <bstring.h> is gone.  <string.h> now declares bcopy,
979   bcmp, bzero, and ffs.
980
981 * Mike Haertel (of GNU e?grep and malloc fame) has written a new sorting
982   function which uses the `merge sort' algorithm, and is said to be
983   significantly faster than the old GNU `qsort' function.  Merge sort is
984   now the standard `qsort' function.  The new algorithm can require a lot
985   of temporary storage; so, the old sorting function is called when the
986   required storage is not available.
987
988 * The C library now includes Michael Glad's Ultra Fast Crypt, which
989   provides the Unix `crypt' function, plus some other entry points.
990   Because of the United States export restriction on DES implementations,
991   we are distributing this code separately from the rest of the C library.
992   There is an extra distribution tar file just for crypt; it is called
993   `glibc-VERSION-crypt.tar.Z', e.g. `glibc-1.04-crypt.tar.Z'.  You can just
994   unpack the crypt distribution along with the rest of the C library and
995   build; you can also build the library without getting crypt.  Users
996   outside the USA can get the crypt distribution via anonymous FTP from
997   ftp.uni-c.dk [129.142.6.74], or another archive site outside the U.S.
998
999 * The code and header files taken from 4.4 BSD have been updated with the
1000   latest files released from Berkeley.
1001 \f
1002 ----------------------------------------------------------------------
1003 Copyright information:
1004
1005 Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
1006
1007    Permission is granted to anyone to make or distribute verbatim copies
1008    of this document as received, in any medium, provided that the
1009    copyright notice and this permission notice are preserved,
1010    thus giving the recipient permission to redistribute in turn.
1011
1012    Permission is granted to distribute modified versions
1013    of this document, or of portions of it,
1014    under the above conditions, provided also that they
1015    carry prominent notices stating who last changed them.
1016 \f
1017 Local variables:
1018 version-control: never
1019 end: