Changelog for skalibs.

In 2.14.5.0
-----------

 - Bugfixes.
 - Support for shared libraries on MacOS.
 - crc32c implementation: skalibs/crc32c.h
 - new skalibs/prog.h header for PROG modifications
 - new functions: symlink_at, mkdirp, mkdirp2


In 2.14.4.0
-----------

 - Bugfixes.
 - Documentation fixes. (This file, in particular.)
 - New functions: buffer_timed_getv, buffer_timed_putv,
   timed_read, timed_readv, timed_Write, timed_writev
 - New sysdeps, better handling of variable sysdeps
 - New functions: sagetexecname, tain_addmsec, millisleep


In 2.14.3.0
-----------

 - Bugfixes.
 - Newish function: mininetstring_read().
    (was previously removed in 2.7.0.0)
 - New header: cplz.h
 - Install .a to /usr/lib by default.


In 2.14.2.0
-----------

 - Support for midipix and old MacOS X. (More sysdeps.)
 - New gol.h header (a take on getopt_long).
 - New mkptemp3 function.


In 2.14.1.1
-----------

 - Bugfixes.


In 2.14.1.0
-----------

 - Bugfixes.
 - Portability improvements.
 - New socket_sendnb46_g() and socket_recvnb46_g() macros.


In 2.14.0.1
-----------

 - Bugfixes.


In 2.14.0.0
-----------

 - Bugfixes.
 - New accessor function: selfpipe_fd().
 - New functions: slurpn(), openslurpnclose().
 - slurp() and openslurpclose() are now macros.
 - New strerr macros to warn with a "fatal" message.
 - New cdb functions: cdb_hashv(), cdbmake_addv().
 - child_spawn() revamp. Prototype change (last arg is a size_t).
 - case_lowerb() and friends now use ctype.h functions.
 - case_str() removed, strcasestr() fallback implementation added.
 - cspawn(): finally unifying fork() and posix_spawn().
 - Better support for nonstandard posix_spawn subfunctions.
 - Lots of new sysdeps.


In 2.13.1.1
-----------

 - Bugfixes.


In 2.13.1.0
-----------

 - New macro: SKALIBS_PATH_MAX, in posixishard.h.
Defined to 4096 on systems that do not define PATH_MAX.
 - New function: sals().


In 2.13.0.0
-----------

 - Bugfixes.
 - New functions: buffer_timed_put(), buffer_timed_puts().
 - strerr.h revamped. strerr_die, strerr_warn, strerr_diesys, strerr_warnsys
and all the previous strerr2 macros are now __VA_ARGS__ macros around
strerr_diev() and friends.


In 2.12.0.1
-----------

 - Bugfixes.


In 2.12.0.0
-----------

 - librandom revamped (again).
   * random_init() and random_finish() removed.
   * random_char() removed.
   * random_string() renamed to random_buf().
   * early versions added.
 - New djbunix functions: waitn_posix(), waitn_reap_posix().
 - readnclose() made public, now doesn't touch errno on success.
 - openreadnclose_at() now returns a ssize_t.


In 2.11.2.0
-----------

 - Bugfixes.
 - User-provided CPPFLAGS, CFLAGS and LDFLAGS are now honored in
    sysdep autodetection.
 - envdir_internal() now supports a SKALIBS_ENVDIR_NOCLAMP option, for
    unlimited-size variable reading.


In 2.11.1.0
-----------

 - fd_close() doesn't retry if close() fails. (i.e. adapts to Linux's
behaviour over HP-UX's.)
 - New function: opendir_at.


In 2.11.0.0
-----------

 - libbiguint removed.
 - Obsolete skalibs/environ.h and skalibs/getpeereid.h removed.
 - rc4 and md5 removed.
 - iobuffer removed.
 - fd_cat and fd_catn changed signatures.
 - All *_t types renamed to avoid treading on POSIX namespace.
 - subgetopt() renamed to lgetopt().
 - signal functions reworked; skasigaction removed; sig_stack removed
 - Various functions removed: skaoffsetof(), selfpipe_untrap()
 - cdb_make renamed to cdbmake; ui changed to 1=success/0=failure.
 - cdb redesigned. cdb is now fixed, cdb_reader holds the state for cdb_find,
    which puts data pointer and len directly into a cdb_data. A cdb
    is always a map, pointers should always work.
 - cdb_successor removed (unsafe to use); cdb_nextkey changed to
    cdb_traverse_next, which puts key and data into two cdb_data's.
 - cdb does not touch errno anymore.
 - New posixplz function: munmap_void.


In 2.10.0.3
-----------

 - Bugfixes.


In 2.10.0.2
-----------

 - Bugfixes.


In 2.10.0.1
-----------

 - Bugfixes.


In 2.10.0.0
-----------

 - New openc_* functions.
 - New function: ipc_bind_reuse_lock(), taking a lock before
unconditionally deleting the socket.
 - ipc_bind_reuse() rewritten to use ipc_bind_reuse_lock(),
so it does the right thing instead of clobbering sockets.
 - Complete revamping of the pathexec functions, see exec.h.
 - Revamping of the locking functions.
 - Use of standard O_NONBLOCK and O_CLOEXEC instead of adhoc
DJBUNIX_FLAG_NB and DJBUNIX_FLAG_COE.
 - Better header separation; webipc.h removed (stuff moved to
socket.h)
 - New function: mkptemp2(), creating a fifo with a templated
name (like mkptemp) but with options for O_NONBLOCK and O_CLOEXEC.
 - New sysdep to test for chroot().


In 2.9.3.0
----------

 - New stralloc_readyplus_tuned() function.
 - Bugfixes.


In 2.9.2.1
----------

 - Bugfixes.


In 2.9.2.0
----------

 - Bugfixes.
 - New bigkv_* set of functions in libdatastruct.


In 2.9.1.0
----------

 - Bugfixes.
 - Better support for GNU Hurd.
 - Added path_canonicalize().


In 2.9.0.0
----------

 - Bugfixes.
 - Better support of out-of-path toolchains (among other things,
that means better autotools emulation).
 - Build more friendly to recent glibc.
 - Refactoring and optimization of scanning and formatting functions.
 - Refactoring of stopwatch/wallclock functions. The --enable-clock
and --enable-monotonic configure switches have been removed.
tain_now() can now be set at run time to use a wall clock (default,
or via tain_now_set_wallclock()) or a stopwatch (via
tain_now_set_stopwatch()), instead of it being fixed at build time.
 - Easy cross-compilation: no need to provide a whole sysdeps
directory anymore. Only a few sysdeps have to be provided manually,
via a --with-sysdep-K=V option to configure. Currently, that means
one: --with-sysdep-devurandom=yes|no


In 2.8.1.0
----------

 - Added skalibs_regcomp(), accepting empty regexes on BSDs.


In 2.8.0.1
----------

 - Bugfixes.
 - Better reporting in utc_from_tai() and localtm_from_*()


In 2.8.0.0
----------

 - Bugfixes.
 - avltreeb removed. (It used VLAs inside of structures, which is
GNU C, not C99.) The AVLTREEN_DECLARE_AND_INIT() macro should be
used instead.
 - New functions: env_dump(), mk?temp(), autosurf(), autosurf_name()
 - mkdir_unique() removed. (Duplicate functionality with mkdtemp.)
 - ancilautoclose and nbwaitall sysdeps removed.
 - New header: skalibs/posixishard.h
 - Static libraries are now PIC by default.


In 2.7.0.0
----------

 - Bugfixes.
 - New functions: ipc_timed_sendv(), unlink_void(), genset_deepfree(),
gensetdyn_deepfree(), skagetln_loose(), skagetlnsep_loose()
 - dir_close() now returns void and leaves errno unchanged
 - absolutepath(), sarealpath_tmp(), avl*_deletnode(), mininetstring, prot functions removed
 - djbunix.h doesn't include env.h anymore


In 2.6.4.0
----------

 - Bugfixes.
 - New functions: execvep_loose(), byte_zzero(), openb_read(), sig0_scan()
 - New function family: skalibs/genqdyn.h


In 2.6.3.1
----------

 - Bugfixes.


In 2.6.3.0
----------

 - New dir_fd function wrapping dirfd() (Solaris doesn't have dirfd())
 - memmem implementation for platforms that don't provide it.
 - memmem wrappers: byte_search, siovec_search.
 - New functions: atomic_symlink, skagetlnmaxsep, child_spawn3
 - New header: skalibs/posixplz.h, some header reorganization.
 - New family of functions: textmessage and textclient
 - skalibs/environ.h and skalibs/getpeereid.h are now obsolescent.
 - Bugfixes.


In 2.6.2.0
----------

 - New functions: access_at() (MacOS and Solaris don't support faccessat),
skaclient_timed_aflush().
 - stralloc.h and tai.h are suitable for inclusion in C++ headers.
 - New sysdep: SKALIBS_HASODIRECTORY. (MacOS doesn't support O_DIRECTORY.)


In 2.6.1.0
----------

 - New function: lock_unx().


In 2.6.0.2
----------

 - Bugfixes.
 - Optimized packing/unpacking routines.


In 2.6.0.1
----------

 - Better CPPFLAGS/CFLAGS/LDFLAGS management.
 - openwritenclose() and openwritevnclose() now use mkstemp.


In 2.6.0.0
----------

 - Bugfixes.
 - New unixmessage_receiver_hasmsginbuf() function to address an issue
in unixmessage_handle().
 - fd_close() now returns void. This mandates a major version bump.
 - new skalibs_setgroups(), setgroups_with_egid() and setgroups_and_gid()
functions to work around supplementary group mismanagement in... can you
guess what operating system? (You get 3 tries. One for each BSD.)


In 2.5.1.1
----------

 - Bugfixes.


In 2.5.1.0
----------

 - Bugfixes.
 - More workarounds for OpenBSD (who else).
 - More workarounds for sysdeps detection by broken toolchains.
 - Added the xpathexec_* family of functions (in djbunix.h).


In 2.5.0.0
----------

 - Added this NEWS file. :)
 - Dropped support for old versions of OpenBSD (at least 4.9 isn't working
anymore). Newer versions are still supported: 5.7 and up are working.
 - --enable-replace-libc flag dropped. All supported systems now have a
compliant-enough libc for skalibs' purposes.
 - Major types overhaul to be more POSIXly correct. 64-bit operations are
now supported on 64-bit archs where int is 32-bit. Use of POSIX types
wherever important, e.g. where pointers are used: datastruct.h indices,
for instance, are uint32_t. stralloc et al. lengths are size_t.
 - Related API changes: skalibs/ushort.h, skalibs/uint.h and skalibs/ulong.h
have disappeared - replaced with skalibs/types.h that also includes basic
fmtscan support for common POSIX types. The uint16, uint32 and uint64
integer types have disappeared - replaced with stdint.h types. uint64_t is
defined by skalibs/uint64.h when stdint.h omits it.
 - Lots of minor bugfixes and cleanups related to the types system.
 - Better support for getrandom() and arc4random().
