[announce] skarnet.org Spring 2017 release

From: Laurent Bercot <ska-skaware_at_skarnet.org>
Date: Mon, 27 Mar 2017 20:47:18 +0000

  New releases of the skarnet.org packages are available, with
internal changes (if few externally visible changes). This is a major
version bump for all packages: compatibility with previous versions is
not guaranteed.

  * General

  - Support for old versions of OpenBSD has been dropped. Newer versions
OpenBSD are still supported: 5.7 and later are fine. Please upgrade your
system if you have an OpenBSD version older than 5.7.

  * skalibs-

  - --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
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.

  This is the main reason for the massive release and the major version
this is an API and an ABI change, and all packages depending on skalibs
must be updated. From a functional point of view, there's no real
difference, but from a correctness point of view, the change was long
overdue - I kept delaying it for years because it was a massive amount
of grunt work. Now that's finally done and skalibs is in a much better
place than before.

  - Related API changes: skalibs/ushort.h, skalibs/uint.h and
have disappeared - replaced with skalibs/types.h that also includes
fmtscan support for common POSIX types. The uint16, uint32 and uint64
integer types have disappeared - replaced with stdint.h types. uint64_t
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().


  * execline-

  - Compatibility with skalibs-

  - The "import" command is now marked as obsolescent, and will disappear
in a future version of execline. Instead of "import FOO", you can use
"importas FOO FOO" in your scripts. Starting in execline-,
every use of the "import" command prints a warning message to stderr.

  I hate that I have to do this, but I'm getting constant complaints
about a conflict between execline's import and ImageMagick's import, and
the "workaround" that people naturally tend to do *breaks* execline and
So I caved in and decided to deprecate execline's import, so this
conflict can be avoided.

  However, this does not solve the underlying issue, which is that the
does not handle well multiple packages that export binaries with the
name; the problem is bound to reproduce sooner or later, and I will not
always yield the way to other packages. The real solution is to use a
different file hierarchy policy; installing skarnet.org software
to the slashpackage convention (--enable-slashpackage), for instance, is
one way of achieving that.


  * s6-

  - Compatibility with skalibs-

  - Services can now report permanent failure by having a ./finish
script exit 125.

  - s6-svwait, s6-svlisten and s6-svlisten1 now have for exitcode the
number of services that reported permanent failure. On timeout, they
exit 99. (Yes, this is ambiguous if you're simultaneously testing
99 services or more. I got 99 problems but this ambiguity ain't one.)

  - When a service has a ./nosetsid file that contains "setpgrp", it
is run in a new process group, but not in a new session. If the
./nosetsid file contains anything else, the service is run in the
same session and process group as the supervisor, and if there is
no such file, it's run in a new session (same behaviour as before).

  - s6-log now writes a warning to stderr when it closes the stdout

  - s6-log's individual file size limit bumped to 256 MB.

  - Various bugfixes.


  * s6-rc-

  - Compatibility with skalibs-

  - s6-rc now fails longrun "up" transitions instantly if the longrun
reports permanent failure. (See above.)

  - s6-rc commands taking a lock on the live directory or the service
database now fail instantly if they're already locked. A -b option
has been added to give them the "block and wait for the lock to be
released" behaviour back.

  - Easier external interaction with the hidden s6rc-fdholder
service: the list of pipes to autofill a new fdholder with is now
taken from the data/autofilled file. (It previously was a hardcoded
command line in the s6rc-fdholder run script). This should not be
relied on yet because the hidden s6rc-fdholder service is not part of
the official API, but there would be benefits in making it so - this
is essentially a preparatory step.


  * s6-portable-utils-

  - Compatibility with skalibs-


  * s6-linux-utils-

  - Compatibility with skalibs-


  * s6-linux-init-

  - Compatibility with skalibs-


  * s6-dns-

  - Compatibility with skalibs-

  - Fixed a long-standing bug that sometimes prevented DNS reply headers
from being correctly decoded on big-endian machines (and could make a
DNS query timeout because the reply wasn't recognized).


  * s6-networking-

  - Compatibility with skalibs-

  - Compatibility with bearssl-0.3. Client certificates still not
with the bearssl backend. (It's technically possible to support client
certificates with bearssl-0.3, but very tedious because the API is low
level. The author of bearssl has agreed that a higher-level API for
client certificates is something that bearssl could and should provide;
I'm waiting for that higher-level API before implementing support in

  - Fixed a bug where s6-tlsc or s6-tlsd would sometimes fail to detect
application death and hang around forever with a zombie child.

  - s6-tlsd's -Y option now means "ask for an optional client
This is, for now, only supported with the libressl backend.


  Bug-reports welcome.

Received on Mon Mar 27 2017 - 20:47:18 UTC

This archive was generated by hypermail 2.3.0 : Sun May 09 2021 - 19:44:19 UTC