Release notes ============= 5.0 (work in progress) ---------------------- * *Incompatible:* The `timestamp_t` type has been decoupled from wall clock time. It now specifies the number of milliseconds from an unspecified origin, so that it can for example refer to the system monotonic clock. The `ucw_time_t` type has been removed. * The <> module has been rewritten: ** Multiple instances of the main loop are supported (to be used in different threads or locally within a library function). ** The new implementation is more efficient: it uses heaps for timers, epoll() for file descriptors (when available). ** The return value of <> handlers has been changed to <> and <>. However, the numerical values are equal, so old code should keep working. ** *Incompatible:* The main loop time (`main_now`) has been decoupled from wall clock time and moved to a field in the `main_context` structure. It can be accessed either directly or via <>. The `main_now_seconds` variable has been removed, `main_idle_time` has become a structure field. ** *Incompatible:* The interface for asynchronous reading and writing (file_read() and friends) has been separated from the core of the main loop. Use <> and related functions instead. ** *Incompatible:* file_close_all() is gone. You have to call <> or <> to clean up properly after fork(). ** Added support for <>. ** Added relative timers: <>. ** Modification of events from a running event handler is always safe. ** Deleting an already deleted event is always safe. ** For any event type, it is possible to ask whether it is active (added to the mainloop) or not: <> and friends. ** A new mainloop front-end for asynchronous <> has been added. * Added support for <>, which is a general mechanism for tracking resources and reporting errors. It is still considered experimental, so the API can change in future releases. * Added a growing array module `gary.h`, similar to `gbuf.h`, but with a much more convenient interface. * The <> can recognize unlinked nodes, see <>. * Added `strtonum.h` -- a module for precise parsing of numbers. * When compiled by a recent enough GCC, `__thread` is used for thread-local variables, which is more efficient than the POSIX per-thread storage. ** *Incompatible:* `ucwlib_context->thread_id` is no longer available directly, please use ucwlib_thread_id() instead. * *Incompatible:* Several modules have been declared obsolete and removed: ** `sighandler` -- generic signal handling (it still exists internally) ** `qache` -- a mmap-based shared cache ** `prefetch` -- an interface to memory prefetch instructions; superseded by GCC `__builtin_prefetch` ** `randomkey` -- a generator of cryptographically strong pseudo-random tokens; will be replaced by something more generic soon ** `profile` -- a profiling hack * *Incompatible:* Several modules now have their own header files: ** `process.h` -- all functions related to processes, previously declared in `lib.h` ** `io.h` -- functions related to files from `lib.h` and `lfs.h` ** `time.h` -- timestamps and interval timers, previously in `lib.h` * *Incompatible:* Several configuration options were renamed or removed: ** `CONFIG_FAKE_ELTPOOL` → `CONFIG_UCW_FAKE_ELTPOOL` ** `CONFIG_LARGE_FILES` → `CONFIG_UCW_LARGE_FILES` ** `CONFIG_OWN_GETOPT` → `CONFIG_UCW_OWN_GETOPT` ** `CONFIG_DIRECT_IO` → `CONFIG_UCW_DIRECT_IO` ** `DEFAULT_CONFIG` → `CONFIG_UCW_DEFAULT_CONFIG` ** `ENV_VAR_CONFIG` → `CONFIG_UCW_ENV_VAR_CONFIG` ** `CONFIG_LFS` was removed ** `CONFIG_URL_ESCAPE_COMPAT` was removed * `UCW::Configure` supports running of test programs. * `UCW::CGI` support multiple argument tables and UTF-8 mode. Also, it uses the proper HTTP status codes when reporting errors. * Implementation details of <> have changed. The new code checks invariants more carefully, so it is possible that custom fastbuf back-ends which are buggy now fail, although they previously seemed to work. 4.0 (2009-04-13) ---------------- This was the first stand-alone release of LibUCW. Before that, LibUCW was developed as a part of the http://www.ucw.cz/holmes/[Sherlock Holmes project].