New in version 1.24
===================

Security fixes
--------------
* Don't reply to invalid cmdmon packets (CVE-2010-0292)
* Limit client log memory size (CVE-2010-0293)
* Limit rate of syslog messages (CVE-2010-0294)

Bug fixes/Enhancements
----------------------
* Support for reference clocks (SHM, SOCK, PPS drivers)
* IPv6 support
* Linux capabilities support (to drop root privileges)
* Memory locking support on Linux
* Real-time scheduler support on Linux
* Leap second support on Linux
* Support for editline library
* Support for new Linux readonly adjtime
* NTP client support for KoD RATE
* Read kernel timestamps for received NTP packets
* Reply to NTP requests with correct address on multihomed hosts
* Retry name resolving after temporary failure
* Fix makestep command, make it available on all systems
* Add makestep directive for automatic clock stepping
* Don't require _bigadj kernel symbol on NetBSD
* Avoid blocking read in Linux RTC driver
* Support for Linux on S/390 and PowerPC
* Fix various bugs on 64-bit systems
* Fix valgrind errors and compiler warnings
* Improve configure to support common options and variables
* Improve status checking and printing in chronyc
* Return non-zero exit code on errors in chronyc
* Reduce request timeout in chronyc
* Print estimated offset in sourcestats
* Changed chronyc protocol, incompatible with older versions

New in version 1.23
===================

* Support for MIPS, x86_64, sparc, alpha, arm, FreeBSD
* Fix serious sign-extension error in handling IP addresses
* RTC support can be excluded at compile time
* Make sources gcc-4 compatible
* Fix various compiler warnings
* Handle fluctuations in peer distance better.
* Fixed handling of stratum zero.
* Fix various problems for 64-bit systems
* Flush chronyc output streams after each command, to allow it to be driven
  through pipes
* Manpage improvements

Version 1.22
============

This release number was claimed by a release that Mandriva made to patch
important bugs in 1.21.  The official numbering has jumped to 1.23 as a
consequence.

New in version 1.21
===================

* Don't include Linux kernel header files any longer : allows chrony to compile
  on recent distros.
* Stop trying to use RTC if continuous streams of error messages would occur
  (Linux with HPET).

New in version 1.20
===================

* Many small tidy-ups and security improvements
* Improve documentation (RTC support in post 2.0 kernels)
* Remove trailing \n from syslog messages
* Syslog messages now include IP and port number when packet cannot be sent.
* Added the "acquisitionport" directive.  (Kalle Olavi Niemitalo)
* Use uname(2) instead of /proc/version to get kernel version.
* Merge support for Linux on Alpha
* Merge support for 64bit architectures
* Don't link -lm if it's not needed
* Fix Solaris build (broken by 64bit change)
* Add detection of Linux 2.5
* Allow arbitrary value of HZ in Linux kernel
* Fix for chrony.spec on SuSE (Paul Elliot)
* Fix handling of initstepslew if no servers are listed (John Hasler)
* Fix install rule in Makefile if chronyd is in use (Juliusz Chroboczek)
* Replace sprintf by snprintf to remove risk of buffer overrun (John Hasler)
* Add --help to configure script

New in version 1.19
===================

* Auto-detect kernel's timer interrupt rate (so-called 'HZ') when chronyd
  starts instead of relying on compiled-in value.
* Fix 2 bugs in function that creates the directory for the log and dump files.
* Amended webpage URL and contact details.
* Generate more informative syslog messages before exiting on failed
  assertions.
* Fix bugs in clamping code for the tick value used when slewing a large
  offset.
* Don't chown files to root during install (should be pointless, and makes RPM
  building awkward as ordinary user.)
* Include chrony.spec file for building RPMs

New in version 1.18
===================
* Amend homepage and mailing list information to chrony.sunsite.dk
* Delete pidfile on exit from chronyd.
* Improvements to readline interface to chronyc
* Only generate syslog message when synchronisation is initially lost (instead
  of on every failed synchronisation attempt)
* Use double fork approach when initialising daemon.
* More things in contrib directory.
* New options to help package builders: --infodir/--mandir for configure, and
  DESTDIR=xxx for make.  (See section 2.2 of chrony.txt for details).
* Changed the wording of the messages generated by mailonchange and logchange
  directives.

New in version 1.17
===================
* Port to NetBSD
* Configuration supports Linux on PPC
* Fix compilation warnings
* Several documentation improvements
* Bundled manpages (taken from the 'missing manpages project')
* Cope with lack of bzero function for Solaris 2.3 systems
* Store chronyd's pid in a file (default /var/run/chronyd.pid) and check if
  chronyd may already be running when starting up.  New pidfile directive in
  configuration file.
* Any size subnet is now allowed in allow and deny commands.  (Example:
  6.7.8/20 or 6.7.8.x/20 (any x) mean a 20 bit subnet).
* The environment variables CC and CFLAGS passed to configure can now be used
  to select the compiler and optimisation/debug options to use
* Write syslog messages when chronyd loses synchronisation.
* Print GPL text when chronyc is run.
* Add NTP broadcast server capability (new broadcast directive).
* Add 'auto_offline' option to server/peer (conf file) or add server/peer (via
  chronyc).
* Add 'activity' command to chronyc, to report how many servers/peers are
  currently online/offline.
* Fix long-standing bug with how the system time quantum was calculated.
* Include support for systems with HZ!=100 (HZ is the timer interrupt
  frequency).
* Include example chrony.conf and chrony.keys files (examples subdirectory).
* Include support for readline in chronyc.

New in version 1.16.1
=====================
* Fix compilation problem on Linux 2.4.13 (spinlock.h / spinlock_t)

New in version 1.16
===================
* More informative captions for 'sources' and 'sourcestats' commands in chronyc
  (use 'sources -v' and 'sourcestats -v' to get them).
* Correct behaviour for Solaris versions>=2.6 (dosynctodr not required on these
  versions.)
* Remove some compiler warnings (Solaris)
* If last line of keys file doesn't have end-of-line, don't truncate final
  character of that key.
* Change timestamp format used in logfiles to make it fully numeric (to aid
  importing data into spreadsheets etc)
* Minor documentation updates and improvements.

New in version 1.15
===================
* Add contributed change to 'configure' to support Solaris 2.8 on x86
* Workaround for assertion failure that arises if two received packets occur
  close together. (Still need to find out why this happens at all.)
* Hopefully fix problem where fast slewing was incompatible with machines
  that have a large background drift rate (=> tick value went out of range
  for adjtimex() on Linux.)
* Fix rtc_linux.c compile problems with 2.4.x kernel include files.
* Include support for RTC device not being at /dev/rtc (new rtcdevice directive
  in configuration file).
* Include support for restricting network interfaces for commands (new
  bindcmdaddress directive in configuration file)
* Fix potential linking fault in pktlength.c (use of CROAK macro replaced by
  normal assert).
* Add some material on bug reporting + contributing to the chrony.texi file
* Made the chrony.texi file "Vim6-friendly" (removed xrefs on @node lines,
  added folding markers to chapters + sections.)
* Switched over to GPL for the licence

New in version 1.14
===================
* Fix compilation for certain other Linux distributions (including Mandrake
  7.1)

New in version 1.13
===================
* Fixed compilation problems on Redhat/SuSE installations with recent 2.2.x
  kernels.
* Minor tidy-ups and documentation enhancements.
* Add support for Linux 2.4 kernels

New in version 1.12
===================

* Trial fix for long-standing bug in Linux RTC estimator when system time is
  slewed.
* Fix bug in chronyc if -h is specified without a hostname
* Fixes to logging various error conditions when operating in daemon mode.
* More stuff under contrib/
* Changes to README file (e.g. about the new chrony-users mailing list)

New in version 1.11a
====================

* Minor changes to contact details
* Minor changes to installation details (chrony subdirectory under doc/)

New in version 1.11
===================

* Improve robustness of installation procedure
* Tidy up documenation and contact details
* Distribute manual as .txt rather than as .ps
* Add -n option to chronyc to work with numeric IP addresses rather than
  names.
* Add material in contrib subdirectory
* Improve robustness of handling drift file and RTC coefficients file
* Improve robustness of regression algorithm

New in version 1.1
==================

Bug fixes
---------

* Made linear regression more resistant to rounding errors (old one
  occasionally generated negative variances which made everything go
  haywire).  Trap infinite or 'not-a-number' values being used to
  alter system clock to increase robustness further.

Other changes/Enhancements
--------------------------

* Support for Linux 2.1 and 2.2 kernels

* New command 'makestep' in chronyc to immediately jump the system
  time to match the NTP estimated time (Linux only) - a response to
  systems booting an hour wrong after summertime/wintertime changes,
  due to RTCs running on local time.  Needs extending to Sun driver
  files too.

* New directives 'logchange' and 'mailonchange' to log to syslog or
  email to a specific address respectively if chronyd detects a clock
  offset exceeding a defined threshold.

* Added capability to log all client/peer NTP accesses and command
  accesses (can be turned off with conf file directive 'noclientlog').
  Added 'clients' command to chronyc to display this data.

* Improved manual mode to use robust regression rather than 2 point
  fit.

* Added 'manual list' and 'manual delete' commands to chronyc to
  allow display of entered timestamps and discretionary deletion of
  outliers.

* If host goes unsynchronised the dummy IP address 0.0.0.0 is detected
  to avoid attempting a reverse name lookup (to stop dial on demand IP
  links from being started)

* Changed chronyc/chronyd protocol so messages are now all variable
  length.  Saves on network bandwidth particularly for large replies
  from chronyd to chronyc (to support the clients command).

* Added bindaddress directive to configuration file, to give
  additional control over limiting which hosts can access the local
  server.

* Groundwork done for a port to Windows NT to compile with Cygwin
  toolkit.  chronyc works (to monitor another host).  sys_winnt.c
  needs finishing to use NT clock control API.  Program structure
  needs adapting to use Windows NT service functions, so it can be
  started at boot time.  Hopefully a Windows NT / Cygwin guru with
  some spare time can take this port over :-)

New in version 1.02
===================

Bug fixes
---------

* Fix error messages in chronyc if daemon is not reachable.

* Fix config file problem for 'allow all' and 'deny all' without a
  trailing machine address.

* Remove fatal failed assertion if command socket cannot be read from
  in daemon.

* Rewrote timezone handling for Linux real time clock, following
  various reported problems related to daylight saving.

Other changes/Enhancements
--------------------------

* Configure script recognizes BSD/386 and uses SunOS 4.1 driver for
  it.

* Log files now print date as day-month-year rather than as a day
  number.  Milliseconds removed from timestamps of logged data.
  Banners included in file to give meanings of columns.

* Only do 1 initial step (followed by a trimming slew) when
  initialising from RTC on Linux (previously did 2 steps).

New in version 1.01
===================

Bug fixes
---------

* Handle timezone of RTC correctly with respect to daylight saving
  time

* Syntax check the chronyc 'local' command properly

* Fixed assertion failed fault in median finder (used by RTC
  regression fitting)

Other changes/Enhancements
--------------------------

* Log selection of new NTP reference source to syslog.

* Don't zero-pad IP address fields

* Add new command to chronyc to allow logfiles to be cycled.

* Extend allow/deny directive syntax in configuration file to so
  directive can apply to all hosts on the Internet.

* Tidy up printout of timestamps to make it clear they are in UTC

* Make 'configure' check the processor type as well as the operating
  system.
