]> mj.ucw.cz Git - libucw.git/blobdiff - ucw/doc/relnotes.txt
Daemon: Let daemon actions be numbered from 1
[libucw.git] / ucw / doc / relnotes.txt
index 11b1661744bec52c75cd4e89374a225cf60437ea..89d9c2c5bc4df8f7179fd7edd514b1ff77437198 100644 (file)
@@ -1,10 +1,33 @@
 Release notes
 =============
 
 Release notes
 =============
 
-4.1 (work in progress)
-----------------------
+WIP
+---
 
 
-* The mainloop module has been rewritten:
+* The <<conf:,configuration file parser>> has been improved:
+** Multiple instances of the configuration parser are supported.
+** *Incompatible:* As there may be more instances, we can no longer use
+   global variables to control the configuration system. In particular,
+   `cf_need_journal` and `cf_pool` variables have been replaced by
+   functions <<conf:fun_cf_set_journalling,`cf_set_journalling()`>> and
+   <<conf:fun_cf_get_pool,`cf_get_pool()`>>.
+** *Incompatible:* Loading of configuration files has been decoupled from
+   the getopt wrapper, so you might need to include `conf.h` for functions
+   which were previously declared in `getopt.h`.
+** New functions have been added:
+   <<conf:fun_cf_open_group,`cf_open_group()`>>,
+   <<conf:fun_cf_close_group,`cf_close_group()`>>, and
+   <<conf:fun_cf_revert,`cf_revert()`>>.
+
+5.0
+---
+
+* *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 <<mainloop:,mainloop>> 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,
 ** 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,
@@ -12,10 +35,10 @@ Release notes
 ** The return value of <<mainloop:struct_main_file,`main_file`>> handlers has been
    changed to <<mainloop:enum_main_hook_return,`HOOK_IDLE`>> and <<mainloop:enum_main_hook_return,`HOOK_RETRY`>>.
    However, the numerical values are equal, so old code should keep working.
 ** The return value of <<mainloop:struct_main_file,`main_file`>> handlers has been
    changed to <<mainloop:enum_main_hook_return,`HOOK_IDLE`>> and <<mainloop:enum_main_hook_return,`HOOK_RETRY`>>.
    However, the numerical values are equal, so old code should keep working.
-** *Incompatible:* The global variables `main_now`, `main_now_seconds`,
-   and `main_idle_time` are no longer available. They have become fields
-   in the `main_context` structure, which can be accessed either directly
-   or via helper functions like <<mainloop:fun_main_get_now,`main_get_now()`>>.
+** *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 <<mainloop:fun_main_get_now,`main_get_now()`>>. 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 <<mainloop:struct_main_block_io,`struct main_block_io`>> and related functions instead.
 ** *Incompatible:* The interface for asynchronous reading and writing
    (file_read() and friends) has been separated from the core of the main loop.
    Use <<mainloop:struct_main_block_io,`struct main_block_io`>> and related functions instead.
@@ -28,6 +51,10 @@ Release notes
 ** For any event type, it is possible to ask whether it is active (added to the mainloop) or not: <<mainloop:fun_hook_is_active,`hook_is_active()`>> and friends.
 ** A new mainloop front-end for asynchronous <<mainloop:recordio,record-based I/O>> has been added.
 
 ** For any event type, it is possible to ask whether it is active (added to the mainloop) or not: <<mainloop:fun_hook_is_active,`hook_is_active()`>> and friends.
 ** A new mainloop front-end for asynchronous <<mainloop:recordio,record-based I/O>> has been added.
 
+* Added support for <<trans:,resource pools and transactions>>, 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.
 
 * Added a growing array module `gary.h`, similar to `gbuf.h`, but with
   a much more convenient interface.
 
@@ -41,9 +68,37 @@ Release notes
 ** *Incompatible:* `ucwlib_context->thread_id` is no longer available directly,
   please use ucwlib_thread_id() instead.
 
 ** *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` &rarr; `CONFIG_UCW_FAKE_ELTPOOL`
+** `CONFIG_LARGE_FILES` &rarr; `CONFIG_UCW_LARGE_FILES`
+** `CONFIG_OWN_GETOPT` &rarr; `CONFIG_UCW_OWN_GETOPT`
+** `CONFIG_DIRECT_IO` &rarr; `CONFIG_UCW_DIRECT_IO`
+** `DEFAULT_CONFIG` &rarr; `CONFIG_UCW_DEFAULT_CONFIG`
+** `ENV_VAR_CONFIG` &rarr; `CONFIG_UCW_ENV_VAR_CONFIG`
+** `CONFIG_LFS` was removed
+** `CONFIG_URL_ESCAPE_COMPAT` was removed
+
 * `UCW::Configure` supports running of test programs.
 
 * `UCW::Configure` supports running of test programs.
 
-* `UCW::CGI` support multiple argument tables and UTF-8 mode.
+* `UCW::CGI` support multiple argument tables and UTF-8 mode. Also, it uses the
+  proper HTTP status codes when reporting errors.
+
+* Implementation details of <<fastbuf:,fastbufs>> 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)
 
 
 4.0 (2009-04-13)