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