1.14.1 - 2023-06-27
  - General changes/additions
    * internal.c: update #if to only use GNU-specific strerror_r() when __GLIBC__ is defined (#791) Dimitry Andric
    * augeas.c: Fix bug from PR#691 where the nodes of a newly created file are lost upon a subsequent load operation (#810) George Hansper
    * HACKING.md: describe testing (#796) Laszlo Ersek
    * Add GitHub Actions (#714) Raphaël Pinson
    * augprint.c: remove `#include <malloc.h>` , add `#include <libgen.h>` (#792) Ruoyu Zhong

  - Lens changes/additions
    * TOML: support trailing commas in arrays (#809) Bao
    * Tmpfiles: allow '=', '~', '^' for letter types, allow ":" as prefix for the mode (#805) Pino Toscano
    * Sshd: Add keyword PubkeyAcceptedAlgorithms as comma-separated list of items (#806) Dave Re
    * Cmdline: Allow whitespace at the end of kernel commnd line (#798) rwmjones

1.14.0 - 2022-12-07
  - General changes/additions
    * Update submodule gnulib to 2f7479a16a3395f1429c7795f10c5d19b9b4453e (#781)
    * Add bash-completion for augtool, augmatch, augprint (#783) George Hansper
    * Fix: Allow values to contain arbitrary unbalanced square brackets (#782) George Hansper
    * Add package bash to build stage in Dockerfile (#776) George Hansper
    * Add augprint tool for creating idempotent augtool scripts (#752) George Hansper
    * Replace deprecated 'security_context_t' with 'char *' (#747) Leo-Schmit
    * src/syntax.c: Fix whitespace which confuses static checkers (#725) rwmjones
    * README.md: Add oss-fuzz status badge (#702) Sergey Nizovtsev
    * Package augmatch, too (#688) oleksandriegorov
    * Add Github workflow to create releases with complete source tarballs (#744) Hilko Bengen

  - Lens changes/additions
    * Resolv: add option trust-ad (#784) George Hansper
    * Sos: new lens for /etc/sos/sos.conf (based on IniFile)
           (#779) George Hansper
    * Pg_Hba: unquoted auth-method may contain hyphens (#777) George Hansper
    * Sysctl: Allow keys to contain * and : and / characters (#755) M Filka
    * Semanage: Fix parsing of ignoredirs (#758) Richard W M Jones
    * Systemd: allow empty quoted environment variable values
               (#757) Michal Vasko
    * Systemd: allow values starting with whitespaces for Exec* and
               Environment service entries. (#757) Michal Vasko
    * Toml: workaround to allow writing toml files (#742) Richard
    * Kdump: parse "auto_reset_crashkernel" (#754) Laszlo Ersek
    * Keepalived: add parameters notify_stop and notify_deleted (#749) Adam Bambuch
    * Chrony: add new directives and options (#745) Miroslav Lichvar
    * Redis: Allow redis lens to set 'SAVE ""' as a valid option
             (#738) Mitch Hagstrand
    * ClamAV: update ClamAV lens to autoload /etc/clamav/*.conf
              (#748) Guillaume Ross
    * AuthselectPam: new lens for /etc/authselect/custom/*/*-auth and
          /etc/authselect/custom/*/postlogin (#743) Heston Snodgrass
    * Sshd: Parse GSSAPIKexAlgorithms PubkeyAcceptedKeyTypes CASignatureAlgorithms
            as comma-seperated lists instead of simple strings
            (#721) Edward Garbade
    * Yum: Add additional unit tests (#677) Pat Riehecky
    * Cockpit: new lens for /etc/cockpit/cockpit.conf (#675) Pat Riehecky

1.13.0 - 2021-10-15
  - General changes/additions
    * Add Dockerfile (Nicolas Gif) (Issue #650)
    * augtool: Improved readline integration to handle quoting issues
               (Pino Toscano)
    * typechecker: Allow including '/' in keys and labels. Thanks to
                   felixdoerre for pointing out that this restriction was
                   unnecessary. See issue #668 for the discussion.
    * Add function modified() to select nodes which are marked as dirty
      (George Hansper) (Issue #691)
    * Add CLI command 'preview' and API 'aug_preview' to preview file contents
      (George Hansper) (#690)
    * Add "else" operator to augeas path-filter expressions (priority selector)
      (George Hansper) (#692)
    * Add new axis 'seq' to allow /path/seq::*[expr] to match and create numeric
      nodes, as idempotent alternative to /path/*[expr] (George Hansper) (#706)

  - Lens changes/additions
    * Authinfo2: new lens to parse Authinfo2 format (Nicolas Gif) (Issue #649)
    * Chrony: add new options (Miroslav Lichvar) (Issue #698)
    * Cmdline: New lens to parse /proc/cmdline (Thomas Weißschuh)
    * Crypttab: support UUID in device and / in opt (Raphaël Pinson) (#713)
    * Fail2ban: new lens to parse Fail2ban format (Nicolas Gif) (Issue #651)
    * Grub: support '+' in kernel command line option names
            (Pino Toscano) (Issue #647)
    * Krb5: handle [plugins] subsection (Pino Toscano) (Issue #663)
    * Limits: support colons in the domain pattern of the limits lens
              (Xavier Mol) (Issue #645)
    * Logrotate: add hourly schedule (Jason A. Smith) (Issue #655)
    * Mke2fs: parse more common entries between [defaults] and the tags
              in [fs_types], fix the type of few entries, handle the [options]
              stanza (Pino Toscano) (Issue #642)
              support quoted values (Pino Toscano) (Issue #661)
    * NetworkManager: allow # in values (mfilka) (#723)
    * Opendkim: update to match current conffile format (Issue #644)
    * Postfix_Master: Allow unix-dgram as type (Issue #635)
    * Postfix_transport: Allow underscore (Anton Baranov) (Issue #678)
    * Postgresql: Allow hyphen '-' in values that don't require quotes
              (Marcin Barczyński) (Issues #700 #701)
    * Properties: Allow "/" in property names (felixdoerre) (Issue #680)
    * Redis: add incl path /etc/redis.conf (Raphaël Pinson) (#726)
              support "replicaof" (Raphaël Pinson) (#727)
              fix support for "sentinel" (Raphaël Pinson) (#728)
    * Resolv: Support new options (Trevor Vaughan) (Issues #707 #708)
    * Rsyslog: support multiple actions in filters and selectors (Issue #653)
    * Shellvars: exclude more tcsh profile scripts (Pino Toscano) (Issue #627)
    * Simplevars: add ocsinventory-agent.cfg (Pat Riehecky) (Issue #637)
    * Sudoers: support new @include/@includedir directives
              (Pino Toscano) (Issue #693)
    * Sudoers: Allow AD groups (luchihoratiu) (Issue #696)
              Support negative integers (Ando David Roots) (#724)
    * Ssh: add Match keyword support (granquet) (Issue #695)
    * Sshd: support quotes in Match conditions (Issue #739)
    * Systemd: fix parsing of envvars with spaces (Pino Toscano) (#659)
              Add incl paths according to 'systemd.network(5)' (chruetli) (#683)
    * Tinc: new lens for Tinc VPN configuration files (Thomas Weißschuh) (#718)
    * Toml: support arrays (norec) in inline tables (Raphaël Pinson) (#703)
    * Tmpfiles: improvements to the types specification
              (Pino Toscano) (Issue #694)

1.12.0 - 2019-04-13
  - General changes/additions
    * update gnulib to 91584ed6
  - Lens changes/additions
    * Anaconda: new lens to process /etc/sysconfig/anaconda instead of
                Shellvars (Pino Toscano) (Issue #597)
    * DevfsRules: add lens for FreeBSD devfs.rules files
    * Dovecot: permit ! in block titles (Nathan Ward) (Issue #599)
    * Hostname: Allow creation of hostname when file is missing
                (David Farrell) (Issue #606)
    * Krb5: add more pkinit_* options (Issue #603)
    * Logrotate: fix missing recognition of double quoted filenames (Issue #611)
    * Multipath: accept values enclosed in quotes (Issue #583)
    * Nginx: support unix sockets as server address (Issue #618)
    * Nsswitch: add merge action (Issue #609)
    * Pam: accept continuation lines (Issue #590)
    * Puppetfile: allow symbols as (optional) values (Issue #619)
                  allow comments in entries (Issue #620)
    * Rsyslog: support dynamic file paths (Issue #622)
               treat #!/+/- as comment (arnolda, PR #595)
    * Syslog: accept 'include' directive (Issue #486)
    * Semanage: new lens to process /etc/selinux/semanage.conf instead of
                Simplevars (Pino Toscano) (Issue #594)
    * Shellvars: allow and/or in @if conditions (#582)
                 accept functions wrapped in round brackets,
                 accept variables with a dash in their name,
                 exclude csh/tcsh profile scripts (Pino Toscano) (Issue #600)
                 accept variable as command (Issue #601)
    * Ssh: accept RekeyLimit (Issue #605)
    * Sshd: accept '=' to separate option names from their values
            (Emil Dragu, #587)
    * Sudoers: support 'always_query_group_plugin' flag (Steve Traylen, #588)
    * Strongswan: parse lists. This is a backwards-incompatible change
                  since list entries that were parsed into a single string
                  are now split into a list of entries (Kaarle Ritvanen)
    * Toml: new lens to parse .toml files (PR #91)
    * Xorg: accept empty values for options (arnolda, PR #596)

1.11.0 - 2018-08-24
  - General changes/additions
    * augmatch: add a --quiet option; make the exit status useful to tell
                whether there was a match or not
    * Drastically reduce the amount of memory needed to evaluate complex
      path expressions against large files (Issue #569)
    * Fix a segfault on OSX when 'augmatch' is run without any
      arguments (Issue #556)
  - API changes
    * aug_source did not in fact return the source; and always returned
      NULL for that. That has been fixed.
  - Lens changes/additions
    * Chrony: add new options supported in chrony 3.2 and 3.3 (Miroslav Lichvar)
    * Dhclient: fix parsing of append/prepend and similar directives
                (John Morrissey)
    * Fstab: allow leading whitespace in mount entry lines
             (Pino Toscano) (Issue #544)
    * Grub: tolerate some invalid entries. Those invalid entries
            get mapped to '#error' nodes
    * Httpd: accept comments with whitespace right after a tag
             opening a section (Issue #577)
    * Json: allow escaped slashes in strings (Issue #557)
    * Multipath: accept regular expressions for devnode, wwid, and property
      in blacklist and blacklist_exceptions sections (Issue #564)
    * Nginx: parse /etc/nginx/sites-enabled (plumbeo)
             allow semicolons inside double quoted strings in
             simple directives, and allow simple directives without
             an argument (Issue #566)
    * Redis: accept the 'bind' statement with multiple IP addresses
             (yannh) (Issue #194)
    * Rsyslog: support include() directive introduced in rsyslog 8.33
    * Strongswan: new lens (Kaarle Ritvanen)
    * Systemd: do not try to treat *.d or *.wants directories as
               configuration files (Issue #548)

1.10.1 - 2018-01-29
  - API changes
    * Fix a symbol versioning mistake in libfa that unnecessarily broke ABI

1.10.0 - 2018-01-25
  DO NOT USE THIS RELEASE, USE 1.10.1 INSTEAD

  - General changes/additions
    * New CLI utility 'augmatch' to print the tree for a file and select
      some of its contents
    * New command 'count' in augtool
    * New function 'not(bool) -> bool' for path expressions
    * The path expression 'label[. = "value"]' can now be written more
      concisely as 'label["value"]'
  - API changes
    * libfa has now a function fa_json to export an FA as a JSON file, and
      fa_state_* functions that make it possible to iterate over the FA's
      states and transitions. (Pedro Valero Mejia)
    * Add functions aug_ns_label, aug_ns_value, aug_ns_count, and
      aug_ns_path to get the label (with index), the value, the number of
      nodes, and the fully qualified path for nodes stored in a nodeset in
      a variable efficiently
  - Lens changes/additions
    * Grubenv: new lens to process /boot/grub/grubenv (omgold)
    * Httpd: also read files from /etc/httpd/conf.modules.d/*.conf
             (Tomas Meszaros) (Issue #537)
    * Nsswitch: allow comments at the end of a line (Philip Hahn) (Issue #517)
    * Ntp: accept 'ntpsigndsocket' statement (Philip Hahn) (Issue #516)
    * Properties: accept empty comments with DOS line endings (Issue #161)
    * Rancid: new lens for RANCiD router databases (Matt Dainty)
    * Resolv: accept empty comments with DOS line endings (Issue #161)
    * Systemd: also process /etc/systemd/logind.conf (Pat Riehecky)
    * YAML: process a document that is just a sequence (John Vandenberg)

1.9.0 - 2017-10-06
  - General changes/additions
    * several improvements to the error messages when transforming a tree
      back to text fails. They now make it clearer what part of the tree
      was problematic, and what the tree should have looked like.
    * Fixed the pkg-config file, which should now be usable
    * Fix handling of backslash-escaping in strings and regular expressions
      in the lens language. We used to handle constructs like "\\" and
      /\\\\/ incorrectly. (Issue #495)
    * do not unescape the default value of a del on create; otherwise we are
      double unescaping these strings (Issue #507)
    * remove tempfile when saving files because destination is not writable
      (Issue #479)
    * span information is now updated on save (Issue #467)
    * fix lots of warnings generated by gcc 7.1
    * Various changes to reduce bashisms in tests and make them run on
      FreeBSD (Romain Tartière)
    * Fix building on Solaris (Shawn Ferry)
  - API changes
    * add function aug_ns_attr to allow iterating through a nodeset
      quickly. See examples/dump.c for an example of how to use them
      instead of aug_get, aug_label etc. and for a way to measure
      performance gains.
  - Lens changes/additions
    * Ceph: new lens for /etc/ceph/ceph.conf
    * Cgconfig: accept fperm & dperm in admin & task (Pino Toscano)
    * Dovecot: also load files from /usr/local/etc (Roy Hubbard)
    * Exports: relax the rules for the path at the beginning of a line so
      that double-quoted paths are legal, too
    * Getcap: new lens to parse generic termcap-style capability databases
      (Matt Dainty)
    * Grub: accept toplevel 'boot' entry (Pino Toscano)
    * Httpd: handle empty comments with a continuation line (Issue #423);
      handle '>""' in a directive properly (Issue #429); make space between
      quoted arguments optional (Issue #435); accept quoted strings as part
      of bare arguments (Issue #470)
    * Nginx: load files from sites-available directory (Omer Katz) (Issue #471)
    * Nslcd: new lens for nss-pam-ldapd config (Jose Plana)
    * Oz: New lense for /etc/oz/oz.cnf
    * postfix lenses: also load files from /usr/local/etc (Roy Hubbard)
    * Properties: accept DOS line endings (Issue #468)
    * Rtadvd: new lens to parse the rtadvd configuration file (Matt Dainty)
    * Rsyslog: load files from /etc/rsyslog.d (Doug Wilson) (Issue #475);
      allow spaces before the # starting a comment; allow comments inside
      config statements like 'module'
    * Shellvars: load FreeBSD's /etc/rc.conf.d (Roy Hubbard)
    * Ssh: accept '=' to separate keyword from arguments
    * Sshd: split HostKeyAlgorithms into list of values; recognize quoted
      group names with spaces in them (Issue #477)
    * Sudoers: recognize "match_group_by_gid" (Luigi Toscano) (Issue #482)
    * Syslog: allow spaces before the # starting a comment
    * Termcap: new lens to parse termcap capability databases (Matt Dainty)
    * Vsftpd: accept seccomp_sandbox (Denys Stroebel)
    * Xymon: accept 'group-sorted' directive (Issue #462)

1.8.1 - 2017-08-17
  - General changes/addition
    * Fix error in handling escaped whitespace at the end of path expressions
      (addresses CVE-2017-7555)

1.8.0 - 2017-03-20
  - General changes/additions
    * augtool: add a 'source' command exposing the aug_source API call
    * augtool: add a 'context' command to make changing into a node more
      discoverable
    * augtool: add an 'info' command to print important information
    * augtool: dramatically reduce memory consumption when all lenses are
      loaded by more aggressively releasing temporary data structures.  On
      my machine, maximum memory usage of 'augtool -L' drops from roughly
      90MB to about 20MB. This will not change the amount of memory used
      when only specific lenses are used, only the default behavior of
      loading all lenses, i.e., when -A is not passed.
    * make building augtool statically possible (Jörg Krause)
    * split aug_to_xml into its own source file, so that statically linking
      against libaugeas.a doesn't require also linking against libXml2 and
      its dependencies, provided aug_to_xml is not needed.
  - API changes
    * add aug_source to find the source file for a particular node
    * reduce memory consumption when AUG_NO_MODL_AUTOLOAD is _not_ passed;
      exact same details as described above for augtool
  - Lens changes/additions
    * Chrony: allow floating point numbers (Miroslav Lichvar)
              add new directives from chrony 3.0 and 3.1 (Miroslav Lichvar)
    * Krb5: support include/includedir directives (Jason Smith) (Issue #430)
            support realms that start with numbers (Dustin Wheeler) (Issue #437)
    * Multipath: update to multipath-0.4.9-99.el7 (Xavier Mol)
    * Php: also look for FPM files in /etc/php/*/fpm/pool.d (Daniel Dico)
    * Postfix_virtual: allow underscores in e-mail addresses (Jason Lingohr)
                       (Issue #439)
    * Radicale: new lens for config of http://radicale.org/ (James Valleroy)
    * Rsyslog: support multiple options in module statements (Craig Miskell)
    * Ssh: also look for files in in /etc/ssh/ssh_config.d (Ian Mortimer)
    * Tmpfiles: parse 'q'/'Q' modes, parse two-character arguments,
                parse three-digit file modes
    * Xml: support external entity declarations in the doctype (Issue #142)
    * Yum: also read DNF files from /etc/dnf (Pat Riehecky) (Issue #434)

1.7.0 - 2016-11-08
  - General changes/additions
    * allow multiple transforms handling the same file as long as they
      also use the same lens (reported by Rich Jones)
    * fix a use-after-free in recursive lenses when spans are
      enabled (Issue #397)
    * fix an illegal memory access during put that can be triggered by a
      lens of the form 'del ... | l1 . l2' when the put has to jump
      branches in the union (Issue #398)
    * a large number of fixes based on Coverity scanning and running with
      gcc's address sanitizer. None of the issues uncovered would have lead
      to particularly significant leaks (they were all on the order 100-200
      bytes) and often hard to trigger, but we now have proof that at least
      while running tests there are no leaks at all.
      See https://github.com/hercules-team/augeas/pull/405 for details.
    * The type checker now checks regexes that are involved in
      expressions. For example, it used to be possible to write 'let rx =
      /a/ | /b)/' and not get an error from the syntax checker, even though
      'let rx = /b)/' would result in an error. Such constructs are now
      checked properly. This new check might lead to errors in existing
      lenses, requiring that they be fixed.
  - Lens changes/additions
    * Cron_User: New lens to handle user crontab files in /var/spool/cron
    * Csv: fix failure to load lens on OpenBSD (Issue #396)
    * Grub: also look for UEFI grub files in /boot/efi/EFI/*/grub.conf
            (Rich Jones)
    * Opendkim: new lens for /etc/opendkim.conf (Craig Miskell)
    * Php: look for php.ini where Ubunto 16.04 puts it, too (Michael Wodniok)
    * Splunk: support Splunk Universal Forwarder and underscore-prefixed
              keys for 6.x (Jason Antman)

1.6.0 - 2016-08-05
  - General changes/additions
    * augtool: add --load-file option, and corresponding load-file command
      to load individual files based on the autoload information in lenses
    * path expressions: numbers in path expressions are now 64 bit integers
      rather than whatever the C compiler decided 'int' would be
  - API changes
    * add aug_load_file to load individual files, bug #135
  - Lens changes/additions
    * Httpd: follow line continuations in comments
    * Nginx: look for nginx.conf in /usr/local/etc, too (Omer Katz)
    * Ntp: allow 'pool' (Craig Miskell) (Issue #378);
           fix restrict to allow also -4 and also fix
           save/store ability (Josef Reidinger) (Issue #386)
    * Pam: use spaces instead of tabs as the separator in new entries
           (Loren Gordon) (Issue #236)
    * Postfix_Passwordmap: New lens to parse Postfix password maps
           (Anton Baranov) (Issue #380)
    * Rsyslog: Support for rsyslog RainerScript syntax
           (Craig Miskell) (Issue #379)
    * Shellvars: Load /etc/lbu/lbu.conf, the config for Alpine's Local
           Backup Utility (Kaarle Ritvanen)
           Load /etc/profile, /etc/profile.d/*, and /etc/byobu
    * Vsftpd: Add allow_writeable_chroot boolead option
           (Robert Moucha) (Issue #376)

1.5.0 - 2016-05-11
  - General changes/additions
    * augtool: new --timing option that prints after each operation how long
      it took
    * augtool: print brief help message when incorrect options are given rather
      than dumping all help text
    * Path expressions: optimize performance of evaluating certain
      expressions
    * lots of safety improvements in libfa to avoid using uninitialized
      values and the like (Daniel Trebbien)
    * tolerate building against OSX' libedit (Issue #256)
  - API changes
    * aug_match: fix a bug where expressions like /foo/*[2] would match a
      hidden node and pretend there was no match at all. We now make sure
      we never match a hidden node. Thanks to Xavier Mol for reporting the
      problem.
    * aug_get: make sure we set *value to NULL, even if the provided path is
      invalid (Issue #372)
    * aug_rm: fix segfault when deleting a tree and one of its ancestors
      (Issue #319)
    * aug_save: fix segfault when trying to save an invalid subtree. A
      routine that was generating details for the error message overflowed
      a buffer it had created (Issue #349)
  - Lens changes/additions
    * AptConf: support hash comments
    * AptSources: support options (Issue #295),
                  support brackets with spaces in URI (GH #296)
                  rename test file to test_aptsources.aug
    * Chrony: allow signed numbers and indentation, fix stray EOL entry,
              disallow comment on EOL, add many missing directives and
              options (Miroslav Lichvar, RHBZ#1213281)
              add new directives and options that were added in
              chrony-2.2 and chrony-2.3 and improve parsing of
              access configuration (Miroslav Lichvar, Issue #348)
              add new options for chrony-2.4 (Miroslav Lichvar)
    * Dhclient: avoid put ambiguity for node without value (Issue #294)
    * Group: support NIS map, support an overridden and disabled password,
             i.e. `+:*::` (Matt Dainty) (Issue #258)
    * Host_Conf: support spaces between list items (Cedric Bosdonnat, Issue #358)
    * Httpd: add paths to SLES vhosts
             (Jan Doleschal) (Issue #268)
             parse backslashes in directive arguments (Issue #307)
             parse mismatching case of opening/closing tags
             parse multiple ending section tags on one line
             parse wordlists in braces in SSLRequire directives
             parse directive args starting with double quote (Issue #330)
             parse directive args containing quotes
             support perl directives (Issue #327)
             parse line breaks/continuations in section arguments
             parse escaped spaces in directive/section arguments
             parse backslashes at the start of directive args (Issue #324)
    * Inputrc: support $else (Cedric Bosdonnat, Issue #359)
    * Interfaces: add support for source-directory (Issue #306)
    * Json: add comments support, refactor,
            allow escaped quotes and blackslashes
    * Keepalived: fix space/tag alignments and hanging spaces,
                  add vrrp_mcast_group4 and vrrp_mcast_group6,
                  add more vrrp_instance flags,
                  add mcast/unicast_src_ip and unicast_peer,
                  add missing garp options,
                  add vrrp_script options,
                  expand vrrp_sync_group block,
                  allow notify option
                  (Joe Topjian) (Issue #266)
    * Known_Hosts: refactoring and description fixed
    * Logrotate: support dateyesterday option (Chris Reeves) (GH #367, #368)
    * MasterPasswd: new lens to parse /etc/master.passwd
                    (Matt Dainty) (Issue #258)
    * Multipath: add various missing keywoards (Olivier Mangold) (Issue #289)
    * MySQL: include /etc/my.cnf.d/*.cnf (Issue #353)
    * Nginx: improve typechecking of lens,
             allow masks in IP keys and IPv6 (Issue #260)
             add @server simple nodes (Issue #335)
    * Ntp: add support for basic interface syntax
    * OpenShift_Quickstarts: Use Json.lns
    * OpenVPN: add all options available in OpenVPN 2.3o
               (Justin Akers) (Issue #278)
    * Puppetfile: name separator is not mandatory
                  add support for moduledir (Christoph Maser)
    * Rabbitmq: remove space in option name,
                add support for cluster_partitioning_handling,
                add missing simple options (Joe Topjian) (Issue #264)
    * Reprepro_Uploaders: add support for distribution field
                          (Mathieu Alorent) (Issue #277),
                          add support for groups (Issue #283)
    * Rhsm: new lens to parse subscription-manager's /etc/rhsm/rhsm.conf
    * Rsyslog: improve property filter parsing,
               treat whitespace after commas as optional.
               recognize '~' as a valid syslog action (discard)
               (Gregory Smith) (Issue #282),
               add support for redirecting output to named pipes
               (Gerlof Fokkema) (Issue #366)
    * Shellvars: allow partial quoting, mixing multiple styles
                 (Kaarle Ritvanen) (Issue #183);
                 allow wrapping builtin argument to multiple lines
                 (Kaarle Ritvanen) (Issue #184);
                 support ;; on same line with multiple commands
                 (Kaarle Ritvanen) (Issue #185);
                 allow line wrapping and improve quoting support
                 (Kaarle Ritvanen) (Issue #187);
                 accept [] and [[]] builtins (Issue #188);
                 allow && and || constructs after condition
                 (Kaarle Ritvanen) (Issue #265);
                 add pattern nodes in case entries
                 (BREAKING CHANGE: case entry values are now in a
                 @pattern subnode) (Kaarle Ritvanen) (Issue #265)
                 add eval builtin support;
                 add alias builtin support;
                 allow (almost) any command;
                 allow && and || after commands (Issue #215);
                 allow wrapping command sequences
                 (Kaarle Ritvanen) (Issue #333);
                 allow command-specific environment variable
                 (Kaarle Ritvanen) (Issue #332);
                 support subshells (Issue #339)
                 newlines in start of functions
                 allow newlines after actions
                 support comments after function name (Issue #339)
                 exclude SuSEfirewall2 (Cedric Bosdonnat, Issue #357)
    * Simplelines: parse OpenBSD's hostname.if(5)
                   files (Jasper Lievisse Adriaanse) (Issue #252)
    * Smbusers: add support for ; comments
    * Spacevars: support flags (Issue #279)
    * Ssh: add support for HostKeyAlgorithms, KexAlgorithms
           and PubkeyAcceptedKeyTypes (Oliver Mangold) (Issue #290),
           add support for GlobalKnownHostsFile (Issue #316)
    * Star: New lens to parse /etc/default/star
    * Sudoers: support for negated command alias
               (Geoff Williams) (Issue #262)
    * Syslog: recognize '~' as a valid syslog action (discard)
              (Gregory Smith) (Issue #282)
    * Tmpfiles: new lens to parse systemd's tempfiles.d configuration
                files (Julien Pivotto) (Issue #269)
    * Trapperkeeper: new lens for Puppet server configuration files
    * Util: add comment_c_style_or_hash lens
            add empty_any lens
    * Vsftpd: add isolate and isolate_network options
              (Florian Chazal) (Issue #334)
    * Xml: allow empty document (Issue #255)
    * YAML: new lens (subset) (Dimitar Dimitrov) (Issue #338)

1.4.0 - 2015-05-22
  - General changes/additions
    * add a aug_escape_name call to sanitize strings for use in path
      expressions. There are a few characters that are special in path
      expressions. This function makes it possible to have them all escaped
      so that the resulting string can be used in a path expression and is
      guaranteed to only match a node with exactly that name
    * paths generated by Augeas are now properly escaped so that, e.g., the
      strings returned by aug_match can always be fed to aug_get, even if
      they contain special characters
    * augtool: correctly record history when reading commands from a file
      and then switching to interactive mode (Robert Drake)
    * augtool: new command 'errors' that pretty-prints /augeas//error
      messages; improve the information provided with 'short iteration'
      errors
    * fix segfault when saving to a file that was not writable (Issue #178)
    * augtool: on interrupt (Ctrl-C), cancel current line instead of
      exiting (jeremy Lin)
    * updated parser.y to work with Bison 3.0.2
    * fix put-symlink-augsave test to run on Solaris (Geoffrey Gardella,
      issue #242)
  - Lens changes/additions
    * AFS_Cellalias: new lens (Pat Riehecky)
    * Authorized_keys: allow double quotes in option values (Issue #135)
    * Chrony: fix typo in log flag 'measurements' (Pat Riehecky)
    * Clamav: new lens  (Andrew Colin Kissa)
    * Dns_Zone: New lens to parse DNS zone files (Kaarle Ritvanen)
    * Dnsmasq: Parse the structure of the 'address' and 'server' options
               (incompatible change) (Kaarle Ritvanen)
    * Erlang: parse kernel app config, handle empty lists (RHBZ#1175546)
    * Exports: support brackets in machine names (Vincent Desjardins)
    * Grub: support password stanza inside boot/title section (Issue #229)
    * Httpd: handle eol after opening tag (Issue #220); fix type checking
      issue (Issue #223)
    * Iscsid: new lens (Joey Boggs and Pat Riehecky) (Issue #174)
    * Jaas: several improvements to cover more valid syntax (Steve Shipway)
    * Known_Hosts: handle aliases for the host name
    * Krb5: support keyword krb524_server; allow realm names starting
            with lower-case characters (Jurjen Bokma)
    * Limits: allow comments at end of line (timdeluxe)
    * Logrotate: support 'dateformat' directive (Issue #217)
                 support 'maxsize' directive (RHBZ#1213292)
                 do not require a space before an opening '{' (Issue #123)
    * Mailscanner: new lens (Andrew Colin Kissa)
    * Mailscanner_Rules: new lens for MailScanner rules (Andrew Colin Kissa)
    * NagiosCfg: default to no spaces around equal (Issue #177)
    * Nginx: significantly reworked, now parses entire Nginx stock
             config successfully (Issue #179)
    * Pagekite: more fine-grained control of service_on entries; instead of
                'source' and 'destination', parse into protocol, kitename,
                backend_host, backend_port, and secret (Michael Pimmer)
                (incompatible change)
    * Passwd: support nis [+-]username syntax (Borislav Stoichkov); fix
      @nisdefault on OpenBSD (Matt Dainty)
    * Pgbouncer: new lense for the pgbouncer connection pooler (Andrew
      Colin Kissa)
    * Postfix_sasl_smtpd: new lens contributed by larsen0815 (Issue #182)
    * Postgresql: look for postgresql.conf in paths used on Red Hat based
                  distros (Haotian Liu)
    * Puppetfile: new lens to parse librarian-puppet's Puppetfile
    * Pylonspaste: new lense for Pylon's paste init configuration files
                   (Andrew Colin Kissa)
    * PythonPaste: parse "set" keyword for default overrides (RHBZ#1175545)
    * Shadow: allow NIS entries (Borislav Stoichkov)
    * Shellvars: case: support ;; on same line with multiple commands
                 (Kaarle Ritvanen); make insertion at the beginning of a
                 file that starts with blank lines work; the new lens will
                 remove blank lines from the beginning of a file as soon as
                 lines are added to or removed from it (GH issue #202);
                 handle associative arrays; add /etc/periodic.conf for
                 FreeBSD (Michael Moll)
    * Shellvars_list: support double-quoted continued lines
    * Sudoers: allow '+' in user/groupnames (Andreas Grüninger)
    * Sysctl: add /boot/loader.conf for FreeBSD (Michael Moll)
    * Sysconfig: handle leading whitespace at beginning of a line,
                 RHBZ#761246

1.3.0 - 2014-11-07
  - General changes/additions
    * Add missing cp entry in manpage (GH issue #78)
    * Add seq to vim syntax highlight (Robert Drake)
    * Update augtool.1 man page with new commands and --span, RHBZ#1100077
    * augtool autocomplete includes command aliases, RHBZ#1100184
    * Remove unused "filename" argument from dump-xml command, RHBZ#1100106
    * aug_save returns non-zero result when unable to delete files,
      RHBZ#1091143
  - Lens changes/additions
    * Aliases: permit missing whitespace between colon and recipients
    * AptPreferences: Support spaces in origin fields
    * Cgconfig: handle additional valid controllers (Andy Grimm)
    * Chrony: New lens to parse /etc/chrony.conf (Pat Riehecky)
    * CPanel: New lens to parse cpanel.config files
    * Desktop: Allow @ in keys (GH issue #92)
    * Device_map: Parse all device.map files under /boot (Mike Latimer)
    * Dhclient: Add support for option modifiers (Robert Drake,
                GH issue #95)
                Parse hash statements with dhcp-eval strings
    * Dhcpd: stmt_string quoted blocks no longer store quote marks
             (incompatible change),
             many changes to support more record types (Robert Drake)
    * Group: NIS support (KaMichael)
    * Grub: handle "foreground" option, RHBZ#1059383 (Miguel Armas)
    * Gshadow: New lens (Lorenzo Catucci)
    * Httpd: Allow eol comments after section tags
             Allow continued lines inside quoted value (GH issue #104)
             Allow comparison operators in tags (GH issue #154)
    * IPRoute2: handle "/" in protocol name, swap ID and name fields
                (incompatible change), RHBZ#1063968,
                handle hex IDs and hyphens, as present in
                rt_dsfield, RHBZ#1063961
    * Iptables: parse /etc/sysconfig/iptables.save, RHBZ#1144651
    * Kdump: parse new options, permit EOL comments, refactor, RHBZ#1139298
    * Keepalived: Add more virtual/real server settings and checks, RHBZ#1064388
    * Known_Hosts: New lens for SSH known hosts files
    * Krb5: permit braces in values when not in sub-section, RHBZ#1066419
    * Ldso: handle "hwcap" lines (GH issue #100)
    * Lvm: support negative numbers, parse /etc/lvm/lvm.conf (Pino Toscano)
    * Multipath: add support for rr_min_io_rq (Joel Loudermilk)
    * NagiosConfig and NagiosObjects: Fix documentation (Simon Sehier)
    * NetworkManager: Use the Quote module, support # in values (no eol comments)
    * OpenVPN: Add support for fragment, mssfix, and script-security
               (Frank Grötzner)
    * Pagekite: New lens (Michael Pimmer)
    * Pam: Add partial support for arguments enclosed in [] (Vincent Brillault)
    * Passwd: Refactor lens (Lorenzo Catucci)
    * Redis: Allow empty quoted values (GH issue #115)
    * Rmt: New lens to parse /etc/default/rmt, RHBZ#1100549
    * Rsyslog: support complex $template lines, property filters and file
               actions with templates, RHBZ#1083016
    * Services: permit colons in service name, RHBZ#1121263
    * Shadow: New lens (Lorenzo Catucci)
    * Shellvars: Handle case statements with same-line ';;', RHBZ#1033799
                 Allow any kind of quoted values in block
                 conditions (GH issue #118)
                 Support $(( .. )) arithmetic expansion in variable
                 assignment, RHBZ#1100550
    * Simplevars: Support flags and empty values
    * Sshd: Allow all types of entries in Match groups (GH issue #75)
    * Sssd: Allow ; for comments
    * Squid: Support configuration files for squid 3 (Mykola Nikishov)
    * Sudoers: Allow wuoted string in default str/bool params (Nick Piacentine)
    * Syslog: Support "# !" style comments (Robert Drake, GH issue #65)
              Permit IPv6 loghost addresses, RHBZ#1129388
    * Systemd: Allow quoted Environment key=value pairs, RHBZ#1100547
               Parse /etc/sysconfig/*.systemd, RHBZ#1083022
               Parse semicolons inside entry values, RHBZ#1139498
    * Tuned: New lens for /etc/tuned/tuned-main.conf (Pat Riehecky)
    * UpdateDB: New lens to parse /etc/updatedb.conf
                (incompatible change as this file used to be processed with
                 Simplevars)
    * Xml: Allow backslash in #attribute values (GH issue #145)
           Parse CDATA elements (GH issue #80)
    * Xymon_Alerting: refactor lens (GH issue #89)

1.2.0 - 2014-01-27
  - API changes
    * Add aug_cp and the cp and copy commands
    * aug_to_xml now includes span information in the XML dump
  - General changes/additions
    * Fix documentation link in c_api NaturalDocs menu
    * Fix NaturalDocs documentation for various lenses
    * src/transform.c (filter_matches): wrap fnmatch to ensure that an incl
      pattern containing "//" matches file paths, RHBZ#1031084
    * Correct locations table for transform_save() (Tomas Hoger)
    * Corrections for CVE-2012-0786 tests (Tomas Hoger)
    * Fix umask handling when creating new files, RHBZ#1034261
  - Lens changes/additions
    * Access: support DOMAIN\user syntax for users and groups, bug #353
    * Authorized_Keys: Allow 'ssh-ed25519' as a valid authorized_key
      type (Jasper Lievisse Adriaanse)
    * Automounter: Handle hostnames with dashes in them, GH issue #27
    * Build: Add combinatorics group
    * Cyrus_Imapd: Create new entries without space before separator,
      RHBZ#1014974 (Dietmar Kling)
    * Desktop: Support square brackets in keys
    * Dhclient: Add dhclient.conf path for Debian/Ubuntu (Esteve Fernandez)
    * Dhcpd: Support conditionals, GH issue #34
             Support a wider variety of allow/deny statement, including
             booting and bootp (Yanis Guenane)
             Support a wider variety of DHCP allow/deny/ignore statements
             (Yanis Guenane)
    * Dovecot: Various enhancements and bug fixes (Michael Haslgrübler):
               add mailbox to block_names, fix for block_args in quotes,
               fix for block's brackets upon write,
               fixes broken tests for mailbox,
               fixes indention,
               test case for block_args with ""
               fixes broken indention
               Use Quote module
    * Exports: Permit colons for IPv6 client addresses, bug #366
    * Grub: Support the 'setkey' and 'lock' directives
            NFC fix whitespace errors
            Handle makeactive menu command, bug #340
            Add 'verbose' option, GH issue #73
    * Interfaces: Add in support for the source stanza in
                  /etc/network/interfaces files
                  Map bond-slaves and bridge-ports to arrays (incompatible
                  change) (Kaarle Ritvanen)
                  Add /etc/network/interfaces.d/* support
                  Allow numeric characters in stanza options (Pascal Lalonde)
    * Koji: New lens to parse Koji configs (Pat Riehecky)
    * MongoDBServer: Accept quoted values (Tomas Klouda)
    * NagiosCfg: Do not try to parse /etc/nagios/nrpe.cfg anymore, GH issue #43
                 /etc/nagios/nrpe.cfg is parsed by Nrpe (Yanis Guenane)
    * Nagiosobjects: Add support for optional spaces and indents
                     and whole-line comments (Sean Millichamp)
    * OpenVPN: Support daemon, client-config-dir, route, and management
               directives (Freakin https://github.com/Freakin)
    * PHP: allow php-fpm syntax in keys, GH issue #35
    * Postfix_Main: Handle stray whitespace at end of multiline lines, bug #348
    * Postfix_virtual: allow '+' and '=' in email addresses (Tom Hendrikx)
    * Properties: support multiline starting with an empty string, GH issue #19
    * Samba: Permit asterisk in key name, bug #354
    * Shellvars: Read /etc/firewalld/firewalld.conf, bug #363
                 Support all types of quoted strings in arrays, bug #357
                 Exclude /etc/sysconfig/ip*tables.save files
    * Shellvars, Sysconfig: map "bare" export and unset lines to seq numbered
      nodes to handle multiple variables (incompatible change), RHBZ#1033795
    * Shellvars_list: Handle backtick variable assignments, bug #368
                      Allow end-of-line comments, bug #342
    * Simplevars: Add /etc/selinux/semanage.conf
    * Slapd: use smart quotes for database entries; rename by/what to by/access;
      allow access to be absent as per official docs (incompatible change)
    * Sshd: Indent Match entries by 2 spaces by default
            Support Ciphers and KexAlgorithms groups, GH issue #69
            Let all special keys be case-insensitive
    * Sudoers: Permit underscores in group names, bug #370 (Matteo Cerutti)
               Allow uppercase characters in user names, bug #376
    * Sysconfig: Permit empty comments after comment lines, RHBZ#1043636
    * Sysconfig_Route: New lens for RedHat's route configs
    * Syslog: Accept UDP(@) and TCP(@@) protocol, bug #364 (Yanis Guenane)
    * Xymon_Alerting: New lens for Xymon alerting files (François Maillard)
    * Yum: Add yum-cron*.conf files (Pat Riehecky)
           Include only *.repo files from yum.repos.d (Andrew N Golovkov)
           Permit spaces after equals sign in list options, GH issue #45
           Split excludes as lists, bug #275

1.1.0 - 2013-06-14
  - General changes/additions
    * Handle files with special characters in their name, bug #343
    * Fix type error in composition ('f; g') of functions, bug #328
    * Improve detection of version script; make build work on Illumos with
      GBU ld (Igor Pashev)
    * augparse: add --trace option to print filenames of all modules being
      loaded
    * Various lens documentation improvements (Jasper Lievisse Adriaanse)
  - Lens changes/additions
    * ActiveMQ_*: new lens for ActiveMQ/JBoss A-MQ (Brian Harrington)
    * AptCacherNGSecurity: new lens for /etc/apt-cacher-ng/security.conf
      (Erik Anderson)
    * Automaster: accept spaces between options
    * BBHosts: support more flags and downtime feature (Mathieu Alorent)
    * Bootconf: new lens for OpenBSD's /etc/boot.conf (Jasper Lievisse Adriaanse)
    * Desktop: Support dos eol
    * Dhclient: read /etc/dhclient.conf used in OpenBSD (Jasper Lievisse Adriaanse)
    * Dovecot: New lens for dovecot configurations (Serge Smetana)
    * Fai_Diskconfig: Optimize some regexps
    * Fonts: exclude all README files (Jasper Lievisse Adriaanse)
    * Inetd: support IPv6 addresses, bug #320
    * IniFile: Add lns_loose and lns_loose_multiline definitions
               Support smart quotes
      Warning: Smart quotes support means users should not add
               escaped double quotes themselves. Tests need to be fixed
               also.
               Use standard Util.comment_generic and Util.empty_generic
      Warning: Existing lens tests must be adapted to use standard
               comments and empty lines
               Allow spaces in entry_multiline* values
               Add entry_generic and entry_multiline_generic
               Add empty_generic and empty_noindent
               Let multiline values begin with a single newline
               Support dos eol
      Warning: Support for dos eol means existing lenses usually
               need to be adapted to exclude \r as well as \n.
    * IPRoute2: Support for iproute2 files (Davide Guerri)
    * JaaS: lens for the Java Authentication and Authorization Service
            (Simon Vocella)
    * JettyRealm: new lens for jetty-realm.properties (Brian Harrington)
    * JMXAccess, JMXPassword: new lenses for ActiveMQ's JMX files
      (Brian Harrington)
    * Krb5: Use standard comments and empty lines
            Support dos eol
            Improve performance
            Accept pkinit_anchors (Andrew Anderson)
    * Lightdm: Use standard comments and empty lines
    * LVM: New lens for LVM metadata (Gabriel)
    * Mdadm_conf: optimize some regexps
    * MongoDBServer: new lens (Brian Harrington)
    * Monit: also load /etc/monitrc (Jasper Lievisse Adriaanse)
    * MySQL: Use standard comments and empty lines
             Support dos eol
    * NagiosCfg: handle Icinga and resources.cfg (Jasper Lievisse Adriaanse)
    * Nrpe: accept any config option rather than predefined list (Gonzalo
            Servat); optimize some regexps
    * Ntpd: new lense for OpenNTPD config (Jasper Lievisse Adriaanse)
    * Odbc: Use standard comments and empty lines
    * Openshift_*: new lenses for Openshift support (Brian Harrington)
    * Quote: allow multiple spaces in quote_spaces; improve docs
    * Passwd: allow period in user names in spec, bug #337; allow overrides
              in nisentry
    * PHP: Support smart quotes
           Use standard comments and empty lines
           Load /etc/php*/fpm/pool.d/*.conf (Enrico Stahn)
    * Postfix_master: allow [] in words, bug #345
    * Resolv: support 'lookup' and 'family' key words, bug #320
              (Jasper Lievisse Adriaanse))
    * Rsyslog: support :omusrmsg: list of users in actions
    * RX: add CR to RX.space_in
    * Samba: Use standard comments and empty lines
             Support dos eol
    * Schroot: Support smart quotes
    * Services: support port ranges (Branan Purvine-Riley)
    * Shellvars: optimize some regexps; reinstate /etc/sysconfig/network,
      fixes bug #330, RHBZ#904222, RHBZ#920609; parse /etc/rc.conf.local
      from OpenBSD
    * Sip_Conf: New lens for sip.conf configurations (Rob Tucker)
    * Splunk: new lens (Tim Brigham)
    * Subversion: Support smart quotes
                  Use standard comments and empty lines
                  Use IniFile.entry_multiline_generic
                  Use IniFile.empty_noindent
                  Support dos eol
    * Sudoers: allow user aliases in specs
    * Sysctl: exclude README file
    * Systemd: Support smart quotes; allow backslashes in values
    * Xinetd: handle missing values in list, bug #307
    * Xorg: allow 'Screen' in Device section, bug #344
    * Yum: Support dos eol, optimize some regexps

1.0.0 - 2012-12-21
  - General changes/additions
    * fix missing requirement on libxml2 in pkg-config
    * do not replace pathin with '/*' unless the length is 0
      or pathin is '/', bug #239
    * create context path if it doesn't exist
    * add missing argument to escape() to fix build on solaris, bug #242
    * fix fatest linking with libfa
    * don't use variables uninitialized upon error (Jim Meyering)
    * bootstrap: add strchrnul gnulib module (for Solaris)
    * remove Linux-isms so tests can run on Solaris
    * re-open rl_outstream/stdout only when stdout isn't a tty
      (fixes -e -i); use /dev/tty instead of /dev/stdout when re-opening
      to prevent permission errors, bug #241
    * take root into account for excludes, bug #252
    * fix different errors for parse and put failure
    * fix various memory leaks
    * add leak test
    * allocate exception instead of static const value
    * improve aug_srun quoting to permit concatenation and better detect
      bad quoting
    * rename echo to echo_commands to fix differing types reported
      with Solaris linker (Tim Mooney), bug #262
    * fix excl filters that only specify a filename or wildcard
    * make sure reloading discards changes after save with mode 'newfile'
    * remove loop that added a second iteration around children of /files,
      causing multiple saves in newfile and noop modes when editing under
      /files/boot, bug #264
    * support \t and \n in aug_srun tokens, bug #265
    * compile_exp: don't return an uninitialized pointer upon failure
      (Jim Meyering)
    * include 'extern "C"' wrapper for C++, bug #272 (Igor Pashev)
    * src/try: don't overwrite gdbcmds.txt if it exists
    * fix behavior of set with empty strings
    * allow running individual tests with test-run
    * test-augtool.sh: escape all possible regular expressions before
      they are sent to sed (Micah Anderson)
    * add new print_tree primitive
    * fix bad memory access in regexp.c
    * case-insensitive regexps: fix a problem with number of groups
    * prevent symlink attacks via .augnew during saving,
      RedHat bug #772257, CVE-2012-0786
    * prevent cross-mountpoint attacks via .augsave during saving,
      RedHat bug #772261, CVE-2012-0787
    * add bundled (gnulib) provides in augeas.spec.in, RedHat bug #821745
    * make Travis CI builds
    * src/transform.c (xread_file): catch failed fopen, e.g. EACCES
    * src/augrun.c (cmd_retrieve_help): tidy line wrapping
    * make get_square case insensitive on the ending key
    * escape double quotes when dumping regexp
    * use constants for "lens", "incl" and "excl"
    * src/transform.c (filter_generate): remove duplicate variable assignment
    * src/jmt.c (parse_add_item): ensure return is defined on goto error
    * src/transform.c (transform_save): chmod after creating new files to
      permissions implied by the umask
    * ignore eclipse settings directory
    * fix memory leak in dbg_visit
    * build AST while visiting the parse v2
    * rewrite square lens to be more generic, allowing e.g. square quoting
    * tests/modules/fail_shadow_union.aug: fix unintended test failure
    * src/syntax.c (compile_test): print which test failed when missing
      exception
    * libfa (fa_enumerate): new function
    * use precise ctype of a square lens if it is indeed regula
    * square: properly handle first lens matching empty string
    * square lens: correctly process skeletons during put
    * src/pathx.c: disallow ',' in names in path expressions
    * src/pathx.c: match functions by name and arity
    * src/pathx.c: pass the number of actual arguments to the func
      implementation
    * correctly parse escaped string literals in vim syntax file (Domen Ko¿ar)
  - API changes/additions
    * add aug_text_store to write string to tree
    * add aug_text_retrieve to turn tree into text
    * add aug_rename to rename node labels without moving them in the tree
    * add aug_transform to allow specifying transforms
    * add aug_label to retrieve the label from a path
  - Augtool/aug_srun changes/additions
    * add "touch" command to create node if it doesn't exist, bug #276
    * make <VALUE> argument to "set" and "setm" optional, bug #276
    * add "text_store" and "text_retrieve" commands
    * add "rename" command
    * add "transform" command and "-t|--transform" option
    * add "label" command
    * arrange commands in groups for better help
    * man/augtool.pod: update mentions of default load path
    * fix exit code when using autosave
    * output errors when sending a command as argument
    * honor --echo when sending a command as argument
  - XPath changes/additions
    * add support for an 'i' flag in regexp builtin function
  - Lens changes/additions
    * Aliases: commands can be fully enclosed in quotes, bug #229
    * Anacron: new lens for /etc/anacrontab
    * Apt_Update_Manager: new lens for /etc/update-manager
    * AptPreferences: #comments are accepted within entries
    * AuthorizedKeys: new lens for SSH's authorized_keys
    * AutoMaster: new lens for auto.master files
    * AutoMounter: new lens for automounter maps (/etc/auto.*)
    * Avahi: new lens for /etc/avahi/avahi-daemon.conf (Athir Nuaimi)
    * Build: add blocks
    * Cachefilesd: new lens for /etc/cachefilesd.conf (Pat Riehecky)
    * Carbon: new lens for /etc/carbon files (Marc Fournier)
    * Cgconfig: add space between group and id (Filip Andres)
    * Channels: new lens for channels.conf
    * Collectd: new lens for /etc/collectd.conf
    * Cron: exclude cron allow/deny files;
            optimize typechecking;
            records can be prefixed by '-' (Michal Filka)
    * CronAllow: new lens for cron/at allow/deny files
    * Cups: new lens for Cups files
    * Cyrus_Imapd: new lens for /etc/imapd.conf, bug #296 (Jeroen van Meeuwen)
    * Debctrl: fixed package paragraph keywords, allow variables
               for version numbers in dependency lists,
               allow DM-Upload-Allowed keyword, Debian bug #650887;
               allow control extensions for Python packages, bug #267
    * Dhcpd: fix primary statement arguments, bug #293;
             use the Quote module to manage quoted values;
             force double quotes for filename attribute, bug #311
    * Dput: use Sys.getenv("HOME")
    * Erlang: new generic lens to build Erlang config lenses
    * Fonts: new lens for /etc/fonts files
    * Fstab: handle options with empty values ("password=");
             make options field optional;
             allow end-of-line comment
    * Fuse: new lens for fuse.conf
    * Gdm: include /etc/gdm/custom.conf
    * Grub: parse "password --encrypted" properly, bug #250;
            optimize typechecking;
            add /boot/grub/grub.conf to transform (Josh Kayse)
    * GtkBookmarks: new lens for $HOME/.gtk-bookmarks
    * Hosts_Access: add netmask;
                    permit more client list formats
                    (whitespace separated lists, @netgroups,
                    IPv6 hosts, inc. zone indices,
                    paths to lists of clients, wildcards,
                    hosts_options), bug #256
    * Htpasswd: new lens for htpasswd/rsyncd.secret files (Marc Fournier)
    * Httpd: support DOS eol
    * IniFile: allow # and ; in quoted values, bug #243;
               add entry_list and entry_list_nocomment
    * Inputrc: new lens for /etc/inputrc
    * Iptables: test that blank lines are accepted (Terence Haddock)
    * Json: allow JSON number literals to be followed by whitespace;
            correctly parse empty object and arrays (Lubomir Rintel)
    * Keepalived: various improvements, optimize typechecking
    * Krb5: handle host{} sections in v4_name_convert;
            support ticket_lifetime;
            handle multiple arguments to *_enctypes (Pat Riehecky);
            better whitespace and semicolon comment support
    * Ldif: new lens to read LDIF files per RFC2849
    * Ldso: new lens for ld.so.conf files
    * Lightdm: new lens for /etc/lightdm/*.conf, bug #302 (David Salmen)
    * Logrotate: rewrite with Build, Rx, and Sep;
                 add su logrotate.conf option (Luc Didry);
                 accept integers prefixed by a sign (Michal Filka)
    * Logwatch: new lens for /etc/logwatch/conf/logwatch.conf (Francois Lebel)
    * Mcollective: new lens for Mcollective files (Marc Fournier)
    * Memcached: new lens for /etc/memcached.conf (Marc Fournier)
    * Mdadm_conf: include /etc/mdadm/mdadm.conf
    * Mke2fs: add support for default_mntopts, enable_periodic_fsck,
              and auto_64-bit_support
    * Modprobe: support softdep command, Debian bug #641813;
                allow spaces around '=' in option, RedHat bug #826752;
                support multiline split commands, Ubuntu bug #1054306;
                revert inner lens name change, fixes Modules_conf
    * Modules: define own entry regexp as referenced Modprobe inner lens
               doesn't match file format
    * Multipath: allow devices to override defaults, bug #278 (Jacob M. McCann)
    * NagiosCfg: support syntax for commands.cfg and resource.cfg
    * Netmask: new lens for /etc/inet/netmasks on Solaris
    * NetworkManager: new lens for NetworkManager files
    * Networks: handle multiple missing network octets,
                fix sequencing of aliases
    * Nginx: new lens for /etc/nginx/nginx.conf (Ian Berry)
    * Nsswitch: add passwd_compat, group_compat and shadow_compat
                GNU extensions (Travis Groth);
                remove long list of databases, match by regexp
    * Ntp: allow deprecated 'authenticate' setting;
           add tos directive, bug #297 (Jacob M. McCann)
    * OpenVPN: use the Quote module to manage quoted values
    * Pam: allow uppercase chars in 'types', remove /etc/pam.conf from filter;
           ignore allow.pamlist;
           exclude /etc/pam.d/README, bug #255
    * PamConf: new lens for /etc/pam.conf
    * Passwd: allow asterisk in password field, bug #255
    * Pg_Hba: support multiple options, bug #313;
              add a path to pg_hba.aug, bug #281 (Marc Fournier)
    * Php: support include() statements
    * Phpvars: map arrays with @arraykey subnodes to make working paths;
               support classes and public/var values, bug #299 (aheahe)
    * Postfix_Transport: new lens for Postfix transport files;
               allow host:port and [host]:port syntaxes, bug #303
    * Postfix_Virtual: new lens for Postfix virtual files
    * Postgresql: new lens for postgresql.conf;
                  properly support quotes, bug #317
    * Properties: improve handling of whitespace, empty props, and underscores
                  in keys (Brett Porter, Carlos Sanchez)
    * Protocols: new lens for /etc/protocols
    * Puppet: add /usr/local/etc/puppet paths (Tim Bishop)
    * Puppet_Auth: new lens for /etc/puppet/auth.conf
    * PuppetFileserver: add /usr/local/etc/puppet paths (Tim Bishop)
    * PythonPaste: new lens for Python Paste configs (Dan Prince)
    * Qpid: new lens to read Apache Qpid daemon/client configs (Andrew Replogle)
    * Quote: new generic lens to manage quoted values using square lenses
    * Rabbitmq: new lens for /etc/rabbitmq/rabbitmq.config
    * Redis: new lens for /etc/redis/redis.conf (Marc Fournier)
    * Resolv: add in single-request-reopen (Erinn Looney-Triggs)
    * Rsyslog: new lens for rsyslog files
    * Rx: add continous lines (cl, cl_or_space, cl_or_opt_space)
    * Sep: add space_equal;
           add continous lines (cl_or_space, cl_or_opt_space)
    * Shellvars: support @return;
                 allow multiple elif statements;
                 parse functions;
                 add more includes;
                 autoload some SuSe and RHN specific files (Duncan Mac-Vicar P);
                 add BSD's /etc/rc.conf, bug #255;
                 remove non-shell files, up2date now has a lens,
                 move updatedb.conf to Simplevars;
                 include /etc/{default,sysconfig}/* and /etc/selinux/config;
                 add systemd's /etc/os-release file;
                 exclude bootloader from shellvars (Duncan Mac-Vicar P);
                 handle bash's implicit concatenation of quoted strings
                 (Michal Filka);
                 exclude /etc/default/whoopsie;
                 fix ambiguity by making semi-colons illegal in bquot
                 and arrays;
                 add lns_norec to check for ambiguities;
                 allow newlines in quoted values;
                 allow semi-colons in bquot and dollar_assign;
                 make end-of-line comments begin with a space;
                 allow double backquoted values;
                 support matching keys in var_action, bug #290;
                 fix empty lines after comments;
                 add shift and exit builtins, with optional args;
                 allow double quotes around variables in case statements;
                 fix empty comments;
                 add locale.conf, vconsole.conf systemd configs,
                 RedHat bug #881841
    * Shells: permit same-line comments
    * Simplelines: new lens for simple lines files
    * Simplevars: new lens for simple key/value, non shellvars files
    * Smbusers: new lens for Samba's smbusers
    * Sssd: new lens for sssd.conf (Erinn Looney-Triggs)
    * Ssh: use Sys.getenv('HOME') in filter instead of ~ since it's not
           expanded (Luc Didry)
    * Sshd: permit hyphens in subsystem names
    * Subversion: new lens for /etc/subversion files
    * Sudoers: optimize typechecking;
               allow = in commands (but force ! or / as first character
               if not an alias);
               allow commands without full path if they begin with a lowcase
               letter;
               allow "!" as a type of Defaults entry, Debian bug #650079;
               allow quoted strings in Defaults parameters, bug #263
    * Sysconfig: handle end of line comments and semicolons; strip quotes,
                 RedHat bug #761246
    * Sysctl: include /etc/sysctl.d files
    * Syslog: allow capital letters in tokens
    * Systemd: new lens to parse systemd unit files
    * Thttpd: new lens for /etc/thttpd/thttpd.conf (Marc Fournier)
    * Up2date: new lens for /etc/sysconfig/rhn/up2date
    * Util: add comment_noindent; add delim; add doseol;
            support DOS eols in various places;
            add *.bak and *.old to stdexcl, to match files in /etc/sysconfig
    * Vfstab: new lens for /etc/vfstab config on Solaris
    * Vmware_Config: new lens for /etc/vmware/config
    * Vsftpd: add require_ssl_reuse option (Danny Yates)
    * Xinetd: rewrite with Build, Sep, and Rx;
              make attribute names case-insensitive (Michal Filka)
    * Xml: support single _and_ double quoted attribute values,
           RedHat bug #799885, bug #258
    * Xymon: new lens for Xymon config files, bug #266 (Jason Kincl)
    * Yum: rebase on IniFile, support for comments, bug #217

0.10.0 - 2011-12-02
  - support relative paths by taking them relative to the value
    of /augeas/context in all API functions where paths are used
  - add aug_to_xml to API: transform tree(s) into XML, exposed as dump-xml
    in aug_srun and augtool. Introduces dependency on libxml2
  - fix regular expression escaping. Previously, /[\/]/ match either a
    backslash or a slash. Now it only matches a slash
  - path expressions: add function 'int' to convert a node value (string)
    to an integer
  - path expressions: make sure the regexp produced by empty nodesets from
    regexp() and glob() matches nothing, rather than the empty word
  - fix --autosave when running single command from command line, BZ 743023
  - aug_srun: support 'insert' and 'move' as aliases for 'ins' and 'mv'
  - aug_srun: allow escaping of spaces, quotes and brackets with \
  - aug_init: accept AUG_NO_ERR_CLOSE flag; return augeas handle even when
    intialization fails so that caller gets some details about why
    initialization failed
  - aug_srun: tolerate trailing white space in commands
  - much improved, expanded documentation of many lenses
  - always interpret lens filter paths as absolute, bug #238
  - fix bug in libfa that would incorrectly calculate the difference of a
    case sensistive and case insensitive regexp (/[a-zA-Z]+/ - /word/i
    would match 'worD')
  - new builtin 'regexp_match' for .aug files to make testing regexp
    matching easier during development
  - fix 'span' command, bug #220
  - Lens changes/additions
    * Access: parse user@host and (group) in users field; field separator
      need not be surrounded by spaces
    * Aliases: allow spaces before colons
    * Aptconf: new lens for /etc/apt/apt.conf
    * Aptpreferences: support origin entries
    * Backuppchosts: new lens for /etc/backuppc/hosts, bug 233 (Adam Helms)
    * Bbhosts: various fixes
    * Cgconfig: id allowed too many characters
    * Cron: variables aren't set like shellvars, semicolons are allowed in
      email addresses; fix parsing of numeric fields, previously upper case
      chars were allowed; support ranges in time specs
    * Desktop: new lens for .desktop files
    * Dhcpd: slashes must be double-quoted; add Red Hat's dhcpd.conf
      locations
    * Exports: allow empty options
    * Fai_diskconfig: new lens for FAI disk_config files
    * Fstab: allow ',' in file names, BZ 751342
    * Host_access: new lens for /etc/hosts.{allow,deny}
    * Host_conf: new lens for /etc/host.conf
    * Hostname: new lens for /etc/hostname
    * Hosts: also load /etc/mailname by default
    * Iptables: allow digits in ipt_match keys, bug #224
    * Json: fix whitespace handling, removing some cf ambiguities
    * Kdump: new lens for /etc/kdump.conf (Roman Rakus)
    * Keepalived: support many more flags, fields and blocks
    * Krb5: support [pam] section, bug #225
    * Logrotate: be more tolerant of whitespace in odd places
    * Mdadm_conf: new lens for /etc/mdadm.conf
    * Modprobe: Parse commands in install/remove stanzas (this introduces a
      backwards incompatibility); Drop support for include as it is not
      documented in manpages and no unit tests are shipped.
    * Modules: new lens for /etc/modules
    * Multipath: add support for seveal options in defaults section, bug #207
    * Mysql: includedir statements are not part of sections; support
      \!include; allow indentation of entries and flags
    * Networks: new lens for /etc/networks
    * Nrpe: allow '=' in commands, bug #218 (Marc Fournier)
    * Php: allow indented entries
    * Phpvars: allow double quotes in variable names; accept case
      insensitive PHP tags; accept 'include_once'; allow empty lines at
      EOF; support define() and bash-style and end-of-line comments
    * Postfix_master: allow a lot more chars in words/commands, including
      commas
    * PuppetFileserver: support same-line comments and trailing whitespace,
      bug #214
    * Reprepo_uploaders: new lens for reprepro's uploaders files
    * Resolv: permit end-of-line comments
    * Schroot: new lens for /etc/schroot/schroot.conf
    * Shellvars: greatly expand shell syntax understood; support various
      syntactic constructs like if/then/elif/else, for, while, until, case,
      and select; load /etc/blkid.conf by default
    * Spacevars: add toplevel lens 'lns' for consistency
    * Ssh: new lens for ssh_config (Jiri Suchomel)
    * Stunnel: new lens for /etc/stunnel/stunnel.conf (Oliver Beattie)
    * Sudoers: support more parameter flags/options, bug #143
    * Xendconfsxp: lens for Xen configuration (Tom Limoncelli)
    * Xinetd: allow spaces after '{'

0.9.0 - 2011-07-25
  - augtool: keep history in ~/.augeas/history
  - add aug_srun API function; this makes it possible to run a sequence of
    commands through the API
  - aug_mv: report error AUG_EMVDESC on attempts to move a node into one of
    its descendants
  - path expressions: allow whitespace inside names, making '/files/etc/foo
    bar/baz' a legal path, but parse [expr1 or expr2] and [expr1 and expr2]
    as the logical and/or of expr1 and expr2
  - path expressions: interpret escape sequences in regexps; since '.' does
    not match newlines, it has to be possible to write '.|\n' to match any
    character
  - path expressions: allow concatenating strings and regexps; add
    comparison operator '!~'; add function 'glob'; allow passing a nodeset
    to function 'regexp'
  - store the names of the functions available in path expressions under
    /augeas/version
  - fix several smaller memory leaks
  - Lens changes/additions
    * Aliases: allow spaces and commas in aliases (Mathieu Arnold)
    * Grub: allow "bootfs" Solaris/ZFS extension for dataset name, bug #201
      (Dominic Cleal); allow kernel path starting with a BIOS device,
      bug #199
    * Inifile: allow multiline values
    * Php: include files from Zend community edition, bug #210
    * Properties: new lens for Java properties files, bug #194 (Craig Dunn)
    * Spacevars: autoload two ldap files, bug #202 (John Morrissey)
    * Sudoers: support users:groups format in a Runas_Spec line, bug #211;
      add CSW paths (Dominic Cleal)
    * Util: allow comment_or_eol to match whitespace-only comments,
      bug #205 (Dominic Cleal)
    * Xorg: accept InputClass section; autoload from /etc/X11/xorg.conf.d,
      bug #197

0.8.1 - 2011-04-15
  - augtool: respect autosave flag in oneshot mode, bug #193; fix segfault
    caused by unmatched bracket in path expression, bug #186
  - eliminate a global variable in the lexer, fixes BZ 690286
  - replace an erroneous assert(0) with a proper error message when none of
    the alternatives in a union match during saving, bug #183
  - improve AIX support
  - Lens changes/additions
    * Access: support the format @netgroup@@nisdomain, bug #190
    * Fstab: fix parsing of SELinux labels in the fscontext option (Matt Booth)
    * Grub: support 'device' directive for UEFI boot, bug #189; support
      'configfile' and 'background' (Onur Küçük)
    * Httpd: handle continuation lines (Bill Pemberton); autoload
      httpd.conf on Fedora/RHEL, BZ 688149; fix support for single-quoted
      strings
    * Iptables: support --tcp-flags, bug #157; allow blank and comment
      lines anywhere
    * Mysql: include /etc/my.cnf used on Fedora/RHEL, BZ 688053
    * NagiosCfg: parse setting multiple values on one line (Sebastien Aperghis)
    * NagiosObjects: process /etc/nagios3/objects/*.cfg (Sebastien Aperghis)
    * Nsswitch: support 'sudoers' as a database, bug #187
    * Shellvars: autoload /etc/rc.conf used in FreeBSD (Rich Jones)
    * Sudoers: support '#include' and '#includedir', bug #188
    * Yum: exclude /etc/yum/pluginconf.d/versionlock.list (Bill Pemberton)

0.8.0 - 2011-02-22
  - add new 'square' lens combinator
  - add new aug_span API function
  - augtool: short options for --nostdinc, --noload, and --noautoload
  - augtool: read commands from tty after executing file with --interactive
  - augtool: add --autosave option
  - augtool: add --span option to load nodes' span
  - augtool: add span command to get the node's span according to the input
    file
  - augtool: really be quiet when we shouldn't be echoing
  - fix segfault in get.c with L_MAYBE lens; bug #180
  - fix segfault when a path expression called regexp() with an invalid
    regexp; bug #168
  - improved vim syntax file
  - replace augtest by test-augtool.sh to obviate the need for Ruby to run
    tests
  - use sys_wait module from gnulib; bug #164
  - Lens changes/additions
    * Access: new lens for /etc/security/access.conf (Lorenzo Dalrio)
    * Crypttab: new lens for /etc/crypttab (Frederic Lespez)
    * Dhcpd: new lens
    * Exports: accept hostnames with dashes; bug #169 (Sergio Ballestrero)
    * Grub: add various Solaris extensions (Dominic Cleal); support "map"
      entries, bug #148
    * Httpd: new lens for Apache config
    * Inifile: new lens indented_title_label
    * Interfaces: allow indentation for "iface" entries; bug #182
    * Mysql: change default comment delimiter from ';' to '#'; bug #181
    * Nsswitch: accept various add'l databases; bug #171
    * PuppetFileserver: new lens for Puppet's fileserver.conf (Frederic Lespez)
    * REsolv: allow comments starting with ';'; bug #173 (erinn)
    * Shellvars: autoload various snmpd config files; bug #170 (erinn)
    * Solaris_system: new lens for /etc/system on Solaris (Dominic Cleal)
    * Util (comment_c_style, empty_generic, empty_c_style): new lenses
    * Xml: generic lens to process XML files
    * Xorg: make "position" in "screen" optional; allow "Extensions"
      section; bug #175 (omzkk)

0.7.4 - 2010-11-19
  - augtool: new clearm command to parallel setm
  - augtool: add --file option
  - Fix SEGV under gcc 4.5, caused by difficulties of the gcc optimizer
    handling bitfields (bug #149; rhbz #651992)
  - Preserve parse errors under /augeas//error: commit 5ee81630, released
    in 0.7.3, introduced a regression that would cause the loss of parse
    errors; bug #138
  - Avoid losing already parsed nodes under certain circumstances; bug #144
  - Properly record the new mtime of a saved file; previously the mtime in
    the tree was reset to 0 when a file was saved, causing unnecessary file
    reloads
  - fix a SEGV when using L_MAYBE in recursive lens; bug #136
  - Incompatible lens changes
    * Fstab: parse option values
    * Squid: various improvements, see bug #46;
    * Xinetd: map service names differently
  - Lens changes/additions
    * Aptsources: map comments properly, allow indented lines; bug #151
    * Grub: add indomU setting for Debian. Allow '=' as separator in title;
      bug #150
    * Fstab: also process /etc/mtab
    * Inetd: support rpc services
    * Iptables: allow underscore in chain names
    * Keepalived: new lens for /etc/keepalived/keepalived.conf
    * Krb5: allow digits in realm names; bug #139
    * Login_defs: new lens for /etc/login.defs (Erinn Looney-Triggs)
    * Mke2fs: new lens for /etc/mke2fs.conf
    * Nrpe: new lens for Nagios nrpe (Marc Fournier)
    * Nsswitch: new lens for /etc/nsswitch.conf
    * Odbc: new lens for /etc/odbc.ini (Marc Fournier)
    * Pg_hba: New lens; bug #140 (Aurelien Bompard). Add system path on
      Debian; bug #154 (Marc Fournier)
    * Postfix_master: parse arguments in double quotes; bug #69
    * Resolv: new lens for /etc/resolv.conf
    * Shells: new lens for /etc/shells
    * Shellvars: parse ulimit builtin
    * Sudoers: load file from /usr/local/etc (Mathieu Arnold) Allow
      'visiblepw' parameter flag; bug #143. Read files from /etc/sudoers.d
    * Syslog: new lens for /etc/syslog.conf (Mathieu Arnold)
    * Util: exclude dpkg backup files; bug #153 (Marc Fournier)
    * Yum: accept continuation lines for gpgkey; bug #132

0.7.3 - 2010-08-06
  - aug_load: only reparse files that have actually changed; greatly speeds
    up reloading
  - record all variables in /augeas/variables, regardless of whether they
    were defined with aug_defvar or aug_defnode; make sure
    /augeas/variables always exists
  - redefine all variables (by reevaluating their corresponding
    expressions) after a aug_load. This makes variables 'sticky' across
    loads
  - fix behavior of aug_defnode to not fail when the expression evaluates
    to a nonempty node set
  - make gnulib a git submodule so that we record the gnulib commit off
    which we are based
  - allow 'let rec' with non-recursive RHS
  - fix memory corruption when reloading a tree into which a variable
    defined by defnode points (BZ 613967)
  - plug a few small memory leaks, and some segfaults
  - Lens changes/additions
    * Device_map: new lens for grub's device.map (Matt Booth)
    * Limits: also look for files in /etc/security/limits.d
    * Mysql: new lens (Tim Stoop)
    * Shellvars: read /etc/sysconfig/suseconfig (Frederik Wagner)
    * Sudoers: allow escaped spaces in user/group names (Raphael Pinson)
    * Sysconfig: lens for the shell subdialect used in /etc/sysconfig; lens
      strips quotes automatically

0.7.2 - 2010-06-22
  - new API call aug_setm to set/create multiple nodes simultaneously
  - record expression used in a defvar underneath /augeas/variables
  - Lens changes/additions
    * Group: add test for disabled account (Raphael Pinson)
    * Grub: handle comments within a boot stanza
    * Iptables: also look for /etc/iptables-save (Nicolas Valcarcel)
    * Modules_conf: new lens for /etc/modules.conf (Matt Booth)
    * Securetty: added handling of emtpy lines/comments (Frederik Wagner)
    * Shellvars: added SuSE sysconfig puppet files (Frederik Wagner),
      process /etc/environment (seph)
    * Shellvars_list: Shellvars-like lens that treats strings of
      space-separated words as lists (Frederik Wagner)

0.7.1 - 2010-04-21
  - new primitive lens 'value' to set value of a node to a constant,
    similar to 'label' for the key (see http://augeas.net/docs/lenses.html)
  - new builtins for printing and getting the types of a lens (see
    http://augeas.net/docs/builtins.html)
  - add unit type to lens language; allow '_' as an identifier in let's to
    force evaluation for side effect only
  - Various fixes for Solaris. Augeas now builds cleanly on Solaris 5.10,
    and most of the tests pass. The three tests that fail all fail because
    the test scripts have Linux idiosyncrasies. This needs to be addressed
    in a future release. Much thanks to Dagobert Michelsen and the OpenCSW
    project (http://www.opencsw.org/) for providing me with access to their
    build farm.
  - fix crash when recursive lens was used in a nonrecursive lens (bug #100)
  - context free parser/recursive lenses: handle 'l?' properly (bug #119);
    distinguish between successful parse and parse with an error at end of
    input; do caller filtering to avoid spurious ambiguous parses with
    grammars containing epsilon productions
  - aug_get: return -1 when multiple nodes match (bug #121)
  - much better error message when iteration stops prematurely during
    put/create than the dreaded 'Short iteration'
  - augtool: ignore empty lines from stdin; report error when get fails
  - fix memory leak in file_info (transform.c); this was leaking a file
    name every time we loaded a file (Laine Stump)
  - nicer error message when typechecker spots ambiguity in atype
  - libfa: handle '(a|)' and 'r{min,}' properly
  - locale independence: handle a literal '|' properly on systems that lack
    use_locale
  - bootstrap: pull in isblank explicitly (needed on Solaris)
  - src/lens.c (lns_check_rec): fix refcounting mistake on error path (bug #120)
  - fix SEGV when loading empty files
  - improvements in handling some OOM's
  - Lens changes/additions
    * Approx: lens and test for the approx proxy server (Tim Stoop)
    * Cgconfig: lens and tests for libcgroup config (Ivana Hutarova Varekova)
    * Cgrules: new lens and test (Ivana Hutarova Varekova)
    * Cobblermodules: lens + tests for cobbler's modules.conf (Shannon Hughes)
    * Debctrl: new lens and test (Dominique Dumont)
    * Dput: add 'allow_dcut' parameter (bug #105) (Raphael Pinson)
    * Dhclient: add rfc code parsing (bug #107) (Raphael Pinson)
    * Group: handle disabled passwords
    * Grub: support empty kernel parameters, Suse incl.s (Frederik Wagner)
    * Inittab: allow ':' in the process field (bug #109)
    * Logrotate: tolerate whitespace at the end of a line (bug #101); files
      can be separated by newlines (bug #104) (Raphael Pinson)
    * Modprobe: Suse includes (Frederik Wagner)
    * Nagisocfg: lens and test for /etc/nagios3/nagios.cfg (Tim Stoop)
    * Ntp: add 'tinker' directive (bug #103)
    * Passwd: parse NIS entries on Solaris
    * Securetty: new lens and test for /etc/securetty (Simon Josi)
    * Shellvars: handle a bare 'export VAR'; Suse includes (Frederik
      Wagner); allow spaces after/before opening/closing parens for array
    * Sshd: allow optional arguments in subsystem commands (Matt Palmer)
    * Sudoers: allow del_negate even if no negate_node is found (bug #106)
               (Raphael Pinson); accept 'secure_path' (BZ 566134) (Stuart
               Sears)

0.7.0 - 2010-01-14
  - Support for context-free lenses via the 'let rec' keyword. The syntax
    is experimental, though the feature is here to stay. See
    lenses/json.aug for an example of what's possible with that.
  - Support for case-insensitive regular expressions. Simply append 'i' to
    a regexp literal to make it case-insensitive, e.g. /hello/i will match
    all variations of hello, regardless of case.
  - Major revamp of augtool. In particular, path expressions don't need to
    be quoted anymore. The online help has been greatly improved.
  - Check during load/save that each file is only matched by one transform
    under /augeas/load. If there are multiple transforms for a file, the
    file is skipped.
  - New error codes AUG_ENOLENS and AUG_EMXFM
  - Do not choke on non-existing lens during save
  - Change the metadata for files under /augeas/files slightly: the node
    /augeas/files/$PATH/lens now has the name of the lens used to load the
    file; the source location of that lens has moved to
    /augeas/files/$PATH/lens/info
  - New public functions fa_nocase, fa_is_nocase, and fa_expand_nocase in
    libfa
  - Various smaller bug fixes, performance improvements and improved error
    messages
  - Lens changes/additions
    * Cobblersettings: new lens and test (Bryan Kearney)
    * Iptables: allow quoted strings as arguments; handle both negation
      syntaxes
    * Json: lens and tests for generic Json files
    * Lokkit: allow '-' in arguments
    * Samba: accept entry keys with ':' (Partha Aji)
    * Shellvars: allow arrays that span multiple lines
    * Xinetd (name): fix bad '-' in character class

0.6.0 - 2009-11-30
  - Add error reporting API (aug_error and related calls); use to report
    error details in a variety of places
  - Path expressions: add regexp matching; add operator '|' to form union
    of nodesets (ticket #89)
  - Tolerate non-C locales from the environment (ticket #35); it is no
    longer necessary to set the locale to C from the outside
  - use stpcpy/stpncpy from gnulib (needed for building on Solaris)
  - Properly check regexp literals for syntax errors (ticket #93)
  - Distribute and install vim syntax files (ticket #97)
  - many more bugfixes
  - Lens changes/additions
    * Apt_preferences: support version pin; filter out empty lines (Matt
      Palmer)
    * Cron: variables can contain '_' etc. (ticket #94)
    * Ethers: new lens for /etc/ethers (Satoru SATOH)
    * Fstab: allow '#' in spec (ticket #95)
    * Group: allow empty password field (ticket #95)
    * Inittab: parse end-of-line comments into a #comment
    * Krb5: support kdc section; add v4_name_convert subsection to
      libdefaults (ticket #95)
    * Lokkit: add mising eol to forward_port; make argument for --trust
      more permissive
    * Pam: allow '-' before type
    * Postfix_access: new lens for /etc/postfix/access (Partha Aji)
    * Rx: allow '!' in device_name
    * Sudoers: allow certain backslash-quoted characters in a command (Matt
      Palmer)
    * Wine: new lens to read Windows registry files

0.5.3 - 2009-09-14
  - Match trees on label + value, not just label; see
    tests/modules/pass_strip_quotes.aug for how that enables stripping
    quotes
  - Do not trip over symlinks to files on a different device during save;
    fixes problems with writing to /etc/grub.conf on Fedora/RHEL
  - API (defnode): always add the newly created node into the resulting
    nodeset
  - Add preceding-sibling and following-sibling axes to path expressions
  - augtool, augparse: add --version option (bug #88)
  - Change file info recorded under /augeas/files/FILE/*: remove lens/id
    and move lens/info to lens
  - Properly record new files under /augeas/files (bug #78)
  - aug_load: clean up variables to avoid dangling references (bug #79)
  - Make Augeas work on AIX
  - Ignore anything but regular files when globbing
  - Add 'clear' function to language for use in unit tests
  - typechecker: print example trees in tree format
  - libfa: properly support regexps with embedded NUL's
  - Lens changes/additions
    * Xorg: revamped, fixes various parse failures (Matt Booth)
    * Inetd: new lens and test (Matt Palmer)
    * Multipath: new lens and test
    * Slapd: also read /etc/openldap.slapd.conf (bug #85)

0.5.2 - 2009-07-13
  - Make Augeas work on Mac OS/X (bug #66) (Anders Bjoerklund)
  - reduce symbols exported from libfa with linker script
  - add --echo option to augtool
  - require Automake 1.11 (Jim Meyering)
  - avoid spurious save attempts for freshly read files
  - Lens changes/additions
    * Inittab: schema change: use 'id' field as name of subtree for a line,
      instead of a generated number. Map comments as '#comment' (Matt Palmer)
    * Logrotate: make owner/group in create statement optional, allow
      filenames to be indented
    * Ntp: allow additional options for server etc. (bug #72)
    * Shellvars: allow backticks as quote characters (bug #74)
    * Yum: also read files in /etc/yum/pluginconf.d (Marc Fournier)

0.5.1 - 2009-06-09
  - augeas.h: flag AUG_NO_MODL_AUTOLOAD suppresses initial loading
              of modules; exposed as --noautoload in augtool
  - augtool: don't prompt when input is not from tty (Raphael Pinson)
  - augparse: add --notypecheck option
  - path expressions: allow things like '/foo and /bar[3]' in predicates
  - Lens changes/additions
    * Aliases: map comments as #comment (Raphael Pinson)
    * Build, Rx, Sep: new utility modules (Raphael Pinson)
    * Cron: new lens (Raphael Pinson)
    * Dnsmasq: process files in /etc/dnsmasq.d/* (ticket #65)
    * Grub: parse kernel and module args into separate nodes; parse
            arguments for 'serial', 'terminal', and 'chainloader'; allow
            optional argument for 'savedefault'
    * Interfaces: make compliant with actual Debian spec (Matt Palmer)
    * Iptables: relax regexp for chain names; allow comment lines mixed
                in with chains and rules (ticket #51)
    * Logrotate: allow '=' as separator (ticket #61); make newline at end
                 of scriptlet optional
    * Modprobe: handle comments at end of line
    * Ntp: parse fudge record (Raphael Pinson); parse all directives in
           default Fedora ntp.conf; process 'broadcastdelay', 'leapfile',
           and enable/disable flags (ticket #62)
    * Pbuilder: new lens for Debian's personal builder (Raphael Pinson)
    * Php: add default path on Fedora/RHEL (Marc Fournier)
    * Squid: handle indented entries (Raphael Pinson)
    * Shellvars: map 'export' and 'unset'; map comments as #comment
                 (Raphael Pinson)
    * Sudoers: allow backslashes inside values (ticket #60) (Raphael Pinson)
    * Vsftpd: map comments as #comment; handle empty lines; find
              vsftpd.conf on Fedora/RHEL
    * Xinetd: map comments as #comment (Raphael Pinson)

0.5.0 - 2009-03-27
  - Clean up interface for libfa; the interface is now considered stable
  - New aug_load API call; allows controlling which files to load by
    modifying /augeas/load and then calling aug_load; on startup, the
    transforms marked with autoload are reported under /augeas/load
  - New flag AUG_NO_LOAD for aug_init to keep it from loading files on
    startup; add --noload option to augtool
  - New API calls aug_defvar and aug_defnode to define variables for
    path expressions; exposed as 'defvar' and 'defnode' in augtool
  - Lenses distributed with Augeas are now installed in
    /usr/share/augeas/lenses/dist, which is searched after
    /usr/share/augeas/lenses, so that lenses installed by other packages
    take precedence
  - New program examples/fadot to draw various finite automata (Francis
    Giraldeau)
  - Report line number and character offset in the tree when parsing a
    file with a lens fails
  - Fix error in propagation of dirty flag, which could lead to only
    parts of a tree being saved when multiple files were modified
  - Flush files to disk before moving them
  - Fix a number of memory corruptions in the XPath evaluator
  - Several performance improvements in libfa
  - Lens changes/additions
    * Grub: process embedded comments for update-grub (Raphael Pinson)
    * Iptables: new lens for /etc/sysconfig/iptables
    * Krb5: new lens for /etc/krb5.conf
    * Limits: map dpmain as value of 'domain' node, not as label
              (Raphael Pinson)
    * Lokkit: new lens for /etc/sysconfig/system-config-firewall
    * Modprobe: new lens for /etc/modprobe.d/*
    * Sudoers: more finegrained parsing (ticket #48) (Raphael Pinson)

0.4.2 - 2009-03-09
  - Do not delete files that had an error upon parsing
  - For Fedora/EPEL RPM's, BuildRequire libselinux-devel (bug #26)
  - Bug fixes in path expressions
    * for numbers, the meaning of '<' and '<=' was reversed
  - Always create an entry /files in aug_init
  - New builtin 'Sys' module with functions 'getenv' and 'read_file',
    the latter reads a the contents of a file into a string
  - Lens changes/additions
    * Postfix_main: handle continuation lines
    * Bbhosts, Hosts, Logrotate, Sudoers: label comment nodes as '#comment'
    * Sshd: map comments as '#comment' nodes
    * Squid: add all keywords from squid 2.7 and 3 (Francois Deppierraz)
    * Logrotate: process unit suffixes for 'size' and 'minsize'

0.4.1 - 2009-03-02
  - Remove files when their entire subtree under /files is deleted
  - Various bug fixes and syntax enhancements for path expressions
    (see tests/xpath.tests for details)
  - Evaluate path expressions with multiple predicates correctly
  - Fix incorrect setting of /augeas/events/saved
  - Major cleanup of matching during get; drastically improves
    performance for very large (on the order of 10k lines) config files
  - Small performance improvement in the typechecker
  - Reject invalid character sets like [x-u] during typecheck
  - Build with compile warnings set to 'maximum' instead of 'error', so
    that builds on platforms with broken headers will work out of the box
  - Lens changes/additions
    * Util.stdexcl now excludes .augsave and .augnew files
    * Logrotate: allow 'yearly' schedule, spaces around braces
    * Ntp: fix so that it processes ntp.conf on Fedora 10
    * Services: lens for /etc/services (Raphael Pinson)
    * Xorg: new lens and tests (Raphael Pinson)

0.4.0 - 2009-02-06
  - Much improved and expanded support for path expressions in the public
    API. See doc/xpath.txt and tests/xpath.tests for details.
  - Solaris support: builds at least on OpenSolaris 2008.11
  - Lens changes/additions
    * Grub: support color and savedefault
    * DarkIce: new lens for http://darkice.tyrell.hu/ (Free Ekanayaka)

0.3.6 - 2009-01-26
  - report version in /augeas/version, report legal save modes in
    /augeas/version/save/mode for feature tests/version checking
  - dynamically change behavior of aug_save; add noop save mode
    (Bryan Kearney)
  - plug memory leak, more portable SELinux test (Jim Meyering)
  - fix bz #478619 - do not use abspath (Arnaud Gomes-do-Vale)
  - fix segfault when branch in a union does not have a ktype
  - Lens changes/additions
    * Dpkg: new lens for Debian's dpkg.cfg (Robin Lee Powell)
    * Limits: new lens for /etc/security/limits.conf (Free Ekanayaka)
    * Soma: new lens for http://www.somasuite.org/ config
      (Free Ekanayaka)
    * Php, Gdm: fix minor regexp error (Marc Fournier)
      expand filter for Php config files (Robin Lee Powell)
    * Phpvars: whitspace fixes (Free Ekanayaka)
    * Puppet: accept indented puppet.conf (ticket #25)

0.3.5 - 2008-12-23
  - add an option to rewrite files by overwriting their contents instead of
    putting the new file in place atomically with rename(2); file contents
    are only copied after rename fails with EXDEV or EBUSY, and only if the
    node /augeas/save/copy_if_rename_fails (fix #32)
  - saving of backup (.augsave) files now works even if the original and
    backup files are on different devices
  - major refactoring of how path expressions are handled internally. Fixes
    a number of bugs and oddities (e.g. tickets #7 and #23)
  - fix a bug in fa_as_regexp: a '.' wasn't escaped, ultimately leading to
    spurious errors from the typechecker
  - Lens changes/additions
    * Group: process /etc/group (Free Ekanayaka)
    * Passwd: process /etc/passwd (Free Ekanayaka)
    * Phpvars: process files that set PHP variables, in particular
      /etc/squirrelmail/config.php (Free Ekanayaka)
    * Rsyncd: process /etc/rsyncd.conf (Marc Fournier)
    * Shellvars: process /etc/arno-iptables-firewall/debconf.cfg and
      /etc/cron-apt/config (Free Ekanayaka), load /etc/sysconfig/sendmail
    * Postfix: process postfix's main.cf and master.cf (Free Ekanayaka)
    * Squid: new lens for squid.conf (Free Ekanayaka)
    * Webmin: new lens (Free Ekanayaka)
    * Xinetd: make sure equal sign is surrounded by spaces (#30)
    * Sshd: change the structure of Condition subtrees (Dominique Dumont)

0.3.4 - 2008-11-05
  - fix saving of backup files; in 0.3.3, when AUG_SAVE_BACKUP was passed
    to aug_init, aug_save would always fail

0.3.3 - 2008-10-24
  - restore the behavior of aug_save; in 0.3.2, aug_save broke API by
    returning the number of files changed on success instead of 0

0.3.2 - 2008-10-21
  - saving now reports which files were actually changed in
    /augeas/events/saved; aug_save also returns the number of files
    that were changed
  - preserve file owner, permissions and SELinux context when changing a file.
  - make saving idempotent, i.e. when a change to the tree does not result
    in changes to the actual file's content, do not touch the original file
  - report an error if there are nodes in the tree with a label that
    is not allowed by the lens
  - quietly append a newline to files that do not have one
  - generate lens documentation using NaturalDocs and publish those
    on the Auegas website (Raphael Pinson)
  - Lens changes/additions
    * Grub: support the 'password' directive (Joel Nimety)
    * Grub: support 'serial' and 'terminal' directives (Sean E. Millichamp)
    * Samba: change default indentation and separators (Free Ekanayaka)
    * Logrotate: process tabooext, add dateext flag (Sean E. Millichamp)
    * Sshd: Cleaner handling of 'Match' blocks (Dominique Dumont)
    * Monit: new lens (Free Ekanayaka)
    * Ldap: merge with Spacevars (Free Ekanayaka)
    * Shellvars: support /etc/default (Free Ekanayaka)
    * Shellvars: handle space at the end of a line

0.3.1 - 2008-09-04
  - Major performance improvement when processing huge files, reducing some
    O(n^2) behavior to O(n) behavior. It's now entirely feasible to
    manipulate for example /etc/hosts files with 65k lines
  - Handle character escapes '\x' in regular expressions in compliance with
    Posix ERE
  - aug_mv: fix bug when moving at the root level
  - Fix endless loop when using a mixed-case module name like MyMod.lns
  - Typecheck del lens: for 'del RE STR', STR must match RE
  - Properly typecheck the '?' operator, especially the atype; also allow
    '?' to be applied to lenses that contain only 'store', and do not
    produce tree nodes.
  - Many new/improved lenses
    * many lenses now map comments as '#comment' nodes instead of just
      deleting them
    * Sudoers: added (Raphael Pinson)
    * Hosts: map comments into tree, handle whitespace and comments
             at the end of a line (Kjetil Homme)
    * Xinetd: allow indented comments and spaces around "}" (Raphael Pinson)
    * Pam: allow comments at the end of lines and leading spaces
           (Raphael Pinson)
    * Fstab: map comments and support empty lines (Raphael Pinson)
    * Inifile: major revamp (Raphael Pinson)
    * Puppet: new lens for /etc/puppet.conf (Raphael Pinson)
    * Shellvars: handle quoted strings and arrays (Nahum Shalman)
    * Php: map entries outside of sections to a '.anon' section
           (Raphael Pinson)
    * Ldap: new lens for /etc/ldap.conf (Free Ekanayaka)
    * Dput: add allowed_distributions entry (Free Ekanayaka)
    * OpenVPN: new lens for /etc/openvpn/{client,server}.conf (Raphael Pinson)
    * Dhclient: new lens for /etc/dhcp3/dhclient.conf (Free Ekanayaka)
    * Samba: new lens for /etc/samba/smb.conf (Free Ekanayaka)
    * Slapd: new lens for /etc/ldap/slapd.conf (Free Ekanayaka)
    * Dnsmasq: new lens for /etc/dnsmasq.conf (Free Ekanayaka)
    * Sysctl: new lens for /etc/sysctl.conf (Sean Millichamp)

0.3.0 - 2008-08-07
  - Add aug_mv call to public API
  - Do not clobber symlinks, instead write new files to target of symlink
  - Fail 'put' when tree has invalid entries
  - Set exit status of augtool
  - Avoid picking special characters, in particular '\0', in examples (libfa)
  - Store system errors, using strerror, in the tree during writing of files
  - New lenses
    * Generic inifile module (Raphael Pinson)
    * logrotate (Raphael Pinson)
    * /etc/ntp.conf (Raphael Pinson)
    * /etc/apt/preferences (Raphael Pinson)
    * bbhosts for Big Brother [http://www.bb4.org/] (Raphael Pinson)
    * php.ini (Raphael Pinson)

0.2.2 - 2008-07-18
  - Fix segfault in store.put on NULL values
  - Properly move default lens dir with DATADIR (Jim Meyering)
  - Fix 'short iteration' error on get/parse of empty string; this bug
    made it impossible to save into a new file
  - Add 'insa' and 'insb' primitives to allow insertion from
    put unit tests
  - aug_insert: handle insertion before first child properly
  - New lenses
    * /etc/exports: NFS exports
    * /etc/dput.cf: Debian's dput (Raphael Pinson)
    * /etc/aliases: don't require whitespace after comma (Greg Swift)

0.2.1 - 2008-07-01
  - Address some compilation issues found on Ubuntu/Debian unstable
  - Fix segfault when aug_init/close are called multiple times
  - Man page for augparse
  - New lenses
    * /etc/sysconfig/selinux
    * Bugfixes for grub.conf

0.2.0 - 2008-06-05
  - Augeas is now much more portable
    * Pull in gnulib on non-glibc systems
    * Augeas now builds and runs on FreeBSD (possibly others, too)
  - Various fixes for memory corruption and the like
    (Jim Meyering, James Antill)
  - New lenses
    * vsftpd.conf
    * various bugfixes in existing lenses

0.1.1 - 2008-05-16
  - Add subtraction of regexps to the language, for example
      let re = /[a-z]+/ - /(Allow|Deny)Users/
  - Report errors during get/put in the tree; added subnodes to
    /augeas/files/PATH/error for that purpose
  - Many many bugfixes:
    * plugged all known memory leaks
    * fixed typecheck for lens union (l1 | l2) which was plain wrong
    * reduce overall memory usage by releasing unused compiled regexps
    * further performance improvements in libfa
    * check that values match the regexps in STORE when saving
  - libfa can now convert an automaton back to a regular expression
    (FA_AS_REGEXP)
  - New lenses
    * /etc/fstab
    * /etc/xinetd.conf and /etc/xinetd.d/*

0.1.0 - 2008-05-01
  - Various changes to public API:
    * Remove aug_exists from public API, and merge functionality into aug_get
    * Do not hide pointer behind typedef; instead Augeas 'handle' type is now
      struct augeas, typedef'd to augeas (Jim Meyering)
    * Const-correctness of public API, return error indication
      from aug_print (Jim Meyering)
    * Make buildable on Debian Etch (remove -fstack-protector from compiler
      switches)
  - Public API is now stable, and existing calls will be supported without
    further changes
  - New schema:
    * /etc/sysconfig/network-scripts/ifcfg-* (Alan Pevec)
    * Assorted other files from /etc/sysconfig (the ones that just set
      shell variables)
    * /etc/apt/sources.list and /etc/apt/sources.list.d/* (Dean Wilson)
  - Man page for augtool (Dean Wilson)

0.0.8 - 2008-04-16
  - Complete rewrite of the language for schema descriptions

0.0.7 - 2008-03-14
  - Typecheck lenses; in particular, discover and complain about ambiguous
    concatenation and iteration
  - Enable typechecking for augparse by default, and for augtool via the
    '-c' flag
  - Fixed lens definitions in spec/ to pass typechecking. They contained
    quite a few stupid and subtle problems
  - Greatly improved libfa performance to make typechecking reasonably
    fast. Typechecking cmfm.aug went from more than two hours to under two
    seconds

0.0.6 - 2008-03-05
  - Make it possible to overwrite files when saving with and without
    backups
  - Take the filesystem root as an optional argument to aug_init
  - Expose these two things as command line options in augtool

0.0.5 - 2008-03-05
  - Changed public API to contain explicit reference to augeas_t
    structure. This makes it easier to write threadsafe code using Augeas
  - Added libfa, finite automata library, though it's not yet used by
    Augeas

0.0.4 - 2008-02-25
  - package as RPM and make sure Augeas can be build on Fedora/RHEL

0.0.3 - 2008-02-25
  - further rework; file processing now resembles Boomerang lenses much
    more closely
  - major revamp of the internal tree representation (ordered tree where
    multiple children can have the same label, including NULL labels)
  - move away from LL(1) parsing in favor of regular languages, since they
    enable much better ahead-of-time checks (which are not implemented yet)

0.0.2 - 2008-01-29:
  - completely reworked
  - processing of files is now based on a textual description of the
    structure of the files (basically a LL(1) grammar)

0.0.1 - 2007-12-01:
  - First release.
  - Public API and basic tree data structure.
  - Record scanning works.
  - Providers for pam.d, inittab and /etc/hosts
  - Simple tests and test driver
