LibU ChangeLog

$Id: ChangeLog,v 1.111 2010/06/01 20:26:45 tho Exp $

ChangeLog file of LibU - http://www.koanlogic.com/libu/index.html

LibU 2.2.0
	- [uri] fix excessively greedy match in IP-literal parser when there is no
	  path component; temp fix in URI builder to take care of IP-literal's
	- [uri] the URI parser set flags while decoding (e.g. tell if the host
	  is IP address or DNS name, or if it is an IP-literal and needs special
	  treatment when encoding.)
	- [daemon] fix compilation on uClinux
	- [buf] u_buf_shrink added
	- [net] fix u_connect_ex timeout re-computation on EINTR to take care
	  of Linux non-POSIX compliant behaviour; also check the updated timeout 
	  value after EINTR to catch corner case underflow conditions.
	- [net] disable u_net_nagle_off() on Minix
	- [array] #undef 'I' (imaginary unit) when including complex.h to avoid
	  name clash -- e.g. with openssl/rsa.h
	- [net] fix u_connect buggy behaviour on EINTR (reported by Mickael Auger)
	- [net] add _ex variants to socket creation interfaces to handle timeouted
	  operations
	- [net] ai_resolv fix: don't ask for AI_CANONNAME when hostname is NULL
	- [hmap] new discard policy U_HMAP_PCY_CUSTOM which allows user to specify
	  object comparison function via u_hmap_opts_set_policy_cmp() ; header
	  cleanup: remove object and policy struct's explicit layout; added
	  u_hmap_{easy_,}clear() ; missing u_hmap_opts_free() calls in test/
	- [test] fix conditional include logics that enables sandboxing
	- [str] don't rely on calloc for initialization of str object internal vars

LibU 2.1.0
	- fix bug in configure when handling the inline keyword support
	- Minix 3.8.1 port
	- fix configure to please OpenBSD when searching for [gs]etsockopt and
	  rusage structure
	- [string] new interface u_string_detach_cstr
	- [lexer] new module to do basic lexical tokenizing 
	- [json] new module to encode/decode/validate JSON objects (RFC 4627)
	- [bst] new binary search tree module
	- [misc] added u_atol and u_atof interfaces
	- [rb] malloc based implementation, both using contiguous (i.e. double
	  sized) and wrapped buffer ; make it work on Windows
	- [test] make it work on Windows
	- [uri] regex-free uri parser (now recursive descent) ; make it work on
	  MinGw ; path is now optional and has default value "/" ; fixed missing 
	  "//" in u_uri_knead_authority()
	- [config] add u_config_walk function to traverse the config tree
	- [carpal] fixed 1.0 compatibility (missing u_con)
	- [net] U_NET_OPT_DGRAM_BROADCAST to set DGRAM client socket broadcast 
	  option
	- [hmap] added u_hmap_count() to get the current number of objects stored
	  into hmap

LibU 2.0.0
	- [pqueue] added new priority queue module
	- [rb] added new ring buffer module
	- [test] completely revamped, new interfaces
	- [net] module implementation and interfaces revamped
	- [uri] complete support for RFC 3986; added u_uri_knead interface to 
	  create conformant URI strings; added tester
	- [carpal] dbg(), warn(), info(), err() and friends have been prefixed 
	  with "u_" to avoid conflicts with the <err.h> header
	- [config] u_config_print_to_fp with brace delimiters for children records;
	  documentation fixes by Mickael Auger ; don't dump the 'include' 
	  directive when serializing and/or saving an u_config_t object to 
	  file (would break semantical equivalence) 
	- [hmap] added u_hmap_foreach_arg which accepts a user defined parameter
	  that is supplied to the callback function ; add "easy" interface to
	  simplify some common use cases ; updated docs
	- [array] u_array_set_ptr and u_array_get_ptr interfaces changed;
	  added interfaces for intmax_t and uintmax_t types; use C99 types 
	  explicitly (_Complex and _Bool), to avoid clash with bool and complex 
	  possibly #define'd by the user
	- [buf] added u_buf_save interface
	- [misc] some minor fixes
	- [string] minor fixes and cleanup
	- [pwd] internally use u_strtok instead of deprecated u_tokenize 
	- fix configure bug which prevented IPv6 and UNIX sockets bits inclusion;
	  also bring back to life --no_ipv6 and --no_unixsock configure flags; 
	  new --no_sctp command line option to explicitly disable SCTP bits

LibU 1.4.1
	- [missing] u_va_copy added
	- [string] u_string_do_vprintf bug fix (don't use va_list twice)
	- [test] list tests fix for 64-bit platforms

LibU 1.4.0
	- [config] u_config_get_subkey_value_b bug fix
	- [list] u_list_clear added
	- [misc] u_strlcpy and u_strlcat added
	- added shared lib support for MinGW, Cygwin, Solaris and Dragonfly BSD:
	  need MaKL >= 1.8.x
	- [list] u_list_foreach and u_list_iforeach macros added
	- [list] u_list_first and u_list_next added to efficiently iterate on lists
	- [misc] added u_strtok_cleanup facility 
	- [misc] deprecate u_tokenize in favour of u_strtok

LibU 1.3.1:
	- [array] add needed #include <stdint.h>
	- [misc] u_atoi fix
	- [misc] u_strtok added
	- [config] fix u_string_aprintf calls (build fix)

LibU 1.3.0:
	- [config] u_config_sort_children added
	- [config] u_config_del_child added
	- [log] u_log_set_{lock,unlock} added to setup locking callbacks (needed on 
	  multi-threading environments)
	- [configure] added --no_docs and --do_test configure flags
	- [array] dynamic array module added (can be disabled via --no_array
	  configure argument)
	- [list] u_list_insert and u_list_del_n added
	- [config] u_config_print_to_fp added
	- [configure] netinet/{tcp,in}.h and sys/socket.h tests
	- [net] do not include winsock.h
	- [config] u_config_load_from_buf and u_config_save_to_buf added
	- [config] drivers can set a callback function to resolve include filenames
	- [config] load from opaque data sources (u_config_load_from_drv)
	- [config] include directive support
	- [config] example/config/uconfig program added
	- [misc/net] moved u_accept from misc to net
	- [pwd] fix a parser problem with GCC 4.2.3
	- [headers] cleanup
	- [misc] u_path_snprintf memmove fix
	- [list] memory leak fix
	- [carpal] *_err_rcif() family macros added

LibU 1.2.0:
	- [list] added new module for dynamic lists handling (wrapper around
	  TAILQ_ macros), can be disabled via --no_list configuration argument
	- [pwd] added new module for simple password authentication, can be
	  disabled via --no_pwd configuration argument 
	- [fs] added new module with u_move, u_copy and u_remove interfaces,
	  can be disabled via --no_fs configuration argument 
	- [config] u_config_set_value's now in the public interface
	- [config] u_config_get_child_n can return anonymous keys
	- [hmap] fix compilation error with GCC 2.95

LibU 1.1.0:
	- [missing, misc] windows mingw fixes
	- [hmap] u_hmap_foreach_keyval() function added (by Aurelio Colosimo)
	- [log] u_strerror_r fix to make it working on 64bit platforms
	- [carpal] dbg_if{,m}() fix

LibU 1.0.0:
	- [hmap] module rework: implemented linear probing and array resizing based
	  on prime numbers; void *key, *val in u_hmap_o_t; new interfaces for 
	  managing own data or giving hmap ownership and returning overwritten 
	  objects
	- [test] added the unit test module; tests can be separated by module 
	  and/or functionality and can run selectively or all at once
	- [misc] added u_{read,write,accept,sleep} auto-restarting functions that 
	  transparently handle EINTR
	- [memory] added u_memory_set_{{m,c,re}alloc,free} function by which the
	  user can override the default memory manager (i.e. libc malloc)
	- [config] load in overwrite mode fix

LibU 0.5.0:
	- mkstemps() added to the portability layer
	- clean separation of "toolbox" modules (i.e. log, env, carpal, etc.)
	  from "portability" modules (i.e. strlcat/gettimeofday/etc. replacements)
	- [net] added UNIX socket support
	- [queue] {LIST,TAILQ}_FOREACH_SAFE and TAILQ_FOREACH_REVERSE{_SAFE,} 
	  added
	- [config] leak fixed in u_config_do_load(); added new function 
	  u_config_load_from_file(); cs_getline (internal function) fix
	- [misc] added new functions u_load_file(), u_data_dump()
	- [env] portability fix
	- [log] msg_strerror() fix: POSIX vs glibc strerror_r prototypes check 
	  is now performed at runtime since configure check would work when 
	  cross-compiling
	- [carpal] added macros for every syslog(3) level:
		- {dbg,info,notice,warn,err,crit,alert,emerg,con}_[s]?if[m]?(expr,...) 
	- [string] added new functions u_string_sprintf() and u_string_reserve()
	- [buf] u_buf_printf() added; u_buf_free() memory leak fixed; moved 
	  struct u_buf_s to u/buf.h so that it can be used in TAILs, LISTs, etc;
	  u_buf_{set,append}() signature sligthtly changed
	- headers installation fix
	- OpenBSD strlcpy() and strlcat() added to the portability layer
	- configure: debug and code optimisation compiler flags are mutually 
	  exclusive; --enable_shared switch to build shared libraries (at least)
	  on Linux, FreeBSD, NetBSD and Darwin targets (needs MaKL 1.3.0)

LibU 0.4.1:
	- u_buf_t type and functions
	- warn_err_sif and info_err_sif added

LibU 0.4.0:
	- new configure options: --no_ipv6 and --no_unixsock
	- makl_target_name instead of makl_os_name to support MAKL_PLATFORM
	  overloading
	- more checks (and relative conditional code): in_addr_t, ssize_t, 
	  <paths.h>, <sysuio.h>, <strings.h>, optarg, optind, 
	  struct sockaddr_in, struct sockaddr_in6, struct sockaddr_un
	- gettimeofday implementation (tv_usec always set to zero)

LibU 0.3.2:
	- save and restore errno when logging
	- on Windows platforms msg_strerror now uses FormatMessage instead of 
	  strerror(3): it also works for non-libc related errors

LibU 0.3.1:
	- added daemon(3) function from NetBSD
	- fixed a missing include in hmap.c
	- configure
	    - support new MaKL function makl_append_var_mk
	    - MaKL debug is disabled by default
	    - added configure.help

LibU 0.3.0:
	- new module hmap (hash map)
	- disable unneeded modules at configure time: 
	  --no_{net,config,env,log,hmap} command line switches added
	- Makefiles fix due to MaKL 1.0.0 toolchain rework

LibU 0.2.0:
	- first public release