[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dev-serveez] new NEWS

From: Thien-Thi Nguyen
Subject: [dev-serveez] new NEWS
Date: Mon, 06 Jun 2011 14:31:47 +0200

Please find below a first pass at the NEWS entry for the upcoming GNU
Serveez 0.2.0 release.  Anything missing, inaccurate, or misplaced?
(Don't worry about the formatting -- i have an Emacs command to DTRT.)

In the meantime, i'll work on the last few "next" items in HACKING.

                                             -*-mode: org; fill-column: 64; -*-

* license upgrade

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

* C99 compiler required; configure fails if not found

The code actually does not require C99 yet, but probably will in
the near-to-middling future.  We impose this requirement now as
a way to probe for feedback from users on platforms w/o a proper
C99 compiler.  (If it turns out there are no such users, great!)

* 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)’

* "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.

* 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.

Almost all variables have been moved behind a functional
interface (or outright eliminated).  The unique exception is
‘svz_child_died’, but you should probably avoid using that.
(It, too, will vanish once we figure out a clean and portable
abstraction for its semantics.)

*** 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.

*** 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.  These are also removed from the headers on "make install".

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

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’.

*** 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.

* AWCS protocol / server dropped

This code is no longer useful.  See:

* 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 headers.  To do so, specify option
‘--enable-libserveez-install’ to the configure script.  You need
to install libserveez and its headers 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 and the Guile server.  If a particular server is
disabled, that test is skipped.

* improved portability to more recent Guile versions

reply via email to

[Prev in Thread] Current Thread [Next in Thread]