NEWS for GNU Serveez
See end for copying conditions.


- 0.2.1 | 2013-03-24

  - planned retirement: Guile 1.3.4 support

    Unless there is a major outcry from users (unlikely), the next
    release will drop (all pretense of) support for Guile 1.3.4.
    The earliest supported version will then be Guile 1.4.x.

  - distribution now also includes .tar.lz

    If you have GNU tar, you can use "tar xf" and it will DTRT.
    If not, you can use "lzip -dc TARBALL | tar xf -" to unpack.

  - bugfixes

    - (Guile 2) segfault in ‘guile_error’

      Under Guile 2, serveez(1) segfaults if the config file is closed
      at the time ‘guile_error’ is called.  Although this has been
      addressed (the fix "works for me"), it is still not entirely
      satisfying.  See comments in func ‘guile_error’ (src/guile.c),
      and also test/t007.

    - ‘serveez --solitary’ mentioned in more places

      Specifically, in ‘serveez --help’ output, and in serveez(1).

    - (Guile 1.8) ‘write-line’ imported

      Scheme code that uses ‘write-line’ now explicitly imports module
      ‘(ice-9 rdelim)’.  Apparently, Guile 1.8 does not autoload it.

  - new built-in proc: ‘fs’

    This is a convenience interface for ‘simple-format’.

  - Scheme code modernized

    Much of src/guile-server/*.scm was modernized: one-armed-‘if’
    elimination, replacing homegrown procs w/ SRFIs where possible,
    using higher abstractions, etc.

  - manpages spiffed

    Both serveez(1) and serveez-config(1) now include release
    information and updated refs.

  - bootstrap tool updated: makeinfo (GNU Texinfo) 5.1


- 0.2.0 | 2013-01-22

  - license upgrade

    The GNU Serveez software is now released under GPLv3+.
    Its documentation is released under GFDL 1.3.

  - distribution now .tar.xz

    If you have GNU tar, you can use "tar xf" and it will DTRT.
    If not, you can use "xz -dc TARBALL | tar xf -" to unpack.

  - C99 compiler required; configure fails if not found

    In particular, libserveez.h does ‘#include <stdint.h>’.

  - bugfixes

    - ensure "make uninstall" removes all Serveez-related dirs

      It used to leave behind /usr/local/lib/libserveez et al, for
      example.  If you want to uninstall a previous installation of
      Serveez, try doing:

      $ ./configure --enable-libserveez-install --prefix PREFIX
      $ make all install uninstall

      taking care to specify the same PREFIX as before.

    - sloppy ‘sscanf’ (latent remote buffer overflow)

    - SIGINT causes segfault (savannah support #107607)

    - typo in ‘svz_portcfg_equal’ for protocol ‘pipe’

    - scope error in DNS return

    - detect ‘gettimeofday’ with #include <sys/time.h>

    - don't drop subsequent "TCP final write" on previous write flush

    - ensure current module for initialization is ‘(guile)’

    - avoid double-free in HTTP server

  - "native MSVC" port dropped

    You can still (try to) build under cygwin or mingwin, however.
    (Serveez maintainers don't personally subject themselves to
    woe32, so code specific to these platforms is untested.)

  - support dropped for doc integration w/ Guile help system

    If there is demand, this may return later after things stabilize
    a bit.  If there is no demand, that's fine too.

  - manuals combined

    The embedding manual is now embedded in the main manual.  To
    distinguish between Scheme and C, we say "Scheme Procedure" and
    "Function", respectively.

  - new command-line option: ‘--solitary’ (short form: ‘-s’)

    Normally, serveez(1) starts some builtin coserver instances.
    This flag inhibits that.  See related libserveez NEWS item
    below.

  - libserveez API changes

    - big pruning

      A great many API elements have been internalized or outright
      eliminated in an effort to gain implementation slack.  Among
      those that might be missed are functions to create/manipulate
      the "vector" and "sparse vector" data structures, and some
      functions to manipulate the "hash" and "array" data structures.

      Similarly, allocation functions for "permanent, untracked
      memory space" are now no longer provided; for such allocation,
      you should use the system ‘malloc’, ‘realloc’, ‘strdup’, ‘free’
      directly.

    - namespace hygiene: "svz_" or "SVZ_" prefix everywhere

      If you detect an API element whose name does not begin with
      "svz_" or "SVZ_", that's a bug; please report it.

    - standard types

      There is more use of ‘size_t’, ‘mode_t’, ‘uid_t’, ‘gid_t’,
      ‘in_addr_t’, ‘in_port_t’, uint{8,16,32}_t, etc.  Signal handlers
      are assumed to return ‘void’.

    - more ‘const’

      Some pointer parameters now are declared ‘const’.  The API is
      not yet fully vetted; there will probably be more in the future.

    - monolithic libserveez.h

      Previously libserveez.h simply ‘#include’d other files from
      $(includedir)/libserveez/.  Now libserveez.h is generated from
      those files at build time and is the only header installed
      (should you choose, see ‘--enable-libserveez-install’ below).

    - internals marked with GCC "hidden visibility attribute"

      Non-static internal elements (shared between compilation units)
      are now marked with a "hidden visibility attribute" if you use
      GCC.

      If you don't use GCC, you can tell if an element is internal if
      it is undocumented (i.e., all publicly exported API elements are
      documented -- in theory).

      In case you didn't know, using internal elements is Not Cool.
      Sometimes you may be tempted; contact Serveez hackers for help.

    - new type: svz_address_t

      Many functions that used to take, and structures that used to
      hold, an ‘unsigned long’ value to specify an IPv4 address now
      use instead a (pointer to) ‘svz_address_t’, which encapsulates
      the family and bits of an IPv4 or IPv6 address.  There are new
      functions to create/manipulate objects of this type.

      Because we're lame, libserveez does not yet actually support
      IPv6 internally (or maybe it does but we're too lame to know),
      so for the time being, the family must always be specified as
      ‘AF_INET’ otherwise the process ‘abort’s.  You have been warned!

    - new collection/type-specific iteration funcs

      There are new funcs svz_foreach_COLLECTION to iterate through a
      COLLECTION (one of: servertype, server, codec, socket, interface,
      coserver), applying a callback (of type svz_COLLECTION_do_t) to
      the object.  The callback also receives the opaque closure passed
      to the iteration func.

    - new "pp" funcs replace (some) "printf" funcs

      These take a buffer and its size and pretty-print some object
      into it.  Unlike the "printf" functions, they do not allocate
      memory, themselves.  This is part of an ongoing effort to make
      libserveez re-entrant.

    - new func: svz_library_features

      This is exposed to Scheme as ‘libserveez-features’.

    - new func: svz_hash_configure

      Previously, to override the default ‘keylen’, ‘code’ and ‘equal’
      functions for a hash table, you would assign them directly to
      the appropriate members of the hash-table structure.  Since that
      struct is now internalized, this function serves the same
      purpose.

    - possible to "init" coservers w/o starting instances

      You can now initialize the Serveez coserver internals w/o
      starting any instances by passing a negative arg (say, -1) to
      func ‘svz_updn_all_coservers’ (which is a combination of two
      previously separate funcs, now "internalized").

    - libtool-style versioning

      Previous releases built and installed the shared object library
      in a manner that ensured each such library was incompatible with
      those from any other release.  Now, we maintain a Libtool-style
      version triple to better indicate and track (in)compatibility.
      Please see (info "(libtool) Versioning") for details.

      The triple, now "1:0:0", will be mentioned in NEWS henceforth.

      You might want to avoid all this complication entirely; see new
      configure option ‘--enable-libserveez-install’ below.

  - scheme changes

    - provide some funcs only if Guile doesn't

      Newer versions of Guile provide: ‘htons’, ‘ntohs’, ‘htonl’,
      ‘ntohl’, ‘inet-aton’ and ‘inet-ntoa’.  If configuration detects
      this, those procedures will not be built.  Furthermore, if they
      are built, their names now lack the "svz:" prefix.  Those names
      are no longer documented.

    - convenience scheme promoted to built-in

      Several procedures that used to require:
        (primitive-load "serveez.scm")
      are now built-in.

  - AWCS protocol / server dropped

    This code is no longer useful.  See:
    http://lists.gnu.org/archive/html/dev-serveez/2011-06/msg00001.html

  - configuration changes

    - dropped options: --enable-{warn,opt,ppro,486}, --with-opt

      These are better expressed via env var ‘CFLAGS’; see manual.

    - dropped option: --enable-thread-safety

      The condition where "thread safety" is required is now detected
      automatically by the configure script.

    - dropped options: --with-guile, --with-guile-source

      Configuration now relies solely on the ‘guile-config’ program,
      included in a proper Guile installation.  See also README-cross.

    - dropped option: --enable-awcs-proto

    - new option: --enable-libserveez-install

      As of this alpha release, and for all releases prior to 0.8.0
      (i.e., the first beta), "make install" by default does NOT
      install libserveez and its header.  To do so, specify option
      ‘--enable-libserveez-install’ to the configure script.  You need
      to install libserveez and its header only if you want to link
      your own program with it, of course.

  - more coverage for "make check"

    Previously, "make check" only tested the data structures.  Now
    there are, in addition, tests for the passthrough server, the
    SNTP server, the Guile server (running a simple echo service),
    the HTTP CGI server, the binary objects support, and handling of
    some misconfiguration scenarios.  If a particular server is
    disabled, that test is skipped.

  - improved portability to more recent Guile versions

    This release was tested w/ Guile 1.8.7 and 2.0.6, the latter
    under ‘GUILE_AUTO_COMPILE=0’.  Testing, bug reports, and bug
    fixes w/ other Guile versions/configurations very welcome!

  - prettier PDF output

    In PDF output, C functions are displayed w/ a line break after
    the return type, leaving only indentation before the name.  This
    is achieved by ‘@set txideftypefnnl’ in the serveez.texi header.

  - bootstrap tool versions
    - GNU Autoconf 2.69
    - GNU Libtool 2.4.2
    - GNU Automake 1.13.1
    - GNU Texinfo 4.13.94
    - Guile-BAUX 20121120.1242.e233fad

- 0.1.7 | 2009-06-20

  - minor bugfixes for newer GNU/Linux kernels

- 0.1.6

  - support for the nsr-tandem-nsk platform
  - improvement and bug fixes in the build system
  - prefixed the #define's in 'svzconfig.h' by 'SVZ_' or 'svz_' to avoid
    name space clashes with other applications

- 0.1.5 | 2003-06-03

  - configurable types available through (instantiate-config-type!)
  - bug fixes in core API and Guile interface
  - minor enhancements of the core API and the Guile interface
  - updated configure and build system to autoconf 2.57, automake 1.7.5
    and libtool 1.5
  - support for Guile 1.7.x versions
  - some thread safety functionality enabled via --with-thread-safety
  - added `serveez-config' man page

- 0.1.4 | 2002-10-13

  - Guile server documentation partly rewritten and updated
  - support for HP-UX platforms
  - support for urgent (out-of-band) data on stream-like network
    connections (i.e. TCP connections)
  - introduced server reset and socket trigger callback
  - simplified icecast Guile server added (also demonstrates coserver
    usage from Guile)
  - use of zlib version 1.1.4 in the Win32 binary release
  - command line switch for using standard input as configuration file
  - fatal bug fixes in the coservers
  - numerous bug fixes and additions in Guile server implementation

- 0.1.3 | 2002-02-16

  - automated Debian packaging
  - added basic coserver functionality to the Guile frontend
  - HTTP partial content implemented
  - Guile version 1.3 backward compatibility
  - improved build-time behaviour (including cross compiling)
  - allow INADDR_ANY bindings by the keyword `any' in network port
    configurations and appropriate mixtures of this binding with explicit
    network interface bindings
  - allow SO_BINDTODEVICE bindings by the `device' property of the
    port configuration; allows a server to listen on a real
    hardware device (network card, isdn dialup)
  - inetd runs RPC services
  - RPC (remote procedure call) capabilities exported to Guile
  - shared build on MacOS X10.1 possible (libtool patch)
  - some `configure' magic to support shared build on SunOS/Solaris

- 0.1.2 | 2001-12-01

  - inetd replacement Guile script
  - program passthrough server can be enabled via --enable-passthrough
  - Mandelbrot server and client as an example Guile server added
  - bzip2 codec implementation
  - included codecs in the Win32 binary release

- 0.1.1 | 2001-10-08

  - zlib codec implemented
  - specification of a transparent codec interface
  - working named pipe interface under M$-Windows
  - package made available as relocatable RPM
  - modified chat server master protocol (use textSure v1.3)
  - virtually unlimited number of socket structures allowed
  - faster HTTP file cache
  - automatic coserver restart on buffer overrun or death
  - Guile server examples and documentation
  - Guile servers can be enabled via --enable-guile-server
  - loadable server modules

- 0.1.0 | 2001-07-13

  - semi-automatic creation of core API documentation added
  - using Guile as configuration language, dropped Sizzle
  - coservers are now integral part of the core library
  - embeddable library created

- 0.0.20 | 2001-01-13

  - enable the fake identd via --enable-fakeident
  - HTTP server is able to produce the Common Log Format (CLF)
  - enable the SNTP server via --enable-sntp-proto
  - dropped the Quake III license key server for legal reasons
  - Serveez becomes a GNU software package

- 0.0.19 | 2000-12-12

  - allowing `~user' syntax for HTTP requests
  - the HTTP server got a configurable access logfile
  - port forwarder (Tunnel Server) can be enabled via --enable-tunnel
  - basic support for ICMP servers
  - package is available at www.freshmeat.net and www.sourceforge.net
  - CGI application associations possible in the HTTP server
  - daemon support via command line option

- 0.0.18 | 200-09-21

  - --enable-crypt option
  - native Win32 port with M$ Visual C++ compiler
  - Gnutella spider, enable via --enable-gnutella
  - --disable-poll option
  - sorted HTTP directory listing
  - Quake III license key server, enable via --enable-q3key-proto
  - support for UDP servers

- 0.0.17 | 2000-07-28

  - server protocols via named pipes on Linux and Win32 systems
  - TexInfo documentation
  - multiple servers on a single port and servers on multiple ports
  - server instantiating possible
  - documentation on how to write servers and coservers for Serveez
  - opened CVS repository

- 0.0.16

  - disable heap counters by --disable-heap-count if you want to
    enable debug outputs but without these counters, this was a problem
    with memory aligned architectures like IP32 or RS6000, they were
    throwing bus errors
  - possibility to connect aWCS-Master through two unidirectional named
    pipes within Linux's filesystem, configure it by --enable-awcs-pipe
  - DNS lookup coserver supported via --enable-dns
  - reverse DNS lookup supported via --enable-reverse-dns

- 0.0.15

  - integration of Sizzle as the configuration file language, new
    configure option --with-sizzle[=DIR], the Serveez package now depends
    on the GNU Sizzle package

- 0.0.14

  - speeding up the HTTP protocol server
  - HTTP file cache
  - HTTP/0.9 simple GET implemented
  - Keep-Alive connections in HTTP



Copyright (C) 2011-2013 Thien-Thi Nguyen
Copyright (C) 2000, 2001, 2002, 2003, 2004 Stefan Jahn <stefan@lkcc.org>
Copyright (C) 2000, 2002 Raimund Jacob <raimi@lkcc.org>
Copyright (C) 1999 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>

Copying and distribution of this file, with or without modification,
are permitted provided the copyright notice and this notice are preserved.

______________________________________________
	Local Variables:
	mode: outline
	outline-regexp: "\\([ ][ ]\\)*- "
	End:
