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>