========== Changes in 3.1 ================

Fixed an issue where cpulimit could crash when monitoring
a process which forked more child processes while the target CPU limit
was very low.
Thanks to kolAflash for pointing out this problem and providing detailed
troubleshooting.

Made monitoring and creating new monitors for the children of target
processes slightly more efficient.


========== Changes in 3.0 ================

cpulimit could be run in an environment where it is not in the
default path. This would cause an error when cpulimit was in monitor-tree
mode (-m) as new monitoring processes could not be spawned.
We now try to search the full path for cpulimit and, when not found,
error and bail out gracefully.

========== Changes in 2.9 ================

* When counting CPU cycles (jiffies) we now use
  a "long" type instead of "int" to avoid running
  out of space when tracking on-running processes.

========== Changes in 2.8 ================

* Made exit message when child signal is caught only show up
  when in verbose mode.

* Adjusted the way the VERSION value is assigned in the Makefile.
  CFLAGS was being overwritten by Debian's build process.

========== Changes in 2.7 ================

* Fixed compiler warnings regarding string lengths.
  Avoid potential buffer overflow when /proc includes
  process IDs that are very long.


========== Changes in 2.6 ================

* Fixed indentation to avoid compiler warnings. No functional change.

* Updated manual page to warn against using -m on a script.

========== Changes in 2.5 =================

* Added some protection against causing a fork bomb
  when the throttled process is a parent to LimitCPU.
  Patch provided by Johann Felix.

========== Changes in 2.4 =================

* Introduced ability to watch children of the target
  process. This means forks of the process we are throttling
  can also be throttled, using the "-m" or "--monitor-forks" flags.

=========== Changes in 2.3 ================

* Applied patch to man page which fixes -s description.

* Added --foreground, -f flag for launching target programs in
  the foreground. LimitCPU then waits for the target process to exit.
  Should be useful in scripts. Closes Debian bug #836027.


=========== Changes in 2.2 ================

* Escaped double-dashed in manual page to avoid
  warnings from Debian check tool.

* Added -s --signal flag. This flag allows the user to
  specify an alternative signal to send a watched process
  when cpulimit terminates. By default we send SIGCONT.
  The -s flag can accept a number (1-35) or a written
  value such as SIGCONT, SIGSTOP, SIGINT, SIGTERM.


=========== Changes in 2.1 ================

* Added the --quiet (-q) flag to make 
  limitcpu run silently

* Make sure error messages are printed to stderr.

* Placed source code in Subversion (svn) repository.
  Accessable using the SVN checkout command. For
  details, please see the README file.


=========== Changes in 2.0 ================

* Added the -- flag to make sure child processes
  run with command line flags would not confuse
  cpulimit.

* Corrected output of child process name in verbose mode.

=========== Changes in 1.9 ================

* Swapped out __MACH__ pre-compiler flag for __APPLE__ to
  avoid conflicts with GNU Hurd.


* Added --kill (-k) and --restore (-r) flags to allow
  target processes to be killed and restored rather than
  simply throttled.

* Made sure version number is accepted from Makefile.

=========== Changes in 1.8 ================

* Added separate build targets for Linux, FreeBSD and OS X.
  See the compiling section of the README file.

* Applied patch from FreeBSD to our upstream code to make
  future updates on FreeBSD easier.

* When displaying verbose output, cpulimit now redisplays
  the column headers every 20 lines.

* Fixed limiting CPU usage on multicore machines when
  the desired usage limit is great than 100%.
  ie A machine with 4 cores can now properly limit
  multi-threaded applications to, say, 150% or 250%.

* Added test application (busy). See "test" directory.
  To build the test software, run "make tests".

* Removed memrchr() call to allow program to compile on OS X.

* Updated Makefile to work with OS X.

* Fixed OS X compiler error. Macs do not understand
  CLOCK_REALTIME

* Added patch from Debian which added compiler flags. This
  should "harden" CPUlimit on Debian.
  Thanks to Gregor for supplying this patch.


============= Changes in 1.7 ===============

* Minor code cleanup.

* Make sure we do not try to throttle our own process.

* Added "tarball" option to the Makefile to assist
  in packaging. Moved version number to the makefile.

* Added version information to CPUlimit's help screen.

* Detect the number of CPU cores on the machine and
  cap the % we can limit. 1 CPU means we can
  limit processes 1-100%, 2 means 1-200%, 4 means 1-400%.

* Removed extra priority changes. We now only bump
  our priority once, if we have access to do so.
  Also simplified priority increases so it's flexible
  rather than "all or nothing".

* Since we now attempt to detect the number of CPUs
  available, we also give the user the ability to
  override our guess. The -c and --cpu flags have
  been added for this purpose.

* Commands can be launched and throttled by appending
  commands to the end of CPUlimit's argument list. For
  example:
  cpulimit -l 25 firefox


======== Changes in 1.6 ============

* Updated copyright notice in README file.

* Made sure we define a reasonable buffer size
  if PATH_MAX is not already defined. Fixes
  building on Hurd.


======== Changes in 1.5 ============

* Updated man page and cpulimit's "--help" page to
  reflect support for multi-core CPUs.

* Added example of using cpulimit in a shell
  in the man page and the README file.

* The Makefile now uses the default compiler
  on the system, "cc", and tries to fall back
  on gcc if no other compiler is found.


======== Changes in 1.4 ============

* We can now accept limits of 100% or higher. Useful for multi-core
  systems.

* Perform sanity check when getting jiffies. Should prevent memory
  errors if we cannot open proc data.

* Added copyright to README.


========== Changes in 1.3 ============

* Updated license information in cpulimit.c and README file

* The -b flag is now shown under options instead of targets
  in the help text.

* Include man page from Debian with updates.


========= Changes in 1.2 ===========

* Applied Debian patch for checking to see if and how much we can
  adjust our own process priority.

* Added LICENSE file so there wouldn't be any confusion about
  what license CPUlimit uses.

* Applied Debian's patch for long options to avoid segfault.

* Applied Debian's Makefile patch.

* Added Debian patch to avoid opendir leaks.

* Added -b command line parameter to make CPUlimit 
  run in the background, returning control the the 
  user's terminal.

* When cpulimit is launched with one PID to track
  once that process no longer exists, CPUlimit
  will exit. Same behaviour as though the lazy
  flag was set.

* Ported CPUlimit to FreeBSD


======= cpulimit-1.1 released ============

* Fixed a segmentation fault if controlled process exited in particular circumstances
* Better CPU usage estimate
* Fixed a <0 %CPU usage reporting in rare cases
* Replaced MAX_PATH_SIZE with PATH_MAX already defined in <limits.h>
* Command line arguments now available
* Now is possible to specify target process by pid

