skalibs
Software
skarnet.org
 in 2.7.0.0 
 -  New functions: ipc_timed_sendv(), unlink_void(),
skagetln_loose(), skagetlnsep_loose(),
genset_deepfree(), gensetdyn_deepfree() 
-  The dir_close() function now returns void
and leaves errno unchanged. 
-  The absolutepath() and sarealpath_tmp() functions, as well
as the avl*_deletenode(), skalibs/mininetstring.h and prot
families of functions, have been removed. 
-  skalibs/djbunix.h does not include
skalibs/env.h anymore. 
 in 2.6.4.0 
 in 2.6.3.1 
 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: skalibs/textmessage.h, skalibs/textclient.h 
-  skalibs/environ.h and skalibs/getpeereid.h are now obsolescent. 
 in 2.6.2.0 
 -  New functions: access_at(), skaclient_timed_aflush(). 
 in 2.6.1.0 
 in 2.6.0.2 
 in 2.6.0.1 
 -  openwritenclose() and openwritevnclose() now use
mkstemp()
instead of relying on an unpredictable name (which required a random
generator to be fully initialized). 
 in 2.6.0.0 
 -  New functions: unixmessage_receiver_hasmsginbuf(),
skalibs_setgroups(), setgroups_with_egid(),
setgroups_and_gid(). The setgroups_and_gid()
function is the one that should be used, if possible: it does the
right thing even on the BSDs. (That's an achievement.) 
 in 2.5.1.1 
 in 2.5.1.0 
 What has changed in skalibs 
 in 2.5.0.0 
 -  Support for old versions of OpenBSD dropped. At least OpenBSD 5.7
and newer are still supported. 
-  --enable-replace-libc compilation flag dropped 
-  skalibs/ushort.h, skalibs/uint.h and skalibs/ulong.h
removed. skalibs/types.h is now a generic header for fmtscan primitives
for various types. 
-  uint16, uint32 and uint64 types replaced with POSIX
uint16_t, uint32_t and uint64_t. 
-  APIs changed across all skalibs functions to support more POSIXly correct
types. Main benefit: correct 64-bit support on 64-bit archs with 32-bit int. 
 in 2.4.0.2 
 in 2.4.0.1 
 in 2.4.0.0 
 -  More support for advanced fd callbacks in unixmessage_sender and unixconnection. 
-  ipc_timed_send(), ipc_timed_recv() 
-  rt.lib sysdep removed; spawn.lib and timer.lib sysdeps added 
-  Leap second for 2016-12-31 23:59:60 UTC added 
-  Complete librandom rewrite 
-  skalibs/alarm.h added 
 in 2.3.10.0 
 -  Support for advanced fd callbacks in unixmessage_sender. 
 in 2.3.9.0 
 -  New functions: bitarray_firstclear_skip and
bitarray_firstset_skip. 
 in 2.3.8.3 
 in 2.3.8.2 
 in 2.3.8.1 
 in 2.3.8.0 
 -  The /etc/leapsecs.dat file is no longer necessary. 
 in 2.3.7.1 
 in 2.3.7.0 
 -  New functions: atomic_rm_rf(), atomic_rm_rf_tmp(). 
 in 2.3.6.1 
 in 2.3.6.0 
 -  New function: openreadnclose_nb. 
 in 2.3.5.2 
 in 2.3.5.1 
 in 2.3.5.0 
 -  New functions: bitarray_count(), openwritevnclose_at() 
 in 2.3.4.0 
 -  New function: stat_at() 
-  The rest of the changes are bugfixes or QoL. 
 in 2.3.3.0 
 -  New sha512 functions, see skalibs/sha512.h 
 in 2.3.2.0 
 in 2.3.1.3 
 -  Bugfix release, no functional changes. 
 in 2.3.1.2 
 -  The child_spawn* family of functions now resets all signals
to their default values when spawning a program on systems with
posix_spawn().
This should not change anything - it's just paranoia. 
-  Minor bugfixes. 
 in 2.3.1.1 
 -  Bugfix release, no functional changes. 
 in 2.3.1.0 
 -  wait_status() now returns 256 + signal number when WIFSIGNALED(). 
-  new macro wait_estatus() to get WIFSIGNALED information in an exit code. 
-  new functions in djbunix.h: hiercopy(), hiercopy_tmp() 
 in 2.3.0.1 
 -  wait_status() now returns 256 (instead of 126) when WIFSIGNALED(). 
 in 2.3.0.0 
 -  buffer_getvall and buffer_putvall have a different interface. (And now work.) 
-  buffer_read and buffer_write are now deprecated. 
-  various siovec additions, such as siovec_trunc 
 in 2.2.1.0 
 -  unixconnection added. 
-  sig_name and sig_number added. 
 in 2.2.0.0 
 -  TAI64 and TAI64N conversion functions revisited.
API slightly changed, made more consistent. 
 in 2.1.0.0 
 -  unixmessage_drop added, part of unixmessage/skaclient hardening against fd leakage 
-  unixmessage_sender_flush return code aligned with the convention in the rest of skalibs 
-  unixmessage_sender_flush now handles short writes 
-  skaclient_start(_async) prototype changed: now takes an option argument 
 in 2.0.0.0 
 -  The packaging system has completely changed. 
-  Programs should now link with -lskarnet followed by the appropriate
sysdeps links. 
-  No compatibility is ensured. Most APIs haven't changed, but no guarantee
is offered. 
-  The most important change is probably the disparition of struct tai
and struct taia, replaced with the tai_t and tain_t
types. Attosecond precision has been removed - processor speed is almost capped now,
and it looks like nanosecond precision will be enough for the foreseeable future. 
-  Buffer implementation has changed, and some interfaces too, mainly the
buffer_flush and bufalloc_flush return code. 
-  skaclient, skalibs' client-server communication suite, has been
entirely reimplemented: it's now using the new "unixmessage" set of primitives
for easier fd-passing.