$Id: NEWS,v 6.14 2005/11/09 07:02:39 cher Exp $

Reuse 4.2.2 (20051109)
======================
Fixes for Linux kernel 2.6.

Reuse 4.2.1 (20051027)
======================
Fixes for x86_64 platform. Fixes for GCC 4.0 compiler.

Reuse 4.2.0 (20050808)
======================
(exec.c) New functions added: `task_GetRealTime',
`task_SetMaxTimeMillis', `task_EnableMemoryLimitError',
`task_IsMemoryLimit'. These functions are currently implemented
only for the Linux system. The functions are described below.

Added support for process real time accounting. The
process start and process stop real (astronomical) time is
saved, and the real execution time may be obtained using
`task_GetRealTime' function.

Added support for some non-standard Linux kernel features, which
are available only on a specially patched kernel. The features
are:
  o Support for millisecond-precision time limits. The precise
    time limit is set using `task_SetMaxTimeMillis' function. If
    the kernel does not support millisecond time limits, the
    reuse library tries to emulate precise time limits using
    second-precision time limits. Check whether the kernel
    support precise time limits is performed upon the first call
    of `task_SetMaxTimeMillis' or `task_SetMaxTime' functions,
    so it is possible to compile the library on the kernel
    without precise time-limit support, and run the programs on
    the kernel with precise time-limit support.
  o Support for "Memory Limit Error" detection. Normally, if a
    process runs out of available address memory (for example,
    as configured by `task_SetVMSize'), the kernel refuses to
    allocate more memory and the further behavious of the
    process is determined by the process itself. If support for
    memory limit error is activated, the kernel kills the
    offending process with SIGKILL immediately and sets special
    "Memory Limit Error" flag, which is available for the
    parent. Memory limit error support is activated by a call of
    `task_EnableMemoryLimitError', and the memory limit error
    condition is checked by `task_IsMemoryLimit'. If the kernel
    does not support memory limit error detection, call of
    `task_EnableMemoryLimitError' does no harm, and call of
    `task_IsMemoryLimit' always returns 0.

Reuse 4.0.1 (20050327)
======================
Win32 support is improved. Many functions of `exec.c' layer are
implemented. The reuse library on Win32 now supports limitations
on the memory size and on the running time of the process.

Win32 support is improved. Some problems of configure script on
Cygwin/mingw are fixed.

The `reuse-config' program on Win32 is a natively compiled C
program instead of bash script. This fixes a problem of handing
up of the cygwin bash shell, if the reuse-config was run without
explicit `bash' in the command line.

New function `task_SetMaxProcCount' is added to the exec.c module.
This function is non-functional on Unix, but on Win32 platform
it sets the maximal number of processes in the process group.

Support for Linux improved. Different versions of the Linux kernel
treat the CPU Time limit differently. Older versions (2.4) allow a
process run 1 second longer, than in its CPU limit (for example, if
CPU limit is 1 second, then the process is allowed to run for 2
seconds). Newer versions (2.6) enforce strict limit (i. e. if CPU
limit is 1 second, then the process is allowed to run for 1 second).
The type of the Linux kernel is determined at run-time by starting
a simple busy loop program with CPU limit set to 0 seconds.
Then the actual running time is measured and the appropriate
CPU limit correction is enabled. This check is performed upon
the first invocation of the `task_SetMaxTime' function.
Unfortunately, this slows down the first start of the child process
with CPU time limit set. The time elapsed for this test is not
counted as the child process time.

Reuse 4.0.0 (20040919)
======================
New major version is released and this changelog is started.
The major change agains the Reuse-3 library is transition to GNU
build tools (autoconf/automake).
