Home | Back


Enhancements:
- added HXbitmap_* functions
Fixes:
- mc: HXmc_strcpy produced a zero-length string when NULL was copied


libHX 3.0.1 (August 31 2009)
============================
Fixes:
- map: avoid underflow in value-based tree comparison


libHX 3.0 (August 27 2009)
==========================
Changes:
- automatically skip building testcases if C++ compiler not available
  (reminder: libHX itself does not require a C++ compiler)
- arbtree: HXbtree was removed in favor of the new HXmap
- clist: clist.h moved into list.h
- format: HXformat_* now uses struct HXformat_map,
  so that it does not tie itself to HXbtree
- mc: fix an alignment-induced overallocation
- rand: use faster modulo-based variant for numbers within RAND_MAX range
- rand: use libc rand() almost exclusively, only use /dev/urandom for seed
Enhancements:
- defs: add HXsizeof_member and HXtypeof_member
- map: new map API, with hash-based maps and classic rbtree-based maps
- time: add time delta functions (HX_diff_timeval/HX_diff_timespec)
Fixes:
- format: memory leaks fixes in HXformat


libHX 2.9 (July 11 2009)
========================
Fixes:
- string: fixed number of fields and trailing NULL in HX_split4
Enhancements:
- string: add HX_basename_exact


libHX 2.8 (July 01 2009)
========================
Enhancements:
- HXproc now knows about HXPROC_NULL_*, which can be used to discard I/O
- HXproc: expressly prohibit HXPROC_STD* for HXproc_run_sync


libHX 2.7 (April 08 2009)
=========================
Fixes:
- install missing wx_helper.hpp


libHX 2.6 (March 28 2009)
=========================
Documentation:
- install documentation
- update project URLs
- add section about Miscellaneous functions
Changes:
- arbtree: add "flat view" operation
- misc: added HX_fls
- misc: make HX_time_compare otime-capable
- add wx_helper.hpp


libHX 2.5 (February 11 2009)
============================
Fixes:
- proc: fix fd setup when the standard channels are already closed


libHX 2.4 (February 05 2009)
============================
Documentation updates. A few internal cleanups, nothing user-visible.


libHX 2.3 (January 13 2009)
===========================
Fixes:
- defs: only use __builtin_offsetof with GCC >= 4
- misc: fix time_compare on FreeBSD to actually use mtimespec
- mc: handle HXmc_length(NULL)
- dir: do not cause directory traversal to restart after 2^32 entries


libHX 2.2 (January 01 2009)
===========================
Fixes:
- defs/cast: avoid warning between conversion from type[] to type *
- defs/cast: add fallback defs for const_castN()
- arbtree: correctly set errno (to ENOENT) in HXbtree_find and _get
- string: document behavior details of HX_basename

Changes:
- removed old HX_vfsystem

Features:
- defs: add HXSIZEOF_Z*
- defs: add HX_STRINGIFY
- proc: initial code
- string: add HX_split4 function


libHX 2.1 (December 23 2008)
============================
- defs: fix bogus offsetof macro for non-GCC
- defs: add a pair of guarding parentheses in static_cast()
- doc: generate PDF file from LyX document


libHX 2.0 (December 23 2008)
============================
Fixes:
- arbtree: reject illegal flag combinations
- arbtree: correctly set errno in HXbtree_find and HXbtree_get
- arbtree: do not return dangling pointer in HXbtree_del
- defs: add a working offsetof() and containerof() for C++ mode
- defs: use GCC's __builtin_offsetof
- defs: resolve warnings with signed_cast() for char* -> const char* conversions
- dir: HX_rrmdir: do not stop on error
- mc: change first argument type for HXmc_dup()
  [compatible change, no ABI version bump]
- opt: fix interpretation of strings during conversion to bool
  (all strings that were not empty and not 0 were interpreted as "true",
  and this included the strings "no", "off" and "false", which should
  actually have mapped to, well, "false".)
- rand: use autoconf to detect presence of unix functions
- string: replace HX_strrev implementation by one that does not allocate


New feature: Type-checking casts.
- defs: enable type-checking signed_cast()
- defs: add signed_cast<> for C++ mode
- defs: rewrite static_cast() to not cause -Wshadow warnings when nested
- defs: rewrite const_cast() to do type checking
  (actually, const_cast1(), cosnt_cast2() and const_cast3() were introduced.
  const_cast() is kept to not break program compilation.)


New misc code:
- ctype_helper: initial version
- deque: add struct HXdeque_node->char *sptr as a typed variant for ptr
- mc: add HXmc_setlen()
- opt: HXTYPE_BOOL and HXTYPE_NONE now take int * (instead of unsigned int *)


New arbtree code:
- arbtree: add struct HXbtree_node->char *skey and char *sdata
- arbtree: support arbitrary key/data duplication
- arbtree: add HXbtree_init2


Removals:
- mc: remove HXmc_dup
  [you can use HXmc_meminit(old, HXmc_length(old))]
- string: HX_strmid behavior changed for length=0
  [no more "remaining string", now returns a zero-length string]


libHX 1.28 (November 18 2008)
=============================
- add HXTYPE_{U,}INT{8,16,32,64}
- add includedir to cflags (libHX.pc)


libHX 1.27 (October 23 2008)
============================
No functional changes for Linux platforms.

- build: fixed compile errors with i586-mingw32msvc cross compile
- regenerated the Makefile.in files in the tarball with an updated
  version of automake-tranquility so that they are now
  POSIX-compliant and work with BSD make


libHX 1.26 (October 12 2008)
============================
- add HX_hexdump() for debugging within programs
- fix double free in the error path of HX_getopt() when a long option preceded
  a short option of which the latter had problems (i.e. missing argument)
- add actual typechecking to signed_cast()
- add typechecking to static_cast(),
  (but this is normally disabled to avoid compile interruption)


libHX 1.25 (September 07 2008)
==============================
- install missing misc.h
- HXmc: pointer was not automatically updated after hmc_trunc()
- HXmc: rename functions and put them into the HX* namespace (API change)
- HXmc: make code resistant to memory allocation failure


libHX 1.23 (September 02 2008)
==============================
- code cleanup: misc.h has been split off libHX.h
- add defs.h


libHX 1.22 (July 16 2008)
=========================
- need to use lstat() on directory operations such as mkdir and rrmdir
- use RTLD_LAZY when opening dynamic libraries
- add libxml_helper


libHX 1.18 (June 10 2008)
=========================
- implement reverse iterating through HXlist
- remove deprecated HXlist_init_head() and HXclist_init_head()
  [replaced by HXlist_init() and HXclist_init()]
- added HX_ffs()


libHX 1.17 (May 08 2008)
========================
- HXlist: added HXlist_for_each_safe, HXlist_for_each_entry_safe
- HXclist: added HXclist_del


libHX 1.15 (April 04 2008)
==========================
- HXformat: add %(ifempty) and %(ifnempty) tags
- libHX.h: split into {arbtree,deque,option,string}.h (and libHX.h)
- Add inline-doubly-linked-list data structures


libHX 1.10.2 (December 06 2007)
===============================
- [r105]: pass up NULL from memory allocation error
- [r108]: only return success on EEXIST when HXF_KEEP was given
- [r112]: HX_dirname() incorrectly computed the path


libHX 1.10.1 (September 17 2007)
================================
- [r96]: Fix output of line-wrapped help text
- tarball: in libHX 1.10.0 I forgot to provide the configure - sorry
  (but you could regenerate it using ./autogen.sh if you have autotools)