# changelog

author: Anton Novojilov <andy@essentialkaos.com> - 2.0.17-0
changelog:
  - Add support to define CPU affinity for vrrp, checker & bfd processes
    Created 3 new configurations keywords to set CPU affinity of Keepalived
    processes : vrrp_cpu_affinity, checker_cpu_affinity & bfd_cpu_affinity
    This option can be used to force vrrp, checker and bfd processes to run
    on a restricted CPU set. You can either bind processes to a single CPU
    or define a set of cpu. In that last case Linux kernel will be restricted
    to that cpu set during scheduling. Forcing process binding to single CPU
    can increase performances on heavy loaded box. for example:
    "vrrp_cpu_affinity 2" will force vrrp process to run on cpu_id 2
    "vrrp_cpu_affinity 2 3" will retrict kernel scheduling decision over
    cpu_id 2 & 3.
  - correct syntax error when _HAVE_VRRP_VMAC_ && no HAVE_IFLA_LINK_NETNSID.
  - Stage libmnl and libnftnl4.
  - Add dynamic download of kernels using scriplets Also added
    Linux 5.0.0 build.
  - Example build using EOL kernel from old-releases.
  - Modify snapcraft.yaml to dynamically source correct kernel versions.
  - dump processes CPU Affinity while dumping global conf.
    Add support to dump CPU Affinity for each Keepalived processes where
    CPU Affinity has been changed by configuration.
  - Don't enclose /dev/tcp/127.0.0.1/22 in ' chars when running as script
    RedHat identified a problem with scripts like:
    vrrp_script {
      script "</dev/tcp/127.0.0.1/22"
    }
    where returning an exit code of 127 (script not found).
    This was identified to be due to the "script" being enclosed in '
    characters, so the resulting system call was
    system("'</dev/tcp/127.0.0.1/22'"), which failed. Not adding the leading
    and trailing ' characters when the first character of the script is '<'
    or '>' resolves the problem.
  - Add support for use_ipvlan (use an ipvlan i/f similar to use_vmac)
    Issue #1170 identified that use_vmac didn't work with systemd-networkd
    since systemd-networkd was removing IP addresses created by keepalived
    (and any other application). It was discovered that systemd-networkd
    did not remove IP addresses from ipvlans.
    This commit adds support for ipvlans, but to work around the problem,
    and because it might have other uses.
    Systemd commit - https://github.com/systemd/systemd/pull/12511 has added
    configuration options to stop systemd-networkd removing IP addresses
    added by other applications, but it is not merged yet, and it will be a
    while before all the distros merge it.
  - Fix building with ipvlans before IFLA_IPVLAN_FLAGS was defined.
  - Default IPVLANs to bridge mode
    We shouldn't change the behaviour if a kernel is upgraded, so
    default to the original mode supported.
  - Ensure that -lm linker library flag is always set
    configure was testing whether it was necessary to add the -lm option,
    but for some reason gcc adds it itself if -Os is not specified, but
    does not add it if -Os is specified. Consequently if configure was
    run without -Os, and make was run with -Os the link failed.
    The commit ensures that -lm is always used.
  - Handle checking for -Wl,-z,relro and -Wl,-z,now properly.
  - Honour CFLAGS, CPPFLAGS, LDLIBS and LDFLAGS settings when configure runs.
  - Propogate CFLAGS, CPPFLAGS, LDFLAGS and LDLIBS from configure to make files
    Make sure any settings in CFLAGS etc at the time configure is run are added
    to the Makefiles, to ensure that the make is run in the same environement
    that configure is run in.
  - Use CFLAGS, CPPFLAGS, LDFLAGS and LDLIBS correctly
    Use the correct variable for the relevant option type, e.g. -llib
    should be in LDLIBS, not LDFLAGS, and -Ddefn should be in CPPFLAGS
    not CFLAGS.
  - Fix non-ipvlan interfaces broken by adding ipvlans.
  - Check bfd instance name length before copying.
  - Add lib/container.h to avoid duplicate definition of container_of.
  - Revisited code to use const declaration where appropriate.
  - Add STRDUP/STRNDUP functions.
  - Add FREE_CONST, FREE_CONST_ONLY and REALLOC_CONST.
  - Change thread_t * to thread_ref_t except in thread handler code
    Treat the thread reference as a handle, so that the only code that
    manipulates thread structures is in the scheduler.
  - Add STRDUPs in check_data.
  - Add STRDUP in bfp parser code.
  - -U flags should be included in CPPFLAGS
  - Update track_process documentation.
    Issue #1265 requested further clarify regarding the track_process
    process specification and use of quote marks.
  - Fix building on Linux 3.13 (required for building snaps)
  - Ensure 4 extra parameters are set for notify scripts with no shebang.
  - Streamline functions returning string matching a define.
  - Make addattr8/16/32/64 and rta_addrattr8/16/32/64 inline functions
    Since these functions simply call addattr_l/rta_addattr_l, making the
    functions inline removes the overhead of one function call.
  - Add genhash option -P to select HTTP 1.1 or 1.0 with Connection: close
    Max Kellerman (max.kellermann@gmail.com) submitted pull request #1260
    to add "Connection: close" to the HTTP header sent by genhash. In order
    to maintain backwards compatibility, this has been implemented as an
    option '-P 1.0C'. In addition, '-P 1.1' requests that a version 1.1
    header is sent (which includes 'Connection: close').
  - Add http_protocol option for HTTP_GET and SSL_GET checkers.
    To be consistent with commit 2ff56f5 - "Add genhash option -P
    to select HTTP 1.1 or 1.0 with Connection: close", this commit
    adds the http_protocol keyword for HTTP_GET and SSL_GET checkers.
    'http_protocol 1.0C' adds 'Connection: close' to a 1.0 header, and
    'http_protocol 1.1' sends an HTTP/1.1 header, which includes the
    'Connection: close' option.
  - Tidy up the recieve message processing code loops in genhash.
  - Add genhash -t timeout option.
  - Simplify thread process in genhash after send HTTP request.
  - support http status_code group
    The origin status_code only support one specific code, now we can
    support http status_code of the same class. That's to say, we can
    use 1xx to represent 100-199, 2xx means 200-299 ans so on.
    eg: The configure as follows:
    url {
        path /index.html
        status_code 2xx 3xx
    }
    which means we consider all status_code range in [200,399] is ok.
    Of course the following configure is either 200 or [300,399] is ok.
    url {
        path /index.html
        status_code 2xx 3xx
    }
  - Fix compiler warnings introduced in commit c7c23a2
    Commit c7c23a2 - "support http status_code group" introduced
    two compiler warnings, due to isdigit() being undeclared, and
    a shadows declaration. These warnings are now resolved.
  - Use standard bit testing and setting functions
    Commit c7c23a2 - "support http status_code group" added additional
    bit testing and setting functions, rather than using the already
    defined ones in bitops.h.
    This commit also resolves the assumption that longs are 64 bits, and
    will allow the code to work with longs of any length.
    The original commit would cause all status codes 100 to 599 to be
    written when the configuration was dumped, regardless of whether
    the specific codes were set. This commit now writes the status codes
    in ranges.
    Finally, if no status code is configured, it sets the bits for the
    default status codes (200-299).
  - Change how http status codes are configured
    Commit c7c23a2 - "support http status_code group" allowed status codes to
    be specified as 2xx, meaning 200-299. This commit changes the configuration
    so that 2xx etc is no longer used, but status code ranges can be specified,
    e.g. status_code 150 180-189 200-299 503 510-520
  - Update documentation for commit c7c23a2.
  - Fix a memory leak and duplicate free in HTTP_GET checker.
  - Fix sending SMTP alerts
    Issue #1275 identified that SMTP alerts were not working. The SMTP alerts
    were broken by commit 5860cf2 - "Make checker fail if ENETUNREACH returned
    by connect()", since the SMTP state machine was not updated to handle the
    addition value in enum connect_result.
    This commit adds code to handle the additional enum, but also makes the
    code less sensitive to such changes, and more likely to produce compiler
    warnings/errors if appropriate updates are not done in the future.
  - Fix various compilation warnings with certain configure options.
  - Update location of PID file to match Filesystem Hierarchy Standard v3.0
    Issue #1277 identified that PID files should be created in /run rather
    than /var/run, and that systemd logged a warning if the service file
    specified PIDFile under /var/run.
    This commit now makes keepalived use the appropriate directory for PID
    files as determined by configued (rather than doing its own thing), and
    configure now uses /run in preference to /var/run.
  - Stop LVS sync daemon on shutdown
    The shutdown of the sync daemon was delayed to phase 2 of the shutdown
    which meant that the controlling VRRP instance could never be in the
    master state. We now stop the sync daemon in phase 1, when the VRRP
    instance is transitioned out of master state.
  - Use -isystem rather than -I for path to kernel headers
    Using -isystem rather than -I allows the dispensation for some warnings
    to system headers to apply to the kernel header tree we are specifying.
    This stops some warnings that would not occur with kernel headers under
    /usr/include but that were being generated when -I was used (it
    nevertheless has helped identify two bugs).
  - Ensure check system headers for definition of NFT_TABLE_MAXNAMELEN
    Prior to Linux 4.1 NFT_TABLE_MAXNAMELEN was not defined, but we must
    include linux/netfilter/nf_tables.h before checking whether it is
    defined or not!
  - Improved configure testing for <linux/netfilter/nf_tables.h>
  - Add warning -Wwrite-strings and resolve new warnings.
  - Add -Wdouble-promotion and resolve new warnings.
  - Add -Wformat-signedness and resolve new warnings.
  - Fix building on Ubuntu 16.04 with --disable-vrrp
    The addition of including <inttypes.h> was needed on Ubuntu 16.04,
    whereas it wasn't necessary on Fedora or Debian.
  - Explicitly include <inttypes.h> where print format names are used.
  - Add more -Wformat-* options and resolve new warnings.
  - Add -Wframe-larger-than=5120
    The largest frame is just under 4200 bytes (which may be more than we
    want anyway), but adding this warning will at least tell us if a stupidly
    large frame is created in the future.
  - Fix spelling of -Wmissing-field-initializers.
  - Fix definition of PRI_rlim_t generated by configure on 32 bit systems.
  - Rseolve warning re >0 comparison for unsigned value.
  - add min max judge
    Although even if min > max, the code works well. We better to print
    the error config to let the user know this.
  - Ensure correct definition of MAX_ADDR_LEN is used
    <net/if_arp.h> defines MAX_ADDR_LEN as 7, and <linux/netdevice.h>
    defines MAX_ADDR_LEN as 32. We need to ensure we have the longer one.
  - update doc samples of keepalived.conf.status_code.
  - Fix compiling on Alpine Linux 3.7.
  - Update list of packages to install on Alpine Linux.
  - Send GARP/NA message when leaving fault state if using unicast
    If the master's ARP entry for a backup route has expired and we are
    using a short advert interval (< 0.5 seconds), then the backup router
    could timeout receiving adverts before the master sends its next
    ARP/NDISC message; until it has had a reply to that it cannot send any
    adverts to the backup router in question.
    This commit makes a VRRP instance that is using unicast send a GARP/NA
    when it transitions out of fault state, to ensure that the master (or
    local router) can send adverts to us immediately.
  - track_process: handle different threads having different names
    prctl(PR_SET_NAME) is a per thread property, not a per process
    property, so when a PROC_EVENT_COMM event is received, we need to
    check that the tid == pid, so ensure that only the main (initial)
    thread that COMM changes are considered for.
  - Fix some log_message for specifiers in track_process.c.
  - Fix for JSON characters escaping.
  - Don't attempt to create a macvlan when using an ipvlan
    netlink_link_add_vmac() detected an interface had been created, and
    so didn't attempt to create a macvlan, but netlink_link_add_vmac()
    shouldn't be called in this circumstance.
  - On reload, report addresses being removed as removed, not thos remaining.
  - Don't add further iptables entries on reload when using ipsets.
  - Stop deleting VMAC/IPVLAN interfaces on reload when still needed.
  - Fix formatting of email To: line.
  - Improve efficiency of setting up SMTP headers.
  - Fix segfault when we do not config vsg.
  - Fix issues reported by coverty (unchecked return value, buffer overrun,
    Logically dead code, uinitialized var, explicit null dereferenced, ...)
  - Resolve compiler warning in list_sort().
  - genhash: make printssl a static function.
  - Change strncpy() to strcpy_safe() in smtp_final().
  - Convert some snmp list loops to use LIST_FOREACH.
  - Make inet_stosockaddr() return bool rather than int.
  - Fix checking for VMAC/IPVLAN no longer used after reload
    Pull request 1310 identified that there was a problem building
    keepalived with VLANs but without ipvlans. The code that needed
    changing was also incorrect so this commit resolves both issues.
  - Fix false-positive send_instance_notifies calls
    Issue #1311 identified that duplicate notifies were being sent on
    a reload, and pull request #1312 provided a fix. Unfortunately other
    intervening commits stopped the original patch applying, so this
    updates the original patch.
    The patch also stops duplicate logging of vrrp instance states on
    reload when there has been no change.
  - Set thread parameter value explicitly to 0 when add timer thread
    It is possible for a function to be called either from a timer thread
    or an event thread. When an event thread is added, a vlue can be passed
    which will be passed to the function, but currently there is no way to
    set the value for a timer thread (a function thread_add_timer_val() can
    be added when needed), but in order to allow the value to be used with
    an event thread, it needs to be explicitly set to something when called
    via a timer thread, so just set it to 0.
  - Remove VRRP_DISPATCHER definition - it was not used.
  - Some minor tweaks for the format of keepalived.data.
  - Make track_process, parser and dump_keywords --debug options.
  - Change default to not check for EINTR if use signalfd.
  - Don't send prio 0 adverts for deleted VRRP instance that wasn't master
    When a VRRP instance ceases to exist following a config reload, we must
    only send priority 0 adverts if the deleted instance was in master state
    prior to the reload.
  - Send notifies when vrrp instance deleted on reload
    This commit makes notifies be send saying that the instance is in
    fault state, since that is the closest we have to the instance being
    deleted (the instance can't run since it is deleted which is quiet
    similar to being in fault state).
  - Streamline some HTTP_GET code.
  - Simplify HTTP_GET epilog parameters
    Parameters t and c weren't needed, since they can be determined from
    the method parameter if we add REGISTER_CHECKER_FAILED.
  - Set checker->has_run for HTTP_GET after failure
    The behaviour we want after a failure of checking a URL at startup
    is the same as if all checks had completed, so if there is a failure,
    just set checker->has_run.
  - Make http_get url_it point to list element rather than a counter
    This makes fetching the next URL more efficient.
  - When we run the initial HTTP_GET check, we don't want any retries
    It isn't only the first URL that shouldn't have retries, but all of
    them. This commit implements that.
  - When an HTTP_GET url check fails, keep checking that URL until success
    When a URL check has failed, there is no point checking other URLs until
    we know the one that has failed is working again. The approach now is
    that the failed URL is checked until it is Ok again, and then all the URLs
    are checked before the checker is successful. This will reduce the recovery
    time once the failed URL recovers.
  - When starting up, don't delay between checking all the URLs
    When we start up, particularly in alpha mode, we want to check the
    URLs as quickly as possible, so don't delay by delay_loop between
    checking each URL, but check them immediately one after the other.
  - After HTTP_GET URL failure, delay max of delay_loop and delay_before_retry.
  - After an HTTP_GET failure, check the URLs without any delay
    This means that recovery will occur as quickly as possible.
  - Some cosmetic changes to check_ssl.c.
  - Add option fast_recovery for HTTP_GET.
    Commits 3027e0c - "When starting up, don't delay between checking all the
    URLs" and 86e02dd - "After an HTTP_GET failure, check the URLs without
    any delay" removed the delay between URL checks both at startup and after
    a URL check failure. This commit makes that options, and it will only do
    the fast checking if fast_recovery is configured against the checker.
  - Make set_value() check for missing parameter
    Pull request #1308 identifed that if set_value() was called when
    there wasn't a parameter on the command line, keepalived could
    segfault since NULL was returned (examples were HTTP_GET with an
    empty path specified, and DNS_CHECK with empty name).
    This commit modifies set_value() so that keepalived will exit if
    it is called with no keyword parameter is missing. Uses of
    set_value() where no parameter did not cause a problem (e.g. where
    the whole option was optional, such as virtual_host) now check if
    the parameter is mising and report a configuration error.
  - Handle vrrp tracked interfaces being down on reload
    If the base interface of a vmac interface was down on reload, the
    vrrt instance would not come back up after the base interface came
    back up.
  - Don't log error when sending priority 0 advert after interface goes down.
  - Cosmetic change to address_exist().
  - Add information regarding SElinux and keepalived.
  - Fix overflow status code
    Under normal circumstances, status_code returns 100-599,
    but if it is a constructed abnormal reply message,
    it may be out of the range, resulting in the status_code
    array out of bounds, and then keepalived segfault.
  - Ensure HTTP status code is preceeded by a space character.
  - Fix setting existing macvlan etc base interfaces at startup.
  - Add further SELinux references.
  - Resolve implicit declaration of function â€˜strdupâ€™ warning.
  - Allow location of /run dir to be specified to configure
    The commit adds configure option --with-run-dir=PATH
  - Fix reloading when interfaces deleted and recreated
    If have macvlans on a real interface, with vmacs configured on the
    macvlans and the macvlans are deleted, the vmacs from them are removed
    from the configuration, the configuration is reloaded, and this is done
    for more than one macvlan, and then the configuration is reinstated
    one by one with the configuration being reloaded, keepalived was
    incorrectly setting some of the vrrp instances to fault state. This commit
    resolves the issues.


author: Anton Novojilov <andy@essentialkaos.com> - 2.0.18-0
changelog:
  - Set NA_ROUTER flag in gratuitous NA messages appropriately.
    Previously keepalived checked the IPv6 forwarding state of the interface/
    parent interface of a VRRP instance, and used that for all GNA messages.
    However, if addresses are configured on different interfaces, it should
    be the setting for the address's interface that is used.
  - Fix memory leak with dbus_instance_name.
  - Make set_value() add entry for memcheck identifying where called.
  - Add configure option --enable-checksum-debug.
    Issue #1175 identified that intermittently they were getting VRRPv3
    checksum errors. The maintainers of keepalived were unable to reproduce
    the problem despite extensive testing, and so a special patch was produced
    to check and log any checksum changes from previous adverts sent or received.
    Almost two months later there has been no feedback. The patch has now been
    forward ported from v2.0.12 to v2.0.17 and is included here, enabled by
    --enable-checksum-debug option, so that if there are ever any checksum
    problems.
    in the future this code can be used to ascertain what is happening.
  - Fix configuring LVS sync daemon in backup state.
    Commit eb929f8 - "Stop LVS sync daemon on shutdown" moved shutting
    down the LVS sync daemon to the wrong place, so that it was called
    whenever a VRRP instance transitioned out of master state. This
    commit moves the shutting down of the sync daemon to shutdown phase 1,
    and it is shutdown before the VRRP instances are shut down.
  - Increase open file limit for checker process if no of checkers need it.
    TCP, HTTP/SSL, DNS and SMTP checkers all use a socket. If there is a
    sufficiently large number of checkers, the default open file limit may
    be exceeded. This commits counts the number of such checkers, and also
    thr number of smtp_alerts, and if necessary increases the open file limit
    to allow them all to run at once.
  - Ensure MISC_CHECK processes don't get increase open file limit.
  - When checking number of open files for vrrp process, allow for smtp
    alerts.
  - Combine checker set_max_file_limit() and set_vrrp_max_fds() common
    code.
  - DNS_CHECK: correct error info in dns_type_handler func.
    Sometimes, users set two type values by mistake in keepalived.conf,
    and the first is right and the second one is not in DNS_TYPE[].
    Then the dns_check->type is set successfully when parsing first type value
    , which may be different from the default SOA. As for the second one,
    the dns_type_handler func will print error info "Defaulting to SOA",
    actually, currently the dns_check->type may be not equal to SOA.
    Here, we will print the dns_type_name(dns_check->type) instead of "SOA".
  - Simplify restoring RLIMIT_NOFILE for child processes.
  - Simplify handling incorrect dns_check type.
  - Add missing track_process documentation to keepalived.conf(5) man
    page.
  - Add weight "reverse" feature to track_bfd.
    The reverse feature allows reducing the priority when the tracker is up
    and reducing the priority when the tracker is down.
  - Add weight "reverse" feature to track_interface.
    The reverse feature allows reducing the priority when the tracker is up
    and reducing the priority when the tracker is down.
  - Add weight "reverse" feature to track_script.
    The reverse feature allows reducing the priority when the tracker is up
    and reducing the priority when the tracker is down.
  - Update alloc_track_file() and alloc_group_track_file() to be
    consistent.
  - Allow reverse tracking with weight 0.
    This allows a vrrp instance to go to fault state if an interfaces is UP,
    or a track script or bfd instance is up, or a track process has achieved
    quorum, and down otherwise.
  - Fix reverse on track_script when configured on sync group and instance
    If a track script was configured on both a vrrp instance and the sync
    group that the instance was configured in, then the reverse setting
    wasn't being properly carried forward.
  - Add weight "reverse" feature to track_file.
    The reverse feature allows reducing the priority when the tracker is up
    and increasing the priority when the tracker is down.
  - Make track_bfd reverse handling consistent with other trackers.
  - Add track weight reverse to SNMP output.
  - Add vrrp track_bfd details to SNMP output.
  - Add vrrp track_process details to SNMP output.
  - Disallow --enable-track-process-debug with --disable-track-process.
  - Add conditional compilation around track_bfd/process SNMP code.
  - Remove duplicate code for parsing vrrp and sync group trackers.
    The code for parsing trackers for vrrp instances and sync groups
    was to all intents and purposes identical, so this commit now uses
    common code for both of them.
  - sll_protocol should be set to  0x806.
    Some times , send the gratuitous ARP message should set sll_protocol,
    let some drivers can evaluate which protocol we use.
  - Neighbor discovery set sll_protocol.
  - Fix SNMP VRRPv3 IP address OIDs returned.
    The OIDs returned for SNMPv3 addresses were incorrectly formatted,
    including one extra subid that was the length of the IP address.
  - Don't use numeric values of address lengths for VRRP SNMP v3.
  - Stop returning not-accessible fields for v2 SNMP.
  - Stop return not-accessible fields for v3 SNMP.
  - Use common code for VRRP tracker SNMP output.
    Many functions were using the same, fairly large, code block to do
    the same thing. These are now standardised to use the new function
    snmp_find_element().
  - make some vrrp snmp function parameters const.
  - Make virtual_server_t vsgname const.
  - Fix SNMP reporting of virtual server group fwmark and address
    ranges.
  - More SNMP fixes for virtual server group fwmark and address ranges.
  - If virtual server is fwmark and rs's tunnelled, default to IPv4.
    If a virtual server uses a fwmark, and all the real servers are
    tunnelled, the address family could be IPv4 or IPv6. If the family
    is not specified, default to IPv4 (to match behavious of ipvsadm).
  - Make LIST_SIZE safe to use if list is not assigned.
  - Optimisations to snmp_header_list_table().
  - Optimisations to snmp_find_element().
  - Further optimisation to snmp_find_element().
  - Add support for IPVS GUE tunnel type
    This functionality was introduced in Linux 5.2.
    To view the IPVS setup with ipvsadm requires ipvsadm v1.30 plus
    commits 2347b504e3ce and c3c2c3c6ae12e3.
  - Add support for IPVS GUE tunnel checksum option.
    The kernel functionality is scheduled for Linux 5.3.
  - Add support for IPVS GRE tunnels.
    The kernel functionality is scheduled for Linux 5.3.
    In addition to the ipvsadm patch requirements identified for GUE
    tunnels, the patch at
  - Add pure attribute to http_get_check_compare().
    GCC was suggesting adding the pure attribute to http_get_check_compare()
    so let's do so.
  - Resolve warnings from gcc 9.1.1.
  - Resolve all outstanding coverity issues.
  - Fix use of getrandom() in BFD rand_intv().
  - When resetting priority of child process, don't change parent's priority
    Issue 1358 identified that it was the priority of the parent process,
    rather than the child process, that was being reset. This commit corrects
    that and resets the priority of the child process.
  - Add missing bfd_instance vrrp and checker keyword documentation.
  - Don't send bfd events to vrrp or checker process if no
    configuration.
    If there is no vrrp configuration, or no checker configuration, there
    is no point sending bfd_event notifications to the relevant processes.
    Actually, since the processes may not be running, sending such
    notifications can cause the pipes to become full, so it is necessary,
    as well as desirable, not to write events to the pipes in those
    circumstances.
  - Revert use of getrandom() for bfd jitter.
    This can be called up to 1000 times a second per bfd instance, and
    so risks emptying the entropy pool.
  - Use random() rather than rand() in bfd rand_intv().
    The rest of keepalived uses random(), so this changes creates more
    consistency.
  - Allow bfd discriminator to be an odd number.
    rand_intv(1, UINT32_MAX) was always returning an even number, since
    RAND_MAX == UINT32_MAX / 2. This commit sets the lsb of the discriminator
    to the lsb of the current time in seconds.
  - Ensure BFD source port in range 49152..65535.
    RFC5881 requires the source port for BFD packets to be in the above
    range, but keepalived was allowing the port to be randomly generated
    by the kernel, and hence could be outside the range.
    This commit sets the permitted port range to the intersection of
    [49152, 65535] and the values in /proc/sys/net/ipv4/ip_local_port_range,
    unless the intersection is too small, in which case it just uses the BFD
    specified values.
    keepalived generates a random port number in the required range, and then
    loops through the range starting from the random port number until it
    finds one it can bind to.
  - Resolve coverity resource leak issue 218872.
  - Resolve coverity Resource leak issue 218875.
  - Resolve coverity Resource leak issue 218876.
  - Resolve coverity Unexpected control flow issue 218873.
  - Change code to avoid coverity String length miscalculation issue 218874
    The code was correct, but as coverity points out, strlen(str + 1) is more
    likely to be an error for strlen(str) + 1, so avoid the use of the former
    construct.
  - Added CRC check for all sources


author: Anton Novojilov <andy@essentialkaos.com> - 2.0.19-0
changelog:
  - Allow persistence, scheduler and flags of VS to be changed on reload
    A virtual server is identified by its IP address, protocol and port,
    or the firewall mark and address family, and not by the persistence
    settings or scheduler and scheduler flags. When comparing virtual
    servers on a reload, don't check persistence and scheduler settings
    match, but update them if necessary.
  - Ignore default RS settings when comparing VSs after reload
    Various default settings for real servers belonging to a virtual
    server can be configured against a virtual server. These settings
    should be ignored when comparing virtual servers following a
    reload. Any differences in real server settings will be handled
    separately.
  - Clarify what IPVS persistence engines are supported in man page
  - Allow RS forwarding method to be changed on reload
    A real server is identified by its IP address and port, and not by
    the forwarding method.  When comparing real servers on a reload, don't
    check the forwarding method, but update it if necessary.
  - Check address family when comparing fwmark VSs on reload
  - Update test tcp server
  - Allow more than one BFD instance with a neighbour
    This commit now checks both the neighbour address and the source/local
    address when finding a BFD instance. This means that more than one BFD
    instance can be set up with the same neighbour, so long as a different
    local address is used.
  - Make PID files group and world readable
    Issue ##1378 identified that PID files were created without group
    and work read in the file permission bits being set, due to the umask.
    This was causing a problem, since a non-root user was needing to read
    the PID file.
    This commit now forces the file permissions of PID files to be:
    owner=rw, group=r, other=r.
  - Fix erroneous error message when creating IPv4 ipvlan interfaces
    The code was checking for a return value != -1 to identify an error,
    whereas it should have been checking for return value != 1.
  - Ignore reloading signals till signal_init call
  - fix bug in vrrp_json_track_ifp_dump()
  - Fix handling unknown user in MISC_CHECK
    If the user was unknown, it wasn't dequeuing the new checker, resulting
    in a subsequent coredump.
  - Fix ~SEQ handling
    Commit 47b2207 - "Add const attribute where appropriate in config parser
    code" broke handling of ~SEQ, due to including one extra character at the
    end of the sequence variable name.
    This commit corrects the length of the variable set as part of the ~SEQ
    processing.
  - Revert "Fix route add/delete on reload if only change via address"
    This reverts commit f54c2e8294c6f2080c3ae951ba25bf40d5b8d211.
    The commit did the wrong thing: the via address is not part of the
    key of the route.
    The problem was that if it detected it already had a route with the
    same key, it replaced the route, but with the old route and not the
    new one. The next commit will rectify this.
  - Correct handling of replacing routes on reload
    Issue ##1390 identified that a route with a changed source address
    wasn't being changed on reload, and identified that the problem was
    related to issue ##1220.
    It turns out that commit f54c2e8 which resolved issue ##1220 was not
    the correct fix. The problem was that when reloading, if a new route
    matched an old route, the old route was replaced with the OLD route
    (i.e. it did nothing), rather than replacing it with the NEW route.
    This commit now replaces the old route with the new route.
  - Add addresses/routes/rules in that order and delete in reverse order
    Routes can requires addresses to exist in order to be able to add them,
    and rules determine which routes are used.
  - Fix not logging error on deletion of expired route
  - Make netlink_route() return bool, and add some LIST_FOREACH
  - Handle changing virtual route to use new VIP on reload
    During a reload, routes replacing existing routes are replaced, as
    opposed to deleted and added; this avoids the route disappearing for
    a short while.  However, if a new route uses a VIP that didn't exist
    in the old configuration then the route replacement will fail.
    The code is now changed so that it attempts to replace the route, but
    if that fails, it deletes the old route and later adds the new route
    after the new VIPS have been added.
  - Don't log EPOLLERR or EPOLLHUP - they can occur with TCP_CHECK
  - Fix tcp_server getopt() handling
  - Properly handle MISC_CHECK script returning exit status 0
    If a MISC_CHECK script returned an exit status >= 2, and then the
    script returns 0, the weight of the real server was not updated
    following the script returning 0, and the quorum also wasn't updated.
    This commit makes keepalived update the weight of a real server and
    the quorum following a MISC_CHECK returning a 0 exit status.
    This is a change of behaviour for MISC_CHECKs whose scripts return
    an exit status >= 2 subsequently followed by an exit status of 0.
    However, the new behaviour is consistent with the documentation and
    is also the behaviour that would be expected. Some users may need to
    modify their MISC_CHECK scripts if the scripts return an exit code >= 2
    and subsequently return an exit code of 0 expecting that to mean that
    the status hasn't changed.
  - Correct documentation re range of values for Virtual Router ID
    The valid range of values for the VRID is 1 to 255, and does not
    include 0.
  - Handle script timeouts when child process has terminated
    Issue ##1364 identified that if a track script timed out and the kill
    of the process failed to to its exit status already having been reaped,
    keepalived would never run the track scripts again. It transpires that
    the same problem existed with MISC_CHECK scripts.
    The commit now ensures that after the timeout the script will be set
    to idle state, so that it can be run again.
  - Clear thread_master current_event when cleanup thread_master
    The current_event was left pointing to an event that had been deleted,
    with the consequence that if the next epoll event matched the outdated
    current_event, that outdated event could be used.
    This commit clears the current_event when the thread_master is cleaned up.
  - Add errno numbers to some bfd error messages, rather than just text
    Although the strerror() text is helpful, it is often useful just to
    know the error number.
  - Enable FIFOs to receive initial fault notifications at startup
    Issue ##1399 identified that if a track_file caused a VRRP instance
    to start in fault state, there was no notification of the fault sent
    to the notify FIFOs.
    This commit implements the suggestion of chenwng in issue ##1399 and
    moves the opening of the notify FIFOs to earlier in the init process.
  - Resolve incorectly identified Coverity error
  - Define VRRP and BFD initialisms
  - Add support for nftables blocking IGMP/MLD packets on VMAC interfaces
    Issue ##882 identified that VRRP instances using VMACs sent IGMP/MLD
    packets using the MAC address of the VMAC interface even when the
    vrrp instance was in backup state. This meant that switches would
    update what interface the VRRP MAC address was on to the backup
    instance, thereby meaning that until the master instance sent another
    advert, packets destined to be forwarded by the master instance would
    be delivered to the backup instance and lost.
    This commit adds support to use nftables to stop the packets being
    send from the VMAC interface (and thereby using the 00:00:5e:00:0x:xx
    MAC address), and instead the packets are sent on the parent interface.
    How this is acheived depends on whether the kernel supports the dup
    statement; if it does the IGMP messages are simply moved from the VMAC
    interface to the parent interface otherwise the join groups are done on
    both the VMAC interface and the parent interface, and nftables drops
    the join messages on the VMAC interface.
    This functionality might be better implemented using eBPF, but older
    systems don't support that, and I still need to work out how to use
    eBPF.
  - Add support for using iptables to block VMAC IGMP/MLD messages
    Commit b10bbfc2a added support for using nftables to block
    IGMP/MLD messages being sent VMAC interfaces. This commit adds
    the equivalent functionality using iptables.
  - Improve checking of incompatible configure options
  - Fix Travis-CI build errors
  - Don't attempt to remove IGMP blocking iptables rules for IPVLANs
    We don't block IGMP/MLD for IPVLANs so there are no rules to remove.
  - Turn off nftables mnl debug logging
  - Don't log an error when deleting nonexistant nftable at startup
    Since there is no native flush command to the kernel to delete all
    the rules, sets, meters etc in a table, we just delete the table,
    and if the table doesn't exist an error is returned.
    This commits stops the error being logged, since it isn't an error
    of interest.
  - Minor tidying up of setting up nftables
  - Fix error when setting up nftables with eVIPs from other family
    The sequence number of nftables netlink messages was getting out
    of order when a VRRP instance had both IPv4 and IPv6 entries.
    This is now resolved by checking for the existance of residual
    tables of both families when keepalived first checks for residual
    tables.
  - Remove some duplicate nftables code
  - Remove inhibit_on_failure from keepalived.conf(5) man page
    The inhibit_on_failure keyword does not apply to checkers, and is
    not implemented for them.
  - Remove vi swap file erroneously included in previous commit
  - Add additional logging of reasons for vrrp instances going to fault
    Pull request ##1353 suggested adding additional logging for reasons
    for vrrp instances going to fault state at startup, and for track
    file status changes.
    This commit merges those changes, fixes one error, and only logs
    track file status changes if the -D option (log detail) is set.
  - Make skip_check_adv_addr work properly
    Keepalived was checking the received advert packet length against
    the expected length based on the number of VIPs configured on the
    vrrp instance. This commit changes the check so that the received
    packet length is checked against the number of VIPs in the VRRP
    packet header, thereby ensuring that the advert packet is self
    consistent.
    The check for the number of addresses is now only done if
    skip_check_adr_addr is not set (which matches what the RFC says).
    Note: skip_check_adv_addr only skips the check of VIPs in a received
    packet if the advert is received from the same master as the previous
    advert.
    With this commit, if skip_check_adv_addr is set, it is possible to
    reload a master instance with a different number of VIPs, and then
    subsequently reload the backup instance, without the backup instance
    becoming master due to the mismatch of the number of VIPs.


author: Anton Novojilov <andy@essentialkaos.com> - 3.100-0
changelog:
  - Improved detection of MPEG audio data in RIFF WAVE files
  - Fix possible race condition causing build failures in libmp3lame
  - Don't include the debian directory as one that is needed during builds
  - New switch --gain <decibel>, range -20.0 to +12.0, a more convenient way to
    apply Gain adjustment in decibels, than the use of --scale <factor>
  - Resurrect Owen Taylor's code dated from 97-11-3 to properly deal with GTK1
  - Bug in path handling
  - Problem with Tag genre
  - No progress indication with pipe input
  - Scale (empty) silent encode without warning
  - Environment variable LAMEOPT doesn't work anymore
  - Input file name displayed with wrong character encoding (on windows console
    with CP_UTF8)
  - Fix dereference NULL and Buffer not NULL terminated issues
  - Dereference of a null pointer possible in loop
  - Make sure functions with SSE instructions maintain their own properly
    aligned stack
  - Multiple Stack and Heap Corruptions from Malicious File
  - A division by zero vulnerability
  - CVE-2017-9410 fill_buffer_resample function in libmp3lame/util.c heap-based
    buffer over-read and ap
  - CVE-2017-9411 fill_buffer_resample function in libmp3lame/util.c invalid
    memory read and application crash
  - CVE-2017-9412 unpack_read_samples function in frontend/get_audio.c invalid
    memory read and application crash
  - clip detect scale suggestion unaware of scale input value
  - HIP decoder bug fixed: decoding mixed blocks of lower sample frequency
    Layer3 data resulted in internal buffer overflow (write)
  - Add lame_encode_buffer_interleaved_int()


author: Paulo Roma <roma@lcg.ufrj.br> - 3.98-17
changelog:
  - Removed patch0 (libm).
  - Using %bcond_with mp3rtp (the build fails with it).
  - Using nasm for x86_64.
  - Disabled rpath.
  - Changed license.
  - Converted ChangeLog to utf8.


author: Anton Novojilov <andy@essentialkaos.com> - 1.6-0
changelog:
  - Added include_dir feature (support for Debian-style conf.d/ includes)
  - Added octal_ints feature (support for integer expressed in octal,
    useful for permissions and masks in UNIX-like systems
  - Fixed "Removing a setting removes all siblings"
  - Allow specifying the number of decimals wanted when outputting
  - Make libconfig usable from CMake
  - Documentation fixes


author: Anton Novojilov <andy@essentialkaos.com> - 1.7-0
changelog:
  - Redesigned the directory-include feature to avoid using platform-specific
    directory scanning code, and to fix a bug in the handling of nested includes.
    The application can now do its own directory scanning and/or wildcard
    expansion by registering an include function.
  - Added new CONFIG_OPTION_ALLOW_SCIENTIFIC_NOTATION to allow either %f or
    %g-style formatting for floating point values.
  - Improved the options APIs in both the C and C++ libraries.
  - Improved the automatic conversion between int and int64 values.
  - Fixed build errors caused by out-of-sync generated lexer and parser source
    files.
  - Various internal code cleanup.
  - Fixed failing unit tests.
  - Fixed a problem where a group or list could be added to an array.
  - Changed default float precision from 2 to 6.
  - Added an API to clear an existing configuration.
  - Upgraded VS2015 solution/project files to VS2017.
  - Modified grammar to allow trailing commas in lists and arrays.
  - Removed logic that clipped negative values to 0 in (unsigned int) cast
    operator.
  - Updated manual and added a new chapter on other libconfig implementations
    and bindings.


author: Anton Novojilov <andy@essentialkaos.com> - 1.7.1-0
changelog:
  - Fixed a bug that caused incorrect processing of strings with escape sequences.
  - Added a new 'fsync' configuration option.
  - Merged some contributed updates to CMake files.


author: Anton Novojilov <andy@essentialkaos.com> - 2.0.22-2
changelog:
  - Avoid integer overflow bugs in evbuffer_add() and related functions.
    See CVE-2014-6272 advisory for more information.
  - fix 73 and fix http_connection_fail_test to catch it (crash fix)
  - Avoid racy bufferevent activation
  - Fix compilation with WIN32_HAVE_CONDITION_VARIABLES enabled
  - Fix missing AC_PROG_SED on older Autoconfs
  - Backport libevent to vanilla Autoconf 2.59 (as used in RHEL5)
  - Use AC_CONFIG_HEADERS in place of AM_CONFIG_HEADERS for autmake 1.13 compat
  - Rename configure.in to configure.ac to appease newer autoconfs
  - Avoid using top_srcdir in TESTS: new automakes do not like this
  - Use windows vsnprintf fixup logic on all windows environments
  - Fix a compiler warning when checking for arc4random_buf linker breakage.
  - Fix another arc4random_buf-related warning
  - Add -Qunused-arguments for clang on macos
  - Avoid leaking fds on evconnlistener with no callback set
  - Avoid double-close on getsockname error in evutil_ersatz_socketpair
  - Fix a locking error in bufferevent_socket_get_dns_error.
  - libevent/win32_dealloc() : fix sizeof(pointer) vs sizeof(*pointer)
  - bufferevent_pair: don't call downcast(NULL)
  - Consistently check for failure from evbuffer_pullup()
  - Fix race caused by event_active
  - Avoid redundant invocations of init_extension_functions for IOCP
  - Typo fixes from Linus Nordberg
  - Add a few files created by "make verify" to .gitignore.
  - regress_buffer: fix 'memcmp' compare size
  - Fix bufferevent setwatermark suspend_read
  - Fix evbuffer_peek() with len==-1 and start_at non-NULL.
  - Checking request nameserver for NULL, before using it.
  - Fix SEGFAULT after evdns_base_resume if no nameservers installed.
  - Fix a crash in evdns related to shutting down evdns
  - Check does arch have the epoll_create and __NR_epoll_wait syscalls.
  - Avoid other RNG initialization FS reads when urandom file is specified
  - When we seed from /proc/sys/kernel/random/uuid, count it as success
  - Document that arc4random is not a great cryptographic PRNG.
  - Add evutil_secure_rng_set_urandom_device_file
  - Really remove RNG seeds from the stack
  - Fix a mistake in evbuffer_remove() arguments in example http server code
  - Fix a typo in a comment in buffer.h. Spotted by Alt_F4
  - Clarify event_base_loop exit conditions
  - Use FindClose for handle from FindFirstFile in http-server.c
  - Fix a typo in a doxygen comment.


author: Anton Novojilov <andy@essentialkaos.com> - 2.1.8-0
changelog:
  - Libevent 2.1.8-stable, it contains openssl fixes for resetting fd and using
    bufferevent_openssl_filter_new(). vagrant fixes, some build fixes, increased
    timeout for some tests (to reduce number of failures due to timing issues),
    date in RFC1123 format and running tests in parallel


author: Anton Novojilov <andy@essentialkaos.com> - 2.1.10-0
changelog:
  - This release contains mostly fixes (some evbuffer oddity, AF_UNIX handling in
    http server, some UB fixes and others) but also some new functionality
    (without ABI breakage as usual) and now dist archive can be used for building
    on windows (getopt had been added into it)


author: Anton Novojilov <andy@essentialkaos.com> - 2.1.11-0
changelog:
  - Protect min_heap_push_ against integer overflow
  - Revert "Protect min_heap_push_ against integer overflow."
  - evdns: add new options -- so-rcvbuf/so-sndbuf
  - Change autoconf version to 2.62 and automake version to 1.11.2
  - cmake: install shared library only if it was requested
  - Missing <winerror.h> on win7/MinGW(MINGW32_NT-6.1)/MSYS
  - cmake: set library names to be the same as with autotools
  - Enable _GNU_SOURCE for Android
  - Enable kqueue for APPLE targets
  - autotools: do not install bufferevent_ssl.h under --disable-openssl
  - cmake: link against shell32.lib/advapi32.lib
  - Add README.md into dist archive
  - cmake: add missing autotools targets (doxygen, uninstall, event_rpcgen.py)
  - m4/libevent_openssl.m4: fix detection of openssl
  - Fix detection of the __has_attribute() for apple clang [ci skip]
  - buffer: fix possible NULL dereference in evbuffer_setcb() on ENOMEM
  - Warn if forked from the event loop during event_reinit()
  - evutil: set the have_checked_interfaces in evutil_check_interfaces()
  - https-client: correction error checking


author: Anton Novojilov <andy@essentialkaos.com> - 2.1.12-0
changelog:
  - tinytest: support timeout on Windows
  - Merge branch 'osx-clock'
  - test-ratelim: calculate timers bias (for slow CPUs) to avoid false-positive
  - buffer: do not pass NULL to memcpy() from evbuffer_pullup()
  - http: fix undefined-shift in EVUTIL_IS*_ helpers
  - Check error code of evhttp_add_header_internal() in evhttp_parse_query_impl()
  - http: fix EVHTTP_CON_AUTOFREE in case of timeout (and some else)
  - evdns: Add additional validation for values of dns options
  - There is typo in GetAdaptersAddresses windows library. It should
    be iphlpapi.dll
  - Merge branch 'EV_CLOSED-and-EV_ET-fixes'
  - Fix memory corruption in EV_CLOSURE_EVENT_FINALIZE with debug enabled
  - increase segment refcnt only if evbuffer_add_file_segment() succeeds
  - evdns: fix a crash when evdns_base with waiting requests is freed
  - event_base_once: fix potential null pointer threat
  - http: do not assume body for CONNECT
  - evbuffer_add_file: fix freeing of segment in the error path
  - Fix checking return value of the evdns_base_resolv_conf_parse()
  - evutil_time: improve evutil_gettimeofday on Windows
  - Support EV_CLOSED on linux for poll(2)
  - Parse IPv6 scope IDs.
  - evutil_time: Implements usleep() using wait funtion on Windows
  - evutil_time: detect and use _gmtime64_s()/_gmtime64()
  - bufferevent: allow setting priority on socket and openssl type
  - Fix EV_CLOSED detection/reporting (epoll only)
  - Revert "Warn if forked from the event loop during event_reinit()"
  - https-client: load certificates from the system cert store on Windows
  - Do not use sysctl.h on linux (it had been deprecated)
  - cmake: avoid problems from use of CMAKE_USE_PTHREADS_INIT
  - Update list of cmake files for autotools dist archive
  - LibeventConfig.cmake: restore CMAKE_FIND_LIBRARY_SUFFIXES and
    LIBEVENT_STATIC_LINK default
  - cmake: fix getaddrinfo checking error
  - autoconf: fix getaddrinfo checking errors on mingw
  - Do not use shared global structures on CYGWIN
  - Added uninstall target check to cmakelists
  - Fix compilation without OPENSSL_API_COMPAT
  - cmake: improve package config file (1c047618, baec84f2 yuangongji)
  - Link with iphlpapi only on windows
  - autotools: fails build when need but can not find openssl
  - Merge branch 'http-connect'
  - Fix compat with NetBSD >= 10
  - cmake: fix getrandom() detection
  - arc4random: replace sysctl() with getrandom (on linux)
  - Upgrade autoconf (after upgrading minimum required to 2.67)
  - eliminate some C4267 warnings in Windows
  - autotools: attach doxygen target into all target
  - cmake: attach doxygen target into all target
  - Change the minimum version of automake to 1.13 and autoconf to 2.67
  - Add Uninstall.cmake.in into dist archive


author: Anton Novojilov <andy@essentialkaos.com> - 0.1.3-0
changelog:
  - Updated upstream sources, with a number of crash fixes and new features
    (including support for encoding 7.1)


author: Anton Novojilov <andy@essentialkaos.com> - 0.1.4-1
changelog:
  - Updated upstream sources, with minor changes to the decoder API
    breaking the ABI. (Calling code using AUDIO_CHANNEL_TYPE may need to
    be updated. A new option AAC_PCM_LIMITER_ENABLE has been added, enabled
    by default, which incurs extra decoding delay)
   - PowerPC optimizations, fixes for building on AIX
   - Support for reading streamed wav files in the encoder example
   - Fix VBR encoding of sample rates over 64 kHz


author: Anton Novojilov <andy@essentialkaos.com> - 0.1.5-0
changelog:
  - Updated upstream sources
  - Fixed building with GCC 3.3 and 3.4
  - Fixed building with GCC 6
  - AArch64 optimizations
  - Makefiles for building with MSVC
  - Support building the code in C++11 mode


author: Anton Novojilov <andy@essentialkaos.com> - 2.0.0-0
changelog:
  - Major update in the upstream source base, with support for new
    profiles and features, and numerous crash/fuzz fixes


author: Anton Novojilov <andy@essentialkaos.com> - 2.0.2-0
changelog:
  - Minor upstream updates
  - Lots of upstream and local fuzzing fixes
  - Added CMake project files
  - Removed the MSVC specific makefile


author: Anton Novojilov <andy@essentialkaos.com> - 0.28.4-0
changelog:
  - CVE-2019-1348: the fast-import stream command "feature
    export-marks=path" allows writing to arbitrary file paths. As
    libgit2 does not offer any interface for fast-import, it is not
    susceptible to this vulnerability.
  - CVE-2019-1349: by using NTFS 8.3 short names, backslashes or
    alternate filesystreams, it is possible to cause submodules to
    be written into pre-existing directories during a recursive
    clone using git. As libgit2 rejects cloning into non-empty
    directories by default, it is not susceptible to this
    vulnerability.
  - CVE-2019-1350: recursive clones may lead to arbitrary remote
    code executing due to improper quoting of command line
    arguments. As libgit2 uses libssh2, which does not require us
    to perform command line parsing, it is not susceptible to this
    vulnerability.
  - CVE-2019-1351: Windows provides the ability to substitute
    drive letters with arbitrary letters, including multi-byte
    Unicode letters. To fix any potential issues arising from
    interpreting such paths as relative paths, we have extended
    detection of DOS drive prefixes to accomodate for such cases.
  - CVE-2019-1352: by using NTFS-style alternative file streams for
    the ".git" directory, it is possible to overwrite parts of the
    repository. While this has been fixed in the past for Windows,
    the same vulnerability may also exist on other systems that
    write to NTFS filesystems. We now reject any paths starting
    with ".git:" on all systems.
  - CVE-2019-1353: by using NTFS-style 8.3 short names, it was
    possible to write to the ".git" directory and thus overwrite
    parts of the repository, leading to possible remote code
    execution. While this problem was already fixed in the past for
    Windows, other systems accessing NTFS filesystems are
    vulnerable to this issue too. We now enable NTFS protecions by
    default on all systems to fix this attack vector.
  - CVE-2019-1354: on Windows, backslashes are not a valid part of
    a filename but are instead interpreted as directory separators.
    As other platforms allowed to use such paths, it was possible
    to write such invalid entries into a Git repository and was
    thus an attack vector to write into the ".git" dierctory. We
    now reject any entries starting with ".git" on all systems.
  - CVE-2019-1387: it is possible to let a submodule's git
    directory point into a sibling's submodule directory, which may
    result in overwriting parts of the Git repository and thus lead
    to arbitrary command execution. As libgit2 doesn't provide any
    way to do submodule clones natively, it is not susceptible to
    this vulnerability. Users of libgit2 that have implemented
    recursive submodule clones manually are encouraged to review
    their implementation for this vulnerability.


author: Anton Novojilov <andy@essentialkaos.com> - 0.12.0-0
changelog:
  - Add optional KeepAlive support
  - Try again on EINTR errors
  - Add libuv adapter
  - Add IPv6 support
  - Remove possiblity of multiple close on same fd
  - Add ability to bind source address on connect
  - Add redisConnectFd() and redisFreeKeepFd()
  - Fix getaddrinfo() memory leak
  - Free string if it is unused (fixes memory leak)
  - Improve redisAppendCommandArgv performance 2.5x
  - Add support for SO_REUSEADDR
  - Fix redisvFormatCommand format parsing
  - Add GLib 2.0 adapter
  - Refactor reading code into read.c
  - Fix errno error buffers to not clobber errors
  - Generate pkgconf during build
  - Silence _BSD_SOURCE warnings
  - Improve digit counting for multibulk creation


author: Anton Novojilov <andy@essentialkaos.com> - 0.12.1-0
changelog:
  - Fix `make install`: DESTDIR support, install all required files, install 
    PKGCONF in proper location
  - Fix `make test` as 32 bit build on 64 bit platform


author: Anton Novojilov <andy@essentialkaos.com> - 0.13.1-0
changelog:
  - Windows compatibility layer for parser code (tzickel)
  - Properly escape data printed to PKGCONF file (Dan Skorupski)
  - Fix tests when assert() undefined (Keith Bennett, Matt Stancliff)
  - Implement a reconnect method for the client context, this changes 
    the structure of redisContext (Aaron Bedra)
  - Fix memory leak in async reply handling (Salvatore Sanfilippo)
  - Rename struct member to avoid name clash with pre-c99 
    code (Alex Balashov, ncopa)


author: Anton Novojilov <andy@essentialkaos.com> - 0.13.2-0
changelog:
  - Prevent crash on pending replies in async code (Thanks, @switch-st)
  - Clear REDIS_CONNECTED flag when connection is closed (Thanks, Jerry Jacobs)
  - Add MacOS X addapter (Thanks, @dizzus)
  - Add Qt adapter (Thanks, Pietro Cerutti)
  - Add Ivykis adapter (Thanks, Gergely Nagy)


author: Anton Novojilov <andy@essentialkaos.com> - 0.13.3-0
changelog:
  - Revert "Clear REDIS_CONNECTED flag when connection is closed".
  - Make tests pass on FreeBSD (Thanks, Giacomo Olgeni)


author: Anton Novojilov <andy@essentialkaos.com> - 0.12.0-0
changelog:
  - Add optional KeepAlive support
  - Try again on EINTR errors
  - Add libuv adapter
  - Add IPv6 support
  - Remove possibility of multiple close on same fd
  - Add ability to bind source address on connect
  - Add redisConnectFd() and redisFreeKeepFd()
  - Fix getaddrinfo() memory leak
  - Free string if it is unused (fixes memory leak)
  - Improve redisAppendCommandArgv performance 2.5x
  - Add support for SO_REUSEADDR
  - Fix redisvFormatCommand format parsing
  - Add GLib 2.0 adapter
  - Refactor reading code into read.c
  - Fix errno error buffers to not clobber errors
  - Generate pkgconf during build
  - Silence _BSD_SOURCE warnings
  - Improve digit counting for multibulk creation


author: Anton Novojilov <andy@essentialkaos.com> - 0.12.1-0
changelog:
  - Fix `make install`: DESTDIR support, install all required files, install
    PKGCONF in proper location
  - Fix `make test` as 32 bit build on 64 bit platform


author: Anton Novojilov <andy@essentialkaos.com> - 0.13.1-0
changelog:
  - Windows compatibility layer for parser code (tzickel)
  - Properly escape data printed to PKGCONF file (Dan Skorupski)
  - Fix tests when assert() undefined (Keith Bennett, Matt Stancliff)
  - Implement a reconnect method for the client context, this changes
    the structure of redisContext (Aaron Bedra)
  - Fix memory leak in async reply handling (Salvatore Sanfilippo)
  - Rename struct member to avoid name clash with pre-c99
    code (Alex Balashov, ncopa)


author: Anton Novojilov <andy@essentialkaos.com> - 0.14.0-0
changelog:
  - Make string2ll static to fix conflict with Redis
  - Use -dynamiclib instead of -shared for OSX
  - Use string2ll from Redis w/added tests
  - Makefile - OSX compilation fixes
  - Remove redundant NULL checks
  - Fix bulk and multi-bulk length truncation
  - Fix SIGSEGV in OpenBSD by checking for NULL before calling freeaddrinfo
  - Several POSIX compatibility fixes
  - Makefile - Compatibility fixes
  - Makefile - Fix make install on FreeBSD
  - Makefile - don't assume $(INSTALL) is cp
  - Separate side-effect causing function from assert and small cleanup
  - Don't send negative values to __redisAsyncCommand
  - Fix leak if setsockopt fails
  - Fix libevent leak
  - Clean up GCC warning
  - Keep track of errno in __redisSetErrorFromErrno() as snprintf may use it
  - Solaris compilation fix
  - Reorder linker arguments when building examples
  - Keep track of subscriptions in case of rapid subscribe/unsubscribe
  - libuv use after free fix
  - Properly close socket fd on reconnect attempt
  - Skip valgrind in OSX tests
  - Various updates for Travis testing OSX
  - Update libevent
  - Change sds.h for building in C++ projects
  - Use proper format specifier in redisFormatSdsCommandArgv
  - Better handling of NULL reply in example code
  - Prevent overflow when formatting an error
  - Compatibility fix for strerror_r
  - Properly detect integer parse/overflow errors
  - Adds CI for Windows and cygwin fixes
  - Catch a buffer overflow when formatting the error message
  - Import latest upstream sds. This breaks applications that are linked against
    the old hiredis v0.13
  - Fix warnings, when compiled with -Wshadow
  - Make hiredis compile in Cygwin on Windows, now CI-tested


author: Anton Novojilov <andy@essentialkaos.com> - 2.6.0-0
changelog:
  - Fixes to internal document linking by using correct object names, etc.
  - Add descriptions for a few undocumented enums and correct a few mis-documented
    parameters.
  - Correct a few typos and omissions in C code examples in README so copy/paste
    of code has a chance of working.
  - Add gtk-doc descriptions for ModulemdModuleStream object properties.
  - Update meson.build to convince gtk-doc to produce documentation for object
    properties.
  - Correct typo in ModulemdModuleStream.arch property nick name.
  - Remove unnecessary gtk-doc documentation blocks added by commit 76aecdf.
  - Documentation updates
  - Bump version to 2.5.1dev
  - Double valgrind timeout
  - Parallelize the valgrind tests
  - Print git diff when dirty_repo test fails
  - Fix transfer type for Module.search_streams()
  - Extend timeout for header test
  - Return translated profile descriptions
  - CI: Add IRC notifications
  - Add ModuleIndexMerger.resolve_ext()
  - Simplify test setup
  - Improve valgrind test setup
  - add get_stream_names from module
  - Create python binding for get_stream_names
  - Convert from Modulemd.ModuleIndex to babel catalog


author: Anton Novojilov <andy@essentialkaos.com> - 2.7.0-0
changelog:
  - Type tweaks to be more friendly to gtk-doc documentation generation
  - Move modulemd_module_stream_v2_replace_*() method definitions to correct
    header file and add documentation.
  - Another batch of documentation updates for private functions, along with other
    minor corrections.
  - Add documentation for private utility functions for use within libmodulemd.
  - Synchronize the user docs in the main header file and the repo's README.
  - Correct several "may be used uninitialized" compiler warnings.
  - Make ModulemdErrorEnum and ModulemdYamlErrorEnum into public enums.
  - Fix modulemd_yaml_parse_bool() comparisons so return value is correct. Fix bad
    test that was masking the above bug.
  - Correct bugs where component buildonly and buildorder properties are getting
    mixed up.
  - Update modulemd spec for new component rpm "buildroot" and "srpm-buildroot"
    flags, implement new properties, and add tests.
  - Another batch of documentation updates for private functions.
  - TESTS: Check the return value of get_buildtime_streams()
  - DOCS: Fix references to common GLib objects
  - CI: Fix xref.sh path
  - Split Coverity scan into a separate test
  - CI: Reflow docker commands to improve readability
  - Drop v1 code and refactor build system
  - Drop unused test_data
  - Emitter: Throw validation error for empty ModuleIndex
  - Merge pull request #343 from mmathesius/doc-sync-readme
  - Fix emitting translations
  - Dependencies: Emit empty dependencies
  - Dependencies: Add tests for one or the other requirements
  - spec: Fix typo in python2-libmodulemd subpackage
  - Stop using deprecated build_always
  - CI: Quieter logs
  - Print ninja dist logs if it fails
  - Drop ModulemdTranslationHelpers
  - Add translations in Modulemd.Index from Babel Catalog
  - Added more translation files for consistency check
  - Retrieve metadata from koji and feed into translation helpers


author: Anton Novojilov <andy@essentialkaos.com> - 2.8.0-0
changelog:
  - A final batch of documentation updates for private functions.
  - Refactor stream copy/upgrade helper macros. Another final batch of
    documentation updates for private functions.
  - Make Module.get_translation() public
  - Valgrind: Don't rebuild tests before running
  - Add helpers for reading compressed files
  - ModuleIndex: add compressed file loading support
  - Add debugging information to the Coverity scan
  - Add ModuleIndex.update_from_defaults_directory()
  - Revert "Add debugging information to the Coverity scan"
  - Temporarily switch Coverity to F30
  - Coverity: Fix Dockerfile FROM
  - TESTS: Check a return value
  - Compression: Handle a failed dup()
  - Compression: don't leak file descriptors on error
  - Compression: Fix incorrect pointer comparison
  - Coverity: work around "copy-paste" false positive


author: Anton Novojilov <andy@essentialkaos.com> - 2.8.1-0
changelog:
  - Made GTK docs non-mandatory
  - Removal of extraneous test data
  - Fix formatting
  - Improvements to ModuleIndex.update_from_defaults_dir()
  - Rework defaults merging logic
  - Update .gitignore file
  - Refactor common test routines
  - Travis: Fix documentation generation test
  - Travis: Fix copy-paste error
  - Travis: Yet more copy-paste fixes
  - Include .pyc files in .gitignore
  - Drop SCANBUILD environment variable
  - allow to disable docs when building it


author: Anton Novojilov <andy@essentialkaos.com> - 2.8.2-0
changelog:
  - Fix missing error return
  - Validate in the ModuleStream parent class
  - ModuleStream: Properly override names when asked to
  - Use podman instead of docker where possible
  - Use safer version of dup()
  - subdocument: match the argument name in the header
  - Fix invalid nested_error usage
  - Reformat python code with black
  - Auto-format python with black
  - Add clang_tidy autoformatter
  - Apply clang-tidy formatting
  - Alphabetize meson_options.txt
  - Travis: Add --layers=true to buildah for Dockerfile.deps
  - Travis: Add F31 as a test target
  - Travis: Run Fedora tests on aarch64
  - Separate Travis builds into stages
  - Skip clang-tidy in CI
  - Skip formatters when building RPMs


author: Gleb Goncharov <yum@gongled.ru> - 1.7.0-0
changelog:
  - Updated to latest version
    + Bump VA API version to 0.39
    + Add support for VP9 10bit decode API
    + Allow libva to load the vaapi driver provided by Mesa Gallium for nouveau and radeon
    + Fix libva-glx against OpenGL 3.1 or above


author: Gleb Goncharov <yum@gongled.ru> - 1.7.0-0
changelog:
  - Updated to latest version
  - Bump VA API version to 0.39
  - Add support for VP9 10bit decode API
  - Allow libva to load the vaapi driver provided by Mesa Gallium for nouveau
    and radeon
  - Fix libva-glx against OpenGL 3.1 or above


author: Anton Novojilov <andy@essentialkaos.com> - 2.7.1-0
changelog:
  - trace: av1 decode buffers trace
  - trace: Add HEVC REXT and SCC trace for decoding.
  - Add av1 decode interfaces
  - Fix crashes on system without supported hardware
  - Add 2 FourCC for 10bit RGB(without Alpha) format: X2R10G10B10 and X2B10G10R10
  - Fix android build issue #365 and remove some trailing whitespace
  - Adjust call sequence to ensure authenticate operation is executed to fix


author: Anton Novojilov <andy@essentialkaos.com> - 2.7.1-0
changelog:
  - VA/X11: enable driver candidate selection for DRI2
  - VA/X11: VAAPI driver mapping for iris DRI driver


author: Anton Novojilov <andy@essentialkaos.com> - 2.8.0-0
changelog:
  - trace: enable return value trace for successful function call
  - trace: divide va_TraceEndPicture to two seperate function
  - trace: add support for VAProfileHEVCSccMain444_10
  - trace:Convert VAProfileAV1Profile0 VAProfileAV1Profile1 to string
  - trace: Fix format string warnings
  - trace: List correct field names in va_TraceVAPictureParameterBufferHEVC
  - fix:Fixes file descriptor leak
  - fix:Fix clang warning (reading garbage)
  - fix: Fix HDR10 MaxCLL and MaxFALL documentation
  - travis: Add a test that code files don't have the exec bit set
  - add fourcc code for P012 format
  - Remove the execute bit from all source code files
  - meson: Allow for libdir and includedir to be absolute paths
  - add definition to enforce both reflist not empty
  - change the return value to be UNIMPLEMENTED when the function pointer is NULL
  - remove check of vaPutSurface implementation
  - Add new slice structure flag for CAPS reporting
  - VA/X11: VAAPI driver mapping for iris DRI driver
  - VA/X11: enable driver candidate selection for DRI2
  - Add SCC flags to enable/disable features
  - Add VAProfileHEVCSccMain444_10 for HEVC
  - change the compatible list to be dynamic one


author: Anton Novojilov <andy@essentialkaos.com> - 2.9.0-0
changelog:
  - trace: Refine the va_TraceVAPictureParameterBufferAV1.
  - doc: Add comments for backward/forward reference to avoid confusion
  - doc: Modify comments in av1 decoder interfaces
  - doc: Update mailing list
  - Add SCC fields trace for HEVC SCC encoding.
  - Add FOURCC code for Y212 and Y412 format.
  - Add interpolation method for scaling.
  - add attributes for context priority setting
  - Add vaSyncBuffer for output buffers synchronization
  - Add vaSyncSurface2 with timeout


author: Anton Novojilov <andy@essentialkaos.com> - 2.10.0-0
changelog:
  - add: Pass offset and size of pred_weight_table
  - add: add vaCopy interface to copy surface and buffer
  - add: add definition for different execution
  - add: New parameters for transport controlled BRC were added
  - add: add FreeBSD support
  - add: add a bufer type to adjust context priority dynamically
  - fix: correct the api version in meson.build
  - fix: remove deprecated variable from va_trace.c
  - fix: Use va_deprecated for the deprecate variable
  - fix: Mark chroma_sample_position as deprecated
  - doc: va_dec_av1: clarifies CDEF syntax element packing
  - doc: [AV1] Update documented ranges for loop filter and quantization params.
  - doc: Update va.h for multi-threaded usages
  - trace: va/va_trace: ignore system gettid() on Linux


author: Anton Novojilov <andy@essentialkaos.com> - 2.11.0-0
changelog:
  - add: LibVA Protected Content API
  - add: Add a configuration attribute to advertise AV1d LST feature
  - fix: wayland: don't try to authenticate with render nodes
  - autotools: use shell grouping instead of sed to prepend a line
  - trace: Add details data dump for mpeg2 IQ matrix.
  - doc: update docs for VASurfaceAttribPixelFormat
  - doc: Libva documentation edit for AV1 reference frames
  - doc: Modify AV1 frame_width_minus1 and frame_height_minus1 comment
  - doc: Remove tile_rows and tile_cols restriction to match AV1 spec
  - doc: Format code for doxygen output
  - doc: AV1 decode documentation edit for superres_scale_denominator
  - ci: upgrade FreeBSD to 12.2
  - ci: disable travis build
  - ci: update cache before attempting to install packages
  - ci: avoid running workloads on other workloads changes
  - ci: enable github actions


author: Anton Novojilov <andy@essentialkaos.com> - 2.12.0-0
changelog:
  - add: Report the capability of vaCopy support
  - add: Report the capability of sub device
  - add: Add config attributes to advertise HEVC/H.265 encoder features
  - add: Video processing HVS Denoise: Added 4 modes
  - add: Introduce VASurfaceAttribDRMFormatModifiers
  - add: Add 3DLUT Filter in Video Processing.
  - doc: Update log2_tile_column description for vp9enc
  - trace: Correct av1 film grain trace information
  - ci: Fix freebsd build by switching to vmactions/freebsd-vm@v0.1.3


author: Anton Novojilov <andy@essentialkaos.com> - 2.13.0-0
changelog:
  - fix: Check the function pointer before using
  - code style:unify the code styles using the style_unify script
  - doc: Fix av1 dec doc page link issue
  - add: (sep_layer) add new surface format fourcc XYUV


author: Anton Novojilov <andy@essentialkaos.com> - 2.14.0-0
changelog:
  - add: Add av1 encode interfaces
  - add: VA/X11 VAAPI driver mapping for crocus DRI driver
  - doc: Add description of the fd management for surface importing
  - ci: fix freebsd build
  - meson: Copy public headers to build directory to support subproject


author: Anton Novojilov <andy@essentialkaos.com> - 2.15.0-0
changelog:
  - Add: new display HW attribute to report PCI ID
  - Add: sample depth related parameters for AV1e
  - Add: refresh_frame_flags for AV1e
  - Add: missing fields in va_TraceVAEncSequenceParameterBufferHEVC.
  - Add: nvidia-drm to the drm driver map
  - Add: type and buffer for delta qp per block
  - Deprecation: remove the va_fool support
  - Fix:Correct the version of meson build on master branch
  - Fix:X11 DRI2: check if device is a render node
  - Build:Use also strong stack protection if supported
  - Trace:print the string for profile/entrypoint/configattrib


author: Anton Novojilov <andy@essentialkaos.com> - 2.1.0-0
changelog:
  - Bump VA-API version to 1.1.0 and libva to 2.1.0
  - Add API for multi-frame processing
  - Add entrypoint VAEntrypointStats for Statistics
  - Add data structures for HEVC FEI support
  - Add new attributes for decoding/encoding/video processing
  - Add new VPP filter for Total Color Correction
  - Add blending interface in VPP
  - Add rotation interface in VPP
  - Add mirroring interface in VPP
  - Add Chroma siting flags in VPP
  - Add new color standard definitions
  - Add new interface for exporting surface
  - Add message callbacks for drivers to use


author: Anton Novojilov <andy@essentialkaos.com> - 2.2.0-0
changelog:
  - Bump VA-API version to 1.2.0 and libva to 2.2.0
  - Add support for hevc range extension decoding
  - Add support for fast intra prediction in HEVC FEI
  - Add 10/12-bit YUV render target formats
  - Add fourcc code for Y210/Y216/Y410/Y416/RGB565/BGR565
  - Add VA_STATUS_ERROR_NOT_ENOUGH_BUFFER
  - Add VA_SURFACE_ATTRIB_USAGE_HINT_EXPORT
  - Improve documentation


author: Anton Novojilov <andy@essentialkaos.com> - 2.3.0-0
changelog:
  - Bump VA-API version to 1.3.0 and libva to 2.3.0
  - Add max frame size parameters for multiple pass case in legacy mode
  - Add new BRC mode AVBR
  - Add new interface for High Dynamic Range tone mapping
  - Add missing enum to string conversions
  - Add hevc subsets parameters structure
  - Add Customized Noise Reduction (HVS) interfaces
  - Add new BRC mode definition QVBR
  - Add more complete colour properties for use in VPP


author: Anton Novojilov <andy@essentialkaos.com> - 2.4.0-0
changelog:
  - va_TraceSurface support for VA_FOURCC_P010
  - Add pointer to struct wl_interface for driver to use
  - (integrate) va: fix new line symbol in error message
  - av: avoid driver path truncation
  - Fix compilation warning (uninit and wrong variable types) for Android O MR1
  - Allow import of the DRM PRIME 2 memory type
  - android: ignore unimportant compile warnnings
  - compile: fix sign/unsign compare in va_trace.c
  - android: replace utils/Log.h with log/log.h
  - High Dynamic Range Tone Mapping: Add a new filter for input metadata and some
    comments.
  - Remove restrictions on vaSetDriverName()


author: Anton Novojilov <andy@essentialkaos.com> - 2.5.0-0
changelog:
  - Correct the comment of color_range.
  - Add VA_FOURCC_A2B10G10R10 for format a2b10g10r10.
  - Adjust VAEncMiscParameterQuantization structure to be align with
    VAEncMiscParameterBuffer(possible to impact BC)
  - Add attribute for max frame size
  - Add va_footer.html into distribution build
  - va_trace: hevc profiles added
  - Add new definition for input/output surface flag
  - va/va_trace: add trace support for VAEncMiscParameterTypeSkipFrame structure.
  - va/va_trace: add MPEG2 trace support for MiscParam and SequenceParam
  - va_openDriver: check strdup return value
  - Mark some duplicated field as deprecated
  - Add return value into logs
  - va/va_trace: add trace support for VAEncMiscParameterEncQuality structure.
  - Add newformat foucc defination
  - va_backend: remove unneeded linux/videodev2.h include
  - va_trace: add missing <sys/time.h> include
  - configure: don't build glx if VA/X11 isn't built
  - va/va_trace: unbreak with C89 after b369467
  - [common] Add A2RGB10 fourcc definition
  - build: meson: enables va messaging and visibility
  - va/va_trace: add trace support for RIR(rolling intra refresh).
  - va/va_trace: add trace support for ROI(region of interest).


author: Anton Novojilov <andy@essentialkaos.com> - 0.3.1-0
changelog:
  - Fix rare leak of DSO in module_load
  - Turn off -Wcast-function-type
  - Work around libev not being c89-compliant


author: Anton Novojilov <andy@essentialkaos.com> - 0.3.2-0
changelog:
  - Fix use-after-free in verto_reinitialize()
  - Fix use-after-free in verto_free()
  - Remove broken tevent support


author: Anton Novojilov <andy@essentialkaos.com> - 1.3.5-0
changelog:
  - AmigaOS build patch by Fredrik Wikstrom
  - Support for applevel multithreading mode also for AVI output in xvid_encraw
  - Set interlacing flag in decoder correctly
  - Re-add support to decode raw YV12 input FourCC video
  - Fix: Produce debug output only when debug option is enabled
  - Fixed bug in thumbnail creation on Windows 7
  - Fix output buffer stride calculation in MFT
  - Setting interlaced flags on output pins correctly in DirectShow and MFT
  - Corrected pixel aspect ratio support in MFT


author: Anton Novojilov <andy@essentialkaos.com> - 1.3.6-0
changelog:
  - Fix for various, long-standing and potentially critical security
    vulnerabilities in the decoder (credit to OSS-Fuzz)
  - Always use .text sections in nasm code for macho target


author: Anton Novojilov <andy@essentialkaos.com> - 2.0.0-0
changelog:
  - Added support of reading non-root owned files (if user has sufficient
    privileges)
  - Overall improvements
  - Grammar fixes


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.0-0
changelog:
  - Security: test PATH and warn or exit on discovery of dangerous location
  - Security: additional safeguard by testing if common system tools are available
  - Security: test parameters and arguments for presence of control characters
  - Security: filtering out unexpected characters from profiles
  - Security: test if setuid bit is set on Lynis binary
  - New function: DisplayException
  - New function: DisplayWarning
  - New function: Equals
  - New function: GetReportData
  - New function: HasCorrectFilePermissions
  - New function: Readonly
  - New function: SafeFile
  - New function: SafeInput
  - New option: --usecwd - run from the current working directory
  - New profile option: disable-plugin - disables a single plugin
  - New profile option: ssl-certificate-paths-to-ignore - ignore a path
  - New test: AUTH-9229 - check used password hashing methods
  - New test: AUTH-9230 - check group password hashing rounds
  - New test: BOOT-5109 - test presence rEFInd boot loader
  - New test: BOOT-5264 - run systemd-analyze security
  - New test: CRYP-7930 - test for LUKS encryption
  - New test: CRYP-7931 - determine if system uses encrypted swap
  - New test: CRYP-8004 - presence of hardware random number generator
  - New test: CRYP-8005 - presence of software random number generator
  - New test: DBS-1828 - PostgreSQL configuration files
  - New test: FILE-6394 - test virtual memory swappiness (Linux)
  - New test: FINT-4316 - presence of AIDE database and size test
  - New test: FINT-4340 - check dm-integrity status (Linux)
  - New test: FINT-4341 - verify status of dm-verity (Linux)
  - New test: INSE-8314 - test for NIS client
  - New test: INSE-8316 - test for NIS server
  - New test: NETW-2400 - test hostname for valid characters and length
  - New test: NETW-2706 - check DNSSEC (systemd)
  - New test: NETW-3200 - determine enabled network protocols
  - New test: PHP-2382 - detect listen option in PHP (FPM)
  - New test: PROC-3802 - check presence of prelink tooling
  - New test: TIME-3180 - report if ntpctl cannot communicate with OpenNTPD
  - New test: TIME-3181 - check status of OpenNTPD time synchronisation
  - New test: TIME-3182 - check OpenNTPD has working peers
  - New report key: openssh_daemon_running
  - New command: lynis generate systemd-units
  - Sending USR1 signal to Lynis process will show active status
  - Measure timing of tests and report slow tests (10+ seconds)
  - Initial support for Clear Linux OS
  - Initial support for PureOS
  - Support for X Binary Package (xbps)
  - Added end-of-life data for Arch Linux and Debian
  - Detection and end-of-life data added for Amazon Linux
  - Detection of linux-lts on Arch Linux
  - Translations: Russian added
  - Function: CheckItem() now returns only exit code (ITEM_FOUND is dropped)
  - Function: IsRunning supports the --user flag to define a related user
  - Function: PackageIsInstalled extended with pacman support
  - Profiles: unused options removed
  - Profiles: message is displayed when old format "key:value" is used
  - Binaries: skip pacman when it is the game instead of package manager
  - Security: the 'nounset' (set -u) parameter is now activated by default
  - AUTH-9228 - HP-UX support
  - AUTH-9234 - NetBSD support
  - AUTH-9252 - corrected permission check
  - AUTH-9266 - skip .pam-old files in /etc/pam.d
  - AUTH-9268 - Perform test also on DragonFly, FreeBSD, and NetBSD
  - AUTH-9282 - fix: temporary variable was overwritten
  - AUTH-9408 - added support for pam_tally2 to log failed logins
  - AUTH-9489 - test removed as it is merged with AUTH-9218
  - BANN-7126 - additional words for login banner are accepted
  - BOOT-5122 - check for defined password in all GRUB configuration files
  - CONT-8106 - support newer 'docker info' output
  - CRYP-7902 - optionally check also certificates provided by packages
  - CRYP-8002 - gather kernel entropy on Linux systems
  - FILE-6310 - support for HP-UX
  - FILE-6330 - corrected description
  - FILE-6374 - changed log and allow root location to be changed
  - FILE-6374 - corrected condition to find 'defaults' flag in /etc/fstab
  - FILE-6430 - minor code improvements and show suggestion with more details
  - FILE-7524 - optimized file permissions testing
  - FINT-4328 - corrected text in log
  - FINT-4334 - improved process detection for lfd
  - HOME-9304 - improved selection for normal users
  - HOME-9306 - improved selection for normal users
  - INSE-8050 - added com.apple.ftp-proxy and improved text output
  - INSE-8050 - corrected function call for showing suggestion
  - INSE-8116 - added rsync service
  - INSE-8314 - changed text of suggestion
  - INSE-8318 - test for TFTP client tools
  - INSE-8320 - test for TFTP server tools
  - INSE-8342 - renamed to INSE-8304
  - KRNL-5788 - don't complain about missing /vmlinuz for Raspi
  - KRNL-5820 - extended check to include limits.d directory
  - KRNL-5830 - skip test partially when running non-privileged
  - KRNL-5830 - detect required reboots on Raspbian
  - KRNL-6000 - check more sysctls
  - LOGG-2154 - added support for rsyslog configurations
  - LOGG-2190 - skip mysqld related entries
  - MACF-6234 - SELinux tests extended
  - MAIL-8804 - replaced static strings with translation-aware strings
  - MALW-3280 - Kaspersky detection added
  - MALW-3280 - CrowdStrike falcon-sensor detection added
  - NAME-4402 - check if /etc/hosts exists before performing test
  - NAME-4404 - improved screen and log output
  - NAME-4408 - corrected Report function call
  - NETW-3032 - small rewrite of test and extended with addrwatch
  - PHP-2372 - don't look in the cli configuration files
  - PKGS-7388 - only perform check for Debian/Ubuntu/Mint
  - PKGS-7410 - use multiple package managers when available
  - PKGS-7410 - added support for Zypper to test number of kernels
  - PRNT-2308 - check also for Port and SSLListen statements
  - PROC-3602 - allow different root directory
  - PROC-3612 - show 'Not found' instead of 'OK'
  - PROC-3614 - show 'Not found' instead of 'OK'
  - PROC-3802 - limit to Linux only (prelink package check)
  - SCHD-7702 - removed hardening points
  - SINT-7010 - limit test to only macOS systems
  - SSH-7402 - detect other SSH daemons like dropbear
  - SSH-7406 - strip OpenSSH patch version and remove characters (carriage return)
  - SSH-7408 - changed text in suggestion and report
  - SSH-7408 - added forced-commands-only option
  - SSH-7408 - VerifyReverseMapping removed (deprecated)
  - SSH-7408 - corrected OpenSSH server version check
  - STRG-1840 - renamed to USB-1000
  - STRG-1842 - added default authorized devices and renamed to USB-2000
  - TIME-3104 - use find to discover files in cron directories
  - TOOL-5002 - differentiate between a discovered binary and running process
  - TOOL-5160 - added support for OSSEC agent daemon
  - Perform additional check to ensure pacman package manager is used
  - Use 'pre-release/release' (was: 'dev/final') with 'lynis show release'
  - Use only locations from PATH environment variable, unless it is not defined
  - Show tip to use 'lynis generate hostids' when host IDs are missing
  - The 'show changelog' command works again for newer versions
  - Several code cleanups, simplification of commands, and code standardization
  - Tests using lsof may ignore individual threads (if supported)
  - Corrected end-of-life detection for CentOS 7 and CentOS 8
  - Tests can require detected package manager (--package-manager-required)
  - Do not show tool tips when quiet option is used
  - Improved screen output in several tests
  - Extended output of 'lynis update info'
  - Improved support for NetBSD
  - Test if profiles are readable
  - systemd service file adjusted
  - bash completion script extended
  - Updated man page


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.1-0
changelog:
  - Detection of Alpine Linux
  - Detection of CloudLinux
  - Detection of Kali Linux
  - Detection of Linux Mint
  - Detection of macOS Big Sur (11.0)
  - Detection of Pop!_OS
  - Detection of PHP 7.4
  - Malware detection tool: Microsoft Defender ATP
  - New flag: --slow-warning to allow tests more time before showing a warning
  - Test TIME-3185 to check systemd-timesyncd synchronized time
  - rsh host file permissions
  - AUTH-9229 - Added option for LOCKED accounts and bugfix for
    older bash versions
  - BOOT-5122 - Presence check for grub.d added
  - CRYP-7902 - Added support for certificates in DER format
  - CRYP-7931 - Added data to report
  - CRYP-7931 - Redirect errors (e.g. when swap is not encrypted)
  - FILE-6430 - Don't grep nonexistent modprobe.d files
  - FIRE-4535 - Set initial firewall state
  - INSE-8312 - Corrected text on screen
  - KRNL-5728 - Handle zipped kernel configuration correctly
  - KRNL-5830 - Improved version detection for non-symlinked kernel
  - MALW-3280 - Extended detection of BitDefender
  - TIME-3104 - Find more time synchronization commands
  - TIME-3182 - Corrected detection of time peers
  - Fix: hostid generation routine would sometimes show too short IDs
  - Fix: language detection
  - Generic improvements for macOS
  - German translation updated
  - End-of-life database updated
  - Several minor code enhancements


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.2-0
changelog:
  - AUTH-9284 - Scan for locked user accounts in /etc/passwd
  - LOGG-2153 - Loghost configuration
  - TOOL-5130 - Check for active Suricata daemon
  - OS detection of Flatcar, IPFire, Mageia, NixOS, ROSA Linux, SLES (extended),
    Void Linux, Zorin OS
  - OS detection of OpenIndiana (Hipster and Legacy), Shillix, SmartOS, Tribblix,
    and others
  - EOL dates for Alpine, macOS, Mageia, OmniosCE, and Solaris 11
  - Support for Solaris svcs (service manager)
  - Enumeration of Solaris services
  - ACCT-9626 - Detect sysstat systemd unit
  - AUTH-9230 - Only fail if both SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS
    are undefined
  - BOOT-5184 - Support for Solaris
  - KRNL-5830 - Improved reboot test by ignoring known bad values
  - KRNL-5830 - Ignore rescue kernel such as on CentOS systems
  - KRNL-5830 - Detection of Alpine Linux kernel
  - NETW-2400 - Compatibility change for hostname check
  - NETW-3012 - Support for Solaris
  - PKGS-7410 - Don't show exception if no kernels were found on the disk
  - TIME-3185 - Supports now checking files at multiple locations (systemd)
  - ParseNginx function: Support include on absolute paths
  - ParseNginx function: Ignore empty included wildcards
  - Set 'RHEL' as OS_NAME for Red Hat Enterprise Linux
  - HostID: Use first e1000 interface and break after match
  - Translations extended and updated
  - Test if pgrep exists before using it
  - Better support for busybox shell
  - Small code enhancements


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.3-0
changelog:
  - HRDN-7231 - Check for registered non-native binary formats
  - OS detection of Parrot GNU/Linux
  - DBS-1816 - Force test to check only password authentication
  - KRNL-5677 - Support for NetBSD
  - Bugfix: command 'configure settings' did not work as intended


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.4-0
changelog:
  - ACCT-9670 - Detection of cmd tooling
  - ACCT-9672 - Test cmd configuration file
  - BOOT-5140 - Check for ELILO boot loader presence
  - OS detection of AlmaLinux, Garuda Linux, Manjaro (ARM), and others
  - BOOT-5104 - Add service manager detection support for runit
  - FILE-6430 - Report suggestion only when at least one kernel module is not
    in the blacklist
  - FIRE-4540 - Corrected nftables empy ruleset test
  - LOGG-2138 - Do not check for klogd when metalog is being used
  - TIME-3185 - Improved support for Debian stretch
  - Corrected issue when Lynis is not executed directly from lynis directory


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.5-0
changelog:
  - OS detection of Arch Linux 32, BunsenLabs Linux, and Rocky Linux
  - CRYP-8006 - Check MemoryOverwriteRequest bit to protect against
    cold-boot attacks (Linux)
  - ACCT-9622 - Corrected typo
  - HRDN-7231 - When calling wc, use the short -l flag instead
    of --lines (Busybox compatibility)
  - PKGS-7320 - extended to Arch Linux 32
  - Generation of host identifiers (hostid/hostid2) extended
  - Linux host identifiers are now using ip as preferred input source
  - Improved logging in several areas


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.6-0
changelog:
  - OS detection: Artix Linux, macOS Monterey, NethServer, openSUSE MicroOS
  - Check for outdated translation files
  - DBS-1826 - Check if PostgreSQL is being used
  - DBS-1828 - Test multiple PostgreSQL configuration file(s)
  - KRNL-5830 - Sort kernels by version instead of modification date
  - PKGS-7410 - Don't show exception for systems using LXC
  - GetHostID function: fallback options added for Linux systems
  - Fix: macOS Big Sur detection
  - Fix: show correct text when egrep is missing
  - Fix: variable name for PostgreSQL
  - German and Spanish translations extended


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.7-0
changelog:
  - MALW-3290 - Show status of malware components
  - OS detection for RHEL 6 and Funtoo Linux
  - Added service manager openrc
  - DBS-1804 - Added alias for MariaDB
  - FINT-4316 - Support for newer Ubuntu versions
  - MALW-3280 - Added Trend Micro malware agent
  - NETW-3200 - Allow unknown number of spaces in modprobe blacklists
  - PKGS-7320 - Support for Garuda Linux and arch-audit
  - Several improvements for busybox shell
  - Russian translation of Lynis extended


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.8-0
changelog:
  - MALW-3274 - Detect McAfee VirusScan Command Line Scanner
  - PKGS-7346 Check Alpine Package Keeper (apk)
  - PKGS-7395 Check Alpine upgradeable packages
  - EOL for Alpine Linux 3.14 and 3.15
  - AUTH-9408 - Check for pam_faillock as well (replacement for pam_tally2)
  - FILE-7524 - Test enhanced to support symlinks
  - HTTP-6643 - Support ModSecurity version 2 and 3
  - KRNL-5788 - Only run relevant tests and improved logging
  - KRNL-5820 - Additional path for security/limits.conf
  - KRNL-5830 - Check for /var/run/needs_restarting (Slackware)
  - KRNL-5830 - Add a presence check for /boot/vmlinuz
  - PRNT-2308 - Bugfix that prevented test from storing values correctly
  - Extended location of PAM files for AARCH64
  - Some messages in log improved


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.9-0
changelog:
  - DBS-1820 - Added newer style format for Mongo authorization setting
  - FILE-6410 - Locations added for plocate
  - SSH-7408 - Only test Compression if sshd version < 7.4
  - Improved fetching timestamp
  - Minor changes such as typos


author: Anton Novojilov <andy@essentialkaos.com> - 3.1.0-0
changelog:
  - MALW-3280 - Correction to detect com.avast.daemon
  - OS detection added for Guix System, macOS Ventura (13.x)/Sonoma (14.x),
    NXP LSDK, OpenEmbedded "nodistro", and The Yocto Projects distro "Poky"
  - Updated Amazon Linux EOL dates and addition of Amazon Linux 2023
  - STATUS_NOT_ACTIVE variable added to translation files
  - End-of-life dates updated
  - Fixing missing or erroneous test number comments
  - Detection of SentinelOne corrected
  - Wazuh for file integrity and tooling
  - Updated parsing output of arch-audit
  - Added support for SentinelOne detection
  - Replacing deprecated option -i for xargs
  - Path detection for PostgreSQL improved
  - Translation: Indonesian


author: Anton Novojilov <andy@essentialkaos.com> - 3.1.1-0
changelog:
  - Detection of ArcoLinux
  - DBS-1882 - Redis configuration file path added for FreeBSD
    (/usr/local/etc/redis.conf)
  - DBS-1882 - Check /snap directory location for Redis configuration file


author: Anton Novojilov <andy@essentialkaos.com> - 1.5.14-0
changelog:
  - update -h output for -I (max item size)
  - fix segfault in "lru" command
  - fix compile error on centos7
  - extstore: error adjusting page_size after ext_path
  - extstore: fix segfault if page_count is too high.
  - close delete + incr item survival race bug
  - FreeBSD superpages checking.
  - FreeBSD capabilities support.
  - memcached-tool dump fix loss of exp value
  - Add optional feature support to RPM package building
  - Fix "qw" in "MemcachedTest.pm" so wait_ext_flush is exported properly


author: Anton Novojilov <andy@essentialkaos.com> - 1.5.15-0
changelog:
  - Authentication mode for ASCII protocol
  - Speed up incr/decr by replacing snprintf
  - Use correct buffer size for internal URI encoding
  - change some links from http to https
  - Fix small memory leak in testapp.c
  - free window_global in slab_automove_extstore.c
  - remove inline_ascii_response option
  - -Y [filename] for ascii authentication mode
  - fix: idle-timeout wasn't compatible with binprot


author: Anton Novojilov <andy@essentialkaos.com> - 1.5.17-0
changelog:
  - fix strncpy call in stats conns to avoid ASAN violation
  - extstore: fix indentation
  - add error handling when calling dup function
  - add unlock when item_cachedump malloc failed
  - extstore: emulate pread(v) for macOS
  - fix off-by-one in logger to allow CAS commands to be logged.
  - use strdup for explicitly configured slab sizes
  - move mem_requested from slabs.c to items.c (internal cleanup)
  - add server address to the "stats conns" output
  - log client connection id with fetchers and mutations
  - Add a handler for seccomp crashes


author: Anton Novojilov <andy@essentialkaos.com> - 1.5.19-0
changelog:
  - Keep "last access" time up to date in default segmented LRU mode
  - slow down t/watcher.t test more
  - Add include stdio.h to restart.c
  - Reload CA cert in refresh routine
  - TLS: fix leak of SSL context on accept failure
  - drop privileges for FreeBSD.
  - Make memcached setgroups failure non-fatal
  - restart: use /tmp for restart tests
  - restart: add missing msync at close time
  - The meta commands feature


author: Anton Novojilov <andy@essentialkaos.com> - 1.5.20-0
changelog:
  - Security fix: Don't allow UDP with binprot SASL
  - Remove multiple double-initializations of condition variables and mutexes
  - Fix data race in assoc_start_expand
  - Use a proper data type for settings.sig_hup
  - restart: add error handling when a tag is not found in a metadata file
  - doc: Update rfc2629.dtd, use local copy, fix error, and fix warning
  - doc: Fix out-of-tree build
  - slab rebalance performance improvements
  - fix potential deadlock bug in log watcher
  - Support running tests in out-of-tree build
  - configure: Fix cross-compilation errors
  - DTrace build fix


author: Anton Novojilov <andy@essentialkaos.com> - 1.5.21-0
changelog:
  - configuration option to disable watch commands (-W)
  - Adding missing defaults to the --help output
  - stats: Fix stats delimiter unit tests
  - Allow compilation with ASAN
  - restart: add error handling if mmap fails
  - For text auth token mode, use alternative bcmp implementation
  - memcached-tool: Fix up tabular output for the 'stats' command.
  - linux_priv.c: add termios.h include to fix powerpc(64) builds
  - Update the build documentation in BUILD file
  - Update documentation for --max-item-size
  - Fix build issue due to improper pthread_t comparison
  - Ensure t/whitespace.t test is skipped when outside a memcached git checkout
  - Allocating large chunk of slabs for FreeBSD


author: Anton Novojilov <andy@essentialkaos.com> - 1.6.0-0
changelog:
  - extstore: enable by default
  - meta: arithmetic command (ma) for incr/decr
  - network: transient static read buffer for conns
  - network: response stacking for all commands
  - meta: indicate refcount overflow
  - meta: fix refleak in mget
  - fix: all new connections were counted as rejected
  - timedrun: proper signal handler initialization
  - restart: fix potential double free
  - stats_prefix: fix test failure due to non-determinism
  - fix bug where sasl will load config the wrong path
  - meta: make return codes more generic
  - config.h for util.c, fix htonll comp. failure
  - hash: fix build failure against gcc-10
  - fix memory leaks in unit tests
  - fix make order in BUILD instructions


author: Anton Novojilov <andy@essentialkaos.com> - 1.6.1-0
changelog:
  - tls: handle accept errors properly
  - ssl_errors stat
  - Add touch,gat expiration test
  - Add negative expiration time case to expiration test
  - Fix to handle negative exptime as common function
  - Fix a bunch of flaky tests
  - Fix compile error with DTrace probes
  - Allow missing syscall on ARM for seccomp
  - fix multiple definition of 'crc32c' (GCC 10)
  - Add stdio.h,stddef.h to storage.c (OS X compile error)


author: Anton Novojilov <andy@essentialkaos.com> - 1.6.2-0
changelog:
  - Fixes a remote DoS (segfault) in parsing of the binary protocol header that
    was introduced in 1.6.0


author: Anton Novojilov <andy@essentialkaos.com> - 1.7.0-0
changelog:
  - Fixed bug with options naming
  - Short option for stdin set to -- (was -s)
  - Added limit for errors (3)


author: Anton Novojilov <andy@essentialkaos.com> - 1.9.0-0
changelog:
  - Added Python 3 support
  - Updated options parser to the latest version
  - Code refactoring
  - Minor improvements


author: Anton Novojilov <andy@essentialkaos.com> - 5.7-0
changelog:
  - The output of --constantshow (without --minibar) is more stable.
  - When opening multiple buffers and there is an error message, this
    message is shown again upon first switch to the relevant buffer.
  - The position and size of the indicator now follow actual lines,
    instead of visual lines when in softwrap mode, meaning that the
    size of the indicator can change when scrolling in softwrap mode.


author: Anton Novojilov <andy@essentialkaos.com> - 5.8-0
changelog:
  - After a search, the spotlighting is dropped after 1.5 seconds (0.8
    seconds with --quick) to avoid the idea that the text is selected.
  - A + and a space before a filename on the command line will put
    the cursor at the end of the corresponding buffer.
  - Linter messages no longer include filename and line/column numbers.
  - Color name "grey" or "gray" can be used instead of "lightblack".
  - The color of the minibar can be chosen with 'set minicolor'.


author: Anton Novojilov <andy@essentialkaos.com> - 5.9-0
changelog:
  - The extension of a filename is added to the name of a corresponding
    temporary file, so that spell checking a C file, for example, will check
    only the comments and strings (when using 'aspell').
  - The process number is added to the name of an emergency save file,
    so that when multiple nanos die they will not fight over a filename.
  - Undoing a cutting operation will restore an anchor that was located
    in the cut area to its original line.
  - When using --locking, saving a new buffer will create a lock file.
  - Syntax highlighting for YAML files has been added.


author: Anton Novojilov <andy@essentialkaos.com> - 6.0-0
changelog:
  - Option --zero hides the title bar, status bar and help lines, and
    uses all rows of the terminal as editing area. The title bar and
    status bar can be toggled with M-Z.
  - Colors can now be specified also as three-digit hexadecimal numbers,
    in the format #rgb. This picks from the 216 index colors (that most
    terminals know) the color that is nearest to the given values.
  - For users who dislike numbers, there are fourteen new color names:
    rosy, beet, plum, sea, sky, slate, teal, sage, brown, ocher, sand,
    tawny, brick, and crimson.
  - Suspension is enabled by default, invokable with ^T^Z. The options
    -z, --suspendable, and 'set suspendable' are obsolete and ignored.
    (In case you want to be able to suspend nano with a single keystroke,
    you can put 'bind ^Z suspend main' in your nanorc.)
  - When automatic hard-wrapping is in effect, pasting just a few words
    (without a line break) will now hard-wrap the line when needed.
  - Toggling Append or Prepend clears the current filename.
  - The word count as shown by M-D is now affected by option --wordbounds;
    with it, nano counts words as 'wc' does; without it (the new default),
    words are counted in a more human way: seeing punctuation as space.
  - The YAML syntax file is now actually included in the tarball.


author: Anton Novojilov <andy@essentialkaos.com> - 6.1-0
changelog:
  - The behavior of ^K at a prompt has been enhanced: when there
    is text after the cursor, just this text is erased. (In the usual
    situation, however, when the cursor is at the end of the answer,
    the behavior is as before: the whole answer is erased.)
  - At a prompt, M-6 copies the current answer into the cutbuffer.
  - Large external pastes into nano are handled more quickly.


author: Anton Novojilov <andy@essentialkaos.com> - 6.2-0
changelog:
  - The file browser clears the prompt bar also when using --minibar.
  - Linting now works also with a newer 'pyflakes'.


author: Anton Novojilov <andy@essentialkaos.com> - 6.3-0
changelog:
  - For multiline regexes, text is now colored as soon as a start match
    is found, also when there is no end match at all.
  - The colorizing of any line is stopped after two thousand bytes,
    to avoid frustrating delays.
  - When environment variable NO_COLOR is set, the two default colors
    (yellow for the spotlight, red for error messages) are suppressed
    when no interface colors are specified in a nanorc file.
  - Full justification and piping the whole buffer through a command
    now keep the cursor at the same line number.
  - Utility xsel can be used to copy a marked region to the system's
    clipboard.


author: Anton Novojilov <andy@essentialkaos.com> - 6.4-0
changelog:
  - The file browser does not crash when moving up to the root folder.
  - Softwrapping very long lines is done more efficiently.
  - Invoking the formatter does not blink the screen.


author: Anton Novojilov <andy@essentialkaos.com> - 7.0-0
changelog:
  - String binds may contain bindable function names between braces.
    For example, to move the current line down to after the next one:
    bind ^D "{cut}{down}{paste}{up}" main. Of course, braced function
    names may be mixed with literal text. If an existing string bind
    contains a literal {, replace it with {{}.
  - Unicode codes can be entered (via M-V) without leading zeroes,
    by finishing short codes with <Space> or <Enter>.
  - Word completion (^]) looks for candidates in all open buffers.
  - No regular expression matches the final empty line any more.


author: Anton Novojilov <andy@essentialkaos.com> - 7.1-0
changelog:
  - When --autoindent and --breaklonglines are combined, pressing
    <Enter> at a specific position no longer eats characters.


author: Anton Novojilov <andy@essentialkaos.com> - 2.14-0
changelog:
  - Changed -I option semantics by adding a trailing path separator
    unconditionally.
  - Fixed null dereference in corrupted invalid single line macros.
  - Fixed division by zero which may happen if source code is malformed.
  - Fixed out of bound access in processing of malformed segment override.
  - Fixed out of bound access in certain EQU parsing.
  - Fixed buffer underflow in float parsing.
  - Added SGX (Intel Software Guard Extensions) instructions.
  - Added +n syntax for multiple contiguous registers.
  - Fixed subsections_via_symbols for macho object format.
  - Added the --gprefix, --gpostfix, --lprefix, and --lpostfix command line
    options, to allow command line base symbol renaming.
  - Allow label renaming to be specified by %pragma in addition to from the
    command line.
  - Supported generic %pragma namespaces, output and debug.
  - Added the --pragma command line option to inject a %pragma directive.
  - Added the --before command line option to accept preprocess statement before
    input.
  - Added AVX512 VBMI2 (Additional Bit Manipulation), VNNI (Vector Neural
    Network), BITALG (Bit Algorithm), and GFNI (Galois Field New Instruction)
    instructions.
  - Added the STATIC directive for local symbols that should be renamed using
    global-symbol rules.
  - Allow a symbol to be defined as EXTERN and then later overridden as GLOBAL
    or COMMON. Furthermore, a symbol declared EXTERN and then defined will
    be treated as GLOBAL.
  - The GLOBAL directive no longer is required to precede the definition of
    the symbol.
  - Support private_extern as macho specific extension to the GLOBAL directive.
  - Updated UD0 encoding to match with the specification
  - Added the --limit-X command line option to set execution limits.
  - Updated the Codeview version number to be aligned with MASM.
  - Added the --keep-all command line option to preserve output files.
  - Added the --include command line option, an alias to -P.
  - Added the --help command line option as an alias to -h.
  - Added -W, -D, and -Q suffix aliases for RET instructions so the operand
    sizes of these instructions can be encoded without using o16, o32 or o64.


author: Anton Novojilov <andy@essentialkaos.com> - 2.14.01-0
changelog:
  - Create all system-defined macros defore processing command-line given
    preprocessing directives (-p, -d, -u, --pragma, --before).
  - If debugging is enabled, define a __DEBUG_FORMAT__ predefined macro.
  - Fix an assert for the case in the obj format when a SEG operator refers to an
    EXTERN symbol declared further down in the code.
  - Fix a corner case in the floating-point code where a binary, octal or
    hexadecimal floating-point having at least 32, 11, or 8 mantissa digits could
    produce slightly incorrect results under very specific conditions.
  - Support -MD without a filename, for gcc compatibility. -MF can be used to set
    the dependencies output filename.
  - Fix -E in combination with -MD.
  - Fix missing errors on redefined labels; would cause convergence failure
    instead which is very slow and not easy to debug.
  - Duplicate definitions of the same label with the same value is now explicitly
    permitted (2.14 would allow it in some circumstances.)
  - Add the option --no-line to ignore %line directives in the source.


author: Anton Novojilov <andy@essentialkaos.com> - 2.14.02-0
changelog:
  - Fix crash due to multiple errors or warnings during the code generation pass
    if a list file is specified


author: Anton Novojilov <andy@essentialkaos.com> - 2.15.05-0
changelog:
  - Correct %ifid $ and %ifid $$ being treated as true.
  - Add --reproducible option to suppress NASM version numbers and timestamps
   in output files.


author: Anton Novojilov <andy@essentialkaos.com> - 2.16.01-0
changelog:
  - Support for the rdf format has been discontinued and all the RDOFF utilities
    has been removed.
  - The --reproducible option now leaves the filename field in the COFF object
    format blank. This was always rather useless since it is only 18 characters
    long; as such debug formats have to carry their own filename information
    anyway.
  - Fix handling of MASM-syntax reserved memory (e.g. dw ?) when used in
    structure definitions.
  - The preprocessor now supports functions, which can be less verbose and more
    convenient than the equivalent code implemented using directives.
  - Fix the handling of %00 in the preprocessor.
  - Fix incorrect handling of path names affecting error messages, dependency
    generation, and debug format output.
  - Support for the RDOFF output format and the RDOFF tools have been removed. The
    RDOFF tools had already been broken since at least NASM 2.14. For flat code
    the ELF output format recommended; for segmented code the obj (OMF) output
    format.
  - New facility: preprocessor functions. Preprocessor functions, which are
    expanded similarly to single-line macros, can greatly simplify code that in
    the past would have required a lengthy list of directives and intermediate
    macros.
  - Single-line macros can now declare parameters (using a && prefix) that creates
    a quoted string, but does not requote an already quoted string.
  - Instruction table updated per public information available as of
    November 2022.
  - All warnings in the preprocessor have now been assigned warning classes.
  - Fix the invalid use of RELA–type relocations instead of REL–type relocations
    when generating DWARF debug information for the elf32 output format.
  - Fix the handling at in istruc when the structure contains local labels.
  - When assembling with --reproducible, don't encode the filename in the COFF
    header for the coff, win32 or win64 output formats. The COFF header only has
    space for an 18-character filename, which makes this field rather useless
    in the first place. Debug output data, if enabled, is not affected.
  - Fix incorrect size calculation when using MASM syntax for non-byte
    reservations (e.g. dw ?.)
  - Allow forcing an instruction in 64-bit mode to have a (possibly redundant)
    REX prefix, using the syntax {rex} as a prefix.
  - Add a {vex} prefix to enforce VEX (AVX) encoding of an instruction, either
    using the 2- or 3-byte VEX prefixes.
  - The CPU directive has been augmented to allow control of generation of
    VEX (AVX) versus EVEX (AVX-512) instruction formats, see section 7.11.
  - Some recent instructions that previously have been only available using EVEX
    encodings are now also encodable using VEX (AVX) encodings. For backwards
    compatibility these encodings are not enabled by default, but can be generated
    either via an explicit {vex} prefix or by specifying either CPU LATEVEX or
    CPU NOEVEX.
  - Document the already existing %unimacro directive.
  - Fix a code range generation bug in the DWARF debug format (incorrect
    information in the DW_AT_high_pc field) for the ELF output formats. This bug
    happened to cancel out with a bug in older versions of the GNU binutils
    linker, but breaks with other linkers and updated or other linkers that expect
    the spec to be followed.
  - Fix segment symbols with addends, e.g. jmp _TEXT+10h:0 in output formats that
    support segment relocations, e.g. the obj format.
  - Fix various crashes and hangs on invalid input.


author: Anton Novojilov <andy@essentialkaos.com> - 2.16.02-0
changelog:
  - Fix building from the source distribution in a separate directory from
    the source.
  - Fix a number of issues when building from source, mostly involving configure
    or dependency generation.
  - In particular, more aggressively avoid cross-compilation problems on
    Unix/Linux systems automatically invoking WINE. We could end up invoking WINE
    even when we didn't want to, making configure think it was running native when
    in fact cross-compiling.
  - Hopefully fix compiling with the latest versions of MSVC/nmake.
  - Windows host: add embedded manifest file. Without a manifest, Windows
    applications force a fixed PATH_MAX limit to any pathname; this is
    unnecessary.
  - Add support VEX-encoded SM4-NI instructions.
  - Add support for VEX-encoded SM3-NI instructions.
  - Add support for VEX-encoded SHA512-NI instructions.
  - PTWRITE opcode corrected (F3 prefix required.)
  - Disassembler: the SMAP instructions are NP; notably the prefixed versions
    of CLAC are ERETU/ERETS.
  - Add support for Flexible Return and Exception Delivery (FRED): the LKGS,
    ERETS and ERETU instructions.
  - Fix external references to segments in the obj (OMF) and possibly other
    output formats.
  - Always support up to 8 characters, i.e. 64 bits, in a string-to-numeric
    conversion.
  - Preprocessor: add %map() function to expand a macro from a list of arguments,
    see section 4.4.7.
  - Preprocessor: allow the user to specify the desired radix for an evaluated
    parameter. It doesn't make any direct difference, but can be nice for
    debugging or turning into strings. See the = modifier in section 4.2.1.
  - Update documentation: __USE_package__ is now __?USE_package?__.
  - Documentation: correct a minor problem in the expression grammar for Dx
    statements, see section 3.2.1.
  - Preprocessor: correctly handle empty %rep blocks.
  - Preprocessor: add options for a base prefix to %num(), see section 4.4.8.
  - Preprocessor: add a %hex() function, equivalent to %eval() except that it
    producess hexadecimal values that are nevertheless valid NASM numeric
    constants, see section 4.4.5.
  - Preprocessor: fix the parameter number in error messages (should be 1-based,
    like %num references to multi-line macro arguments.)
  - Documentation: be more clear than the bin format is simply a linker built into
    NASM. See section 8.1.
  - Adjust the LOCK prefix warning for XCHG.
  - LOCK XCHG reg,mem would issue a warning for being unlockable, which
    is incorrect. In this case the reg,mem encoding is simply an alias for the
    mem,reg encoding. However, XCHG is always locked, so create a new warning
    (-w+prefix-lock-xchg) to explicitly flag a user-specified LOCK XCHG; default
    off. Future versions of NASM may remove the LOCK prefix when optimization
    is enabled.
  - Fix broken dependency-list generation.
  - Add optional warnings for specific relocation types (-w+reloc-*, see
    appendix A), default off.
  - Some target environments may have specific restrictions on what kinds of
    relocations are possible or allowed.
  - Error out on certain bad syntax in Dx statements, such as db 1 2. See
    section 3.2.1.


author: Anton Novojilov <andy@essentialkaos.com> - 0.1.6-0
changelog:
  - Fixed an infinite loop when decoding some AMR-NB samples
  - Fixed noise spikes when decoding non-voice frames for both AMR-NB and AMR-WB


author: Anton Novojilov <andy@essentialkaos.com> - 1.2.0-0
changelog:
  - Speech quality improvements especially in the 12-20 kbit/s range
  - Improved VBR encoding for hybrid mode
  - More aggressive use of wider speech bandwidth, including fullband speech
    starting at 14 kbit/s
  - Music quality improvements in the 32-48 kb/s range
  - Generic and SSE CELT optimizations
  - Support for directly encoding packets up to 120 ms
  - DTX support for CELT mode
  - SILK CBR improvements
  - Support for all of the fixes in draft-ietf-codec-opus-update-06 (the mono
    downmix and the folding fixes need --enable-update-draft)
  - Many bug fixes, including integer wrap-arounds discovered through fuzzing
    (no security implications)


author: Anton Novojilov <andy@essentialkaos.com> - 1.2.1-0
changelog:
  - This minor release fixes a relatively rare issue where the 1.2 encoder would
    wrongly assume a signal to be bandlimited to 12 kHz and not encode frequencies
    between 12 and 20 kHz.


author: Anton Novojilov <andy@essentialkaos.com> - 1.3.0-0
changelog:
  - Improvements to the VAD and speech/music classification using an RNN
  - Support for ambisonics coding using channel mapping families 2 and 3
  - Improvements to stereo speech coding at low bitrate
  - Using wideband encoding down to 9 kb/s
  - Making it possible to use SILK down to bitrates around 5 kb/s
  - Minor quality improvement on tones
  - Enabling the spec fixes in RFC 8251 by default
  - Security/hardening improvements
  - Fixes to the CELT PLC
  - Bandwidth detection fixes


author: Anton Novojilov <andy@essentialkaos.com> - 1.3.1-0
changelog:
  - A new OPUS_GET_IN_DTX query to know if the encoder is in DTX mode (last
    frame was either a comfort noise frame or not encoded at all)
  - A new (and still experimental) CMake-based build system that is eventually
    meant to replace the VS2015 build system (the autotools one will stay)


author: Anton Novojilov <andy@essentialkaos.com> - 0.4.27-0
changelog:
  - sse: preserve non volatile sse registers, needed for MSVC
  - x86: don't hard-code register size to zero in orc_x86_emit_*() functions
  - Fix incorrect asm generation on 64-bit Windows when building with MSVC
  - Support build using the Meson build system


author: Anton Novojilov <andy@essentialkaos.com> - 0.4.29-0
changelog:
  - PowerPC: Support ELFv2 ABI and ppc64le
  - Mips backend: only enable if the DSPr2 ASE is present
  - Windows and MSVC build fixes
  - orccpu-arm: Allow 'cpuinfo' fallback on non-android
  - pkg-config file for orc-test library
  - orcc: add --decorator command line argument to add function decorators
    in header files
  - meson: Make orcc detectable from other subprojects
  - meson: add options to disable tests, docs, benchmarks, examples, tools, etc.
  - meson: misc. other fixes


author: Anton Novojilov <andy@essentialkaos.com> - 0.4.30-0
changelog:
  - Don't always generate static library but default to shared-only
  - Work around false positives in Microsoft UWP certification kit
  - Add endbr32/endbr64 instructions on x86/x86-64 for indirect branch tracking
  - Fix gtk-doc build when orc is used as a meson subproject
  - Switch float comparison in tests to ULP method to fix spurious failures
  - Fix flushing of ARM icache when using dual map
  - Use float constants/parameters when testing float opcodes
  - Add support for Hygon Dhyana processor
  - Fix PPC/PPC64 CPU family detection
  - Add little-endian PPC support
  - Fix compiler warnings with clang
  - Mark exec mapping writable in debug mode for allowing breakpoints
  - Various codegen refactorings
  - autotools support has been dropped in favour of Meson as build system
  - Fix PPC CPU feature detection and add support for VSX/v2.07
  - Add double/int64 support for PPC


author: Anton Novojilov <andy@essentialkaos.com> - 0.4.31-0
changelog:
  - Fix OrcTargetPowerPCFlags enum typedef to revert API change on macOS/iOS
  - Fixes for various PowerPC issues
  - Enable flush-to-zero mode for float programs on ARM/neon
  - Fix some opcodes to support x2/x4 processing on PowerPC


author: Anton Novojilov <andy@essentialkaos.com> - 0.4.32-0
changelog:
  - Add support for JIT code generation in Universal Windows Platform apps
  - Minor Meson build system fixes and improvements


author: Anton Novojilov <andy@essentialkaos.com> - 0.4.33-0
changelog:
  - Add support for aarch64 (64-bit ARM) architecture (not yet enabled on
    Windows though)
  - aarch32: Implement loadupdb instruction used e.g. for video pixel
    format packing/unpacking/conversions
  - neon: Fix unsigned only implementation of loadoffb, loadoffw and loadoffl
  - neon: Fix testsuite not passing on arm CPUs
  - orccodemem: Fix use-after-free in error paths
  - orccpu-powerpc: Fix build with kernel < 4.11
  - Add support for macOS Hardened Runtime
  - Enable only SSE and MMX backends for Windows
  - Fix ORC_RESTRICT definition for MSVC
  - pkgconfig: add -DORC_STATIC_COMPILATION flag to .pc file for static-only
    builds


author: Anton Novojilov <andy@essentialkaos.com> - 0.4.34-0
changelog:
  - Thread-safety improvements around orc codemem allocation/freeing
  - Add orc_parse_code() with more detailed error reporting
  - Implement Orc function lazy initialization correctly via atomic operations
  - orc program parser fixes and improvements
  - build fixes and compiler warning fixes
  - coverity and clang scan-build static code analysis fixes
  - meson: Do not always generate static library for test library
  - ci improvements


author: Anton Novojilov <andy@essentialkaos.com> - 0.0.3-0
changelog:
  - Added add-prefix command
  - Added remove-prefix command
  - Added add-suffix command
  - Added remove-suffix command
  - Added exclude command


author: Anton Novojilov <andy@essentialkaos.com> - 4.0.0-0
changelog:
  - Added autochangelog and autorelease macro support
  - Added renderer for github actions
  - Code refactoring
  - UI improvements


author: Anton Novojilov <andy@essentialkaos.com> - 4.1.0-1
changelog:
  - Added verbose version info output
  - Dependencies update
  - Fixed build using sources from source.kaos.st


author: Anton Novojilov <andy@essentialkaos.com> - 4.1.4-0
changelog:
  - Fixed bug with printing help content if no specs provided
  - Fixed bug in terminal render with printing spec name with problems


author: Anton Novojilov <andy@essentialkaos.com> - 5.0.0-0
changelog:
  - -A/--absolve option renamed to -I/--ignore
  - 'absolve' directive renamed to 'ignore'
  - Apply 'ignore' directive to rpmlint alerts


author: Anton Novojilov <andy@essentialkaos.com> - 6.0.0-0
changelog:
  - Added 'target' directive
  - Improved XML render
  - Improved JSON render
  - Improved github render
  - Improved terminal render
  - Added extra info to report for XML and JSON renders
  - Code refactoring


author: Anton Novojilov <andy@essentialkaos.com> - 6.1.0-0
changelog:
  - Added '-P'/'--pager' option to use pager for long output
  - Improved verbose version info generation
  - Code refactoring
  - Dependencies update


author: Anton Novojilov <andy@essentialkaos.com> - 1.4.3-0
changelog:
  - Fixed possible CVE-2018-1058 attack paths
  - Fixed "unexpected index definition" after CVE-2018-1058 changes in PostgreSQL
  - Fixed build with recent Ubuntu packages


author: Anton Novojilov <andy@essentialkaos.com> - 1.4.5-0
changelog:
  - Added support for PostgreSQL 12
  - Fixed parallel processing for indexes with operators from public schema


author: Anton Novojilov <andy@essentialkaos.com> - 1.4.8-0
changelog:
  - Added support for PostgreSQL 15
  - Fixed --parent-table on declarative partitioned tables
  - Removed connection info from error log


author: Anton Novojilov <andy@essentialkaos.com> - 1.10.0-0
changelog:
  - Add support for enabling and disabling TLS 1.3. (TLS 1.3 was already
    supported, depending on the OpenSSL library, but now the configuration
    settings to pick the TLS protocol versions also support it)
  - Fix TLS 1.3 support. This was broken with OpenSSL 1.1.1 and 1.1.1a (but not
    before or after).
  - Fix a rare crash in SHOW FDS.
  - Fix an issue that could lead to prolonged downtime if many cancel requests
    arrive.
  - Avoid "unexpected response from login query" after a postgres reload.
  - Fix idle_transaction_timeout calculation. The bug would lead to premature
    timeouts in specific situations.
  - Make various log and error messages more precise.
  - Fix issues found by Coverity (none had a significant impact in practice).
  - Improve and document all test scripts.
  - Add additional SHOW commands to the documentation.
  - Convert the documentation from rst to Markdown.
  - Python scripts in the source tree are all compatible with Python 3 now.


author: Anton Novojilov <andy@essentialkaos.com> - 1.11.0-0
changelog:
  - Add support for SCRAM authentication for clients and servers. A new
    authentication type scram-sha-256 is added.
  - Handle auth_type=password when the stored password is md5, like a
    PostgreSQL server would.
  - Add option log_stats to disable printing stats to log.
  - Add time zone to log timestamps.
  - Put PID into [brackets] in log prefix.
  - Fix OpenSSL configure test when running against newer OpenSSL with -Werror.
  - Fix wait time computation with auth_user. This would either crash or report
    garbage values for wait time.
  - Handle GSSENCRequest packet, added in PostgreSQL 12. It doesn’t do anything
    right now, but it avoids confusing error messages about "bad packet header".
  - Many improvements in the test suite and several new tests
  - Fix several compiler warnings on Windows.
  - Expand documentation of the [users] section and add to example config file.


author: Anton Novojilov <andy@essentialkaos.com> - 1.12.0-0
changelog:
  - Add a setting to turn on the SO_REUSEPORT socket option. On some operating
    systems, this allows running multiple PgBouncer instances on the same host
    listening on the same port and having the kernel distribute the connections
    automatically.
  - Add a setting to use a resolv.conf file separate from the operating system.
    This allows setting custom DNS servers and perhaps other DNS options.
  - Send the output of SHOW VERSION as a normal result row instead of a NOTICE
    message. This makes it easier to consume and is consistent with other
    SHOW commands.
  - Send statistics columns as numeric instead of bigint. This avoids some client
    libraries failing on values that overflow the bigint range.
  - Fix issue with PAM users losing their password.
  - Accept SCRAM channel binding enabled clients. Previously, a client supporting
    channel binding (that is, PostgreSQL 11+) would get a connection failure when
    connecting to PgBouncer in certain situations. (PgBouncer does not support
    channel binding. This change just fixes support for clients that offer it.)
  - Fix compilation with newer versions of musl-libc (used by Alpine Linux).
  - Add make check target. This allows running all the tests from a single
    command.
  - Remove references to the PostgreSQL wiki. All information is now either in
    the PgBouncer documentation or on the web site.
  - Remove support for Libevent version 1.x. Libevent 2.x is now required.
    Libevent is now detected using pkg-config.
  - Fix compiler warnings on macOS and Windows. The build on these platforms
    should now be free of warnings.
  - Fix some warnings from LLVM scan-build.


author: Anton Novojilov <andy@essentialkaos.com> - 1.13.0-0
changelog:
  - Add configuration setting tcp_user_timeout, to set the corresponding socket
    option.
  - client_tls_protocols and server_tls_protocols now default to secure, which
    means only TLS 1.2 and TLS 1.3 are enabled. Older versions are still
    supported, they are just not turned on by default.
  - Add support for systemd service notifications. Right now, this allows using
    Type=notify service units. More integration is planned for future versions.
  - Fix multiline log messages
  - Handle null user names returned from auth_query properly
  - Numerous fixes and improvements in the test suite
  - The tests no longer try to use sudo by default. This can now be activated
    explicitly by setting the environment variable USE_SUDO.
  - The libevent API use was updated to use version 2 style interfaces and to
    no longer use deprecated interfaces from version 1.


author: Anton Novojilov <andy@essentialkaos.com> - 1.14.0-0
changelog:
  - Add SCRAM authentication pass-through. This allows using encrypted SCRAM
    secrets in PgBouncer (either in userlist.txt or from auth_query) for
    logging into servers.
  - Add support for systemd socket activation. This is especially useful to let
    systemd handle the creation of the Unix-domain sockets on systems where
    access to /var/run/postgresql is restricted.
  - Add support for Unix-domain sockets on Windows.
  - Add an alternative smaller sample configuration file pgbouncer-minimal.ini
    for testing or deployment.


author: Anton Novojilov <andy@essentialkaos.com> - 1.15.0-0
changelog:
  - Improve authentication failure reporting. The authentication failure messages
    sent to the client now only state that authentication failed but give no
    further details. Details are available in the PgBouncer log. Also, if the
    requested user does not exist, the authentication is still processed to the
    end and will result in the same generic failure message. All this prevents
    clients from probing the PgBouncer instance for user names and other
    authentication-related insights. This is similar to how PostgreSQL behaves.
  - Don’t log anything if client disconnects immediately. This avoids log spam
    when monitoring systems just open a TCP/IP connection but don’t send anything
    before disconnecting.
  - Use systemd journal for logging when in use. When we detect that stderr is
    going to the systemd journal, we use systemd native functions for log output.
    This avoids printing duplicate timestamp and pid, thus making the log a
    bit cleaner. Also, this adds metadata such as the severity to the logs, so
    that if the journal gets sent on to syslog, the messages have useful
    metadata attached.
  - A subset of the test suite can now be run under Windows.
  - 'SHOW CONFIG' now also shows the default values of the settings.
  - Fix the so_reuseport option on FreeBSD. The original code in PgBouncer
    1.12.0 didn’t actually work on FreeBSD.
  - Repair compilation on systems with older systemd versions. This was
    broken in 1.14.0.
  - The makefile target to build Windows binary zip packages has been repaired.
  - Long command-line options now also work on Windows.
  - Fix the behavior of the global auth_user setting. The old behavior was
    confusing and fragile as it depended on the order in the configuration file.
    This is no longer the case.
  - Improve test stability and portability.
  - Modernize Autoconf-related code.
  - Disable deprecation compiler warnings from OpenSSL 3.0.0.


author: Anton Novojilov <andy@essentialkaos.com> - 1.16.0-0
changelog:
  - Support hot reloading of TLS settings. When the configuration file is
    reloaded, changed TLS settings automatically take effect.
  - Add support for abstract Unix-domain sockets. Prefix a Unix-domain socket
    path with @ to use a socket in the abstract namespace. This matches
    the corresponding PostgreSQL 14 feature.
  - The maximum lengths of passwords and user names have been increased to 996
    and 128, respectively. Various cloud services require this.
  - The minimum pool size can now be set per database, similar to the regular
    pool size and the reserve pool size.
  - The number of pending query cancellations is shown in 'SHOW POOLS'.
  - Configuration parsing now has tighter error handling in many places. Where
    previously it might have logged an error and proceeded, those configuration
    errors would now result in startup failures. This is what always should have
    happened, but some code didn’t do this right. Some users might discover
    that their configurations have been faulty all along and will not work
    anymore.
  - Query cancel handling has been fixed. Under some circumstances, cancel
    requests would seemingly get stuck for a long time. This should no longer
    happen. In fact, cancel requests can now exceed the pool size by a factor
    of two, so they really shouldn’t get stuck anymore.
  - Mixed use of md5 and scram via hba has been fixed.
  - The build with c-ares on Windows has been fixed.
  - The dreaded "FIXME: query end, but query_start == 0" messages have been
    fixed. We now know why they happen, and you shouldn’t see them anymore.
  - Fix reloading of 'default_pool_size', 'min_pool_size', and 'res_pool_size'.
    Reloading these settings previously didn’t work.
  - Cirrus CI is now used instead of Travis CI.
  - As usual, many tests have been added.
  - The "unclean server" log message has been clarified a bit. It now says
    "client disconnect while server was not ready" or "client disconnect before
    everything was sent to the server". The former can happen if the client
    connection is closed when the server has a transaction block open, which
    confused some users.
  - You can no longer use "pgbouncer" as a database name. This name is reserved
    for the admin console, and using it as a normal database name never really
    worked right. This is now explicitly prohibited.
  - Errors sent to clients before the connection is closed are now labeled as
    FATAL instead of just ERROR. Some clients were confused otherwise.
  - Fix compiler warnings with GCC 11.


author: Anton Novojilov <andy@essentialkaos.com> - 1.16.1-0
changelog:
  - Make PgBouncer acting as a server reject extraneous data after an SSL or
    GSS encryption handshake.


author: Anton Novojilov <andy@essentialkaos.com> - 1.17.0-0
changelog:
  - A database definition can specify a comma-separated host list. The hosts will
    be connected to in a round-robin manner.
  - When connecting to a non-existing database, the error (“no such database”) is
    now reported after authentication. This prevents unauthenticated clients from
    probing what databases exist. (This is similar to the change in version 1.15.0
    to report missing users after authentication.)
  - Don’t send server disconnect errors to the client before login. This could
    reveal not-quite-public information, such as configuration details, to
    a client that is not logged in yet.
  - Increase maximum password length again. Apparently, the last increase wasn’t
    enough for long enough.
  - Remove automatic auth_file reload. The auth_file is now reread only on
    configuration file reload, no longer automatically as soon as it is changed.
  - The Windows build now includes a version-information resource file.
  - The Windows builds created on CI are now statically linked, so they can be
    used directly without requiring any dependencies.
  - OpenSSL 3 support has been fixed. Previous releases would crash.
  - Don’t apply fast-fail at connect time. This is part of the above-mentioned
    change to not report server errors before authentication. It also fixes
    a particular situation with SCRAM pass-through authentication, where we need
    to allow the client-side authentication exchange in order to be able to fix
    the server-side connection by re-authenticating. The fast-fail mechanism still
    applies right after authentication, so the effective observed behavior will
    be the same in most situations.
  - Change auth_type in sample pgbouncer.ini to md5 to match the built-in default.
    Some deploy this file as the default configuration file, so check if this
    changed configuration still makes sense for you.
  - Fix crash at exit in assert-enabled builds.
  - Improve tcp_defer_accept documentation and behavior. The documentation was
    incorrect and misleading about the default. In some cases the wrong value was
    showing in “show config”. Also, if it’s set but not supported, give an error
    instead of ignoring, similar to how other platform-specific socket options
    are handled.
  - Fix build with c-ares on Windows. c-ares >=1.18.0 is now required on Windows.
  - Most deprecation warnings from Autoconf >=2.70 have been cleaned up. Older
    Autoconf versions are still supported.
  - Cirrus CI use has been expanded to more platforms.
  - Travis CI support has been removed.
  - Update locations to search for default root CA file, to cover more platforms,
    such as Fedora/RHEL/CentOS.
  - Python scripts now all use python3 by default. Python 2 compatibility is no
    longer maintained.
  - The test suite scripts use command -v instead of which, which is deprecated.
  - Several error messages have been reworded to make it clearer which command
    or configuration setting they relate to.
  - The test suite scripts no longer require GNU sed.
  - make check now works on Windows (but not the SSL test suite yet).
  - Document that the admin console only supports the simple query protocol,
    and give better error messages about this.


author: Anton Novojilov <andy@essentialkaos.com> - 0.1.3-0
changelog:
  - Added pg_stat_statements improvements
  - Added query detailed report based on pg_stat_statements
  - Added memory system statistics
  - Added support for 9.1


author: Anton Novojilov <andy@essentialkaos.com> - 0.2.0-0
changelog:
  - Added iostat
  - Added nicstat
  - pg_stat_statements fixes
  - One key shortcut for config editing
  - Other fixes and improvements


author: Anton Novojilov <andy@essentialkaos.com> - 0.3.0-0
changelog:
  - use qsort_r() instead of hand-made sorting - sort is now available for all
    columns;
  - add filtration feature - it's possible to filter out unnecessary
    tables/indexes/queries/etc;
  - add pg_stat_progress_vacuum (since 9.6);
  - add compatibility with pg-9.6 (pg_stat_activity) - added wait_event and
    wait_event_type fields;
  - added autovacuum info: print number of user vacuum and autovac max worker
    limit;
  - exclude (auto)vacuum tasks accounting in xact_maxtime field;
  - pg_stat_replication rewritten and now works on standbys too;
  - change long queries min age from 500ms to 0ms - now all queries are shown
    in activity stats;
  - allow to use connection settings from libpq env vars;
  - pg_stat_statements: add local IO information context;
  - pg_stat_statements: use menu and switching; c, v, V hotkeys are removed
    and X is used instead;
  - remove unnecessary WHERE from pg_stat_statements queries;
  - show details and hint if query has failed;
  - and many many fixes and internal refactoring.


author: Anton Novojilov <andy@essentialkaos.com> - 0.4.0-0
changelog:
  - PostgreSQL 10 support
  - Extended general overview
  - Add xact_age and time_age fields into pg_stat_replications
  - Add backend_type into pg_stat_activity
  - Add stats_age into pg_stat_database
  - Some bug fixes and code optimizations


author: Anton Novojilov <andy@essentialkaos.com> - 0.5.0-0
changelog:
  - pgcenter rewritten on Go from scratch
  - pgcenter functionality divided into sub-commands (git/perf-style)
  - added new functionality: record/report statistics (worked as additional
    sub-commands)
  - a lot of hotkeys are changed in 'top' sub-command (see builtin help)
  - removed tabs support
  - removed pgcenterrc support
  - show activity statistics by default
  - activity shows background processes
  - hide/show idle activity (hidden by default)
  - show recovery status in postgres summary
  - tables and tables IO stats merged into one single view
  - filtering supports regexps now


author: Anton Novojilov <andy@essentialkaos.com> - 0.6.0-0
changelog:
  - Added dependencies downloading before building
  - Changelog file is returned
  - Merge branch 'dev'
  - Merge pull request #46 from andyone/master
  - added CGO_ENABLED=0
  - added goreleaser support
  - added wait events profiling
  - cast all numeric to the same precision
  - command management refactoring: config: moved parameters check from main
    program code to command management code config: emit error if neither '-i'
    nor '-u' specified profile: emit error if '-P' is not specified
  - doc improvements and fixes
  - fix division by zero in query to pg_stat_user_functions
  - fix travis config
  - fix travis config, try 2
  - fixed GoReport recommendations top: fix wrong masks handling when
    cancel/terminate group of backends fixed cyclomatic complexity in
    functions added proper comments for variables and methods done code
    formatting
  - lib/stat: fix wrong calculation of hits values
  - lib/utils/postgres: remove explicit sslmode from connectin string
  - output aligning rewritten: - fixed aligning for 'top' command - dynamic
    aligning for 'report' command - two new hotkeys in 'top', have been
    introduced which allow to change width of active columns
    (up/down arrows) - column width map moved from PGresult level to
    Context - aligning is performed once when first stats displayed - stat.Print()
    marked as deprecated - fixed couple IDE's warnings (unused variables)
  - pg_stat_database query fixes: - strict cast of blk_read_time and
    blk_write_time to numeric helps to avoid some kind of errors in diff/sort
    operations - show blks_read in kilobytes - clarify builtin help add error
    check into PGresult.New()
  - profile: added docs and examples
  - release 0.6.0
  - remove tabs from queries (looks ugly when log_destination=syslog)
  - removed old commented and unused code
  - report: extend built-in help
  - report: show last processed stats file on error\ when something goes wrong
    and pgcenter is failed to read stats, it shows name of\ last processes stats
    file within tar file. It helps to debug what was happened.
  - some refactoring in connection handling module: added error handling of pq
    (go driver) related errors added extra error handling in
    replaceEmptySettings() rewriten PGhost(), use advanced query for getting
    'host' value fixed error when attepmting to connect to non-SSL postgres:
    'pq: SSL is not enabled on the server'


author: Anton Novojilov <andy@essentialkaos.com> - 0.6.0-0
changelog:
  - Added dependencies downloading before building
  - Changelog file is returned
  - Merge pull request #46 from andyone/master
  - added CGO_ENABLED=0
  - added goreleaser support
  - added wait events profiling
  - cast all numeric to the same precision
  - command management refactoring: config: moved parameters check from main
    program code to command management code config: emit error if neither '-i'
    nor '-u' specified profile: emit error if '-P' is not specified
  - doc improvements and fixes
  - fix division by zero in query to pg_stat_user_functions
  - fix travis config
  - fix travis config, try 2
  - fixed GoReport recommendations top: fix wrong masks handling when
    cancel/terminate group of backends fixed cyclomatic complexity in
    functions added proper comments for variables and methods done code
    formatting
  - lib/stat: fix wrong calculation of hits values
  - lib/utils/postgres: remove explicit sslmode from connectin string
  - output aligning rewritten: - fixed aligning for 'top' command - dynamic
    aligning for 'report' command - two new hotkeys in 'top', have been
    introduced which allow to change width of active columns
    (up/down arrows) - column width map moved from PGresult level to
    Context - aligning is performed once when first stats displayed - stat.Print()
    marked as deprecated - fixed couple IDE's warnings (unused variables)
  - pg_stat_database query fixes: - strict cast of blk_read_time and
    blk_write_time to numeric helps to avoid some kind of errors in diff/sort
    operations - show blks_read in kilobytes - clarify builtin help add error
    check into PGresult.New()
  - profile: added docs and examples
  - release 0.6.0
  - remove tabs from queries (looks ugly when log_destination=syslog)
  - removed old commented and unused code
  - report: extend built-in help
  - report: show last processed stats file on error\ when something goes wrong
    and pgcenter is failed to read stats, it shows name of\ last processes stats
    file within tar file. It helps to debug what was happened.
  - some refactoring in connection handling module: added error handling of pq
    (go driver) related errors added extra error handling in
    replaceEmptySettings() rewriten PGhost(), use advanced query for getting
    'host' value fixed error when attepmting to connect to non-SSL postgres:
    'pq: SSL is not enabled on the server'


author: Anton Novojilov <andy@essentialkaos.com> - 0.6.2-0
changelog:
  - Cursor handling improvements
  - Hide cursor when canceling operation
  - Quitting from help and main screens with 'q' key
  - fix code formatting, misspeling, etc.
  - fixed acidentally used case-sensitive pattern matching when accounting number
    of user-started vacuums
  - record/report: extend "--help" messages
  - record/report: improve aligning and truncation of pg_stat_statements.query
  - reworked pg_stat_statements queries
  - rewrite PQconnectdb using connection setup in a loop
  - top-like UI highlighting improvements
  - top: do polling pg_stat_statements only if it's available (issue #59)
  - top: fixed handling of libpq errors during connection establishment
  - top: printLogtail() tiny refactoring, removed unnecessary retval
  - top: read remote stats only if pgcenter schema exists
  - top: removed notes about deprecated hotkeys; issue #57


author: Anton Novojilov <andy@essentialkaos.com> - 0.6.3-0
changelog:
  - Accept /proc/diskstat metrics with extra fields.
  - added help description about pg_stat_progress_create_index view
  - added menu for switching between progress stats in top utility
  - added pg_stat_progress_cluster stats to top/record/report utils
  - added pg_stat_progress_create_index stats
  - added stats context related to pg_stat_progress_cluster view
  - added support for pg_stat_database.checksum_failures
  - adjust header's styles of iostat/nicstat tabs in top utility
  - another try of aligning refactoring - skip aligning if no rows in result
    set - don't truncate long values, such as names
  - avoid rude disconnection from postgres at top-program exit
  - describe "pgcenter config" doc more verbosely
  - fix crashes when postgres is not running
  - fix units
  - implemented switching between two progress stats
  - improve input args for progress stats in report utility
  - inject version info at build time
  - moved psql hotkey from 'p' to '~'
  - readme/changelog changes
  - report: print header at the beginning of the output
  - rethinking pg_stat_progress_vacuum query: - wait events merged into single
    column - changed order of columns - move 'wait events' after 'state' - changed
    totals to percents for scanned and vacuumed numbers changed reports' buitin
    docs


author: Anton Novojilov <andy@essentialkaos.com> - 0.3.0-0
changelog:
  - [FEATURE] Make extldflags extensible by configuration
  - [ENHANCEMENT] Avoid bind-mounting to allow building with a remote docker
    engine


author: Anton Novojilov <andy@essentialkaos.com> - 0.4.0-0
changelog:
  - [FEATURE] Fallback to git describe output if no VERSION
  - [BUGFIX] cmd/tarball: restore --prefix flag
  - [BUGFIX] cmd/release: don't leak credentials in case of error


author: Anton Novojilov <andy@essentialkaos.com> - 0.5.0-0
changelog:
  - [CHANGE] Remove --broken from git describe
  - [FEATURE] Add support for aix/ppc64
  - [ENHANCEMENT] cmd/release: add --timeout option.
  - [ENHANCEMENT] cmd/release: create release in GitHub if none exists


author: Anton Novojilov <andy@essentialkaos.com> - 1.10.3-0
changelog:
  - Do not use current working directory for download cache
  - Use 0600 as default mode for all files in download cache


author: Anton Novojilov <andy@essentialkaos.com> - 2.0.0-0
changelog:
  - Brand new version rewritten from scratch
  - Using zstandart compression by default
  - Removed outdated builders
  - Added def file validation
  - Builders now remove all useless data


author: Anton Novojilov <andy@essentialkaos.com> - 1.10.2-0
changelog:
  - Added 2.7.2
  - Added 2.7.2-jemalloc
  - Added 2.7.2-railsexpress
  - Added 3.0.0
  - Added 3.0.0-jemalloc
  - Added 3.0.0-railsexpress
  - Added jruby-9.2.12.0
  - Added jruby-9.2.13.0
  - Added jruby-9.2.14.0
  - Added truffleruby-20.2.0
  - Added truffleruby-20.3.0
  - Added truffleruby-21.0.0
  - OpenSSL updated to 1.0.2u for 1.9.2 <-> 2.3.8
  - OpenSSL updated to 1.1.1i for 2.4.0 <-> 2.7.1
  - Added EOL dates for 2.3.x, 2.4.x, 2.5.x, jruby-9.0.x.x and jruby-9.1.x.x


author: Anton Novojilov <andy@essentialkaos.com> - 1.10.4-0
changelog:
  - OpenSSL updated to 1.1.1k for 2.4.0 <-> 3.0.0
  - Added 2.5.9
  - Added 2.5.9-jemalloc
  - Added 2.6.7
  - Added 2.6.7-jemalloc
  - Added 2.7.3
  - Added 2.7.3-jemalloc
  - Added 3.0.1
  - Added 3.0.1-jemalloc
  - Added jruby-9.2.15.0
  - Added jruby-9.2.16.0
  - Added jruby-9.2.17.0
  - Added truffleruby-21.0.0.2


author: Anton Novojilov <andy@essentialkaos.com> - 1.10.5-0
changelog:
  - Added 2.6.7-railsexpress
  - Added 2.6.8
  - Added 2.6.8-jemalloc
  - Added 2.7.3-railsexpress
  - Added 2.7.4
  - Added 2.7.4-jemalloc
  - Added 3.0.1-railsexpress
  - Added 3.0.2
  - Added 3.0.2-jemalloc
  - Added jruby-9.2.18.0
  - Added jruby-9.2.19.0
  - Added truffleruby-21.0.1


author: Anton Novojilov <andy@essentialkaos.com> - 1.10.6-0
changelog:
  - OpenSSL updated to 1.1.1l for 2.4.0 <-> 3.0.0
  - Added truffleruby-21.0.2
  - Added truffleruby-21.0.2.1


author: Anton Novojilov <andy@essentialkaos.com> - 1.10.7-0
changelog:
  - Added 2.6.8-railsexpress
  - Added 2.7.4-railsexpress
  - Added 3.0.2-railsexpress
  - Added 3.0.3
  - Added 3.0.3-jemalloc
  - Added jruby-9.2.20.0
  - Added jruby-9.2.20.1
  - Added jruby-9.3.0.0
  - Added jruby-9.3.1.0
  - Added jruby-9.3.2.0
  - Added truffleruby-21.3.0


author: Anton Novojilov <andy@essentialkaos.com> - 1.10.10-0
changelog:
  - Added 2.6.10
  - Added 2.6.10-jemalloc
  - Added 2.7.6
  - Added 2.7.6-jemalloc
  - Added 3.0.4
  - Added 3.0.4-jemalloc
  - Added 3.1.1
  - Added 3.1.1-jemalloc
  - Added 3.1.2
  - Added 3.1.2-jemalloc
  - Added 2.6.9-railsexpress
  - Added 2.7.5-railsexpress
  - Added 3.0.4-railsexpress
  - Added 3.1.0-railsexpress
  - Added 3.1.1-railsexpress
  - Added jruby-9.3.3.0
  - Added jruby-9.3.4.0
  - Added truffleruby-22.0.0.2
  - OpenSSL updated to 1.1.1n for 2.4.0+


author: Anton Novojilov <andy@essentialkaos.com> - 2.0.0-0
changelog:
  - Added 2.7.6-railsexpress
  - Added 2.7.7
  - Added 2.7.7-jemalloc
  - Added 2.7.7-railsexpress
  - Added 3.0.5
  - Added 3.0.5-jemalloc
  - Added 3.0.5-railsexpress
  - Added 3.1.2-railsexpress
  - Added 3.1.3
  - Added 3.1.3-jemalloc
  - Added 3.1.3-railsexpress
  - Added 3.2.0
  - Added 3.2.0-jemalloc
  - Added 3.2.0-railsexpress
  - Added jruby-9.3.5.0
  - Added jruby-9.3.6.0
  - Added jruby-9.3.7.0
  - Added jruby-9.3.8.0
  - Added jruby-9.3.9.0
  - Added jruby-9.4.0.0
  - Added truffleruby-22.1.0
  - Added truffleruby-22.2.0
  - Added truffleruby-22.3.0
  - Removed all 1.8.x and 1.9.x versions
  - Removed all jruby-1.6.x, jruby-1.7.x, jruby-9.0.x and jruby-9.1.x versions
  - Using zstandart compression by default for files on essentialkaos mirror
  - OpenSSL updated to 1.1.1s for 2.4.0+


author: Anton Novojilov <andy@essentialkaos.com> - 2.0.2-0
changelog:
  - Added 3.2.1
  - Added 3.2.1-jemalloc
  - Added jruby-9.4.1.0
  - Added truffleruby-22.3.1
  - OpenSSL updated to 1.1.1t for 2.4.0+


author: Anton Novojilov <andy@essentialkaos.com> - 2.0.3-0
changelog:
  - Added 2.7.8
  - Added 2.7.8-jemalloc
  - Added 2.7.8-railsexpress
  - Added 3.0.6
  - Added 3.0.6-jemalloc
  - Added 3.0.6-railsexpress
  - Added 3.1.4
  - Added 3.1.4-jemalloc
  - Added 3.1.4-railsexpress
  - Added 3.2.2
  - Added 3.2.2-jemalloc
  - Added 3.2.2-railsexpress
  - Added jruby-9.4.2.0


author: Anton Novojilov <andy@essentialkaos.com> - 2.0.4-0
changelog:
  - Added jruby-9.3.10.0
  - Added jruby-9.4.3.0
  - Added truffleruby-23.0.0
  - Added truffleruby-23.0.1
  - Added mruby-3.2.0
  - Removed jruby-9.2.x
  - OpenSSL updated to 1.1.1v for 2.4.0+
  - Make options for OpenSSL removed from all def files


author: Anton Novojilov <andy@essentialkaos.com> - 2.0.5-0
changelog:
  - Added jruby-9.3.11.0
  - Added jruby-9.3.12.0
  - Added jruby-9.3.13.0
  - Added jruby-9.4.4.0
  - Added jruby-9.4.5.0
  - Added truffleruby-23.1.0
  - Added truffleruby-23.1.1
  - OpenSSL updated to 1.1.1w for 2.4.0+
  - Removed all *-railsexpress versions


author: Anton Novojilov <andy@essentialkaos.com> - 2.0.7-0
changelog:
  - Added 3.0.7
  - Added 3.0.7-jemalloc
  - Added 3.1.5
  - Added 3.1.5-jemalloc
  - Added 3.2.3
  - Added 3.2.3-jemalloc
  - Added 3.2.4
  - Added 3.2.4-jemalloc
  - Added 3.3.1
  - Added 3.3.1-jemalloc
  - Added jruby-9.3.14.0
  - Added jruby-9.4.6.0
  - Added truffleruby-23.1.2
  - Added truffleruby-24.0.0
  - Added truffleruby-24.0.1


author: Anton Novojilov <andy@essentialkaos.com> - 0.3.0-0
changelog:
  - Added an rbenv root command which prints the value of $RBENV_ROOT, or 
  the default root directory if its unset.
  - Clarified Zsh installation instructions in the readme.
  - Removed some redundant code in rbenv rehash.
  - Fixed an issue with calling readlink for paths with spaces.
  - Changed Zsh initialization code to install completion hooks only 
  for interactive shells.
  - Added preliminary support for ksh.
  - rbenv rehash creates or removes shims only when necessary instead of 
  removing and re-creating all shims on each invocation.
  - Fixed that RBENV_DIR, when specified, would be incorrectly expanded 
  to its parent directory.
  - Removed the deprecated set-default and set-local commands.
  - Added a --no-rehash option to rbenv init for skipping the automatic 
  rehash when opening a new shell.


author: Anton Novojilov <andy@essentialkaos.com> - 0.4.0-0
changelog:
  - rbenv now prefers .ruby-version files to .rbenv-version files for specifying 
    local application-specific versions. The .ruby-version file has the same 
    format as .rbenv-version but is compatible with other Ruby version managers.
  - Deprecated ruby-local-exec and moved its functionality into the standard 
    ruby shim. See the ruby-local-exec wiki page for upgrade instructions.
  - Modified shims to include the full path to rbenv so that they can be invoked 
    without having rbenvs bin directory in the $PATH.
  - Sped up rbenv init by avoiding rbenv reinitialization and by using a simpler 
    indexing approach. (Users of chef-rbenv should upgrade to the latest version 
    to fix a compatibility issue.)
  - Reworked rbenv help so that usage and documentation is stored as a comment 
    in each subcommand, enabling plugin commands to hook into the help system.
  - Added support for full completion of the command line, not just the first 
    argument.
  - Updated installation instructions for Zsh and Ubuntu users.
  - Fixed rbenv which and rbenv prefix with system Ruby versions.
  - Changed rbenv exec to avoid prepending the system Ruby location to $PATH to 
    fix issues running system Ruby commands that invoke other commands.
  - Changed rbenv rehash to ensure it exits with a 0 status code under normal 
    operation, and to ensure outdated shims are removed first when rehashing.
  - Modified rbenv rehash to run hash -r afterwards, when shell integration is 
    enabled, to ensure the shells command cache is cleared.
  - Removed use of the += operator to support older versions of Bash.
  - Adjusted non-bare rbenv versions output to include system, if present.
  - Improved documentation for installing and uninstalling Ruby versions.
  - Fixed rbenv versions not to display a warning if the currently specified 
    version doesnt exist.
  - Fixed an instance of local variable leakage in the rbenv shell function wrapper.
  - Changed rbenv shell to ensure it exits with a non-zero status on failure.
  - Added rbenv --version for printing the current version of rbenv.
  - Added /usr/lib/rbenv/hooks to the plugin hook search path.
  - Fixed rbenv which to account for path entries with spaces.
  - Changed rbenv init to accept option arguments in any order.


author: Anton Novojilov <andy@essentialkaos.com> - 1.1.0-0
changelog:
  - Remove deprecated ruby-local-exec executable
  - Remove support for .rbenv-version legacy version file
  - Remove support for default, global legacy global version files
  - Add support for rbenv shell - style of invocation that restores previous
    version
  - Adopt Contributor Covenant 1.4
  - Replace . with source for fish shell
  - Unset CDPATH if it's set by the user
  - Fix rbenv <cmd> --help for sh-* commands
  - Expand literal tilde in PATH


author: Anton Novojilov <andy@essentialkaos.com> - 1.1.2-0
changelog:
  - Fix rehash mechanism for versions of bash that complain about
    clobbering /dev/null
  - Enforce absolute RBENV_DIR to avoid having to unset CDPATH
  - rbenv-version-file: ensure that the version file is a file
  - rbenv init -: fix output to work without args and set -u
  - rbenv shell: better error message when shell integration wasn't enabled
  - Enable freezing rbenv version via rbenv version-name > .ruby-version
    in the shell
  - rbenv-which: avoid changing PATH unless necessary
  - rbenv-prefix: do not silence rbenv-which errors for system version


author: Anton Novojilov <andy@essentialkaos.com> - 1.2.0-0
changelog:
  - Have shims survive upgrades via Homebrew
  - Improve init: warn about missing shell and name the shell explicitly
    in the template
  - Sort 'rbenv versions' output semantically
  - Remove misleading 'set by $(rbenv-version-origin)' message when system
    ruby is in use
  - Output more information in RBENV_DEBUG mode
  - Improve compatibility with bash 'set -u' (nounset) mode
  - Remove fish completion script
  - Speed up rehash
  - Disallow path segments and directory traversal in .ruby-version files
  - Avoid 'type: write error: broken pipe' warning
  - Fix fish shell initialization
  - Avoid unintentional globbing in bash completion
  - Strip '-<suffix>' when detecting the shell
  - Supply 'head -n' flag explicitly


author: Anton Novojilov <andy@essentialkaos.com> - 2.4.0-0
changelog:
  - [cli|gen|clone] Added man page generation
  - [cli|gen|clone] Added zsh completion generation
  - [cli|gen|clone] Added bash completion generation
  - [cli|gen|clone] Added fish completion generation
  - [cli|gen|clone] Added option for printing verbose application info
  - [cli|gen|clone] Minor UI improvements
  - [cli|gen|clone] Removed pkg.re usage
  - Added module info
  - Added Dependabot configuration


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.3-0
changelog:
  - [cli] Don't install documentation while updating RubyGems gem
  - Disable using EK rubygems proxy by default


author: Anton Novojilov <andy@essentialkaos.com> - 3.1.0-0
changelog:
  - [cli] Added option -X/--reinstall-updated for updating rebuilt versions
  - [cli] Fixed color disabling using -nc/--no-color option
  - [cli|gen|clone] Code refactoring
  - Dependencies update


author: Anton Novojilov <andy@essentialkaos.com> - 3.1.2-0
changelog:
  - [gen] Improved alias and eol info handling
  - [cli|gen|clone] Improve verbose version info
  - [cli|gen|clone] Code refactoring
  - Dependencies update


author: Anton Novojilov <andy@essentialkaos.com> - 3.2.0-0
changelog:
  - [cli] Added '-P'/'--pager' option to use pager for long output of versions
  - [cli|gen|clone] Improve verbose version info
  - [cli|gen|clone] Code refactoring
  - Dependencies update


author: Anton Novojilov <andy@essentialkaos.com> - 3.4.0-0
changelog:
  - [cli] Improved versions listing
  - [cli] Fixed bug with uninstalling
  - [cli] UI fixes
  - [cli] Code refactoring
  - Dependencies update


author: Anton Novojilov <andy@essentialkaos.com> - 1.5.0-0
changelog:
  - [cli] Added protip tips
  - [cli] Added user-specific preferences
  - [cli] Improved checks before role changing
  - [cli] Minor fixes


author: Anton Novojilov <andy@essentialkaos.com> - 1.6.0-0
changelog:
  - [cli] Print extra info using 'list' command with -x/--extra option
  - [cli] Added warning about unknown commands on minion/sentinel nodes
  - [cli] Improved "replication" command output
  - [sync] Added "bye" API command to unregister minion and sentinel nodes on stop
  - [sync] Added info about lag to client info
  - [sync] Better request validation
  - [sync] Improved error logging
  - [cli] [sync] Code refactoring


author: Anton Novojilov <andy@essentialkaos.com> - 1.6.1-0
changelog:
  - [cli] [sync] Minor UI improvements
  - [cli] Added check for newer versions
  - [cli] Fixed minor bug with coloring Redis commands in tips


author: Anton Novojilov <andy@essentialkaos.com> - 1.7.0-0
changelog:
  - [cli] Added '-P'/'--pager' option to use pager for long output
  - [cli] Improved 'help' command output
  - [cli] Fixed bug with separator in 'list' command output


author: Anton Novojilov <andy@essentialkaos.com> - 1.8.0-0
changelog:
  - [cli] [sync] Added integration with keepalived
  - [sync] Better command processing logging
  - [core] Fixed bug with changing owner of non-existent instance log file


author: Anton Novojilov <andy@essentialkaos.com> - 1.8.1-0
changelog:
  - [cli] Fixed bug with using raw data output when output device is not TTY
  - [cli] [sync] Minor UI improvements
  - Dependencies update


author: Anton Novojilov <andy@essentialkaos.com> - 1.10.0-0
changelog:
  - [cli] Fixed bug with showing current Redis version in 'info' command output
  - [cli] [sync] Send info about command initiator
  - [cli] Improved 'stats' command output
  - [cli] Added pager usage configuration to user preferences


author: Anton Novojilov <andy@essentialkaos.com> - 1.10.1-0
changelog:
  - [cli] Fixed bug with printing separator in 'log' output
  - [cli] Allow to run 'go' command on minions


author: Anton Novojilov <andy@essentialkaos.com> - 1.10.2-0
changelog:
  - [cli] Fixed bug with checking keepalived status while changing node role
  - [sync] Fixed bug with updating instances states on minion
  - [cli] [sync] Improved support information gathering
  - Dependencies update


author: Anton Novojilov <andy@essentialkaos.com> - 1.2.0-0
changelog:
  - [cli] Added 'validate-templates' command for templates validation
  - [cli] Added 'backup-create' command for creating RDB snapshots
  - [cli] Added 'backup-restore' command for restoring instance data from
    snapshots
  - [cli] Added 'backup-clean' command for deleting RDB snapshots
  - [cli] Added 'backup-list' command for listing RDB snapshots
  - [cli] Added -R/--raw option for forcing raw output
  - [sync] Disable read-only mode for replicas on minion if standby failover
    is used
  - [core] Run all processes with umask 027
  - [core] Use sync.Map for caching metadata
  - [cli] Improved properties filtering in 'conf' command
  - [cli] Added using of password variations for password auth
  - [cli] Improved instance listing filtering
  - [cli] Improved actions logging
  - [sync] 'max-init-sync-wait' depricated
  - [cli] Fixed raw output from 'top' command for long numbers
  - [cli] Fixed command execution with 'cli'
  - [cli] Fixed password check using password variations


author: Anton Novojilov <andy@essentialkaos.com> - 1.2.0-0
changelog:
  - [cli] Added 'validate-templates' command for templates validation
  - [cli] Added 'backup-create' command for creating RDB snapshots
  - [cli] Added 'backup-restore' command for restoring instance data from
    snapshots
  - [cli] Added 'backup-clean' command for deleting RDB snapshots
  - [cli] Added 'backup-list' command for listing RDB snapshots
  - [cli] Added -R/--raw option for forcing raw output
  - [sync] Disable read-only mode for replicas on minion if standby failover
    is used
  - [core] Run all processes with umask 027
  - [core] Use sync.Map for caching metadata
  - [cli] Improved properties filtering in 'conf' command
  - [cli] Added using of password variations for password auth
  - [cli] Improved instance listing filtering
  - [cli] Improved actions logging
  - [sync] 'max-init-sync-wait' deprecated
  - [cli] Fixed raw output from 'top' command for long numbers
  - [cli] Fixed command execution with 'cli'
  - [cli] Fixed password check using password variations


author: Anton Novojilov <andy@essentialkaos.com> - 1.3.0-0
changelog:
  - [cli] Added more filters to 'list' command
  - [cli] Verbose log messages about meta editing
  - Fixed sync user credentials rendering for standby instances


author: Anton Novojilov <andy@essentialkaos.com> - 1.4.0-0
changelog:
  - [cli] Changed syntax for listing instances with tags
  - [cli] Added full-text search to 'list' command
  - [cli] Changed tags rendering format
  - [cli] Fixed bug with handling 'MONITOR' command
  - Dependencies update


author: Anton Novojilov <andy@essentialkaos.com> - 1.4.2-0
changelog:
  - [cli] Improved support info output
  - [cli] Improved full-text search results highlighting
  - [sync] Added extended check for master IP
  - [sync] Improved configuration validation
  - Dependencies update


author: Anton Novojilov <andy@essentialkaos.com> - 1.4.3-0
changelog:
  - [cli] Fixed maintenance mode notification position
  - Removed outdated option from configuration file


author: Anton Novojilov <andy@essentialkaos.com> - 4.0.8-0
changelog:
  - Redis 4.0.8 fixes a single critical bug in the radix tree data structure
    used for Redis Cluster keys slot tracking.


author: Anton Novojilov <andy@essentialkaos.com> - 4.0.9-0
changelog:
  - When AOF is enabled with the fsync policy set to "always", we have a
    (rarely used) setup where Redis fsyncs every new write on disk. On this
    setup Redis MUST reply to the client with an OK code to the write, only
    after the write is already persisted on disk.
  - Latency monitor could report wrong latencies under certain conditions.
  - AOF rewriting could fail when a backgronud rewrite is triggered and
    at the same time the AOF is switched on/off.
  - Redis Cluster crash-recovery safety improved
  - Other smaller fixes


author: Anton Novojilov <andy@essentialkaos.com> - 4.0.10-0
changelog:
  - Important security issues related to the Lua scripting engine.
  - A bug with SCAN, SSCAN, HSCAN and ZSCAN, that may not return all the elements.
    We also add a regression test that can trigger the issue often when present,
    and may in theory be able to find unrelated regressions.
  - A PSYNC2 bug is fixed: Redis should not expire keys when saving RDB files
    because otherwise it is no longer possible to use such RDB file as a base
    for partial resynchronization. It no longer represents the right state.
  - Compatibility of AOF with RDB preamble when the RDB checksum is disabled.
  - Sentinel bug that in some cases prevented Sentinel to detect that the master
    was down immediately. A delay was added to the detection.
  - Other minor issues.


author: Anton Novojilov <andy@essentialkaos.com> - 4.0.11-0
changelog:
  - The disconnection time between the master and slave was reset in an
    incorrect place, sometimes a good slave will not be able to failover
    because it claims it was disconnected for too much time from the master.
  - A replication bug, rare to trigger but non impossible, is in Redis for
    years. It was lately discovered at Redis Labs and fixed by Oran Agra.
    It may cause disconnections, desynchronizations and other issues.
  - RANDOMKEY may go in infinite loop on rare situations. Now fixed.
  - EXISTS now works in a more consistent way on slaves.
  - Sentinel: backport of an option to deny a potential security problem
    when the SENTINEL command is used to configure an arbitrary script
    to execute.


author: Anton Novojilov <andy@essentialkaos.com> - 5.0.0-0
changelog:
  - The new Stream data type. https://redis.io/topics/streams-intro
  - New Redis modules APIs: Timers, Cluster and Dictionary APIs.
  - RDB now store LFU and LRU information.
  - The cluster manager was ported from Ruby (redis-trib.rb) to C code
    inside redis-cli. Check `redis-cli --cluster help` for more info.
  - New sorted set commands: ZPOPMIN/MAX and blocking variants.
  - Active defragmentation version 2.
  - Improvemenets in HyperLogLog implementations.
  - Better memory reporting capabilities.
  - Many commands with sub-commands now have an HELP subcommand.
  - Better performances when clients connect and disconnect often.
  - Many bug fixes and other random improvements.
  - Jemalloc was upgraded to version 5.1
  - CLIENT UNBLOCK and CLIENT ID.
  - The LOLWUT command was added. http://antirez.com/news/123
  - We no longer use the "slave" word if not for API backward compatibility.
  - Differnet optimizations in the networking layer.
  - Lua improvements:
    Better propagation of Lua scripts to slaves / AOF.
    Lua scripts can now timeout and get in -BUSY state in the slave as well.
  - Dynamic HZ to balance idle CPU usage with responsiveness.
  - The Redis core was refactored and improved in many ways.


author: Anton Novojilov <andy@essentialkaos.com> - 5.0.1-0
changelog:
  - Sentinel now supports authentication! Check the Sentinel official doc
    for more info.
  - Redis-cli cluster "fix" is now able to fix a big number of clusters put
    in a bad condition. Previously many corner cases were not covered.
  - Fix RESTORE mismatch reply when certain keys already expired.
  - Fix an XCLAIM non trivial issue: sometimes the command returned a wrong
    entry or desynchronized the protocol.
  - Stack trace generation on the Raspberry PI (and 32bit ARM) fixed.
  - Don't evict expired keys when the KEYS command is called, in order to
    avoid a mass deletion event. However expired keys are not displayed
    by KEYS as usually.
  - Improvements in the computation of the memory used, when estimating
    the AOF buffers.
  - XRANGE COUNT of 0 fixed.
  - "key misses" stats accounting fixed. Many cache misses were not counted.
  - When in MULTI state, return OOM while accumulating commands and there
    is no longer memory available.
  - Fix build on FreeBSD and possibly others.
  - Fix a crash in Redis modules, thread safe context reply accumulation.
  - Fix a race condition when producing the RDB file for full SYNC.
  - Disable protected mode in Sentinel.
  - More commands now have the HELP subcommand.
  - Fixed an issue about adaptive server HZ timer.
  - Fix cluster-replica-no-failover option name.


author: Anton Novojilov <andy@essentialkaos.com> - 5.0.2-0
changelog:
  - Release fixes two issues with Streams consumer
    groups, where items could be returned duplicated by XREADGROUP when accessing
    the history, and another bug where XREADGROUP can report some history even
    if the comsumer pending list is empty.


author: Anton Novojilov <andy@essentialkaos.com> - 5.0.3-0
changelog:
  - Redis no longer panics when you send data to a replica-mode connection that
    is in MONITOR or SYNC mode.
  - Fixes to certain sorted set edge cases. You are unlikely to ever notice those
    issues, but now it is more correct.
  - Certain BSD variants now are better supported: build & register logging
    on crash.
  - The networking core now recovers if an IPv6 address is listed in bind but
    is actually not able to work because there is no such protocol in the
    system.
  - redis-cli cluster mode improved in many ways. Especially the fix subcommand
    work was enhanced to cover other edge cases that were still not covered
    after the work done for Redis 5.
  - MEMORY USAGE is now more accurate.
  - DEBUG DIGEST-VALUE added in case you want to make sure a given set of keys
    (and not the whole DB) are excatly the same between two instances.
  - Fix a potential crash in the networking code related to recent changes
    to the way the reply is consumed.
  - Reject EXEC containing write commands against an instance that changed role
    from master to replica during our transaction.
  - Fix a crash in KEYS and other commands using pattern matching, in an edge
    case where the pattern contains a zero byte.
  - Fix eviction during AOF loading due to maxmemory triggered by commands
    executed in loading state.


author: Anton Novojilov <andy@essentialkaos.com> - 5.0.4-0
changelog:
  - Hyperloglog different coding errors leading to potential crashes were fixed.
  - A replication bug leading to a potential crash in case of plain misuse of
    handshake commands was fixed.
  - XCLAIM command incrementing of number of deliveries was fixed.
  - LFU field management in objects was improved.
  - A potential overflow in the redis-check-aof was fixed.
  - A memory leak in case of API misuse was fixed.
  - ZPOP* behavior when count is 0 is fixed.
  - A few redis-cli --cluster bugs were fixed, plus a few improvements.
  - Many other smaller bugs.


author: Anton Novojilov <andy@essentialkaos.com> - 5.0.5-0
changelog:
  - Streams: a bug in the iterator could prevent certain items to be returned in
    range queries under specific conditions.
  - Memleak in bitfieldCommand fixed.
  - Modules API: Preserve client->id for blocked clients.
  - Fix memory leak when rewriting config file in case of write errors.
  - New modules API: RedisModule_GetKeyNameFromIO().
  - Fix non critical bugs in diskless replication.
  - New mdouels API: command filtering. See RedisModule_RegisterCommandFilter();
  - Tests improved to be more deterministic.
  - Fix a Redis Cluster bug, manual failover may abort because of the master
    sending PINGs to the replicas.


author: Anton Novojilov <andy@essentialkaos.com> - 2.0.0-0
changelog:
  - Added colors and timestamp formatting
  - Added option for enabling raw output
  - Code refactoring
  - Fixed bug in usage examples


author: Anton Novojilov <andy@essentialkaos.com> - 2.1.0-0
changelog:
  - ek package updated to the latest stable version
  - Added completion generation for bash, zsh and fish


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.0-0
changelog:
  - Fixed bug with percentile calculation
  - ek package updated to latest version
  - More precise latency calculation
  - Removed external packages
  - Improved UI
  - Code refactoring


author: Anton Novojilov <andy@essentialkaos.com> - 3.2.1-0
changelog:
  - Package ek updated to the latest stable version
  - Removed pkg.re usage
  - Added module info
  - Added Dependabot configuration


author: Anton Novojilov <andy@essentialkaos.com> - 3.1.1-0
changelog:
  - Added pauses between checks in 'check' command output
  - Fixed panic while checking repositories consistency
  - Fixed some typos
  - Dependencies update


author: Anton Novojilov <andy@essentialkaos.com> - 3.2.0-0
changelog:
  - Added xz compression support for repository metadata
  - Added zst compression support for repository metadata
  - Added changelog date to 'info' command output
  - Improved changelog record search
  - Fixed bug with using compression type defined in configuration file


author: Anton Novojilov <andy@essentialkaos.com> - 3.3.0-0
changelog:
  - Added -pi/--postpone-index option to postpone index rebuild after some
    commands
  - Added package filtering for 'cleanup' command
  - Improved pagers (more/less) support
  - UI improvements
  - Fixed 'payload' command output


author: Anton Novojilov <andy@essentialkaos.com> - 3.3.5-0
changelog:
  - Fixed bug with changing permissions on repodata after full reindex
  - Code refactoring
  - Dependencies update


author: Anton Novojilov <andy@essentialkaos.com> - 2.8.0-0
changelog:
  - Speeded up fetching data from git repositories
  - Show info about packaged sources size
  - Automatic directory search for downloads


author: Anton Novojilov <andy@essentialkaos.com> - 2.11.3-0
changelog:
  - Fixed major bug with checking the availability of utilities for checking
    remote node accessibility


author: Anton Novojilov <andy@essentialkaos.com> - 2.12.0-0
changelog:
  - Fixed bug with fetching sources from GitHub using git
  - Much faster data fetching from git repositories


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.0-0
changelog:
  - Added new option for defining build nodes indices
  - Added panes naming in parallel build
  - Added HUP signal handling
  - Better Docker and Podman support
  - Improved remote hostname parsing
  - Improved usage info formatting
  - Option '--depinstall'/'-di' renamed to '--install'/'-I'
  - Removed packages uploading feature


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.1-0
changelog:
  - Fixed bug with local build due to lack of upload.shx file
  - Improved container engine check in nodeinfo
  - Minor UI improvements


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.2-0
changelog:
  - Fixed bug with parsing in-spec variables with asterisk symbols
  - Fixed bug with installing dependencies if path to spec file is not relative


author: Anton Novojilov <andy@essentialkaos.com> - 3.2.0-0
changelog:
  - Use spec-builddep instead of yum-builddep for installing dependencies
  - Added option '--install-latest/-IL' for installing the latest versions of
    dependencies


author: Anton Novojilov <andy@essentialkaos.com> - 3.3.0-0
changelog:
  - Option '-k'/'--key' now accepts base64 encoded data with private key
  - Option '-r'/'--remote' can now be passed multiple times
  - Added private key validation
  - Added tmux check for parallel build
  - Improved version info output
  - Improved '-r'/'--remote' option validation
  - Run tmux with UTF-8 support
  - Code refactoring
  - Fixed bug with useless build host info parsing on multibuild
  - Fixed bug with cleaning temporary data on multibuild
  - Fixed bug with rendering help content when using Docker


author: Anton Novojilov <andy@essentialkaos.com> - 1.3.0-0
changelog:
  - Fixed bug with deleting directories inside rpmbuild directory
  - Added initenv utility
  - buildmon refactoring


author: Anton Novojilov <andy@essentialkaos.com> - 1.5.0-0
changelog:
  - Add FTDate entry in DBFFieldType
  - Remove PROJ.4 dependency and functionality, causing removal of SHPProject(),
    SHPSetProjection() and SHPFreeProjection() from contrib/shpgeo.h, and removal
    of the contrib shpproj utility
  - shpopen.c: avoid being dependent on correctness of file size field in .shp


author: Anton Novojilov <andy@essentialkaos.com> - 1.4.0-0
changelog:
  - fasthttp package replaced by erikdubbelboer fork
  - slack package updated to v3
  - Added open files limits to init script
  - Added configuration file for log rotation


author: Anton Novojilov <andy@essentialkaos.com> - 1.5.0-0
changelog:
  - Added systemd unit
  - Improved SysV init script
  - Rebuilt with the latest version of the slack package


author: Anton Novojilov <andy@essentialkaos.com> - 1.6.0-0
changelog:
  - Improved mechanics of checking users presence
  - Added support of debug slack logging
  - Added icon for DND + offline status
  - slack package switched to original version
  - ek package updated to the latest stable version
  - fasthttp package updated to the latest stable release


author: Anton Novojilov <andy@essentialkaos.com> - 1.7.0-0
changelog:
  - Fixed problem with initial fetching of DND statuses
  - nlopes/slack package replaced by slack-go/slack
  - fasthttp updated to the latest version
  - ek package updated to the latest stable version
  - Minor improvements


author: Anton Novojilov <andy@essentialkaos.com> - 0.0.3-0
changelog:
  - Added dependencies deduplication
  - Fixed check for rpm-build
  - Added exit code of yum/dnf to error message about failed install


author: Anton Novojilov <andy@essentialkaos.com> - 1.07-0
changelog:
  - Pass signals that should terminate to ssh
  - Fix race around signal handling
  - Report IPC errors to stderr
  - Report if can't open -f password file


author: Anton Novojilov <andy@essentialkaos.com> - 1.10-0
changelog:
  - Remove sig unsafe functions from signal handler.
  - Allow -e to explicitly specify the environment variable to use
  - Unset the variable specified with -e before calling subprogram
  - Change the logic for setting a controlling TTY. Fixes compatibility
    issues with OpenSolaris and MSYS/Cygwin.


author: Anton Novojilov <andy@essentialkaos.com> - 2.0.0-0
changelog:
  - Improved UI
  - Info about HTTP transactions
  - Info about TLS 1.3 cipher suites
  - Info about Bleichenbacher vulnerability
  - Info about Ticketbleed vulnerability
  - Info about root trust stores
  - Info about Static Public Key Pinning
  - Info about ECDH public server param reuse
  - Info about required SNI
  - Info about supported named groups
  - Migrated to sslscan.v10
  - Minor improvements


author: Anton Novojilov <andy@essentialkaos.com> - 2.3.0-0
changelog:
  - Added Zombie Poodle vulnerability info
  - Added Golden Doodle vulnerability info
  - Added Sleeping Poodle vulnerability info
  - Added OpenSSL 0-Length vulnerability info


author: Anton Novojilov <andy@essentialkaos.com> - 2.4.0-0
changelog:
  - Added '--max-left/-M' for checking certificate expiry date
  - Added completions for bash, fish and zsh
  - Minor improvements


author: Anton Novojilov <andy@essentialkaos.com> - 2.7.5-0
changelog:
  - Fixed the bug with showing the number of certificate validity days
  - Fixed the bug with text alignment if colors are disabled
  - Typos fixed


author: Anton Novojilov <andy@essentialkaos.com> - 2.8.0-0
changelog:
  - Add '-G'/'--pager' option to use pager for long output
  - Minor UI improvements
  - Code refactoring
  - Dependencies update
  - Fixed panic when API returned empty slice with certificates


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.0-0
changelog:
  - sslscan package update to v14
  - Added account registration feature
  - Improved support information gathering
  - Code refactoring
  - Dependencies update


author: Anton Novojilov <andy@essentialkaos.com> - 0.3.0-0
changelog:
  - Added output filtering feature
  - Output overall swap usage info
  - ek package updated to latest stable release


author: Anton Novojilov <andy@essentialkaos.com> - 2.2.1-0
changelog:
  - Support Git's 'diff-highlight' program when diff-highlight is set to either
  - true or the path of the script to use for post-processing.
  - Add navigation between merge commits. (GH #525)
  - Add 'A' as a binding to apply a stash without dropping it.
  - Bind 'Ctrl-D' and 'Ctrl-U' to half-page movements by default.
  - manual: Mention how to change default Up/Down behavior in diff view.
  - Reorganize checking of libraries for termcap functions.
  - Fix :goto <id> error message.


author: Anton Novojilov <andy@essentialkaos.com> - 2.2.2-0
changelog:
  - Use diff-options when preparing the diff in the stage view to make the diff
    state configurable.
  - Add 'status-show-untracked-files' option mirroring Git's
  - 'status.showUntrackedFiles' to toggle display of untracked files. in the
    status view. On by default.
  - Update ax_with_curses.m4 and use pkg-config to detect.
  - Add tig-pick script for using Tig as a commit picker.
  - Add "smart case" option ('set ignore-case = smart-case') to ignore case when
    the search string is lower-case only.
  - Fix author ident cache being keyed by email only.
  - Fix periodic refresh mode to properly detect ref changes.
  - Add workaround for detecting failure to start the diff-highlight process.
  - Show diffs in the stash view when set mailmap = true.
  - Fix parsing of git-log revision arguments, such as --exclude=... in
    conjunction with --all.
  - Fix diff stat parsing for binary copies.
  - Fix crash when resizing terminal while search is in progress.
  - Fix argument filtering to pass more arguments through to Git.
  - Check for termcap support in split tinfo libs.


author: Anton Novojilov <andy@essentialkaos.com> - 2.3.0-0
changelog:
  - The width setting on the status, text and commit-title columns was
    never applied and has been removed.
  - Improve load performance by throttling screen updates.
  - Speed up graph rendering.
  - Enable scroll optimizations for Terminal.app and iTerm2.
  - Improve the test suite portability to not depend on GNU sed.
  - Make build reproducible. (https://reproducible-builds.org/)
  - Enable binding to more symbolic keys and keys with control modifier:
  - F13-F19, ShiftLeft, ShiftRight, ShiftDel, ShiftHome, ShiftEnd,
  - ShiftTab, Ctrl-C, Ctrl-V, Ctrl-S, and Ctrl-@.
  - Persist readline history to ~/.tig_history or $XDG_DATA_HOME/tig/history.
  - Use history-size to control the number of entries to save.
  - Preload last search from persistent history.
  - Add view-close-no-quit action, unbound by default.
  - Add mouse-wheel-cursor option (off by default) when set to true causes
    wheel actions to prefer moving the cursor instead of scrolling.
  - Add truncation-delimiter option, set to ~ by default.
  - Add -q parameter to source for "source-if-present".
  - Add :echo prompt command to display text in the status bar.
  - Make diff-highlight colors configurable.
  - Let Ctrl-C exit Y/N dialog, menu prompts and the file finder.
  - Hide cursor unless at textual prompt.
  - Expand tilde ('~') in :script paths.
  - Show single-line output of external command in status bar.
  - Disable the graph when --no-merges is passed.
  - Print backtraces on segfault in debug mode.
  - Ignore script lines starting with # (comment).
  - Complete repo:* variables when readline is enabled.
  - Incorporate XTerm's wcwidth.c to find Unicode widths.
  - Fix graph display issues.
  - Fix and improve rendering of Unicode characters.
  - Handle hyphenated directory names when listing content.
  - Do not jump to next match when cancelling the search prompt.
  - Fix clearing of the status line after Ctrl-C.
  - Fix handling of width on line-number and trimmed width of 1.
  - Set cursor position when not updating prompt contents.
  - Erase status line at exit time for users without altscreen-capable terminals.
  - Fix unexpected keys when restoring from suspend (Ctrl-Z).
    contrib/vim.tigrc: Also bind G in the main as a workaround for limitations of
    the none action.
  - Only override blame-options when commands are given and fix parsing of -C.
  - Fix diff name discovery to better handle prefixes.
  - Interpret button5 as wheel-down.
  - Fix back / parent in tree view.
  - Fix memory corruption in concat_argv and file finder.
  - Fix reading from stdin for tig show.
  - Document problem of outdated system-wide tigrc files in Homebrew.
  - Repaint the display when toggling line-graphics.
  - Fix custom date formatting support longer strings.
  - Don't segfault on ":exec" irregular args.
  - Fix segfault when calling htab_empty.


author: Anton Novojilov <andy@essentialkaos.com> - 2.3.1-0
changelog:
  - Restore TTY attributes.
  - Handle \n like \r.
  - Add workaround that detects busy loops when Tig loses the TTY. This may
    happen if Tig does not receive the HUP signal (e.g. when started with
    nohup).
  - Fix compatibility with ncurses-5.4 which caused copy-pasting to not work
    in the prompt.
  - tig(1): document correct environment variable.


author: Anton Novojilov <andy@essentialkaos.com> - 2.4.0-0
changelog:
  - Add 'send-child-enter' option to control interaction with child views.
  - Update make config defaults for Cygwin to ncurses6.
  - Build against netbsd-curses.
  - Change the blame view to render more like git-blame(1).
  - Improve worktree and submodule support.
  - Support running Tig via a Git alias.
  - Use ISO-8601 letters for short relative dates.
  - Change date formatting to show time zones by default.
  - Use utf8proc to handle Unicode characters.
  - Fix file(1) argument on Linux used for resolving encodings.
  - Fix underflow in the file search.
  - Fix line numbers in grep view when scrolled.
  - Pass command line args through to the stage view.
  - Fix resource leak.
  - Fix various compiler warnings and pointer arithmetic.
  - Workaround potential null pointer dereferences.
  - Bind to single and double quotes by using the and key mappings.
  - Make Tig the process-group leader and clean child processes.
  - Fix sh compatibility in contrib/tig-pick.
  - Fix incorrect behaviour of up and down keys in diff view when opened from diff
    preview.
  - Open the stage view when maximizing a split diff view of (un)staged changes.
  - Use fully qualified reference name for tags when conflicting with branch name.
  - Fix resize not working after entering command.
  - Use stack allocated memory to handle TIG_LS_REMOTE.
  - Fix deleted file mode line remains highlighted after hovering in diff or stage
    view.
  - Fix TIG_LS_REMOTE not working with git-ls-remote(1).


author: Anton Novojilov <andy@essentialkaos.com> - 2.5.0-0
changelog:
  - Single file view enters blame mode on "b"
  - Show untracked files in the default view
  - Disable graph if log.follow is enabled and there is only one pathspec
  - Disable graph for author searches
  - git_colors: interpret 'ul' as 'underline'
  - Add refname variable
  - Add -C option to specify the working directory
  - Improve behaviour of auto and periodic refresh modes
  - Add support for repos created with git --work-tree
  - Add diff-highlight to pager mode
  - Show annotated commits in main view
  - Introduce reflog view
  - Add option to start with cursor on HEAD commit
  - Support combined diffs with more than 2 parents
  - Improve how a toggle option value is shown on the status line
  - Add options to filter refs output
  - Update utf8proc to v2.4.0
  - Fix garbled cursor line with older ncurses versions
  - Fix diff highlighting of removed lines starting with -- and added line
    starting with ++
  - Fix loop when displaying search result if regex matches an empty string
  - Add synchronous command description in tigrc
  - Fix parsing of git rev-parse output
  - Propagate --first-parent to diff arguments
  - Use proper type for hash table size
  - Fix incorrect cppcheck warning about realloc() use
  - Don't shift signed int by 31 bits
  - Fix Vim going background after running Tig outside of a git repository
  - make-builtin-config: use "read -r"
  - Fix segfaults with readline 8.0
  - Reset state before closing stage view automatically
  - Don't use a child view as previous view
  - Force reload of VIEW_FLEX_WIDTH views only when needed
  - Combined diff uses @@@ as hunk marker
  - Fix memory leak induced by 'tig grep'
  - Fix memory leak in main view
  - Exit gracefully if refs view was defined without ref column
  - Fix pager view not moving up when child view is open
  - make-builtin-config: Fix unportable sed usage in read_tigrc()
  - Properly detect combined diffs


author: Anton Novojilov <andy@essentialkaos.com> - 2.6-0
changelog:
  - Add select-pane -T to set pane title.
  - Fix memory leak when lines with BCE are removed from history.
  - Fix (again) the "prefer unattached" behaviour of attach-session.
  - Reorder how keys are checked to allow keys to be specified that have a
    leading escape.
  - Support REP escape sequence (\033[b).
  - Run alert hooks based on options rather than always, and allow further bells
    even if there is an existing bell.
  - Add -d flag to display-panes to override display-panes-time.
  - Add selection_present format when in copy mode (allows key bindings that do
    something different if there is a selection).
  - Add pane_at_left, pane_at_right, pane_at_top and pane_at_bottom formats.
  - Make bell, activity and silence alerting more consistent by: removing the
    bell-on-alert option; adding activity-action and silence-action options with
    the same possible values as the existing bell-action; adding a "both" value
    for the visual-bell, visual-activity and visual-silence options to trigger
    both a bell and a message.
  - Add a pane_pipe format to show if pipe-pane is active.
  - Block signals between forking and resetting signal handlers so that the
    libevent signal handler doesn't get called in the child and incorrectly write
    into the signal pipe that it still shares with the parent.
  - Allow punctuation in pane_current_command.
  - Add -c for respawn-pane and respawn-window.
  - Wait for any remaining data to flush when a pane is closed while pipe-pane is
    in use.
  - Fix working out current client with no target.
  - Try to fallback to C.UTF-8 as well as en_US.UTF-8 when looking for a UTF-8
    locale.
  - Add user-keys option for user-defined key escape sequences (mapped to User0
    to User999 keys).
  - Add pane-set-clipboard hook.
  - FAQ file has moved out of repository to online.
  - Fix problem with high CPU usage when a client dies unexpectedly.
    941.
  - Do a dance on OS X 10.10 and above to return tmux to the user namespace,
    allowing access to the clipboard.
  - Do not allow escape sequences which expect a specific terminator (APC, DSC,
    OSC) to wait for forever - use a small timeout. This reduces the chance of
    the pane locking up completely when sent garbage (cat /dev/random or
    similar).
  - Support SIGUSR2 to toggle logging on a running server, also generate the
    "out" log file with -vv not -vvvv.
  - Make set-clipboard a three state option: on (tmux both sends to outside
    terminal and accepts from applications inside); external (tmux sends outside
    but does not accept inside); and off.
  - Fix OSC 4 palette setting for bright foreground colours.
  - Use setrgbf and setrgbb terminfo(5) capabilities to set RGB colours, if they
    are available. (Tc is still supported as well.)
  - Fix redrawing panes when they are resized several times but end up with the
    size unchanged (for example, splitw/resizep -Z/breakp).
  - Major rewrite of choose mode. Now includes preview, sorting, searching and
    tagging; commands that can be executed directly from the mode (for example,
    to delete one or more buffers); and filtering in tree mode.
  - choose-window and choose-session are now aliases of choose-tree (in the
    command-alias option).
  - Support OSC 10 and OSC 11 to set foreground and background colours.
  - Check the U8 capability to determine whether to use UTF-8 line drawing
    characters for ACS.
  - Some missing notifications for layout changes.
  - Control mode clients now do not affect session sizes until they issue
    refresh-client -C. new-session -x and -y works with control clients even if
    the session is not detached.
  - All new sessions that are unattached (whether with -d or started with no
    terminal) are now created with size 80 x 24. Whether the status line is on or
    off does not affect the size of new sessions until they are attached.
  - Expand formats in option names and add -F flag to expand them in option
    values.
  - Remember the search string for a pane even if copy mode is exited and entered
    again.
  - Some further BCE fixes (scroll up, reverse index).
  - Improvements to how terminals are cleared (entirely or partially).


author: Anton Novojilov <andy@essentialkaos.com> - 2.7-0
changelog:
  - Remove EVENT_- variables from environment on platforms where tmux uses them
    so they do not pass on to panes.
  - Fixes for hooks at server exit.
  - Remove SGR 10 (was equivalent to SGR 0 but no other terminal seems to do
    this).
  - Expand formats in window and session names.
  - Add -Z flag to choose-tree, choose-client, choose-buffer to automatically
    zoom the pane when the mode is entered and unzoom when it exits, assuming the
    pane is not already zoomed. This is now part of the default key bindings.
  - Add C-g to exit modes with emacs keys.
  - Add exit-empty option to exit server if no sessions (defaults to on).
  - Show if a filter is present in choose modes.
  - Add pipe-pane -I to to connect stdin of the child process.
  - Performance improvements for reflow.
  - Use RGB terminfo(5) capability to detect RGB colour terminals (the existing
    Tc extension remains unchanged).
  - Support for ISO colon-separated SGR sequences.
  - Add select-layout -E to spread panes out evenly (bound to E key).
  - Support wide characters properly when reflowing.
  - Pass PWD to new panes as a hint to shells, as well as calling chdir().
  - Performance improvements for the various choose modes.
  - Only show first member of session groups in tree mode (-G flag to choose-tree
    to show all).
  - Support %else in config files to match %if.
  - Fix "kind" terminfo(5) capability to be S-Down not S-Up.
  - Add a box around the preview label in tree mode.
  - Show exit status and time in the remain-on-exit pane text.
  - Correctly use pane-base-index in tree mode.
  - Change the allow-rename option default to off.
  - Support for xterm(1) title stack escape sequences.
  - Correctly remove padding cells to fix a UTF-8 display problem


author: Anton Novojilov <andy@essentialkaos.com> - 2.8-0
changelog:
  - Make display-panes block the client until a pane is chosen or it
    times out.
  - Clear history on RIS like most other terminals do.
  - Add an "Any" key to run a command if a key is pressed that is not
    bound in the current key table.
  - Expand formats in load-buffer and save-buffer.
  - Add a rectangle_toggle format.
  - Add set-hook -R to run a hook immediately.
  - Add README.ja.
  - Add pane focus hooks.
  - Allow any punctuation as separator for s/x/y not only /.
  - Improve resizing with the mouse (fix resizing the wrong pane in some
    layouts, and allow resizing multiple panes at the same time).
  - Allow , and } to be escaped in formats as #, and #}.
  - Add KRB5CCNAME to update-environment.
  - Change meaning of -c to display-message so the client is used if it
    matches the session given to -t.
  - Fixes to : form of SGR.
  - Add x and X to choose-tree to kill sessions, windows or panes.


author: Anton Novojilov <andy@essentialkaos.com> - 2.9a-0
changelog:
  - Fix bugs in select-pane and the main-horizontal and main-vertical layouts.
  - Attempt to preserve horizontal cursor position as well as vertical with
    reflow.
  - Rewrite main-vertical and horizontal and change layouts to better handle the
    case where all panes won't fit into the window size, reduce problems with
    pane border status lines and fix other bugs mostly found by Thomas Sattler.
  - Add format variables for the default formats in the various modes
    (tree_mode_format and so on) and add a -a flag to display-message to list
    variables with values.
  - Add a -v flag to display-message to show verbose messages as the format is
    parsed, this allows formats to be debugged
  - Add support for HPA (\033[`).
  - Add support for origin mode (\033[?6h).
  - No longer clear history on RIS.
  - Extend the #[] style syntax and use that together with previous format
    changes to allow the status line to be entirely configured with a single
    option.
  - Add E: and T: format modifiers to expand a format twice (useful to expand the
    value of an option).
  - The individual -fg, -bg and -attr options have been removed; they
    were superseded by -style options in tmux 1.9.
  - Allow more than one mode to be opened in a pane. Modes are kept on a stack
    and retrieved if the same mode is entered again. Exiting the active mode goes
    back to the previous one.
  - When showing command output in copy mode, call it view mode instead (affects
    pane_mode format).
  - Add -b to display-panes like run-shell.
  - Handle UTF-8 in word-separators option.
  - New "terminal" colour allowing options to use the terminal default colour
    rather than inheriting the default from a parent option.
  - Do not move the cursor in copy mode when the mouse wheel is used.
  - Use the same working directory rules for jobs as new windows rather than
    always starting in the user's home.
  - Allow panes to be one line or column in size.
  - Go to last line when goto-line number is out of range in copy mode.
  - Yank previously cut text if any with C-y in the command prompt, only use the
    buffer if no text has been cut.
  - Add q: format modifier to quote shell special characters.
  - Add StatusLeft and StatusRight mouse locations (keys such as
    MouseDown1StatusLeft) for the status-left and status-right areas of the
    status line.
  - Add -Z to find-window.
  - Support for windows larger than the client.


author: Anton Novojilov <andy@essentialkaos.com> - 3.0-0
changelog:
  - xterm 348 now disables margins when resized, so send DECLRMM again after
    resize.
  - Add support for the SD (scroll down) escape sequence.
  - Expand arguments to C and s format modifiers to match the m modifier.
  - Add support for underscore colours (Setulc capability must be added with
    terminal-overrides as described in tmux(1)).
  - Add a "fill" style attribute for the fill colour of the drawing area (where
    appropriate).
  - New -H flag to send-keys to send literal keys.
  - Format variables for pane mouse modes (mouse_utf8_flag and mouse_sgr_flag)
    and for origin mode (origin_flag).
  - Add -F to refresh-client for flags for control mode clients, only one flag
    (no-output) supported at the moment.
  - Add a few vi(1) keys for menus.
  - Add pane options, set with set-option -p and displayed with show-options -p.
    Pane options inherit from window options (so every pane option is also
    a window option). The pane style is now configured by setting window-style
    and window-active-style in the pane options; select-pane -P and -g now change
    the option but are no longer documented.
  - Do not document set-window-option and show-window-options. set-option -w and
    show-options -w should be used instead.
  - Add a -A flag to show-options to show parent options as well (they are marked
    with a *).
  - Resize panes lazily - do not resize unless they are in an attached, active
    window.
  - Add regular expression support for the format search, match and substitute
    modifiers and make them able to ignore case. find-window now accepts -r to
    use regular expressions.
  - Do not use $TMUX to find the session because for windows in multiple sessions
    it is wrong as often as it is right, and for windows in one session it is
    pointless. Instead use TMUX_PANE if it is present.
  - Do not always resize the window back to its original size after applying a
    layout, keep it at the layout size until it must be resized (for example when
    attached and window-size is not manual).
  - Add new-session -X and attach-session -x to send SIGHUP to parent when
    detaching (like detach-client -P).
  - Support for octal escapes in strings (such as \007) and improve list-keys
    output so it parses correctly if copied into a configuration file.
  - INCOMPATIBLE: Add a new {} syntax to the configuration file. This is a string
    similar to single quotes but also includes newlines and allows commands that
    take other commands as string arguments to be expressed more clearly and
    without additional escaping.
    A literal { and } or a string containing { or } must now be escaped or
    quoted, for example '{' and '}' instead of { or }, or 'X#{foo}' instead of
    X#{foo}.
  - New <, >, <= and >= comparison operators for formats.
  - Improve escaping of special characters in list-keys output.
  - INCOMPATIBLE: tmux's configuration parsing has changed to use yacc(1). There
    is one incompatible change: a \ on its own must be escaped or quoted as
    either \\ or '\' (the latter works on older tmux versions).
    Entirely the same parser is now used for parsing the configuration file
    and for string commands. This means that constructs previously only
    available in .tmux.conf, such as %if, can now be used in string commands
    (for example, those given to if-shell - not commands invoked from the
    shell, they are still parsed by the shell itself).
  - Add support for the overline attribute (SGR 53). The Smol capability is
    needed in terminal-overrides.
  - Add the ability to create simple menus. Introduces new command
    display-menu. Default menus are bound to MouseDown3 on the status line;
    MouseDown3 or M-MouseDown3 on panes; MouseDown3 in tree, client and
    buffer modes; and C-b C-m and C-b M-m.
  - Allow panes to be empty (no command). They can be created either by piping to
    split-window -I, or by passing an empty command ('') to split-window. Output
    can be sent to an existing empty window with display-message -I.
  - Add keys to jump between matching brackets (emacs C-M-f and C-M-b, vi %).
  - Add a -e flag to new-window, split-window, respawn-window, respawn-pane to
    pass environment variables into the newly created process.
  - Hooks are now stored in the options tree as array options, allowing them to
    have multiple separate commands. set-hook and show-hooks remain but
    set-option and show-options can now also be used (show-options will only show
    hooks if given the -H flag). Hooks with multiple commands are run in index
    order.
  - Automatically scroll if dragging to create a selection with the mouse and the
    cursor reaches the top or bottom line.
  - Add -no-clear variants of copy-selection and copy-pipe which do not clear the
    selection after copying. Make copy-pipe clear the selection by default to be
    consistent with copy-selection.
  - Add an argument to copy commands to set the prefix for the buffer name, this
    (for example) allows buffers for different sessions to be named separately.
  - Update session activity on focus event.
  - Pass target from source-file into the config file parser so formats in %if
    and %endif have access to more useful variables.
  - Add the ability to infer an option type (server, session, window) from its
    name to show-options (it was already present in set-option).


author: Anton Novojilov <andy@essentialkaos.com> - 3.0a-0
changelog:
  - Do not require REG_STARTEND.
  - Respawn panes or windows correctly if default-command is set.
  - Add missing option for after-kill-pane hook.
  - Fix for crash with a format variable that doesn't exist.
  - Do not truncate list-keys output on some platforms.
  - Do not crash when restoring a layout with only one pane.


author: Anton Novojilov <andy@essentialkaos.com> - 3.1-0
changelog:
  - Only search the visible part of the history when marking (highlighting)
    search terms. This is much faster than searching the whole history and solves
    problems with large histories. The count of matches shown is now the visible
    matches rather than all matches.
  - Search using regular expressions in copy mode. search-forward and
    search-backward use regular expressions by default; the incremental versions
    do not.
  - Turn off mouse mode 1003 as well as the rest when exiting.
  - Add selection_active format for when the selection is present but not moving
    with the cursor.
  - Fix dragging with modifier keys, so binding keys such as C-MouseDrag1Pane and
    C-MouseDragEnd1Pane now work.
  - Add -a to list-keys to also list keys without notes with -N.
  - Do not jump to next word end if already on a word end when selecting a word;
    fixes select-word with single character words and vi(1) keys.
  - Fix top and bottom pane calculation with pane border status enabled.
  - Add support for adding a note to a key binding (with bind-key -N) and use
    this to add descriptions to the default key bindings. A new -N flag to
    list-keys shows key bindings with notes. Change the default ? binding to use
    this to show a readable summary of keys. Also extend command-prompt to return
    the name of the key pressed and add a default binding (/) to show the note
    for the next key pressed.
  - Add support for the iTerm2 DSR 1337 sequence to get the terminal version.
  - Treat plausible but invalid keys (like C-BSpace) as literal like any other
    unrecognised string passed to send-keys.
  - Detect iTerm2 and enable use of DECSLRM (much faster with horizontally split
    windows).
  - Add -Z to default switch-client command in tree mode.
  - Add ~ to quoted characters for %%.
  - Document client exit messages in the manual page.
  - Do not let read-only clients limit the size, unless all clients are
    read-only.
  - Add a number of new formats to inspect what sessions and clients a window is
    present or active in.
  - Change file reading and writing to go through the client if necessary. This
    fixes commands like "tmux loadb /dev/fd/X". Also modify source-file to
    support "-" for standard input, like load-buffer and save-buffer.
  - Add ~/.config/tmux/tmux.conf to the default search path for configuration
    files.
  - Bump the escape sequence timeout to five seconds to allow for longer
    legitimate sequences.
  - Make a best effort to set xpixel and ypixel for each pane and add formats for
    them.
  - Add push-default to status-left and status-right in status-format[0].
  - Do not clear search marks on cursor movement with vi(1) keys.
  - Add p format modifier for padding to width and allow multiple substitutions
    in a single format.
  - Add -f for full size to join-pane (like split-window).
  - Do not use bright when emulating 256 colours on an 8 colour terminal because
    it is also bold on some terminals.
  - Make select-pane -P set window-active-style also to match previous behaviour.
  - Do not truncate list-keys output.
  - Turn automatic-rename back on if the \033k rename escape sequence is used
    with an empty name.
  - Add support for percentage sizes for resize-pane ("-x 10%"). Also change
    split-window and join-pane -l to accept similar percentages and deprecate the
    -p flag.
  - Add -F flag to send-keys to expand formats in search-backward and forward
    copy mode commands and copy_cursor_word and copy_cursor_line formats for word
    and line at cursor in copy mode. Use for default # and - binding with vi(1)
    keys.
  - Add formats for word and line at cursor position in copy mode.
  - Add formats for cursor and selection position in copy mode.
  - Support all the forms of RGB colour strings in OSC sequences rather than
    requiring two digits.
  - Limit lazy resize to panes in attached sessions only.
  - Add an option to set the key sent by backspace for those whose system uses ^H
    rather than ^?.
  - Change new-session -A without a session name (that is, no -s option also) to
    attach to the best existing session like attach-session rather than a new
    one.
  - Add a "latest" window-size option which tries to size windows based on the
    most recently used client. This is now the default.
  - Add simple support for OSC 7 (result is available in the pane_path format).
  - Add push-default and pop-default for styles which change the colours and
    attributes used for #[default]. These are used in status-format to restore
    the behaviour of window-status-style being the default for
    window-status-format.
  - Add window_marked_flag.
  - Add cursor-down-and-cancel in copy mode.
  - Default to previous search string for search-forward and search-backward.
  - Add -Z flag to rotate-window, select-pane, swap-pane, switch-client to
    preserve zoomed state.
  - Add -N to capture-pane to preserve trailing spaces.
  - Add reverse sorting in tree, client and buffer modes.


author: Anton Novojilov <andy@essentialkaos.com> - 3.1a-0
changelog:
  - Do not close stdout prematurely in control mode since it is needed to print
    exit messages. Prevents hanging when detaching with iTerm2.


author: Anton Novojilov <andy@essentialkaos.com> - 3.1b-0
changelog:
  - Fix build on systems without sys/queue.h.
  - Fix crash when allow-rename is on and an empty name is set.


author: Anton Novojilov <andy@essentialkaos.com> - 3.1c-0
changelog:
  - Do not write after the end of the array and overwrite the stack when
    colon-separated SGR sequences contain empty arguments.


author: Anton Novojilov <andy@essentialkaos.com> - 3.2-0
changelog:
  - Add a flag to disable keys to close a message.
  - Permit shortcut keys in buffer, client, tree modes to be configured with a
    format (-K flag to choose-buffer, choose-client, choose-tree).
  - Add a current_file format for the config file being parsed.
  - When display-message used in config file, show the message after the config
    file finishes.
  - Add client-detached notification in control mode.
  - Improve performance of format evaluation.
  - Make jump command support UTF-8 in copy mode.
  - Support X11 colour names and other colour formats for OSC 10 and 11.
  - Add "pipe" variants of "copy-pipe" commands which do not copy.
  - Include "focused" in client flags.
  - Send Unicode directional isolate characters around horizontal pane borders if
    the terminal supports UTF-8 and an extension terminfo(5) capability "Bidi" is
    present.
  - Add a -S flag to new-window to make it select the existing window if one
    with the given name already exists rather than failing with an error.
  - Add a format modifier to check if a window or session name exists (N/w or
    N/s).
  - Add compat clock_gettime for older macOS.
  - Add a no-detached choice to detach-on-destroy which detaches only if there
    are no other detached sessions to switch to.
  - Add rectangle-on and rectangle-off copy mode commands.
  - Change so that window_flags escapes # automatically. A new format
    window_raw_flags contains the old unescaped version.
  - Add -N flag to never start server even if command would normally do so.
  - With incremental search, start empty and only repeat the previous search if
    the user tries to search again with an empty prompt.
  - Add a value for remain-on-exit that only keeps the pane if the program
    failed.
  - Add a -C flag to run-shell to use a tmux command rather than a shell command.
  - Do not list user options with show-hooks.
  - Remove current match indicator in copy mode which can't work anymore since we
    only search the visible region.
  - Make synchronize-panes a pane option and add -U flag to set-option to unset
    an option on all panes.
  - Make replacement of ##s consistent when drawing formats, whether followed by
    [ or not. Add a flag (e) to the q: format modifier to double up #s.
  - Add -N flag to display-panes to ignore keys.
  - Change how escaping is processed for formats so that ## and # can be used in
    styles.
  - Add a 'w' format modifier for string width.
  - Add support for Haiku.
  - Expand menu and popup -x and -y as formats.
  - Add numeric comparisons for formats.
  - Fire focus events even when the pane is in a mode.
  - Add -O flag to display-menu to not automatically close when all mouse buttons
    are released.
  - Allow fnmatch(3) wildcards in update-environment.
  - Disable nested job expansion so that the result of #() is not expanded again.
  - Use the setal capability as well as (tmux's) Setulc.
  - Add -q flag to unbind-key to hide errors.
  - Allow -N without a command to change or add a note to an existing key.
  - Add a -w flag to set- and load-buffer to send to clipboard using OSC 52.
  - Add -F to set-environment and source-file.
  - Allow colour to be spelt as color in various places.
  - Add n: modifier to get length of a format.
  - Respond to OSC colour requests if a colour is available.
  - Add a -d option to display-message to set delay.
  - Add a way for control mode clients to subscribe to a format and be notified
    of changes rather than having to poll.
  - Add some formats for search in copy mode (search_present, search_match).
  - Do not wait on shutdown for commands started with run -b.
  - Add -b flags to insert a window before (like the existing -a for after) to
    break-pane, move-window, new-window.
  - Make paste -p the default for ].
  - Add support for pausing a pane when the output buffered for a control mode
    client gets too far behind. The pause-after flag with a time is set on the
    pane with refresh-client -f and a paused pane may be resumed with
    refresh-client -A.
  - Allow strings in configuration files to span multiple lines - newlines and
    any leading whitespace are removed, as well as any following comments that
    couldn't be part of a format. This allows long formats or other strings to be
    annotated and indented.
  - Instead of using a custom parse function to process {} in configuration
    files, treat as a set of statements the same as outside {} and convert back
    to a string as the last step. This means the rules are consistent inside and
    outside {}, %if and friends work at the right time, and the final result
    isn't littered with unnecessary newlines.
  - Add support for extended keys - both xterm(1)'s CSI 27 ~ sequence and the
    libtickit CSI u sequence are accepted; only the latter is output. tmux will
    only attempt to use these if the extended-keys option is on and it can detect
    that the terminal outside supports them (or is told it does with the
    "extkeys" terminal feature).
  - Add an option to set the pane border lines style from a choice of single
    lines (ACS or UTF-8), double or heavy (UTF-8), simple (plain ASCII) or number
    (the pane numbers). Lines that won't work on a non-UTF-8 terminal are
    translated back into ACS when they are output.
  - Make focus events update the latest client (like a key press).
  - Store UTF-8 characters differently to reduce memory use.
  - Fix break-pane -n when only one pane in the window.
  - Instead of sending all data to control mode clients as fast as possible, add
    a limit of how much data will be sent to the client and try to use it for
    panes with some degree of fairness.
  - Add an active-pane client flag (set with attach-session -f, new-session -f
    or refresh-client -f). This allows a client to have an independent active
    pane for interactive use (the window client pane is still used for many
    things however).
  - Add a mark to copy mode, this is set with the set-mark command (bound to X)
    and appears with the entire line shown using copy-mode-mark-style and the
    marked character in reverse. The jump-to-mark command (bound to M-x) swaps
    the mark and the cursor positions.
  - Add a -D flag to make the tmux server run in the foreground and not as a
    daemon.
  - Do not loop forever in copy mode when search finds an empty match.
  - Fix the next-matching-bracket logic when using vi(1) keys.
  - Add a customize mode where options may be browsed and changed, includes
    adding a brief description of each option. Bound to C-b C by default.
  - Change message log (C-b ~) so there is one for the server rather than one per
    client and it remains after detach, and make it useful by logging every
    command.
  - Add M-+ and M-- to tree mode to expand and collapse all.
  - Change the existing client flags for control mode to apply for any client,
    use the same mechanism for the read-only flag and add an ignore-size flag.
    refresh-client -F has become -f (-F stays for backwards compatibility) and
    attach-session and switch-client now have -f flags also. A new format
    client_flags lists the flags and is shown by list-clients by default.
    This separates the read-only flag from "ignore size" behaviour (new
    ignore-size) flag - both behaviours are useful in different circumstances.
    attach -r and switchc -r remain and set or toggle both flags together.
  - Store and restore cursor position when copy mode is resized.
  - Export TERM_PROGRAM and TERM_PROGRAM_VERSION like various other terminals.
  - Add formats for after hook command arguments: hook_arguments with all the
    arguments together; hook_argument_0, hook_argument_1 and so on with
    individual arguments; hook_flag_X if flag -X is present; hook_flag_X_0,
    hook_flag_X_1 and so on if -X appears multiple times.
  - Try to search the entire history first for up to 200 ms so a search count can
    be shown. If it takes too long, search the visible text only.
  - Use VIS_CSTYLE for paste buffers also (show \012 as \n).
  - Change default formats for tree mode, client mode and buffer mode to be more
    compact and remove some clutter.
  - Add a key (e) in buffer mode to open the buffer in an editor. The buffer
    contents is updated when the editor exits.
  - Add -e flag for new-session to set environment variables, like the same flag
    for new-window.
  - Improve search match marking in copy mode. Two new options
    copy-mode-match-style and copy-mode-current-match-style to set the style for
    matches and for the current match respectively. Also a change so that if a
    copy key is pressed with no selection, the current match (if any) is copied.
  - Sanitize session names like window names instead of forbidding invalid ones.
  - Check if the clear terminfo(5) capability starts with CSI and if so then
    assume the terminal is VT100-like, rather than relying on the XT capability.
  - Improve command prompt tab completion and add menus both for strings and -t
    and -s (when used without a trailing space). command-prompt has additional
    flags for only completing a window (-W) and a target (-T), allowing C-b ' to
    only show windows and C-b . only targets.
  - Change all the style options to string options so they can support formats.
    Change pane-active-border-style to use this to change the border colour when
    in a mode or with synchronize-panes on. This also implies a few minor changes
    to existing behaviour:
  - set-option -a with a style option automatically inserts a comma between the
    old value and appended text.
  - OSC 10 and 11 no longer set the window-style option, instead they store the
    colour internally in the pane data and it is used as the default when the
    option is evaluated.
  - status-fg and -bg now override status-style instead of the option values
    being changed.
  - Add extension terminfo(5) capabilities for margins and focus reporting.
  - Try $XDG_CONFIG_HOME/tmux/tmux.conf as well as ~/.config/tmux/tmux.conf for
    configuration file (the search paths are in TMUX_CONF in Makefile.am).
  - Remove the DSR 1337 iTerm2 extension and replace by the extended device
    attributes sequence (CSI > q) supported by more terminals.
  - Add a -s flag to copy-mode to specify a different pane for the source
    content. This means it is possible to view two places in a pane's history at
    the same time in different panes, or view the history while still using the
    pane. Pressing r refreshes the content from the source pane.
  - Add an argument to list-commands to show only a single command.
  - Change copy mode to make copy of the pane history so it does not need to
    freeze the pane.
  - Restore pane_current_path format from portable tmux on OpenBSD.
  - Wait until the initial command sequence is done before sending a device
    attributes request and other bits that prompt a reply from the terminal. This
    means that stray replies are not left on the terminal if the command has
    attached and then immediately detached and tmux will not be around to receive
    them.
  - Add a -f filter argument to the list commands like choose-tree.
  - Move specific hooks for panes to pane options and windows for window options
    rather than all hooks being session options.
  - Show signal names when a process exits with remain-on-exit on platforms which
    have a way to get them.
  - Start menu with top item selected if no mouse and use mode-style for the
    selected item.
  - Add a copy-command option and change copy-pipe and friends to pipe to it if
    used without arguments, allows all the default copy key bindings to be
    changed to pipe with one option rather than needing to change each key
    binding individually.
  - Tidy up the terminal detection and feature code and add named sets of
    terminal features, each of which are defined in one place and map to a
    builtin set of terminfo(5) capabilities. Features can be specified based on
    TERM with a new terminal-features option or with the -T flag when running
    tmux. tmux will also detect a few common terminals from the DA and DSR
    responses.
    This is intended to make it easier to configure tmux's use of terminfo(5)
    even in the presence of outdated ncurses(3) or terminfo(5) databases or for
    features which do not yet have a terminfo(5) entry. Instead of having to grok
    terminfo(5) capability names and what they should be set to in the
    terminal-overrides option, the user can hopefully just give tmux a feature
    name and let it do the right thing.
    The terminal-overrides option remains both for backwards compatibility and to
    allow tweaks of individual capabilities.
  - Support mintty's application escape sequence (means tmux doesn't have to
    delay to wait for Escape, so no need to reduce escape-time when using
    mintty).
  - Change so main-pane-width and height can be given as a percentage.
  - Support for the iTerm2 synchronized updates feature (allows the terminal to
    avoid unnecessary drawing while output is still in progress).
  - Make the mouse_word and mouse_line formats work in copy mode and enable the
    default pane menu in copy mode.
  - Add a -T flag to resize-pane to trim lines below the cursor, moving lines out
    of the history.
  - Add a way to mark environment variables as "hidden" so they can be used by
    tmux (for example in formats) but are not set in the environment for new
    panes. set-environment and show-environment have a new -h flag and there is a
    new %hidden statement for the configuration file.
  - Change default position for display-menu -x and -y to centre rather than top
    left.
  - Add support for per-client transient popups, similar to menus but which are
    connected to an external command (like a pane). These are created with new
    command display-popup.
  - Change double and triple click bindings so that only one is fired (previously
    double click was fired on the way to triple click). Also add default double
    and triple click bindings to copy the word or line under the cursor and
    change the existing bindings in copy mode to do the same.
  - Add a default binding for button 2 to paste.
  - Add -d flag to run-shell to delay before running the command and allow it to
    be used without a command so it just delays.
  - Add C-g to cancel command prompt with vi keys as well as emacs, and q in
    command mode.
  - When the server socket is given with -S, create it with umask 177 instead of
    117 (because it may not be in a safe directory like the default directory in
    /tmp).
  - Add a copy-mode -H flag to hide the position marker in the top right.
  - Add number operators for formats (+, -, *, / and m).


author: Anton Novojilov <andy@essentialkaos.com> - 3.2a-0
changelog:
  - Add an "always" value for the "extended-keys" option; if set then tmux will
    forward extended keys to applications even if they do not request them.
  - Add a "mouse" terminal feature so tmux can enable the mouse on terminals
    where it is known to be supported even if terminfo(5) says otherwise.
  - Do not expand the filename given to -f so it can contain colons.
  - Fixes for problems with extended keys and modifiers, scroll region,
    source-file, crosscompiling, format modifiers and other minor issues.


author: Anton Novojilov <andy@essentialkaos.com> - 3.3-0
changelog:
  - Add an ACL list for users connecting to the tmux socket. Users may be
    forbidden from attaching, forced to attach read-only, or allowed to attach
    read-write. A new command, server-access, configures the list. File system
    permissions must still be configured manually.
  - Emit window-layout-changed on swap-pane.
  - Better error reporting when applying custom layouts.
  - Handle ANSI escape sequences in run-shell output.
  - Add pane_start_path to match start_command.
  - Set PWD so shells have a hint about the real path.
  - Do not allow pipe-pane on dead panes.
  - Do not report mouse positions (incorrectly) above the maximum of 223 in
    normal mouse mode.
  - Add an option (default off) to control the passthrough escape sequence.
  - Support more mouse buttons when the terminal sends them.
  - Add a window-resized hook which is fired when the window is actually resized
    which may be later than the client resize.
  - Add next_session_id format with the next session ID.
  - Add formats for client and server UID and user.
  - Add argument to refresh-client -l to forward clipboard to a pane.
  - Add remain-on-exit-format to set text shown when pane is dead.
  - With split-window -f use percentages of window size not pane size.
  - Add an option (fill-character) to set the character used for unused areas of
    a client.
  - Add an option (scroll-on-clear) to control if tmux scrolls into history on
    clear.
  - Add a capability for OSC 7 and use it similarly to how the title is set (and
    controlled by the same set-titles option).
  - Add support for systemd socket activation (where systemd creates the Unix
    domain socket for tmux rather than tmux creating it). Build with
    --enable-systemd.
  - Add an option (pane-border-indicators) to select how the active pane is shown
    on the pane border (colour, arrows or both).
  - Support underscore styles with capture-pane -e.
  - Make pane-border-format a pane option rather than window.
  - Respond to OSC 4 queries
  - Fix g/G keys in modes to do the same thing as copy mode (and vi).
  - Bump the time terminals have to respond to device attributes queries to three
    seconds.
  - If automatic-rename is off, allow the rename escape sequence to set an empty
    name.
  - Trim menu item text more intelligently.
  - Add cursor-style and cursor-colour options to set the default cursor style
    and colour.
  - Accept some useful and non-conflicting emacs keys in vi normal mode at the
    command prompt.
  - Add a format modifier (c) to force a colour to RGB.
  - Add -s and -S to display-popup to set styles, -b to set lines and -T to set
    popup title. New popup-border-lines, popup-border-style and popup-style
    options set the defaults.
  - Add -e flag to set an environment variable for a popup.
  - Make send-keys without arguments send the key it is bound to (if bound to a
    key).
  - Try to leave terminal cursor at the right position even when tmux is drawing
    its own cursor or selection (such as at the command prompt and in choose
    mode) for people using screen readers and similar which can make use of it.
  - Change so that {} is converted to tmux commands immediately when parsed. This
    means it must contain valid tmux commands. For commands which expand % and
    %%, this now only happens within string arguments. Use of nested aliases
    inside {} is now forbidden. Processing of commands given in quotes remains
    the same.
  - Disable evports on SunOS since they are broken.
  - Do not expand the file given with tmux -f so it can contain :s.
  - Bump FORMAT_LOOP_LIMIT and add a log message when hit.
  - Add a terminal feature for the mouse (since FreeBSD termcap does not
    have kmous).
  - Forbid empty session names.
  - Improve error reporting when the tmux /tmp directory cannot be created or
    used.
  - Give #() commands a one second grace period where the output is empty before
    telling the user they aren't doing anything ("not ready").
  - When building, pick default-terminal from the first of tmux-256color, tmux,
    screen-256color, screen that is available on the build system (--with-TERM
    can override).
  - Do not close popups on resize, instead adjust them to fit.
  - Add a client-active hook.
  - Make window-linked and window-unlinked window options.
  - Do not configure on macOS without the user making a choice about utf8proc
    (either --enable-utf8proc or --disable-utf8proc).
  - Do not freeze output in panes when a popup is open, let them continue to
    redraw.
  - Add pipe variants of the line copy commands.
  - Change copy-line and copy-end-of-line not to cancel and add -and-cancel
    variants, like the other copy commands.
  - Support the OSC palette-setting sequences in popups.
  - Add a pane-colours array option to specify the defaults palette.
  - Add support for Unicode zero-width joiner.
  - Make newline a style delimiter as well so they can cross multiple lines for
    readability in configuration files.
  - Change focus to be driven by events rather than scanning panes so the
    ordering of in and out is consistent.
  - Add display-popup -B to open a popup without a border.
  - Add a menu for popups that can be opened with button three outside the popup
    or on the left or top border. Resizing now only works on the right and bottom
    borders or when using Meta. The menu allows a popup to be closed, expanded to
    the full size of the client, centered in the client or changed into a pane.
  - Make command-prompt and confirm-before block by default (like run-shell). A
    new -b flags runs them in the background as before. Also set return code for
    confirm-before.
  - Change cursor style handling so tmux understands which sequences contain
    blinking and sets the flag appropriately, means that it works whether cnorm
    disables blinking or not. This now matches xterm's behaviour.
  - More accurate vi(1) word navigation in copy mode and on the status line. This
    changes the meaning of the word-separators option: setting it to the empty
    string is equivalent to the previous behavior.
  - Add -F for command-prompt and use it to fix "Rename" on the window menu.
  - Add different command histories for different types of prompts ("command",
    "search" etc).


author: Anton Novojilov <andy@essentialkaos.com> - 3.3a-0
changelog:
  - Do not crash when run-shell produces output from a config file.
  - Do not unintentionally turn off all mouse mode when button mode is also
    present.


author: Anton Novojilov <andy@essentialkaos.com> - 3.4-0
changelog:
  - Add options keep-last and keep-group to destroy-unattached to keep the last
    session whether in a group.
  - Don't allow paste-buffer into dead panes.
  - Add -t to source-file.
  - Rewrite combined character handling to be more consistent and to support
    newer Unicode combined characters.
  - Add basic support for SIXEL if built with --enable-sixel.
  - Add a session, pane and user mouse range types for the status line and add
    format variables for mouse_status_line and mouse_status_range so they can be
    associated with different commands in the key bindings.
  - Add flag (-o) to next-prompt/previous-prompt to go to OSC 133 command output.
  - Add options and flags for menu styles (menu-style, menu-border-style) similar
    to those existing for popups.
  - Add support for marking lines with a shell prompt based on the OSC 133
    extension.
  - Check for libterminfo for NetBSD.
  - Add "us" to styles for underscore colour.
  - Add flags (-c and -y) to change the confirm key and default behaviour of
    confirm-before.
  - Use ncurses' new tparm_s function (added in 6.4-20230424) instead of tparm so
    it does not object to string arguments in c apabilities it doesn't already
    know. Also ignore errors from tparm if using previous ncurses versions.
  - Set default lock command to vlock on Linux if present at build time.
  - Discard mouse sequences that have the right form but actually are invalid.
  - Add support for spawning panes in separate cgroups with systemd and a
    configure flag (--disable-cgroups) to turn off.
  - Add a format (pane_unseen_changes) to show if there are unseen changes while
    in a mode.
  - Remove old buffer when renaming rather than complaining.
  - Add an L modifier like P, W, S to loop over clients.
  - Add -f to list-clients like the other list commands.
  - Extend display-message to work for control clients.
  - Add a flag to display-menu to select the manu item selected when the menu is
    open.
  - Have tmux recognise pasted text wrapped in bracket paste sequences, rather
    than only forwarding them to the program inside.
  - Have client return 1 if process is interrupted to an input pane.
  - Query the client terminal for foreground and background colours and if OSC 10
    or 11 is received but no colour has been set inside tmux, return the colour
    from the first attached client.
  - Add send-keys -K to handle keys directly as if typed (so look up in key
    table).
  - Process escape sequences in show-buffer.
  - Add a -l flag to display-message to disable format expansion.
  - Add paste-buffer-deleted notification and fix name of paste-buffer-changed.
  - Do not attempt to connect to the socket as a client if systemd is active.
  - Add scroll-top and scroll-bottom commands to scroll so cursor is at top or
    bottom.
  - Add a -T flag to capture-pane to stop at the last used cell instead of the
    full width. Restore the previous behaviour by making it default to off unless
    -J is used.
  - Add message-line option to control where message and prompt go.
  - Notification when a when a paste buffer is deleted.
  - Add a Nobr terminfo(5) capability to tell tmux the terminal does not use
    bright colours for bold.
  - Change g and G to go to top and bottom in menus.
  - Add a third state "all" to allow-passthrough to work even in invisible panes.
  - Add support for OSC 8 hyperlinks.
  - Store the time lines are scrolled into history and display in copy mode.
  - Add a %config-error reply to control mode for configuration file errors since
    reporting them in view mode is useless.
  - A new feature flag (ignorefkeys) to ignore terminfo(5) function key
    definitions for rxvt.
  - Pass through first argument to OSC 52 (which clipboards to set) if the
    application provides it.
  - Expand arguments to send-keys, capture-pane, split-window, join-pane where it
    makes sense to do so.
  - Ignore named buffers when choosing a buffer if one is not specified by
    the user.


author: Anton Novojilov <andy@essentialkaos.com> - 2.94-0
changelog:
  - Fix building against LibreSSL
  - Fix building against mbedTLS
  - Fix torrents ETA calculation
  - Fix cross-compilation issues caused by miniupnpc configuration test
  - Fix bad downloaded percentage in DetailsDialog
  - Fix tracker error XSS in inspector
  - Fix torrent name HTML-escaping in trackers inspector tab


author: Anton Novojilov <andy@essentialkaos.com> - 2.1.0-0
changelog:
  - '-u' Option Removed. Use the '-l' option to update data.
  - The tzupdater.jar file is digitally signed.


author: Anton Novojilov <andy@essentialkaos.com> - 2.1.2-0
changelog:
  - Updated the protocol used for connecting to IANA for downloading the latest
    time-zone information to match recent changes in the IANA sites.
  - 'tzupdater.jar --version' fails to correctly display latest version


author: Anton Novojilov <andy@essentialkaos.com> - 2.2.0-0
changelog:
  - JDK-8194474 (not public): Remove use of security digest calculations from
    tzupdater. The IANA website now provides https functionality to allow secure
    downloading of tzdata resource bundles. As a result, the SHA-512 digest
    calculations (and hosted files) for tzdata bundle downloads are no longer
    required.
  - JDK-8203908: TZUpdater tool fails to print version info for the users
    without write persmisson


author: Anton Novojilov <andy@essentialkaos.com> - 0.0.2-0
changelog:
  - Added option -m/--max for defining maximum unique lines to process
  - Added option -d/--dist for printing data distribution


author: Anton Novojilov <andy@essentialkaos.com> - 3.0.0-0
changelog:
  - crc64 replaced by xxhash
  - Added different output formats for distribution info
  - Code refactoring
  - Dependencies update


author: Anton Novojilov <andy@essentialkaos.com> - 1.2.0-0
changelog:
  - Removed init script usage
  - Fixed compatibility with the latest version of ek package
  - Code refactoring
  - Dependencies update


author: Anton Novojilov <andy@essentialkaos.com> - 3.92-0
changelog:
  - IMPORTANT: all PE formats: internal changes: reunited the diverged source
    files - please report all regressions into the bug tracker and try UPX 3.91
    in case of problems.
  - Support Apple MacOS 10.12 "Sierra", including more-robust de-compression.
  - Explicitly diagnose Go-language bad PT_LOAD; recommend hemfix.c.
  - Fix CERT-FI Case 829767 UPX command line tools segfaults.
  - bug fixes


author: Anton Novojilov <andy@essentialkaos.com> - 3.94-0
changelog:
  - Add support for arm64-linux (aka "aarch64").
  - Add support for --lzma compression on 64-bit PowerPC (Thierry Fauck).
  - For Mach, "upx -d" will unpack a prefix of the file (and warn).
  - Various improvements to the ELF formats.
  - bug fixes


author: Anton Novojilov <andy@essentialkaos.com> - 3.95-0
changelog:
  - Flag --android-shlib to work around bad design in Android
  - Flag --force-pie when ET_DYN main program is not marked as DF_1_PIE
  - Better compatibility with varying layout of address space on Linux
  - Support for 4 PT_LOAD layout in ELF generated by binutils-2.31
  - bug fixes, particularly better diagnosis of malformed input


author: Anton Novojilov <andy@essentialkaos.com> - 4.0.0-0
changelog:
  - Switch to semantic versioning
  - SECURITY NOTES: emphasize the security context in the docs
  - Support easy building from source code with CMake
  - Support easy rebuilding the stubs from source with Podman/Docker
  - Add integrated doctest C++ testing framework
  - Add support for EFI files (PE x86; Kornel Pal)
  - win32/pe and win64/pe: set correct SizeOfHeaders in the PE header
  - bug fixes - see https://github.com/upx/upx/milestone/6
  - bug fixes - see https://github.com/upx/upx/milestone/7


author: Anton Novojilov <andy@essentialkaos.com> - 4.1.0-0
changelog:
  - ELF: handle shared libraries with more than 2 PT_LOAD segments
  - bug fixes - see https://github.com/upx/upx/milestone/11


author: Anton Novojilov <andy@essentialkaos.com> - 8.7.0-0
changelog:
  - add magicksave, save image with libMagick [dlemstra]
  - remove jpeg thumbnail from EXIF if "jpeg-thumbnail-data" has been removed
    by user
  - hough_line scales width to 0 - 180, not 0 - 360
  - hough_line is 4x faster
  - hough_circle is 2x faster
  - add vips_sobel() and vips_canny() edge detectors
  - add vips_rotate() ... a convenience method for vips_similarity()
  - svgload was missing is_a [lovell]
  - better header sniffing for small files
  - drop incompatible ICC profiles before save
  - better hasalpha rules
  - create funcs always make MULTIBAND (ie. no alpha)
  - use O_TMPFILE, if available [Alexander--]
  - set "interlaced=1" for interlaced JPG and PNG images
  - add PDFium PDF loader
  - jpegload adds a jpeg-chroma-subsample field with eg. 4:4:4 for no
  - chrominance subsampling.
  - tiffload, pdfload, magickload set VIPS_META_N_PAGES "n-pages" metadata item
  - add fontfile option to vips_text() [fangqiao]
  - add vips_transpose3d() -- swap major dimensions in a volumetric image
  - remove vips7 stuff from default API ... you must now #include it explicitly
  - added vips_argument_get_id() to fix derived classes on win32 [angelmixu]
  - fix compile with MSVC 2017 [angelmixu]
  - pdfload has a option for background
  - vips7 C++ interface defaults off
  - make members, getters and operators "const" in cpp API
  - composite has params for x/y position of sub-images [medakk]
  - add Mitchell kernel
  - pyramid builders have a choice of 2x2 shrinkers [harukizaemon]
  - add palette option to pngsave [felixbuenemann]
  - add basic nifti load/save support
  - support writing string-valued fields via libexif
  - paste in the test suite from pyvips
  - get EXIF tag names from tag plus ifd [@Nan619]
  - escape ASCII control characters in XML
  - magickload now sniffs some file types itself


author: Anton Novojilov <andy@essentialkaos.com> - 8.7.1-0
changelog:
  - update function list in docs
  - test for g_str_to_ascii()
  - fix temp file open on Windows and fallback on linux


author: Anton Novojilov <andy@essentialkaos.com> - 8.7.2-0
changelog:
  - more info output for temp files to help diagnose problems
  - vips_text() could set the wrong DPI in autofit mode
  - vips_text() leaked in autofit mode


author: Anton Novojilov <andy@essentialkaos.com> - 8.7.3-0
changelog:
  - fix infinite loop for autofit with non-scaleable font
  - mapim was not offsetting by window offset
  - better rounding for scale
  - fix a memleak in magick6load


author: Anton Novojilov <andy@essentialkaos.com> - 8.8.0-0
changelog:
  - much faster smartcrop
  - add low/high to smartcrop
  - add XMP support to png read/write
  - deprecate thumbnail auto_rotate, add no_rotate
  - implement thumbnail shrink-on-load for openslide images
  - add animated webp support
  - revise vips_cast() to improve behaviour with uint images
  - add bandand()/or()/eor() to cplusplus binding
  - implement shrink-on-load for tiff pyramids
  - added vips_image_set_blob_copy()
  - don't stop composite on first non-transparent image
  - add vips_rect_overlapsrect()
  - composite is much faster at positioning subimages
  - stop tiff pyr layers if width or height drop to 1
  - dzsave has a new skip_blanks option
  - add vips_CMYK2XYZ() and vips_XYZ2CMYK(), plus associated routes
  - include cmyk and srgb fallback profiles
  - add vips_profile_load() and use it everywhere
  - fix race in temp filename creation
  - add @reduction_effort param to webpsave
  - add @option_string param to thumbnail_buffer
  - add XMP, IPCT, ICC, EXIF etc. support to magickload/magicksave
  - much lower memuse for gifload
  - tilecache speedups
  - add vips_heifload(), vips_heifsave()
  - add heif thumbnail support to vips_thumbnail()
  - free threadpool earlier, reducing mem growth for some long-running processes
  - add vips_region_fetch() / _width() / _height() for language bindings
  - vips_text() supports justification
  - move vips_image_set_kill() and iskilled() to the public API
  - dzsave to szi sets suffix correctly
  - dzsave szi writes "scan-properties.xml"
  - add vips_image_(get|set)_image()
  - add openslideload option to attach all associated images as metadata
  - dzsave to szi will write all associated images
  - remove old c++ and python interfaces
  - vipsthumbnail can thumbnail animated and multipage images
  - much better Windows build


author: Anton Novojilov <andy@essentialkaos.com> - 8.8.1-0
changelog:
  - improve realpath() use on older libc
  - better magickload error messages
  - more consistent behaviour for page-height metadata
  - fix for composite with many small images and some combinations of blend modes
  - fix memleak in tiff pyr save to memory
  - istiff attempts to read the first directory rather than just testing
    the magic number
  - much faster ismagick()
  - better behaviour for vips_region_fetch() if request lies partly ouside image
  - remove 256 band limit in arithmetic.c
  - disable Orc if building with CET
  - fix vipsthumbnail with pyr tiff
  - text autofit could occasionally terminate early
  - fewer warnings on tiffload
  - vips_resize() breaks aspect ratio and limits shrink to prevent <1px dimensions


author: Anton Novojilov <andy@essentialkaos.com> - 8.8.2-0
changelog:
  - better early shutdown in readers
  - don't attempt to save large XMP to jpeg
  - always fetch HEIC metadata from the main image
  - fix loop in malformed ppm
  - better support for PNGs with long comment names
  - fix build with GM
  - add locks for pdfium load
  - fix build with MSVC
  - fix a problem with shinkv tail processing
  - fix a read one byte beyond buffer bug in jpegload
  - make GIF parsing less strict
  - better feof() handling in GIF load
  - clip coding and interpretation on vips image read
  - check image bounds for GIF load
  - prevent over-pre-shrink in thumbnail
  - fix sharpen with sigma 0.5
  - sharpen restores input colourspace
  - verify bands/format for coded images
  - improve data_length handling for jpeg metadata


author: Anton Novojilov <andy@essentialkaos.com> - 8.8.4-0
changelog:
  - improve compatibility with older imagemagick versions
  - remove realpath, since it can fail on systems with grsec
  - block metadata changes on shared images


author: Anton Novojilov <andy@essentialkaos.com> - 8.9.0-0
changelog:
  - add vips_image_get/set_array_int()
  - disable webp alpha output if all frame fill the canvas and are solid
  - support arrays of delays for animated images
  - add "unlimited" flag to svgload
  - disable webp alpha output if all frames fill the canvas and are solid
  - add "compression" option to heifsave
  - support webp and zstd compression in tiff
  - loaders use "minimise" to close input files earlier
  - integrate support for oss-fuzz
  - add vips_switch() / vips_case() ... fast many-way ifthenelse
  - better const handling for arithmetic operators fixes comparisons against out
    of range values
  - sharpen restores input colourspace
  - handle alpha in heifload / heifsave
  - add @Interpretation and @Format to rawload
  - nifti load/save uses double for all floating point metadata
  - add vips_error_buffer_copy()
  - add VipsSource and VipsTarget: a universal IO class for loaders and savers
  - jpeg, png, tiff (though not tiffsave), rad, svg, ppm and webp use the new
    IO class
  - rewritten ppm load/save is faster and uses less memory
  - add @no_strip option to dzsave
  - add iiif layout to dzsave
  - fix use of resolution-unit metadata on tiff save
  - support TIFF CIELAB images with alpha
  - support TIFF with premultiplied alpha in any band
  - block metadata changes on shared images
  - RGB and sRGB are synonymous


author: Anton Novojilov <andy@essentialkaos.com> - 8.9.1-0
changelog:
  - fix new_from_file for openslide from CLI and C
  - fix thumbnail autorot
  - fix a warning with magicksave with no delay array
  - fix a race in tiled tiff load
  - better imagemagick init
  - lock for metadata changes, fixing a race in highly threaded applications


author: Anton Novojilov <andy@essentialkaos.com> - 1.1.0-0
changelog:
  - Better error checking for extremely large values to command
    line parameters (Thanks Matthew Fernandez)
  - Fix some boundary conditions in the range support added
    in 1.0.1 (Thanks Justas Lavišius)
  - On Linux, support touching/evicting/displaying block devices
    directly. This displays the underlying buffer cache, not the
    filesystem cache (Thanks to maq123 for the suggestion)
  - On Linux, open files with O_NOATIME so that we don't cause
    unnecessary disk activity recording access times
    (Thanks Mat R.)
  - Replaces a stat() call with an fstat() call which is slightly
    more efficient.
  - Skipped symlinks are no longer included in total file count
  - Closes file descriptors after locking memory since there is
    no need to keep them open. This makes it less likely you will
    hit the RLIMIT_NOFILE when using -l or -L.
  - TUNING.md file (Thanks to Artem Sheremet for the idea and
    to Vladimir Kotal for Solaris tuning info)


author: Anton Novojilov <andy@essentialkaos.com> - 1.2.0-0
changelog:
  - -i feature which lets you ignore entire files and directories
    (Thanks Etienne Bruines)
  - -I feature which lets you only process filenames matching
    certain patterns.
  - Both -i and -I support wildcards
  - Specify C99 standard during compile (Thanks ecebuzz)


author: Anton Novojilov <andy@essentialkaos.com> - 1.3.0-0
changelog:
  - New switch: "-b <file>". This enables "batch mode" where the
    list of files to crawl is read from the specified file
  - New switch: "-0". When this is enabled, the files in
    "batch mode" are separated by NUL bytes instead of newlines
  - New switch: "-F". Prevents vmtouch from traversing separate
    filesystems
  - Lots of updates to the debian packaging
  - Use standard path for manpages
  - On linux, if an open fails due to EPERM then try again
    without O_NOATIME


author: Anton Novojilov <andy@essentialkaos.com> - 1.3.1-0
changelog:
  - New switch: "-P <pidfile>". When combined with -l or -L, the
    PID of the daemon process will be written to this file.
  - In Makefile, support staged installs using DESTDIR
  - Create snapcraft.yaml to enable snap creation
  - Fix compilation for pre-C99 compilers
  - Documentation improvements


author: Anton Novojilov <andy@essentialkaos.com> - 1.8.0-0
changelog:
  - Added possibility to generate CSR files based on information from OpenSSL
    configuration file
  - Added command 'csr-config-gen' for generating OpenSSL configuration files
    for CSR generation
  - Added command 'htpasswd' for generating records for .htpasswd files
  - Show key info in 'csr-info' output
  - Code refactoring


author: Anton Novojilov <andy@essentialkaos.com> - 2.2.0-0
changelog:
  - Added command 'crt-info' for viewing information from certificates
  - Added 'NO_COLOR' support
  - Options parser updated to the latest version
  - Code refactoring


author: Anton Novojilov <andy@essentialkaos.com> - 1.19.7-0
changelog:
  - Nginx updated to 1.19.7
  - BoringSSL updated to the latest version
  - LuaJIT updated to 2.1-20201027
  - Lua module updated to 0.10.19


author: Anton Novojilov <andy@essentialkaos.com> - 1.21.0-0
changelog:
  - Nginx updated to 1.21.0 with fix for CVE-2021-23017
  - BoringSSL updated to the latest version
  - LuaJIT updated to 2.1-20210510


author: Anton Novojilov <andy@essentialkaos.com> - 1.21.3-0
changelog:
  - Nginx updated to 1.21.3
  - BoringSSL updated to the latest version
  - PCRE updated to 8.45
  - lua-resty-core updated to 0.1.22
  - lua-resty-lru updated to 0.11
  - Improved default configuration file


author: Anton Novojilov <andy@essentialkaos.com> - 1.21.4-0
changelog:
  - Nginx updated to 1.21.4
  - BoringSSL updated to the latest version
  - lua-nginx-module updated to 0.10.20
  - Updated link to PCRE


author: Anton Novojilov <andy@essentialkaos.com> - 1.21.5-0
changelog:
  - Nginx updated to 1.21.5
  - BoringSSL updated to the latest stable version
  - LuaJIT updated to 2.1-20211210


author: Anton Novojilov <andy@essentialkaos.com> - 1.23.0-0
changelog:
  - Nginx updated to 1.23.0
  - BoringSSL updated to the latest stable version
  - LuaJIT updated to 2.1-20220411
  - lua-nginx-module updated to 0.10.21
  - lua-resty-core updated to 0.1.23
  - lua-resty-lru updated to 0.13
  - Using GCC 9 for build


author: Anton Novojilov <andy@essentialkaos.com> - 1.23.2-0
changelog:
  - Nginx updated to 1.23.2 with fixes for CVE-2022-41741, CVE-2022-41742
  - BoringSSL updated to the latest stable version for Chromium
  - LuaJIT updated to 2.1-20220915
  - lua-resty-core updated to 0.1.24
  - lua-nginx-module updated to 0.10.22
  - Added extra config with Cloudflare IPs


author: Anton Novojilov <andy@essentialkaos.com> - 1.23.3-0
changelog:
  - Nginx updated to 1.23.3
  - zlib updated to 1.2.13 with fixes for CVE-2022-37434
  - BoringSSL updated to the latest stable version for Chromium
  - ngx_brotli updated to the latest commit
  - brotli updated to the latest commit


author: Anton Novojilov <andy@essentialkaos.com> - 1.23.4-0
changelog:
  - Nginx updated to 1.23.4
  - lua-nginx-module updated to 0.10.24
  - lua-resty-core updated to 0.1.26
  - BoringSSL updated to the latest stable version for Chromium


author: Anton Novojilov <andy@essentialkaos.com> - 1.24.0-0
changelog:
  - Nginx updated to 1.24.0 (mainline → stable)
  - BoringSSL updated to the latest stable version for Chromium


author: Anton Novojilov <andy@essentialkaos.com> - 0.5.1-0
changelog:
  - ek package updated to the latest stable version
  - Added completion generation
  - Added man page generation


author: Anton Novojilov <andy@essentialkaos.com> - 1.2.12-0
changelog:
  - Fix a deflate bug when using the Z_FIXED strategy that can result in
    out-of-bound accesses.
  - Fix a deflate bug when the window is full in deflate_stored().
  - Speed up CRC-32 computations by a factor of 1.5 to 3.
  - Use the hardware CRC-32 instruction on ARMv8 processors.
  - Speed up crc32_combine() with powers of x tables.
  - Add crc32_combine_gen() and crc32_combine_op() for fast combines.


author: Anton Novojilov <andy@essentialkaos.com> - 1.2.13-0
changelog:
  - Fix a bug when getting a gzip header extra field with inflateGetHeader().
    This remedies CVE-2022-37434.
  - Fix a bug in block type selection when Z_FIXED used. Now the smallest block
    type is selected, for better compression.
  - Fix a configure issue that discarded the provided CC definition.
  - Correct incorrect inputs provided to the CRC functions. This mitigates a
    bug in Java.
  - Repair prototypes and exporting of the new CRC functions.
  - Fix inflateBack to detect invalid input with distances too far.


author: Anton Novojilov <andy@essentialkaos.com> - 1.3-0
changelog:
  - Building using K&R (pre-ANSI) function definitions is no longer supported
  - Fixed a bug in deflateBound() for level 0 and memLevel 9
  - Fixed a bug when gzungetc() is used immediately after gzopen()
  - Fixed a bug when using gzflush() with a very small buffer
  - Fixed a crash when gzsetparams() is attempted for a transparent write
  - Fixed test/example.c to work with FORCE_STORED
  - Fixed minizip to allow it to open an empty zip file
  - Fixed reading disk number start on zip64 files in minizip
  - Fixed a logic error in minizip argument processing


author: Anton Novojilov <andy@essentialkaos.com> - 1.3.1-0
changelog:
  - Reject overflows of zip header fields in minizip
  - Fix bug in inflateSync() for data held in bit buffer
  - Add LIT_MEM define to use more memory for a small deflate speedup
  - Fix decision on the emission of Zip64 end records in minizip
  - Add bounds checking to ERR_MSG() macro, used by zError()
  - Neutralize zip file traversal attacks in miniunz
  - Fix a bug in ZLIB_DEBUG compiles in check_match()


