+This document details the changes between this version, readline-8.0, and the
+previous version, readline-7.0.
+
+1. Changes to Readline
+
+a. Added a guard to prevent nested macros from causing an infinite expansion
+ loop.
+
+b. Instead of allocating enough history list entries to hold the maximum list
+ size, cap the number allocated initially.
+
+c. Added a strategy to avoid allocating huge amounts of memory if a block of
+ history entries without timestamps occurs after a block with timestamps.
+
+d. Added support for keyboard timeouts when an ESC character is the last
+ character in a macro.
+
+e. There are several performance improvements when in a UTF-8 locale.
+
+f. Readline does a better job of preserving the original set of blocked
+ signals when using pselect() to wait for input.
+
+g. Fixed a bug that caused multibyte characters in macros to be mishandled.
+
+h. Fixed several bugs in the code that calculates line breaks when expanding
+ prompts that span several lines, contain multibyte characters, and contain
+ invisible character seqeuences.
+
+i. Fixed several bugs in cursor positioning when displaying lines with prompts
+ containing invisible characters and multibyte characters.
+
+j. When performing case-insensitive completion, Readline no longer sorts the
+ list of matches unless directed to do so.
+
+k. Fixed a problem with key sequences ending with a backslash.
+
+l. Fixed out-of-bounds and free memory read errors found via fuzzing.
+
+m. Fixed several cases where the mark was set to an invalid value.
+
+n. Fixed a problem with the case-changing operators in the case where the
+ lower and upper case versions of a character do not have the same number
+ of bytes.
+
+o. Handle incremental and non-incremental search character reads returning EOF.
+
+p. Handle the case where a failing readline command at the end of a multi-key
+ sequence could be misinterpreted.
+
+q. The history library now prints a meaningful error message if the history
+ file isn't a regular file.
+
+r. Fixed a problem with vi-mode redo (`.') on a command when trying to replace
+ a multibyte character.
+
+s. The key binding code now attempts to remove a keymap if a key unbinding
+ leaves it empty.
+
+t. Fixed a line-wrapping issue that caused problems for some terminal
+ emulators.
+
+u. If there is a key bound to the tty's VDISCARD special character, readline
+ disables VDISCARD while it is active.
+
+v. Fixed a problem with exiting bracketed paste mode on terminals that assume
+ the bracketed paste mode character sequence contains visible characters.
+
+w. Fixed a bug that could cause a key binding command to refer to an
+ uninitialized variable.
+
+x. Added more UTF-8-specific versions of multibyte functions, and optimized
+ existing functions if the current locale uses UTF-8 encoding.
+
+y. Fixed a problem with bracketed-paste inserting more than one character and
+ interacting with other readline functions.
+
+z. Fixed a bug that caused the history library to attempt to append a history
+ line to a non-existent history entry.
+
+aa. If using bracketed paste mode, output a newline after the \r that is the
+ last character of the mode disable string to avoid overwriting output.
+
+bb. Fixes to the vi-mode `b', `B', `w', `W', `e', and `E' commands to better
+ handle multibyte characters.
+
+cc. Fixed a redisplay problem that caused an extra newline to be generated on
+ accept-line when the line length is exactly the screenwidth.
+
+dd. Fixed a bug with adding multibyte characters to an incremental search
+ string.
+
+ee. Fixed a bug with redoing text insertions in vi mode.
+
+ff. Fixed a bug with pasting text into an incremental search string if bracketed
+ paste mode is enabled. ESC cannot be one of the incremental search
+ terminator characters for this to work.
+
+gg. Fixed a bug with anchored search patterns when performing searches in vi
+ mode.
+
+2. New Features in Readline
+
+a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as
+ Posix specifies (uses fnmatch(3) if available).
+
+b. There are new `next-screen-line' and `previous-screen-line' bindable
+ commands, which move the cursor to the same column in the next, or previous,
+ physical line, respectively.
+
+c. There are default key bindings for control-arrow-key key combinations.
+
+d. A negative argument (-N) to `quoted-insert' means to insert the next N
+ characters using quoted-insert.
+
+e. New public function: rl_check_signals(), which allows applications to
+ respond to signals that readline catches while waiting for input using
+ a custom read function.
+
+f. There is new support for conditionally testing the readline version in an
+ inputrc file, with a full set of arithmetic comparison operators available.
+
+g. There is a simple variable comparison facility available for use within an
+ inputrc file. Allowable operators are equality and inequality; string
+ variables may be compared to a value; boolean variables must be compared to
+ either `on' or `off'; variable names are separated from the operator by
+ whitespace.
+
+h. The history expansion library now understands command and process
+ substitution and extended globbing and allows them to appear anywhere in a
+ word.
+
+i. The history library has a new variable that allows applications to set the
+ initial quoting state, so quoting state can be inherited from a previous
+ line.
+
+j. Readline now allows application-defined keymap names; there is a new public
+ function, rl_set_keymap_name(), to do that.
+
+k. The "Insert" keypad key, if available, now puts readline into overwrite
+ mode.
+
+-------------------------------------------------------------------------------
This document details the changes between this version, readline-7.0, and the
previous version, readline-6.3.
r. Paren matching now works in vi insert mode.
+s. Colored completion prefixes are now displayed using a different color, less
+ likely to collide with files.
+
+t. Fixed a bug that caused vi-mode character search to misbehave when
+ running in callback mode.
+
+u. Fixed a bug that caused output to be delayed when input is coming from a
+ macro in vi-mode.
+
+v. Fixed a bug that caused the vi-mode `.' command to misbehave when redoing
+ a multi-key key sequence via a macro.
+
+w. Fixed a bug that caused problems with applications that supply their own
+ input function when performing completion.
+
+x. When read returns -1/EIO when attempting to read a key, return an error
+ instead of line termination back to the caller.
+
+y. Updated tty auditing feature based on patch from Red Hat.
+
+z. Fixed a bug that could cause the history library to crash on overflows
+ introduced by malicious editing of timestamps in the history file.
+
+aa. The history file writing functions only attempt to create and use a backup
+ history file if the history file exists and is a regular file.
+
+bb. Fixed an out-of-bounds read in readline's internal tilde expansion interface.
+
+cc. Fixed several redisplay bugs with prompt strings containing multibyte
+ and non-visible characters whose physical length is longer than the screen
+ width.
+
+dd. Fixed a redisplay bug with prompt strings containing invisible characters
+ whose physical length exceeds the screen width and using incremental search.
+
+ee. Readline prints more descriptive error messages when it encounters errors
+ while reading an inputrc file.
+
+ff. Fixed a bug in the character insertion code that attempts to optimize
+ typeahead when it reads a character that is not bound to self-insert and
+ resets the key sequence state.
+
+gg. When refreshing the line as the result of a key sequence, Readline attempts
+ to redraw only the last line of a multiline prompt.
+
+hh. Fixed an issue that caused completion of git commands to display
+ incorrectly when using colored-completion-prefix.
+
+ii. Fixed several redisplay bugs having to do with multibyte characters and
+ invisible characters in prompt strings.
+
+jj. Fixed a bug that caused mode strings to be displayed incorrectly if the
+ prompt was shorter than the mode string.
+
2. New Features in Readline
a. The history truncation code now uses the same error recovery mechansim as
unset any state set by readline's callback mode. Intended to be used
after a signal.
+j. If an incremental search string has its last character removed with DEL, the
+ resulting empty search string no longer matches the previous line.
+
+k. If readline reads a history file that begins with `#' (or the value of
+ the history comment character) and has enabled history timestamps, the history
+ entries are assumed to be delimited by timestamps. This allows multi-line
+ history entries.
+
+l. Readline now throws an error if it parses a key binding without a terminating
+ `:' or whitespace.
+
+m. The default binding for ^W in vi mode now uses word boundaries specified
+ by Posix (vi-unix-word-rubout is bindable command name).
+
+n. rl_clear_visible_line: new application-callable function; clears all
+ screen lines occupied by the current visible readline line.
+
+o. rl_tty_set_echoing: application-callable function that controls whether
+ or not readline thinks it is echoing terminal output.
+
+p. Handle >| and strings of digits preceding and following redirection
+ specifications as single tokens when tokenizing the line for history
+ expansion.
+
+q. Fixed a bug with displaying completions when the prefix display length
+ is greater than the length of the completions to be displayed.
+
+r. The :p history modifier now applies to the entire line, so any expansion
+ specifying :p causes the line to be printed instead of expanded.
+
+s. New application-callable function: rl_pending_signal(): returns the signal
+ number of any signal readline has caught but not yet handled.
+
+t. New application-settable variable: rl_persistent_signal_handlers: if set
+ to a non-zero value, readline will enable the readline-6.2 signal handler
+ behavior in callback mode: handlers are installed when
+ rl_callback_handler_install is called and removed removed when a complete
+ line has been read.
+
-------------------------------------------------------------------------------
This document details the changes between this version, readline-6.3, and the
previous version, readline-6.2.