HLib is a library which may be useful for Unix/Linux C++ programmers
who are operating on the system level (e.g. BSD socket layer).
It provides a nice poll(2) model for simultanious access to any
number of FDs and timers/timeouts, signal handling, etc.
HLib is being developed by me (since 1999)
and distributed under the GNU GPL.
- 2006/01/28: Version 1.1.1
Minor changes to make hlib compile with recent versions of gcc.
- 2004/09/08: Version 1.1.0
New: class HLBtree, a B-tree template,
notifier list and handler in notifierlist.h, a binary
search template, class HLHeap, a heap template and
a reference counting template called RefNode.
Changed: OrderedArray had API changes and a bugfix.
Note: HLib now can be installed using make install
which will install the static library archive (libhlib.a)
and all the headers (the latter in a hlib/ subdir).
- 2004/05/22: Version 1.0.0
New: lmalloc_failure_handler, compression code merged
(libz, libbz2, PNG)
Fixed: incorrectly accepted options when leading dash is missing;
now compiles cleanly with gcc-3.4;
ProcessBase/ProcessManager::StartProcess() now takes pointers
instead of references (sorry, gcc-3.4 issue).
Note: As of version 1.0.0, HLib is distributed completely
under the GNU GPL.
- 2004/03/24: Version 0.9.9g
New: HexDump(), FD pump progress info
Improved Daemonize(), fixed incorrect assert() in
FD copy facility, fixed stray chars in sindentcout.
Note that this is probably the last GPL/LGPL split release, 1.0 will
likely be GPL only.
- 2004/03/15: Version 0.9.9f
A new template, CyclicDataRecorder, and minor new features
RefString::vsprintf()) were added.
- 2004/02/28: Version 0.9.9e
Minor features added (e.g. alloc debugging code), fixed bug in
- 2004/02/12: Version 0.9.9d
HLib now has its own pages on this site and is no longer shipped as pure
supplement of RendView which makes
heavy use of HLib.
Brief overview of HLib
Historically, HLib was designed as a set of classes which allow easy
implementation of applications which deal with a lot of file descriptors
in parallel (such as little net servers, etc.).
The primary design goals were, in this order:
Small size, performance, ease of use.
This means, that parts of HLib are not as easy to use than one may wish,
so keep that in mind. (But for people who are used to the BSD socket
layer this should not be a real problem :)
Nice poll(2) model for (synchronious) simultanious IO of
any number of file descriptios, timers, timeouts and
safe synchronious signal handling.
Staring of child processes and detailed information about their
Allocation limitation and checking/debugging.
Command line arguments and parameter file handling, easy-to-use
class for time representation, linked list template, and more small
Simple virtual interface to read gzip- and
bzip2-compressed files as
well as for PNG image reading and writing.