aboutsummaryrefslogtreecommitdiffstats
skalibs: how to upgrade

skalibs
Software
skarnet.org

in 2.15.0.0

  • New family of functions: sassclient and sassserver, working on top of textclient, to factor code for asynchronous helpers like s6-ftrigrd or skadnsd.
  • RPATH can now be disabled at configure time.

in 2.14.5.1

  • No functional changes.

in 2.14.5.0

  • Support for shared libraries on MacOS
  • New skalibs/prog.h header, for PROG modifications
  • New functions: crc32c, symlink_at, mkdirp, atomic_symlink4, mkdirp2, mkntemp, qsortr, bsearchr, env_dump4, socket_tcpdelay

in 2.14.4.0

  • New buffer_timed_getv, buffer_timed_putv, timed_read and timed_readv, timed_write and timed_writev functions.
  • New sysdeps, and new sagetexecname function.

in 2.14.3.0

  • UNIXMESSAGE_MAXFDS decreased to 253.
  • New mininetstring_read() function. (Was previously removed in 2.7.0.0.)
  • New cplz.h header.
  • New fork_newpid function, forking a child in a new PID namespace on Linux.
  • Static libraries now install to /usr/lib by default.

in 2.14.2.0

  • New skalibs/gol.h header, implementing long options.
  • New mkptemp3() function.

in 2.14.1.1

  • No functional changes.

in 2.14.1.0

  • New ip46.h macros: socket_sendnb46_g() and socket_recvnb46_g()

in 2.14.0.1

  • No functional changes.

in 2.14.0.0

  • New selfpipe accessor function: selfpipe_fd()
  • New djbunix functions: slurpn(), openslurpnclose()
  • slurp and openslurpclose are now macros
  • New cdb functions: cdb_hashv(), cdbmake_addv()
  • New cspawn function, for posix_spawn/fork unification
  • child_spawn functions are now declared in cspawn.h
  • New sysdeps for posix_spawn options and more
  • case_lowerb() and friends now use ctype.h functions, supporting locale if it is declared in the application.
  • case_str() removed, strcasestr() fallback implementation added

in 2.13.1.1

  • No functional changes.

in 2.13.1.0

  • New macro: SKALIBS_PATH_MAX

in 2.13.0.0

  • New functions: buffer_timed_put(), buffer_timed_puts().

in 2.12.0.1

  • No functional changes.

in 2.12.0.0

  • random_init() and random_finish() removed, as well as random_char().
  • random_string() renamed to random_buf().
  • random functions now have an early version, to use when randomness is required before the generator can be seeded (i.e. in programs running in the very early boot).
  • New djbunix functions: waitn_posix(), waitn_reap_posix()

in 2.11.2.0

  • User-provided CPPFLAGS, CFLAGS and LDFLAGS are now honored during sysdeps autodetection.
  • envdir_internal() now has a SKALIBS_ENVDIR_NOCLAMP option allowing reading of unlimited-size variables.

in 2.11.1.0

  • fd_close() now chooses to adapt to Linux's close() behaviour (closing the fd on EINTR) over the HP-UX one (not closing it). Destructors like close() being allowed to fail has always been a mistake in the specification and a programming nightmare, making it impossible to behave correctly on all systems, but apparently standardization efforts are on the way and the Linux behaviour seems to be the chosen one.
  • New unix-transactional.h function: opendir_at.

in 2.11.0.0

  • libbiguint removed.
  • Obsolete skalibs/environ.h and skalibs/getpeereid.h headers removed.
  • rc4 and md5 functions removed.
  • iobuffer removed. fd_cat() and fd_catn() changed signatures.
  • All *_t types renamed without the _t suffix, in order to preserve POSIX namespace.
  • subgetopt() renamed to lgetopt().
  • All signal functions entirely reworked; cruft removed.
  • skalibs/cdb_make.h renamed to skalibs/cdbmake.h; cdbmake functions now return 1 on success and 0 on failure.
  • skalibs/cdb.h redesigned to remove reader state from the cdb structure itself.
  • The unsafe cdb_successor() API has been removed.
  • New skalibs/posixplz.h function: munmap_void().

in 2.10.0.3

  • No functional changes.

in 2.10.0.2

  • No functional changes.

in 2.10.0.1

  • No functional changes.

in 2.10.0.0

  • New openc_* functions, which are O_CLOEXEC versions of the djbunix.h open_* functions.
  • New ipc_bind_reuse_lock() function, which takes a lock before deleting a Unix domain socket. The ipc_bind_reuse() function now uses it, so it won't unconditionally clobber sockets in the filesystem anymore.
  • Complete revamping of the pathexec functions, see exec.h.
  • Revamping of the locking functions, see instead of adhoc DJBUNIX_FLAG_NB and DJBUNIX_FLAG_COE.
  • Better header separation; webipc.h removed (stuff moved to socket.h).
  • New mkptemp2() function, creating a fifo with a templated name and an option field for O_NONBLOCK and O_CLOEXEC.
  • New sysdep: chroot, testing whether the system has the chroot() function.

in 2.9.3.0

  • New function: stralloc_readyplus_tuned()

in 2.9.2.1

  • No functional changes.

in 2.9.2.0

  • New functions: bigkv_*

in 2.9.1.0

  • skalibs now works on GNU Hurd without patches.
  • New function: path_canonicalize

in 2.9.0.0

  • Formatting and scanning functions and macros have been refactored.
  • The configure script now emulates autotools-created configure scripts more closely. In particular, it's now possible to declare an out-of-path compiler in CC.
  • tain_* functions dealing with wall clocks and stopwatches have been refactored. The --enable-clock and --enable-monotonic configure switches have been removed. tain_now() can now be told 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.
  • Cross-compilation has been made a lot easier, by removing the need to provide a whole sysdeps directory anymore. Only a few sysdeps - the ones that need code execution on the target to be autodetected - have to be provided manually, via a --with-sysdep-K=V option to configure. Currently, that means one: --with-sysdep-devurandom=yes or --with-sysdep-devurandom=no.

in 2.8.1.0

  • New functions:
    • skalibs_regcomp(), which accepts empty regexes even when regcomp() does not (e.g. the BSDs).

in 2.8.0.1

  • Changes to skalibs/djbtime.h functions that produce UTC time: when a leap second is hit, utc_from_tai() now returns 2, and functions writing a struct tm put 60 into the struct's tm_sec field.

in 2.8.0.0

  • The avltreeb macros have been removed. Instead, the AVLTREEN_DECLARE_AND_INIT() macro has been added.
  • The mkdir_unique() function has been removed. (It duplicated the functionality of the standard mkdtemp() function.)
  • New functions: env_dump(), mk?temp(), autosurf(), autosurf_name()
  • The ancilautoclose and nbwaitall sysdeps have been removed.
  • New header: skalibs/posixishard.h
  • libskarnet.a now builds as PIC by default no matter the toolchain's settings. Use the --disable-all-pic configure option to build static libraries as non-PIC.

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

  • No functional changes.

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

  • No functional changes.

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

  • No functional changes.

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

  • No functional changes.

in 2.4.0.1

  • No functional changes.

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

  • No functional changes.

in 2.3.8.2

  • No functional changes.

in 2.3.8.1

  • No functional changes.

in 2.3.8.0

  • The /etc/leapsecs.dat file is no longer necessary.

in 2.3.7.1

  • No functional changes.

in 2.3.7.0

  • New functions: atomic_rm_rf(), atomic_rm_rf_tmp().

in 2.3.6.1

  • No functional changes.

in 2.3.6.0

  • New function: openreadnclose_nb.

in 2.3.5.2

  • No functional changes.

in 2.3.5.1

  • No functional changes.

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

  • New macro: gid0_scan()

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.