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)compatability.
	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:
