skalibs

Mirror/fork of https://skarnet.org/software/skalibs/
git clone https://ccx.te2000.cz/git/skalibs
Log | Files | Refs | README | LICENSE

upgrade.html (17245B)


      1 <html>
      2   <head>
      3     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      4     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      5     <meta http-equiv="Content-Language" content="en" />
      6     <title>skalibs: how to upgrade</title>
      7     <meta name="Description" content="skalibs: How to upgrade" />
      8     <meta name="Keywords" content="skalibs installation upgrade" />
      9     <!-- <link rel="stylesheet" type="text/css" href="//skarnet.org/default.css" /> -->
     10   </head>
     11 <body>
     12 
     13 <p>
     14 <a href="index.html">skalibs</a><br />
     15 <a href="//skarnet.org/software/">Software</a><br />
     16 <a href="//skarnet.org/">skarnet.org</a>
     17 </p>
     18 
     19 <h2> in 2.14.2.0 </h2>
     20 
     21 <ul>
     22  <li> New <tt>skalibs/gol.h</tt> header, implementing long options. </li>
     23  <li> New <tt>mkptemp3()</tt> function. </li>
     24 </ul>
     25 
     26 <h2> in 2.14.1.1 </h2>
     27 
     28 <ul>
     29  <li> No functional changes. </li>
     30 </ul>
     31 
     32 <h2> in 2.14.1.0 </h2>
     33 
     34 <ul>
     35  <li> New <tt>ip46.h</tt> macros:
     36 <tt>socket_sendnb46_g()</tt> and <tt>socket_recvnb46_g()</tt> </li>
     37 </ul>
     38 
     39 <h2> in 2.14.0.1 </h2>
     40 
     41 <ul>
     42  <li> No functional changes. </li>
     43 </ul>
     44 
     45 <h2> in 2.14.0.0 </h2>
     46 
     47 <ul>
     48  <li> New selfpipe accessor function: <tt>selfpipe_fd()</tt> </li>
     49  <li> New djbunix functions: <tt>slurpn()</tt>, <tt>openslurpnclose()</tt> </li>
     50  <li> <tt>slurp</tt> and <tt>openslurpclose</tt> are now macros </tt> </li>
     51  <li> New cdb functions: <tt>cdb_hashv()</tt>, <tt>cdbmake_addv()</tt> </li>
     52  <li> New <tt>cspawn</tt> function, for posix_spawn/fork unification </li>
     53  <li> <tt>child_spawn</tt> functions are now declared in <tt>cspawn.h</tt> </li>
     54  <li> New sysdeps for posix_spawn options and more </li>
     55  <li> <tt>case_lowerb() and friends now use ctype.h functions, supporting locale
     56 if it is declared in the application. </li>
     57  <li> <tt>case_str()</tt> removed, strcasestr() fallback implementation added </li>
     58 </ul>
     59 
     60 <h2> in 2.13.1.1 </h2>
     61 
     62 <ul>
     63  <li> No functional changes. </li>
     64 </ul>
     65 
     66 <h2> in 2.13.1.0 </h2>
     67 
     68 <ul>
     69  <li> New macro: <tt>SKALIBS_PATH_MAX</tt> </li>
     70 </ul>
     71 
     72 <h2> in 2.13.0.0 </h2>
     73 
     74 <ul>
     75  <li> New functions: <tt>buffer_timed_put()</tt>, <tt>buffer_timed_puts()</tt>. </li>
     76 </ul>
     77 
     78 <h2> in 2.12.0.1 </h2>
     79 
     80 <ul>
     81  <li> No functional changes. </li>
     82 </ul>
     83 
     84 <h2> in 2.12.0.0 </h2>
     85 
     86 <ul>
     87  <li> <tt>random_init()</tt> and <tt>random_finish()</tt> removed,
     88 as well as <tt>random_char()</tt>. </li>
     89  <li> <tt>random_string()</tt> renamed to <tt>random_buf()</tt>. </li>
     90  <li> random functions now have an <tt>early</tt> version, to use when
     91 randomness is required before the generator can be seeded (i.e. in
     92 programs running in the very early boot). </li>
     93  <li> New <a href="libstddjb/djbunix.html">djbunix</a> functions:
     94 <tt>waitn_posix()</tt>, <tt>waitn_reap_posix()</tt> </li>
     95 </ul>
     96 
     97 <h2> in 2.11.2.0 </h2>
     98 
     99 <ul>
    100  <li> User-provided CPPFLAGS, CFLAGS and LDFLAGS are now honored during
    101 sysdeps autodetection. </li>
    102  <li> <tt>envdir_internal()</tt> now has a SKALIBS_ENVDIR_NOCLAMP option
    103 allowing reading of unlimited-size variables. </li>
    104 </ul>
    105 
    106 <h2> in 2.11.1.0 </h2>
    107 
    108 <ul>
    109  <li> <tt>fd_close()</tt> now chooses to adapt to Linux's
    110 <a href="https://man7.org/linux/man-pages/man2/close.2.html">close()</a>
    111 behaviour (closing the fd on EINTR) over the HP-UX one (not closing it).
    112 Destructors like
    113 <a href="https://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html">close()</a>
    114 being allowed to fail has always been a mistake in the specification and a
    115 programming nightmare, making it impossible to behave correctly on all
    116 systems, but apparently standardization efforts are on the way and the Linux
    117 behaviour seems to be the chosen one. </li>
    118  <li> New <tt>unix-transactional.h</tt> function: <tt>opendir_at</tt>. </li>
    119 </ul>
    120 
    121 <h2> in 2.11.0.0 </h2>
    122 
    123 <ul>
    124  <li> <tt>libbiguint</tt> removed. </li>
    125  <li> Obsolete <tt>skalibs/environ.h</tt> and <tt>skalibs/getpeereid.h</tt> headers removed. </li>
    126  <li> rc4 and md5 functions removed. </li>
    127  <li> iobuffer removed. <tt>fd_cat()</tt> and <tt>fd_catn()</tt> changed signatures. </li>
    128  <li> All <tt>*_t</tt> types renamed without the <tt>_t</tt> suffix,
    129 in order to preserve POSIX namespace. </li>
    130  <li> <tt>subgetopt()</tt> renamed to <tt>lgetopt()</tt>. </li>
    131  <li> All signal functions entirely reworked; cruft removed. </li>
    132  <li> <tt>skalibs/cdb_make.h</tt> renamed to <tt>skalibs/cdbmake.h</tt>;
    133  <tt>cdbmake</tt> functions now return 1 on success and 0 on failure. </li>
    134  <li> <tt>skalibs/cdb.h</tt> redesigned to remove reader state from the
    135 cdb structure itself. </li>
    136  <li> The unsafe <tt>cdb_successor()</tt> API has been removed.
    137  <li> New <tt>skalibs/posixplz.h</tt> function: munmap_void()</tt>. </li>
    138 </ul>
    139 
    140 <h2> in 2.10.0.3 </h2>
    141 
    142 <ul>
    143  <li> No functional changes. </li>
    144 </ul>
    145 
    146 <h2> in 2.10.0.2 </h2>
    147 
    148 <ul>
    149  <li> No functional changes. </li>
    150 </ul>
    151 
    152 <h2> in 2.10.0.1 </h2>
    153 
    154 <ul>
    155  <li> No functional changes. </li>
    156 </ul>
    157 
    158 <h2> in 2.10.0.0 </h2>
    159 
    160 <ul>
    161  <li> New <tt>openc_*</tt> functions, which are O_CLOEXEC versions of the
    162 <a href="libstddjb/djbunix.html">djbunix.h</a> <tt>open_*</tt> functions. </li>
    163  <li> New <tt>ipc_bind_reuse_lock()</tt> function, which takes a lock before
    164 deleting a Unix domain socket. The <tt>ipc_bind_reuse()</tt> function now
    165 uses it, so it won't unconditionally clobber sockets in the filesystem anymore. </li>
    166  <li> Complete revamping of the pathexec functions, see <tt>exec.h</tt>. </li>
    167  <li> Revamping of the locking functions, see
    168 <a href="libstddjb/djbunix.html>djbunix.h</a>. </li>
    169  <li> Use of standard O_NONBLOCK and O_CLOEXEC (defined in
    170 <a href="https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/fcntl.h.html"></a>
    171 instead of adhoc <tt>DJBUNIX_FLAG_NB</tt> and <tt>DJBUNIX_FLAG_COE</tt>. </li>
    172  <li>Better header separation; <tt>webipc.h</tt> removed (stuff moved to
    173 <tt>socket.h</tt>). </li>
    174  <li> New <tt>mkptemp2()</tt> function, creating a fifo with a templated name
    175 and an option field for O_NONBLOCK and O_CLOEXEC. </li>
    176  <li> New sysdep: <tt>chroot</tt>, testing whether the system has the
    177 <tt>chroot()</tt> function. </li>
    178 </ul>
    179 
    180 <h2> in 2.9.3.0 </h2>
    181 
    182 <ul>
    183  <li> New function: <tt>stralloc_readyplus_tuned()</tt> </li>
    184 </ul>
    185 
    186 <h2> in 2.9.2.1 </h2>
    187 
    188 <ul>
    189  <li> No functional changes. </li>
    190 </ul>
    191 
    192 <h2> in 2.9.2.0 </h2>
    193 
    194 <ul>
    195  <li> New functions: <tt>bigkv_*</tt> </li>
    196 </ul>
    197 
    198 <h2> in 2.9.1.0 </h2>
    199 
    200 <ul>
    201  <li> skalibs now works on GNU Hurd without patches. </li>
    202  <li> New function: <tt>path_canonicalize</tt> </li>
    203 </ul>
    204 
    205 <h2> in 2.9.0.0 </h2>
    206 
    207 <ul>
    208  <li> Formatting and scanning functions and macros have been refactored. </li>
    209  <li> The configure script now emulates autotools-created configure scripts
    210 more closely. In particular, it's now possible to declare an out-of-path
    211 compiler in <tt>CC</tt>. </li>
    212  <li> <tt>tain_*</tt> functions dealing with wall clocks and stopwatches
    213 have been refactored. The <tt>--enable-clock</tt> and <tt>--enable-monotonic</tt>
    214 configure switches have been removed. <tt>tain_now()</tt> can now be told at run
    215 time to use a wall clock (default, or via <tt>tain_now_set_wallclock()</tt>) or a
    216 stopwatch (via <tt>tain_now_set_stopwatch()</tt>), instead of it being fixed at
    217 build time. </li>
    218  <li> Cross-compilation has been made a lot easier, by removing the need to
    219 provide a whole sysdeps directory anymore. Only a few sysdeps - the ones that
    220 need code execution on the target to be autodetected - have to be provided manually,
    221 via a <tt>--with-sysdep-<em>K</em>=<em>V</em></tt> option to configure.
    222 Currently, that means one: <tt>--with-sysdep-devurandom=yes</tt> or
    223 <tt>--with-sysdep-devurandom=no</tt>. </li>
    224 </ul>
    225 
    226 <h2> in 2.8.1.0 </h2>
    227 
    228 <ul>
    229  <li> New functions:
    230   <ul>
    231    <li> <tt>skalibs_regcomp()</tt>, which accepts empty regexes even
    232 when <a href="https://pubs.opengroup.org/onlinepubs/9699919799/functions/regcomp.html">regcomp()</a>
    233 does not (e.g. the BSDs). </li>
    234   </ul> </li>
    235 </ul>
    236 
    237 <h2> in 2.8.0.1 </h2>
    238 
    239 <ul>
    240  <li> Changes to <a href="djbtime.html">skalibs/djbtime.h</a> functions
    241 that produce UTC time: when a leap second is hit, <tt>utc_from_tai()</tt>
    242 now returns 2, and functions writing a <tt>struct tm</tt> put 60 into
    243 the struct's <tt>tm_sec</tt> field.</li>
    244 </ul>
    245 
    246 <h2> in 2.8.0.0 </h2>
    247 
    248 <ul>
    249  <li> The avltreeb macros have been removed. Instead, the
    250 <tt>AVLTREEN_DECLARE_AND_INIT()</tt> macro has been added. </li>
    251  <li> The <tt>mkdir_unique()</tt> function has been removed.
    252 (It duplicated the functionality of the standard <tt>mkdtemp()</tt>
    253 function.) </li>
    254  <li> New functions: <tt>env_dump()</tt>, <tt>mk?temp()</tt>,
    255 <tt>autosurf()</tt>, <tt>autosurf_name()</tt> </li>
    256  <li> The ancilautoclose and nbwaitall sysdeps have been removed. </li>
    257  <li> New header: <tt>skalibs/posixishard.h</tt> </li>
    258  <li> <tt>libskarnet.a</tt> now builds as PIC by default no matter
    259 the toolchain's settings. Use the <tt>--disable-all-pic</tt> configure
    260 option to build static libraries as non-PIC. </li>
    261 </ul>
    262 
    263 <h2> in 2.7.0.0 </h2>
    264 
    265 <ul>
    266  <li> New functions: <tt>ipc_timed_sendv()</tt>, <tt>unlink_void()</tt>,
    267 <tt>skagetln_loose()</tt>, <tt>skagetlnsep_loose()</tt>,
    268 <tt>genset_deepfree()</tt>, <tt>gensetdyn_deepfree()</tt> </li>
    269  <li> The <a href="libstddjb/djbunix.html">dir_close()</a> function now returns void
    270 and leaves errno unchanged. </li>
    271  <li> The <tt>absolutepath()</tt> and <tt>sarealpath_tmp()</tt> functions, as well
    272 as the <tt>avl*_deletenode()</tt>, <tt>skalibs/mininetstring.h</tt> and <em>prot</em>
    273 families of functions, have been removed. </li>
    274  <li> <a href="libstddjb/djbunix.html">skalibs/djbunix.h</a> does not include
    275 <tt>skalibs/env.h</tt> anymore. </li>
    276 </ul>
    277 
    278 <h2> in 2.6.4.0 </h2>
    279 
    280 <ul>
    281  <li> New functions: <a href="libstddjb/djbunix.html">execvep_loose()</a>,
    282 <tt>byte_zzero()</tt>, <a href="libstddjb/djbunix.html">openb_read()</a>,
    283 <tt>sig0_scan</tt> </li>
    284  <li> New family of functions: <a href="libdatastruct/genqdyn.html">skalibs/genqdyn.h</a> </li>
    285 </ul>
    286 
    287 <h2> in 2.6.3.1 </h2>
    288 
    289 <ul>
    290  <li> No functional changes. </li>
    291 </ul>
    292 
    293 <h2> in 2.6.3.0 </h2>
    294 
    295 <ul>
    296  <li> New dir_fd function wrapping dirfd() (Solaris doesn't have dirfd()). </li>
    297  <li> memmem implementation for platforms that don't provide it. </li>
    298  <li> memmem wrappers: byte_search, siovec_search. </li>
    299  <li> New functions: atomic_symlink, skagetlnmaxsep, child_spawn3 </li>
    300  <li> New header: <tt>skalibs/posixplz.h</tt>. Some header reorganization. </li>
    301  <li> New family of functions: <tt>skalibs/textmessage.h</tt>, <tt>skalibs/textclient.h</tt> </li>
    302  <li> <tt>skalibs/environ.h</tt> and <tt>skalibs/getpeereid.h</tt> are now obsolescent. </li>
    303 </ul>
    304 
    305 <h2> in 2.6.2.0 </h2>
    306 
    307 <ul>
    308  <li> New functions: access_at(), skaclient_timed_aflush(). </li>
    309 </ul>
    310 
    311 <h2> in 2.6.1.0 </h2>
    312 
    313 <ul>
    314  <li> New function: <a href="libstddjb/djbunix.html">lock_unx()</a>. </li>
    315 </ul>
    316 
    317 <h2> in 2.6.0.2 </h2>
    318 
    319 <ul>
    320  <li> No functional changes. </li>
    321 </ul>
    322 
    323 <h2> in 2.6.0.1 </h2>
    324 
    325 <ul>
    326  <li> <tt>openwritenclose()</tt> and <tt>openwritevnclose()</tt> now use
    327 <a href="https://pubs.opengroup.org/onlinepubs/9699919799/functions/mkstemp.html">mkstemp()</a>
    328 instead of relying on an unpredictable name (which required a random
    329 generator to be fully initialized). </li>
    330 </ul>
    331 
    332 
    333 <h2> in 2.6.0.0 </h2>
    334 
    335 <ul>
    336  <li> New functions: <tt>unixmessage_receiver_hasmsginbuf()</tt>,
    337 <tt>skalibs_setgroups()</tt>, <tt>setgroups_with_egid()</tt>,
    338 <tt>setgroups_and_gid()</tt>. The <tt>setgroups_and_gid()</tt>
    339 function is the one that should be used, if possible: it does the
    340 right thing even on the BSDs. (That's an achievement.) </li>
    341 </ul>
    342 
    343 <h2> in 2.5.1.1 </h2>
    344 
    345 <ul>
    346  <li> No functional changes. </li>
    347 </ul>
    348 
    349 <h2> in 2.5.1.0 </h2>
    350 
    351 <ul>
    352  <li> The <tt>xpathexec_*</tt> family of functions has been added to
    353 <a href="libstddjb/djbunix.html">skalibs/djbunix.h</a>. </li>
    354 </ul>
    355 
    356 <h1> What has changed in skalibs </h1>
    357 
    358 <h2> in 2.5.0.0 </h2>
    359 
    360 <ul>
    361  <li> Support for old versions of OpenBSD dropped. At least OpenBSD 5.7
    362 and newer are still supported. </li>
    363  <li> <tt>--enable-replace-libc</tt> compilation flag dropped </li>
    364  <li> <tt>skalibs/ushort.h</tt>, <tt>skalibs/uint.h</tt> and <tt>skalibs/ulong.h</tt>
    365 removed. <tt>skalibs/types.h</tt> is now a generic header for fmtscan primitives
    366 for various types. </li>
    367  <li> <tt>uint16</tt>, <tt>uint32</tt> and <tt>uint64</tt> types replaced with POSIX
    368 <tt>uint16_t</tt>, <tt>uint32_t</tt> and <tt>uint64_t</tt>. </li>
    369  <li> APIs changed across all skalibs functions to support more POSIXly correct
    370 types. Main benefit: correct 64-bit support on 64-bit archs with 32-bit int. </li>
    371 </ul>
    372 
    373 <h2> in 2.4.0.2 </h2>
    374 
    375 <ul>
    376  <li> No functional changes. </li>
    377 </ul>
    378 
    379 <h2> in 2.4.0.1 </h2>
    380 
    381 <ul>
    382  <li> No functional changes. </li>
    383 </ul>
    384 
    385 <h2> in 2.4.0.0 </h2>
    386 
    387 <ul>
    388  <li> More support for advanced fd callbacks in <tt>unixmessage_sender</tt> and <tt>unixconnection</tt>. </li>
    389  <li> <tt>ipc_timed_send()</tt>, <tt>ipc_timed_recv()</tt> </li>
    390  <li> rt.lib sysdep removed; spawn.lib and timer.lib sysdeps added </li>
    391  <li> Leap second for 2016-12-31 23:59:60 UTC added </li>
    392  <li> Complete <a href="librandom/">librandom</a> rewrite </li>
    393  <li> <a href="libstddjb/alarm.html">skalibs/alarm.h</a> added </li>
    394 </ul>
    395 
    396 <h2> in 2.3.10.0 </h2>
    397 
    398 <ul>
    399  <li> Support for advanced fd callbacks in <tt>unixmessage_sender</tt>. </li>
    400 </ul>
    401 
    402 <h2> in 2.3.9.0 </h2>
    403 
    404 <ul>
    405  <li> New functions: <tt>bitarray_firstclear_skip</tt> and
    406 <tt>bitarray_firstset_skip</tt>. </li>
    407 </ul>
    408 
    409 <h2> in 2.3.8.3 </h2>
    410 
    411 <ul>
    412  <li> No functional changes. </li>
    413 </ul>
    414 
    415 <h2> in 2.3.8.2 </h2>
    416 
    417 <ul>
    418  <li> No functional changes. </li>
    419 </ul>
    420 
    421 <h2> in 2.3.8.1 </h2>
    422 
    423 <ul>
    424  <li> No functional changes. </li>
    425 </ul>
    426 
    427 <h2> in 2.3.8.0 </h2>
    428 
    429 <ul>
    430  <li> The <tt>/etc/leapsecs.dat</tt> file is no longer necessary. </li>
    431 </ul>
    432 
    433 <h2> in 2.3.7.1 </h2>
    434 
    435 <ul>
    436  <li> No functional changes. </li>
    437 </ul>
    438 
    439 <h2> in 2.3.7.0 </h2>
    440 
    441 <ul>
    442  <li> New functions: <tt>atomic_rm_rf()</tt>, <tt>atomic_rm_rf_tmp()</tt>. </li>
    443 </ul>
    444 
    445 <h2> in 2.3.6.1 </h2>
    446 
    447 <ul>
    448  <li> No functional changes. </li>
    449 </ul>
    450 
    451 <h2> in 2.3.6.0 </h2>
    452 
    453 <ul>
    454  <li> New function: <tt>openreadnclose_nb</tt>. </li>
    455 </ul>
    456 
    457 <h2> in 2.3.5.2 </h2>
    458 
    459 <ul>
    460  <li> No functional changes. </li>
    461 </ul>
    462 
    463 <h2> in 2.3.5.1 </h2>
    464 
    465 <ul>
    466  <li> No functional changes. </li>
    467 </ul>
    468 
    469 <h2> in 2.3.5.0 </h2>
    470 
    471 <ul>
    472  <li> New functions: <tt>bitarray_count()</tt>, <tt>openwritevnclose_at()</tt> </li>
    473 </ul>
    474 
    475 <h2> in 2.3.4.0 </h2>
    476 
    477 <ul>
    478  <li> New function: <tt>stat_at()</tt> </li>
    479  <li> The rest of the changes are bugfixes or QoL. </li>
    480 </ul>
    481 
    482 <h2> in 2.3.3.0 </h2>
    483 
    484 <ul>
    485  <li> New sha512 functions, see <tt>skalibs/sha512.h</tt> </li>
    486 </ul>
    487 
    488 <h2> in 2.3.2.0 </h2>
    489 
    490 <ul>
    491  <li> New macro: <tt>gid0_scan()</tt> </li>
    492 </ul>
    493 
    494 <h2> in 2.3.1.3 </h2>
    495 
    496 <ul>
    497  <li> Bugfix release, no functional changes. </li>
    498 </ul>
    499 
    500 <h2> in 2.3.1.2 </h2>
    501 
    502 <ul>
    503  <li> The child_spawn* family of functions now resets all signals
    504 to their default values when spawning a program on systems with
    505 <a href="https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn.html">posix_spawn()</a>.
    506 This should not change anything - it's just paranoia. </li>
    507  <li> Minor bugfixes. </li>
    508 </ul>
    509 
    510 <h2> in 2.3.1.1 </h2>
    511 
    512 <ul>
    513  <li> Bugfix release, no functional changes. </li>
    514 </ul>
    515 
    516 <h2> in 2.3.1.0 </h2>
    517 
    518 <ul>
    519  <li> wait_status() now returns 256 + signal number when WIFSIGNALED(). </li>
    520  <li> new macro wait_estatus() to get WIFSIGNALED information in an exit code. </li>
    521  <li> new functions in djbunix.h: hiercopy(), hiercopy_tmp() </li>
    522 </ul>
    523 
    524 <h2> in 2.3.0.1 </h2>
    525 
    526 <ul>
    527  <li> wait_status() now returns 256 (instead of 126) when WIFSIGNALED(). </li>
    528 </ul>
    529 
    530 <h2> in 2.3.0.0 </h2>
    531 
    532 <ul>
    533  <li> buffer_getvall and buffer_putvall have a different interface. (And now work.) </li>
    534  <li> buffer_read and buffer_write are now deprecated. </li>
    535  <li> various siovec additions, such as siovec_trunc </li>
    536 </ul>
    537 
    538 <h2> in 2.2.1.0 </h2>
    539 
    540 <ul>
    541  <li> unixconnection added. </li>
    542  <li> sig_name and sig_number added. </li>
    543 </ul>
    544 
    545 <h2> in 2.2.0.0 </h2>
    546 
    547 <ul>
    548  <li> TAI64 and TAI64N conversion functions revisited.
    549 API slightly changed, made more consistent. </li>
    550 </ul>
    551 
    552 <h2> in 2.1.0.0 </h2>
    553 
    554 <ul>
    555  <li> unixmessage_drop added, part of unixmessage/skaclient hardening against fd leakage </li>
    556  <li> unixmessage_sender_flush return code aligned with the convention in the rest of skalibs </li>
    557  <li> unixmessage_sender_flush now handles short writes </li>
    558  <li> skaclient_start(_async) prototype changed: now takes an option argument </li>
    559 </ul>
    560 
    561 <h2> in 2.0.0.0 </h2>
    562 
    563 <ul>
    564  <li> The packaging system has completely changed. </li>
    565  <li> Programs should now link with <tt>-lskarnet</tt> followed by the appropriate
    566 sysdeps links. </li>
    567  <li> No compatibility is ensured. Most APIs haven't changed, but no guarantee
    568 is offered. </li>
    569  <li> The most important change is probably the disparition of <tt>struct tai</tt>
    570 and <tt>struct taia</tt>, replaced with the <tt>tai_t</tt> and <tt>tain_t</tt>
    571 types. Attosecond precision has been removed - processor speed is almost capped now,
    572 and it looks like nanosecond precision will be enough for the foreseeable future. </li>
    573  <li> Buffer implementation has changed, and some interfaces too, mainly the
    574 buffer_flush and bufalloc_flush return code. </li>
    575  <li> skaclient, skalibs' client-server communication suite, has been
    576 entirely reimplemented: it's now using the new "unixmessage" set of primitives
    577 for easier fd-passing. </li>
    578 </ul>
    579 
    580 </body>
    581 </html>