|
|
| version 1.1.1.1, 2014/07/30 08:16:45 | version 1.1.1.2, 2021/03/17 01:01:01 |
|---|---|
| Line 1 | Line 1 |
| This document details the changes between this version, readline-8.1, and | |
| the previous version, readline-8.0. | |
| 1. Changes to Readline | |
| a. There are a number of fixes that were found as the result of fuzzing with | |
| random input. | |
| b. Changed the revert-all-at-newline behavior to make sure to start at the end | |
| of the history list when doing it, instead of the line where the user hit | |
| return. | |
| c. When parsing `set' commands from the inputrc file or an application, readline | |
| now allows trailing whitespace. | |
| d. Fixed a bug that left a file descriptor open to the history file if the | |
| file size was 0. | |
| e. Fixed a problem with binding key sequences containing meta characters. | |
| f. Fixed a bug that caused the wrong line to be displayed if the user tried to | |
| move back beyond the beginning of the history list, or forward past the end | |
| of the history list. | |
| g. If readline catches SIGTSTP, it now sets a hook that allows the calling | |
| application to handle it if it desires. | |
| h. Fixed a redisplay problem with a prompt string containing embedded newlines. | |
| i. Fixed a problem with completing filenames containing invalid multibyte | |
| sequences when case-insensitive comparisons are enabled. | |
| j. Fixed a redisplay problem with prompt strings containing invisible multibyte | |
| characters. | |
| k. Fixed a problem with multibyte characters mapped to editing commands that | |
| modify the search string in incremental search. | |
| l. Fixed a bug with maintaining the key sequence while resolving a bound | |
| command in the presence of ambiguous sequences (sequences with a common | |
| prefix), in most cases while attempting to unbind it. | |
| m. Fixed several buffer overflows found as the result of fuzzing. | |
| n. Reworked backslash handling when translating key sequences for key binding | |
| to be more uniform and consistent, which introduces a slight backwards | |
| incompatibility. | |
| o. Fixed a bug with saving the history that resulted in errors not being | |
| propagated to the calling application when the history file is not writable. | |
| p. Readline only calls chown(2) on a newly-written history file if it really | |
| needs to, instead of having it be a no-op. | |
| q. Readline now behaves better when operate-and-get-next is used when the | |
| history list is `full': when there are already $HISTSIZE entries. | |
| r. Fixed a bug that could cause vi redo (`.') of a replace command not to work | |
| correctly in the C or POSIX locale. | |
| s. Fixed a bug with vi-mode digit arguments that caused the last command to be | |
| set incorrectly. This prevents yank-last-arg from working as intended, for | |
| example. | |
| t. Make sure that all undo groups are closed when leaving vi insertion mode. | |
| u. Make sure that the vi-mode `C' and `c' commands enter insert mode even if | |
| the motion command doesn't have any effect. | |
| v. Fixed several potential memory leaks in the callback mode context handling. | |
| w. If readline is handling a SIGTTOU, make sure SIGTTOU is blocked while | |
| executing the terminal cleanup code, since it's no longer run in a signal | |
| handling context. | |
| x. Fixed a bug that could cause an application with an application-specific | |
| redisplay function to crash if the line data structures had not been | |
| initialized. | |
| y. Terminals that are named "dumb" or unknown do not enable bracketed paste | |
| by default. | |
| z. Ensure that disabling bracketed paste turns off highlighting the incremental | |
| search string when the search is successful. | |
| 2. New Features in Readline | |
| a. If a second consecutive completion attempt produces matches where the first | |
| did not, treat it as a new completion attempt and insert a match as | |
| appropriate. | |
| b. Bracketed paste mode works in more places: incremental search strings, vi | |
| overstrike mode, character search, and reading numeric arguments. | |
| c. Readline automatically switches to horizontal scrolling if the terminal has | |
| only one line. | |
| d. Unbinding all key sequences bound to a particular readline function now | |
| descends into keymaps for multi-key sequences. | |
| e. rl-clear-display: new bindable command that clears the screen and, if | |
| possible, the scrollback buffer (bound to emacs mode M-C-l by default). | |
| f. New active mark and face feature: when enabled, it will highlight the text | |
| inserted by a bracketed paste (the `active region') and the text found by | |
| incremental and non-incremental history searches. This is tied to bracketed | |
| paste and can be disabled by turning off bracketed paste. | |
| g. Readline sets the mark in several additional commands. | |
| h. Bracketed paste mode is enabled by default. There is a configure-time | |
| option (--enable-bracketed-paste-default) to set the default to on or off. | |
| i. Readline tries to take advantage of the more regular structure of UTF-8 | |
| characters to identify the beginning and end of characters when moving | |
| through the line buffer. | |
| j. The bindable operate-and-get-next command (and its default bindings) are | |
| now part of readline instead of a bash-specific addition. | |
| k. The signal cleanup code now blocks SIGINT while processing after a SIGINT. | |
| ------------------------------------------------------------------------------- | |
| 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. | |
| 1. Changes to Readline | |
| a. A bug that caused vi-mode `.' to be unable to redo `c', `d', and `y' | |
| commands with modifiers was fixed. | |
| b. Fixed a bug that caused callback mode to dump core when reading a | |
| multiple-key sequence (e.g., arrow keys). | |
| c. Fixed a bug that caused the redisplay code to erase some of the line when | |
| using horizontal scrolling with incremental search. | |
| d. Readline's input handler now performs signal processing if read(2) is | |
| interrupted by SIGALRM or SIGVTALRM. | |
| e. Fixed a problem with revert-all-at-newline freeing freed memory. | |
| f. Clarified the documentation for the history_quotes_inhibit_expansion | |
| variable to note that it inhibits scanning for the history comment | |
| character and that it only affects double-quoted strings. | |
| g. Fixed an off-by-one error in the prompt printed when performing searches. | |
| h. Use pselect(2), if available, to wait for input before calling read(2), so | |
| a SIGWINCH can interrupt it, since it doesn't interrupt read(2). | |
| i. Some memory leaks caused by signals interrupting filename completion have | |
| been fixed. | |
| j. Reading EOF twice on a non-empty line causes EOF to be returned, rather | |
| than the partial line. This can cause partial lines to be executed on | |
| SIGHUP, for example. | |
| k. Fixed a bug concerning deleting multibyte characters from the search | |
| string while performing an incremental search. | |
| l. Fixed a bug with tilde expanding directory names in filename completion. | |
| m. Fixed a bug that did not allow binding sequences beginning with a `\'. | |
| n. Fixed a redisplay bug involving incorrect line wrapping when the prompt | |
| contains a multibyte character in the last screen column. | |
| o. Fixed a bug that caused history expansion to disregard characters that are | |
| documented to delimit a history event specifier without requiring `:'. | |
| p. Fixed a bug that could cause reading past the end of a string when reading | |
| the value when binding the set of isearch terminators. | |
| q. Fixed a bug that caused readline commands that depend on knowing which | |
| key invoked them to misbehave when dispatching key sequences that are | |
| prefixes of other key bindings. | |
| 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 | |
| the history writing code, and restores the old version of the history file | |
| on error. The error recovery mechanism handles symlinked history files. | |
| b. There is a new bindable variable, `enable-bracketed-paste', which enables | |
| support for a terminal's bracketed paste mode. | |
| c. The editing mode indicators can now be strings and are user-settable | |
| (new `emacs-mode-string', `vi-cmd-mode-string' and `vi-ins-mode-string' | |
| variables). Mode strings can contain invisible character sequences. | |
| Setting mode strings to null strings restores the defaults. | |
| d. Prompt expansion adds the mode string to the last line of a multi-line | |
| prompt (one with embedded newlines). | |
| e. There is a new bindable variable, `colored-completion-prefix', which, if | |
| set, causes the common prefix of a set of possible completions to be | |
| displayed in color. | |
| f. There is a new bindable command `vi-yank-pop', a vi-mode version of emacs- | |
| mode yank-pop. | |
| g. The redisplay code underwent several efficiency improvements for multibyte | |
| locales. | |
| h. The insert-char function attempts to batch-insert all pending typeahead | |
| that maps to self-insert, as long as it is coming from the terminal. | |
| i. rl_callback_sigcleanup: a new application function that can clean up and | |
| 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 | This document details the changes between this version, readline-6.3, and the |
| previous version, readline-6.2. | previous version, readline-6.2. |