0.17:
  add Linux SIGIO support to IO
  expand IO api to be able to cope with edge triggered event
    notification: introduce io_eagain
  the integer scan routines should only write *dest if they actually
    scanned something
  io_sendfile and iob_send should return -1 to -3 just like io_trywrite
  make io_waituntil actually take an "until", not a "how long"
  turns out that BSD kqueue is actually Free/OpenBSD kqueue -- NetBSD
    doesn't have it.  That means I'll need some adaptive two-threads-
    running-poll approach to get C10k type scalability on NetBSD :-(
  turns out that BSD sendfile is actually FreeBSD sendfile -- neither
    OpenBSD nor NetBSD have it (as of 3.4 and 1.6.1).  That means I'll
    need to try using mmap on OpenBSD and NetBSD to get zero-copy TCP.
  guard against same event being signalled twice (confused our list
    handling)
  add support for Solaris /dev/poll
  add lose32 support (broken, please don't use!)
  head -1 -> head -n 1
  apending 0 bytes to an empty array would fail it
  remove socket_sendfile now that we have io_sendfile
  break out alloca #include dependency into havealloca.h
  support HP-UX sendfile64 (thanks to Rolf Eike Beer)
  support Solaris sendfile64
  support MacOS X sendfile (and comment it out again, the headers
    declare it but it's not actually there) (thanks to Bernhard Schmidt)
  support AIX 5 (thanks to Lutz Chwala and Arthur Erhardt)
  fix ip6_fmt (martin paljak)

0.16:
  add buffer_fromsa (make buffer from stralloc)
  add API for integer multiply with overflow detection
  change length counters from int to long for 64-bit platforms
  add array API from http://cr.yp.to/lib/array.html
  oops, had a declaration and man page for taia_addsec but not the
    function itself
  add buffer functions to write strerror(errno)
  add io API supporting poll, epoll and kqueue
  remove obsolete "extern" from header files
  add iob API to send several buffers and files in one batch

0.15:
  man page update (document stralloc return values)
  add stralloc_chop and stralloc_chomp
  add buffer_putsa, buffer_get_token_sa and buffer_getline_sa
  extended uudecode test.  See comment at top for details.
  fix #include in ndelay*.3 (Hynek Schlawack)
  add stralloc_diff and stralloc_diffs (my invention)
  scan_ip6 returned 1 for "::" (Uwe Ohse)
  add el-cheapo MIME decoding to test/uudecode
  make install forgot to install ndelay.h
  fix typos in several man pages (Hynek Schlawack)
  add stralloc versions of textcode API (Kai Ruemmler)
  add html to textcode ('<' to '&lt;' etc)
  add fmt_human and fmt_humank (format numbers ala ls -H/-h)
  add fmt_httpdate and scan_httpdate
  fix typo breaking buffer_GETC in buffer (Marcus Winkler)
  fix typo breaking fmt_long for dest==NULL
  add fmt_*longlong()
  add range check to scan_ulong, scan_ulonglong, scan_uint and
    scan_ushort
  extended socket API; you can now pass NULL for results you don't want
  rename Makefile to GNUmakefile; create Makefile target
  add buffer_get_token_pred and buffer_get_token_sa_pred

0.14:
  avoid bus errors in byte_copy
  byte_rchr was completely broken
  add case, iopause, tai, taia, openreadclose and ipv6-enhanced dns

0.13:
  fixed several bugs in test/uudecode.c
  add uninstall target
  add uint16_read API like the uint32_read one
  add buffer_putnlflush
  lots of general clean-ups from Jukka Zitting:
    add FMT_LONG to fmt.h (FMT_ULONG plus 1 for sign)
    fmt_strn did not work for out==NULL
    fix inconsistencies in man pages
  make scan_urlencode do the '+' -> ' ' transformation

0.12:
  add textcode api for uuencode/uudecode, base64, quoted printable,
    url-encoding and yenc.

0.11:
  fix fmt_long (didn't count the '-'), which in turn broke
    buffer_putlong
  referenced wrong include file in stralloc_ready and stralloc_readyplus
    man page.

0.10:
  add comment to stralloc.h that explains the structure (Markus Brischke)
  fix socket routines (two cut-and-paste errors)

0.9:
  fmt_str did not check for out==NULL!  Thanks, Uwe Ohse.
  Updated to buffer to fix read buffers.  Thanks, David Lichteblau.
  Oops!  byte_copy had a trivial and dumb typo in it that I'm unsure how
    I could have missed it.
  add mmap man pages.
  update and add socket man pages.
  don't include str.h from fmt.h
  document error signalling for the mmap functions.

0.8:
  BSD compatibility.
  fix mmap_shared.
  ranlib.
  s/EPROTO/EPROTONOSUPPORT/.

0.7:
  add buffer_putspace
  fix b0read prototype in buffer/buffer_0*
  scan_ip6 will not transparently scan IPv4 addresses and save them as
    v4-mapped addresses (::ffff:127.0.0.1).
  byte_copy was sped up (but made larger in the process)

0.6:
  changed name to libowfat.
  fixed fmt_ulong (did not output 0 correctly).
  added buffer.
  extended buffer API to include buffer_putulong() and friends.
  oops, the read buffering was completely broken!
  add mmap library (idea from Ingo Oeser)

0.5:
  made subdirectories for the different libraries.
  moved the sources into the corresponding subdirectory.
  imported my man pages from libdjb.
  removed fmt_int.c and fmt_uint.c (they are macros in fmt.h).
  corrected comment in open.h for open_excl.
  wrote new man pages for fmt_double, scan_double, the sign fmt_ and
    scan_ routines, the whitespace and charset scan_ routines, and the
    str and stralloc routines.

0.4:
  implemented stralloc.

0.3:
  implemented uint16, uint32 and uint64.  The header files try to
    define shortcut endianness conversion routines that do not convert
    anything.
  implemented open (I hope I got open_excl right, I couldn't find an
    implementationen).

0.2:
  implemented the scan, fmt and str interfaces.
  added adapted fmt_double and scan_double from diet libc.

0.1:
  initial release.
  implemented the byte interface.
