X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ANNOUNCE;h=0684b3dc41d7e5df96990f73f9201f4b40b7d747;hp=8bda60e2f074cc2ab7ca9afa82649525f969f0c5;hb=HEAD;hpb=d66080c21038ad4feb2e41a0c4e517d5b4a03ab2 diff --git a/ANNOUNCE b/ANNOUNCE index 8bda60e2..45b1a0ea 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,4 +1,4 @@ - Announcing ncurses 6.1 + Announcing ncurses 6.4 Overview @@ -17,7 +17,7 @@ Overview * It is used in almost every system based on the Linux kernel (aside from some embedded applications). * It is used as the system curses library on OpenBSD, FreeBSD and - OSX. + MacOS. * It is used in environments such as Cygwin and MinGW. The first of these was EMX on OS/2 Warp. * It is used (though usually not as the system curses) on all of the @@ -26,611 +26,213 @@ Overview * It should work readily on any ANSI/POSIX-conforming unix. The distribution includes the library and support utilities, including - * [1]captoinfo, a termcap conversion tool - * [2]clear, utility for clearing the screen - * [3]infocmp, the terminfo decompiler - * [4]tabs, set tabs on a terminal - * [5]tic, the terminfo compiler - * [6]toe, list (table of) terminfo entries - * [7]tput, utility for retrieving terminal capabilities in shell + * captoinfo, a termcap conversion tool + * clear, utility for clearing the screen + * infocmp, the terminfo decompiler + * tabs, set tabs on a terminal + * tic, the terminfo compiler + * toe, list (table of) terminfo entries + * tput, utility for retrieving terminal capabilities in shell scripts - * [8]tset, to initialize the terminal + * tset, to initialize the terminal Full manual pages are provided for the library and tools. - The ncurses distribution is available at ncurses' [9]homepage: + The ncurses distribution is available at ncurses' homepage: - [10]ftp://ftp.invisible-island.net/ncurses/ or - [11]https://invisible-mirror.net/archives/ncurses/ . + https://invisible-island.net/archives/ncurses/ or + https://invisible-mirror.net/archives/ncurses/ . - It is also available via anonymous FTP at the GNU distribution site + It is also available at the GNU distribution site - [12]ftp://ftp.gnu.org/gnu/ncurses/ . + https://ftp.gnu.org/gnu/ncurses/ . Release Notes - These notes are for ncurses 6.1, released January 27, 2018. + These notes are for ncurses 6.4, released December 31, 2022. This release is designed to be source-compatible with ncurses 5.0 - through 6.0; providing extensions to the application binary interface + through 6.3; providing extensions to the application binary interface (ABI). Although the source can still be configured to support the - ncurses 5 ABI, the intent of the release is to provide extensions to - the ncurses 6 ABI: - * improve integration of tput and tset - * provide support for extended numeric capabilities. + ncurses 5 ABI, the reason for the release is to reflect improvements + to the ncurses 6 ABI and the supporting utility programs. There are, of course, numerous other improvements, listed in this announcement. - The release notes also mention some bug-fixes, but are focused on new - features and improvements to existing features since ncurses 6.0 - release. + The most important bug-fixes/improvements dealt with robustness + issues. The release notes also mention some other bug-fixes, but are + focused on new features and improvements to existing features since + ncurses 6.3 release. Library improvements New features - The improved integration of tput and tset made only small changes to - the libraries. However, supporting extended numeric capabilities - required a few changes: - * The TERMINAL structure in is now opaque. Doing that - allowed making the structure larger, to hold the extended numeric - data. - A few applications required changes during development of - ncurses 6.1 because those applications misused the members of that - structure, e.g., directly modifying it rather than using - [13]def_prog_mode. - * Having made TERMINAL opaque (and because none of the library - functions use anything except a pointer to TERMINAL), it was - possible to increase the size of the structure, adding to the end. - Existing applications which were linked to the ncurses 6.0 - high-level (ncurses, ncursesw) and low-level (tinfo, tinfo) - libraries should not require re-linking since the binary interface - did not change, nor did the structure offsets with TERMINAL - change. - A few applications use the inner TERMTYPE structure's offsets to - refer to terminfo capabilities within that structure. Again, those - do not require modification because their offsets within TERMINAL - did not change. - * When configured for wide-characters, i.e., "ncursesw" the TERMINAL - structure is extended. - The new data in TERMINAL holds the same information as TERMTYPE, - but with larger numbers ("int" versus "short"). It is named - TERMTYPE2. - The library uses this structure internally in preference to - TERMTYPE, referring to TERMTYPE only to initialize it for - applications that use the capabilities defined in - * When configured for 8-bit (narrow) characters, the TERMTYPE2 - structure is not used. - * The updated application binary interface is 6.1.20171230 (used for - new [14]versioned symbols), although the interface changes were - developed several months previously. - - The motivation for making this extension came from noticing that - [15]termcap applications could (though not [16]realistically) use - larger numbers than would fit in 16-bits, and the fact that the number - of color pairs for a 256-color xterm could not be expressed in - terminfo (i.e., 32767 versus 65536). Also, a few terminals support - direct-colors, which could use the extension. - - Generally speaking, applications that use internal details of a - library are unsupported. There was exactly one exception for ncurses: - the tack program used the internal details of TERMINAL, because it - provides an ncurses-specific feature for interactively modifying a - terminfo description and writing the updated description to a - text-file. It was possible to not only separate tack from these - [17]internal details of ncurses, but to generalize it so that the - program works with Unix curses (omitting the ncurses-specific - feature). That was released as [18]tack 1.08 in July 2017. - - While making changes to tack to eliminate its dependency upon ncurses - internals, the publicly-visible details of those internals were - reviewed, and some symbols were moved to private header files, while - others were marked explicitly as ncurses internals. Future releases of - ncurses may eliminate some of those symbols (such as those used by - tack 1.07) because they are neither part of the API or the ABI. - - Using the TERMTYPE2 extended numeric capabilities, it is possible to - support both color pair values and color values past 32767. Taking - compatibility into account, developers readily understand that neither - function signatures nor structure offsets change. Also, existing - functions have to operate with the extended numbers. Most of that work - is internal to the library. For the external interfaces, a hybrid - approach was used: - * X/Open Curses defined function prototypes such as wattr_set with - an unused parameter, for "future" use. After 25 years, the future - is here: ncurses uses the parameter to augment color pair values - as described in the [19]manual page. - * Other functions such as those defining color pairs did not have a - corresponding reserved parameter. For those, ncurses defines - extended versions such as init_extended_pair (versus init_pair), - init_extended_color (versus init_color). - - Additionally, to improve performance other changes (and extensions) - are provided in this release: - * Several new functions simplify management of large sets of color - pairs: reset_color_pairs, alloc_pair, find_pair and free_pair. - * New "RGB" extension capability for direct-color support is used to - improve performance of color_content. - * The internal colorpair_t is now a struct, eliminating an internal - 8-bit limit on colors - * Allocation for SCREEN's color-pair table starts small, grows on - demand up to the limit given in the terminal description. - * setcchar and getcchar now treat a negative color-pair as an error. + There are no new features in this release. Other improvements - These are new or revised features: - * modify c++/etip.h.in to accommodate deprecation of throw and - throws in c++17 - * add new function unfocus_current_field - * add option to preserve leading whitespace in form fields - * add a macro for is_linetouched and adjust the function's return - value to make it possible for most applications to check for an - error-return. - * add build-time utility report_offsets to help show when the - various configurations of tinfo library are compatible or not. - - These were done to limit or ultimately deprecate features: - * drop two symbols obsoleted in 2004: _nc_check_termtype, and - _nc_resolve_uses - * move _nc_tracebits, _tracedump and _tracemouse to curses.priv.h, - since they are not part of the suggested ABI6. - * mark some structs in form/menu/panel libraries as potentially - opaque without modifying API/ABI. - * ifdef'd header-file definition of mouse_trafo with - NCURSES_NOMACROS - * remove initialization-check for calling napms in the term-driver - configuration; none is needed. - * modify trace to avoid overwriting existing file - These are improvements to existing features: - * modify make_hash to allow building with address-sanitizer, - assuming that --disable-leaks is configured. - * move SCREEN field for use_tioctl data before the ncursesw fields, - and limit that to the sp-funcs configuration to improve termlib - compatibility - * modify db-iterator: - + ignore zero-length files in db-iterator; these are useful for - instance to suppress $HOME/.terminfo when not wanted. - + modify update_getenv to ensure that environment variables - which are not initially set will be checked later if an - application happens to set them - * modify _nc_outc_wrapper to use the standard output if the screen - was not initialized, rather than returning an error. - * improve checks for low-level terminfo functions when the terminal - has not been initialized. - * modify set_curterm to update ttytype[] data used by longname/p> - * modify _nc_get_screensize to allow for use_env and use_tioctl - state to be per-screen when sp-funcs are configured, better - matching the behavior when using the term-driver configuration. - * remove an early-return from _nc_do_color, which can interfere with - data needed by bkgd when ncurses is configured with extended - colors - * incorporate A_COLOR mask into COLOR_PAIR, in case user application - provides an out-of-range pair number - * modify logic for endwin-state to be able to detect the case where - the screen was never initialized, using that to trigger a flush of - ncurses' buffer for mvcur, e.g., in the sample program dots_mvcur - for the term-driver configuration. + * modify delscreen to more effectively delete all windows on the + given screen. + * modify wnoutrefresh to call pnoutrefresh if its parameter is a + pad, rather than treating it as an error, and modify new_panel to + permit its window-parameter to be a pad + * modify curses_trace() to show the trace-mask as symbols, e.g., + TRACE_ORDINARY, DEBUG_LEVEL(3). + * improve checks for valid mouse events when an intermediate mouse + state is not part of the mousemask specified by the caller + * allow extended-color number in opts parameter of wattr_on. + * improve _tracecchar_t2 formatting of base+combining character. + * trim out some unwanted linker options from ncurses*config and .pc + files seen in Fedora 36+. + * improve shell-scripts with shellcheck + * improve use of "trap" in shell scripts, using a script. + * modify make-tar.sh scripts to make timestamps more predictable. These are corrections to existing features: - * fixes for writing extended color pairs in putwin. - * modify no-leaks code for lib_cur_term.c to account for the tgetent - cache. - * amend handling of the repeat_char capability in EmitRange to avoid - scope creep: translate the character to the alternate character - set when the alternate character set is enabled, and do not use - repeat_char for characters past 255. - * improve wide-character implementation of myADDNSTR in - frm_driver.c, which was inconsistent with the normal - implementation. - * modify winnstr and winchnstr to return error if the output pointer - is null, as well as adding a null pointer check of the window - pointer for better compatibility with other implementations. - * modify setupterm to save original tty-modes so that erasechar - works as expected. Also modify _nc_setupscreen to avoid redundant - calls to get original tty-modes. - * modify wattr_set and wattr_get to return ERR if win-parameter is - null, as documented. - * correct order of initialization for traces in use_env and - use_tioctl versus first _tracef calls. - * correct parameters for copywin call in _nc_Synchronize_Attributes - * flush the standard output in _nc_flush for the case where SP is - zero, e.g., when called via putp. This fixes a scenario where - "tput flash" did not work after changes in 20130112. - * amend internal use of tputs to consistently use the number of - lines affected, e.g., for insert/delete character operations. - While merging terminfo source early in 1995, several descriptions - used the "*" proportional delay for these operations, prompting a - change in doupdate. - * correct return-value of extended putwin. - * double-width multibyte characters were not counted properly in - winsnstr and wins_nwstr. - * amend fix for _nc_ripoffline from 20091031 to make test/ditto.c - work in threaded configuration. - * modify _nc_viscbuf2 and _tracecchar_t2 to trace wide-characters as - a whole rather than their multibyte equivalents. - * minor fix in wadd_wchnstr to ensure that each cell has nonzero - width. - * move PUTC_INIT calls next to wcrtomb calls, to avoid carry-over of - error status when processing Unicode values which are not mapped. - * add missing assignment in lib_getch.c to make notimeout work + * modify misc/gen-pkgconfig.in to allow for the case where the + library directory does not yet exist, since this is processed + before doing an install + * set trailing null on string passed from winsnstr to wins_nwstr. + * modify waddch_literal to allow for double-width base character + when merging a combining character Program improvements - While reviewing user feedback, it became apparent that the differences - between [20]reset (an alias for tset) and "tput reset" were confusing: - * one ([21]tset) updated the terminal modes, but used only part of - the terminfo capabilities for initialization, while - * the other ([22]tput) used all of the terminal capabilities while - neglecting the terminal modes. - - On further investigation, it turned out that the differences were - largely an accident due to the way those programs had evolved. - - This release eliminates the unnecessary differences, using the same - approach for tput's init (initialization), reset and clear operations - as the separate [23]reset and [24]clear programs. Doing this does not - change the command-line options; existing scripts are unaffected. - - These are the user-visible changes for the three programs (tput, tset - and clear): - * add the terminal-mode parts of "reset" (aka tset) to the "tput - reset" command, making the two almost the same except for - window-size. - * improve tput's check for being called as "init" or "reset" to - allow for transformed names. - * add "clear" as a possible link/alias to tput. - * amend changes for tput to reset tty modes to "sane" if the program - is run as "reset", like tset. Likewise, ensure that tset sends - either reset- or init-strings. - * add -x option to clear/tput to make the E3 extension optional - * add functionality of "tset -w" to tput, like the "-c" feature this - is not optional in tput. - * add options -T and -V to clear command for compatibility with - tput. - * drop long-obsolete "-n" option from tset. - * modify tset's assignment to TERM in its output to reflect the name - by which the terminal description is found, rather than the - primary name. That was an unnecessary part from the initial - conversion of tset from termcap to terminfo. The termcap library - in 4.3BSD did this to avoid using the short 2-character name - * remove a restriction in tput's support for termcap names which - omitted capabilities normally not shown in termcap translations - * add usage message to clear command - * improve usage messages for tset and tput. - - Other user-visible improvements and new features include: - * modify tic/infocmp display of numeric values to use hexadecimal - when they are "close" to a power of two, making the result more - readable. - * add "-W" option to tic/infocmp to force long strings to wrap. - + This is in addition to the "-w" option which attempts to fit - capabilities into a given line-length. - + If "-f" option splits line, do not further split it with - "-W". - + Begin a new line when adding "use=" after a wrapped line. - * add "-q" option to infocmp to suppress the "Reconstructed from" - comment from the header, and a corresponding option to tic to - suppress all comments from the "tic -I" output. - * Sorted options in usage message for infocmp, to make it simpler to - see unused letters. - * Updated usage message for tic, adding "-0" option. - * add infocmp/tic "-Q" option, which allows one to dump the compiled - form of the terminal entry, in hexadecimal or base64: - + A "b64:" prefix in the TERMINFO variable tells the terminfo - reader to use base64 according to RFC-3548 as well as - RFC-4648 url/filename-safe format. - + A "hex:" prefix tells the terminfo reader to accept - hexadecimal data as generated by "infocmp -0qQ1". - - Other less-visible improvements and new features include: - * modify utility headers such as tic.h to make it clearer which are - externals that are used by tack. - * add "reset" to list of programs whose names might change in - manpages due to program-transformation configure options. - * modify "-T" option of clear and tput to call use_tioctl to obtain - the operating system's notion of the screensize if possible. - * add check in tput for init/reset operands to ensure those use a - terminal. - * modify programs clear, tabs, tput and tset to pass the actual tty - file descriptor to setupterm rather than the standard output or - error, making padding work. - * change tset's initialization to allow it to get settings from the - standard input as well as /dev/tty, to be more effective when - output or error are redirected. - * amend check in tput, tabs and clear to allow those to use the - database-only features in cron if a "-T" option gives a suitable - terminal name. - * improve error message from tset/reset when both stderr/stdout are - redirected to a file or pipe. - - Several of the less apparent features deal with translation of - terminfo to termcap (and the reverse), with corresponding checks by - tic: - * modify check in fmt_entry to handle a cancelled reset string. Make - similar fixes in other parts of dump_entry.c and tput.c - * correct read of terminfo entry in which all strings are absent or - explicitly cancelled. Before this fix, the result was that all - were treated as only absent. - * modify infocmp to suppress mixture of absent/cancelled - capabilities that would only show as "NULL, NULL", unless the "-q" - option is used, e.g., to show "-, @" or "@, -". - * correct a warning from tic about keys which are the same, to skip - over missing/cancelled values. - * add check in tic for use of bold, etc., video attributes in the - color capabilities, accounting whether the feature is listed in - ncv. - * add check in tic for unnecessary use of "2" to denote a shifted - special key. - * improve check in tic for delays by also warning about beep/flash - when a delay is not embedded, or if those use the VT100 reverse - video escape without using a delay. - * improve checks in trim_sgr0, comp_parse.c and parse_entry.c, for - cancelled string capabilities. - * add check in tic for some syntax errors of delays, as well as use - of proportional delays for non-line capabilities. - * add check in tic for conflict between ritm, rmso, rmul versus - sgr0. - * add check in _nc_parse_entry for invalid entry name, setting the - name to "invalid" to avoid problems storing entries. - * improve _nc_tparm_analyze, using that to extend the checks made by - tic for reporting inconsistencies between the expected number of - parameters for a capability and the actual. - * remove tic warning about "^?" in string capabilities, which was - marked as an extension; however all Unix implementations support - this and X/Open Curses does not address it. On the other hand, - [25]BSD termcap did not support this feature (until the - [26]mid-1990s). - in _nc_infotocap, added a check to ensure that terminfo "^?" is - not written to termcap. - * modify sscanf calls in _nc_infotocap for patterns "%{number}%+%c" - and "%'char'%+%c" to check that the final character is really "c", - avoiding a case in icl6404 which cannot be converted to termcap. - * in _nc_tic_expand and _nc_infotocap, improved string-length check - when deciding whether to use "^X" or "\xxx" format for control - characters, to make the output of tic/infocmp more predictable. - * limited termcap "%d" width to 2 digits on input, and use "%2" in - preference to "%02" on output. - * correct terminfo/termcap conversion of "%02" and "%03" into "%2" - and "%3"; the result repeated the last character. + Several improvements were made to the utility programs: - Examples + infocmp - Along with the library and utilities, many improvements were made to - the [27]ncurses-examples. - - These changes were made to demonstrate new extensions in ncurses: - * add demo_new_pair program, to demonstrate [28]alloc_pair, - [29]find_pair and [30]free_pair functions. - This program iterates over the possible color combinations, - allocating or initializing color pairs. For best results, choose - screen-width dividing evenly into the number of colors. e.g., - - 32x64,32x128 256 colors - 24x44,24x88 88 colors - 32x64,24x128 16 colors - - * add extended_color program, like the older color_set program, but - using the extended color functions, with and without the - SP-functions interface. - * add picsmap program to fill in some testing issues not met by - dots, using this as the third example in a comparison of the - [31]ncurses versus slang libraries. - The program can directly read X bitmap and pixmap files, - displaying a picture. It can read other image files using - ImageMagick's convert program to translate the image into text. - For 16-, 88- and 256-color terminal descriptions, picsmap can load - a palette file which tells it which color palette entries to use. - For direct-colors, the terminal descriptions use the RGB extension - capability. + + rewrite canonical_name function of infocmp to ensure buffer + size + + improve readability of long parameterized expressions with + the infocmp "-f" option by allowing split before a "%p" + marker. + + modify verbose-option of infocmp, tic, toe to enable + debug-tracing if that is configured. - There are other new example programs and a few scripts: - * add dots_xcurses program to illustrate a different approach used - for extended colors which can be contrasted with dots_curses. - * add list_keys program show function keys for one or more terminal - descriptions. It uses ncurses's convention of modifiers for - special keys, based on xterm. - * add padview program, to compare pads with direct updates in the - view program. - * add sp_tinfo program to exercise the SP-functions extension of the - low-level terminfo library. - * add test-programs for termattrs and term_attrs functions. - * add test_sgr program to exercise all combinations of the sgr - capability. - * add tput-colorcube demo script, imitating xterm's 88- and - 256-color scripts using tput. - * add tput-initc script to demonstrate how tput may be used to - initialize a color palette from a data file. - - A variety of improvements were made to existing programs, both new - features as well as options added to make the set of programs more - consistent. - - The ncurses program is the largest; a proportionately large number of - changes were made to it: - * modify a/A screens to make exiting on an escape character depend - on the start of keypad and timeout modes, to allow better testing - of function-keys. - add "t" toggle for notimeout function. - * modify layout of b/B screens to allow for additional annotation on - the right margin; some terminals with partial support did not - display well. - * modify c/C screens to allow for extended color pairs. - add z/Z zoom feature to make extended color pairs easier to test. - modify test-screens to take advantage of wide screens, reducing - the number of lines used for 88- and 256-colors. - * modify "d" edit-color screen to optionally read xterm color - palette directly from terminal, as well as handling KEY_RESIZE and - screen-repainting with control/L and control/R. - * add examples to "F" screen for WACS_D_PLUS and WACS_T_PLUS. - * improve "g" screen, correcting ifdef which made the legend not - reflect changes to keypad- and scroll-modes. Added check for - return-value of putwin. - * make "s" test easier to understand which subtests are available - add a corresponding "S" wide-character overlap test-screen. - * add "v" screen to show baudrate and other values. - - These changes were made to the other examples: - * modify blue program to use Unicode values for card-glyphs when - available, as well as improving the check for CP437 and CP850. - * improve demo_menus program, allowing mouse-click on the - menu-headers to switch the active menu. This requires a new - extension option O_MOUSE_MENU to tell the menu driver to put mouse - events which do not apply to the active menu back into the queue - so that the application can handle the event. - * correct logic in demo_terminfo program for "-f" option - * modify ditto program to allow $XTERM_PROG environment variable to - override "xterm" as the name of the program to run in the threaded - configuration. - * add several options to the "dots" test-programs. - * modify filter program: - + illustrate an alternative to getnstr, that polls for input - while updating a clock on the right margin as well as - responding to window size-changes. - + adapt logic used in [32]dialog [33]"--keep-tite" option for - filter program as the "-a" option. When set, filter attempts - to suppress the alternate screen. - * modify knight program to provide the "slow" solution for small - screens using "R", noting that Warnsdorf's method is easily done - with "a". - * modify the savescreen program to add test patterns that exercise - 88-, 256-, etc., colors. - * add options to test_arrays, for selecting termcap vs terminfo, - etc. - * modify the view program: - + expand tabs using the ncurses library rather than in the - test-program. - + eliminate the "-n" option by simply reading the whole file. - + implement page up/down commands. - + remove the very old SIGWINCH example; just use KEY_RESIZE. - * improve animation in xmas program by adding a time-delay in - blinkit. - * modify several test-programs which call use_default_colors to - consistently do this only if the "-d" option is given. - * modify the install-rule for ncurses-examples to put the data files - in the data directory, e.g., /usr/share/ncurses-examples. - * modify several test programs to use new popup_msgs function, - adapted from the help-screen used in the edit_field program. - * modify test data for xterm palettes to use the newer - color4/color12 values. - * improve the tracemunch script: - + show screenXX pointers and thread identifiers as names. - + chang address-parameters of add_wch, color_content and - pair_content to dummy parameters. + tabs + limit tab-stop values to max-columns - Terminal database + tic + add consistency check in tic for u6/u7/u8/u9 and NQ + capabilities. - There are several new terminal descriptions: + tput + corrected use of original tty-modes in init/reset subcommands + + Examples - dumb-emacs-ansi, dvtm, dvtm-256color, fbterm, iterm2, linux-m1 - minitel entries, putty-noapp, viewdata, and vt100+4bsd - building-block. + Along with the library and utilities, improvements were made to the + ncurses-examples. Most of this activity aimed at improving the + test-packages: + * add minimal -h (usage) and -V (version) getopt logic to all + ncurses-examples programs. + * fix an error in "@" command in test/ncurses.c F-menu + * add curses_trace to ifdef's for START_TRACE in test/test.priv.h + * improve pthread-configuration for test/worm.c + * add setlocale call to several test-programs. + * workaround in test/picsmap.c for use of floating point for rgb + values by ImageMagick 6.9.11, which appears to use the wrong upper + limit. + * use static libraries for AdaCurses test-package for Mageia, since + no gprbuild package is available. + * install Ada95 sample programs in libexecdir, adding a wrapper + script to invoke those. + * install ncurses-examples programs in libexecdir, adding a wrapper + script to invoke those. + + There are other new demo/test programs and reusable examples: + + test/combine + demonstrate combining characters + + test/test_delwin + demonstrate deleting a window + + test/test_mouse + observe mouse events in the raw terminal or parsed ncurses + modes + + test/test_unget_wch + demonstrate the unget_wch and unget functions - xterm+noalt, xterm+titlestack, xterm+alt1049, xterm+alt+title - building blocks and xterm+direct, xterm+indirect, xterm-direct. - from [34]xterm patch #331. + Terminal database - several other "-direct" descriptions to address the differences of - other terminal emulators versus xterm-direct. + There are several new terminal descriptions: + * mosh + * mosh-256color + * teken-16color + * teken-sc + * teken-vt + * xgterm There are many changes to existing terminal descriptions. Some were updates to several descriptions: - * use xterm+sm+1006 in several terminal descriptions which were - validated as supporting the extended mouse feature for their - respective terminal emulators. - * corrected sgr/sgr0 strings in a few cases reported by tic, making - those correspond to the non-sgr settings where they differ, but - otherwise use ECMA-48 consistently. - * add 0.1sec mandatory delay to flash capabilities using the VT100 - reverse-video control + * make description-fields distinct + * fix errata in description fields + * add/use several building-blocks: + + aixterm+sl + + ansi+cpr + + apollo+vt132 + + decid+cpr + + ncr260vp+sl + + wyse+sl + + x10term+sl + + xterm+acs + + xterm+alt47 while others affected specific descriptions. These were retested, to - take into account new/undocumented changes by their developers: - - iterm, minitel, st, viewdata, nsterm - - while these are specific fixes based on user reports, or warnings from - tic: - - [35]ansi building blocks - - + restored rmir/smir in ansi+idc to better match original - ansiterm+idc, add alias ansiterm + take into account changes by their developers: + * kitty + * teken - [36]icl6402 + while these are specific fixes based on reviewing documentation, user + reports, or warnings from tic: - + corrected missing comma-separator between string capabilities - in icl6402 and m2-nam + att610+cvis0 + amended note as per documentation for att610, att620, att730 - [37]interix + kon, kon2, jfbterm + revise to undo "linux2.6" change to smacs/rmacs/enacs - + updated using tack and SFU with Windows 7 Ultimate. - + used ^? for kdch1 + st-0.6 + add dim, ecma+strikeout - [38]linux + foot+base + add xterm+sl-alt - + made linux3.0 entry the default linux entry - + modify linux2.6 entry to improve line-drawing so that the - linux3.0 entry can be used in non-UTF-8 mode - + omitted selection of ISO-8859-1 for G0 in enacs capability - from linux2.6 entry, to avoid conflict with the user-defined - mapping. The reset feature uses ISO-8859-1 in any case. - + modify flash capability for linux and wyse entries to put the - delay between the reverse/normal escapes rather than after - + modify linux-16color to not mask dim, standout or reverse - with the ncv capability + dec+sl + correct dsl in dec+sl - [39]pccon entries + mintty and tmux + correct setal in mintty/tmux entries, add to vte-2018 - + fixed some inconsistencies in the pccon* entries - + add bold to pccon+sgr+acs and pccon-base - + add keys f12-f124 to pccon+keys + nsterm + modify nsterm to use xterm+alt1049 - [40]tmux + putty + modify putty to use xterm+alt1049 - + corrected sgr string, which used screen's "standout" code - rather than the standard code. - + add settings corresponding to xterm-keys option to reflect - upcoming change to make that option "on" by default - + uncanceled Ms - - [41]vt100 - - + modify vt100 rs2 string to reset vt52 mode and scrolling - regions - + corrected rs2 string for vt100-nam - + made minor fixes for vt100+4bsd, e.g., delay in sgr for - consistency - - [42]vte - - + moved SGR 24 and 27 from vte-2014 to vte-2012 - + add a few capabilities fixed in recent VTE development - - [43]xterm - - + add rep to xterm-new, available since [44]late 1996. - + modify xterm+256color and xterm+256setaf to use correct - number of color pairs. - + modify rs1 for xterm-16color, xterm-88color and - xterm-256color to reset palette using oc string as in linux - entry. - + add rs1 capability to xterm-256color - + add oc capability to xterm+256color, allowing palette reset - for xterm - + add op to xterm+256setaf - + modify xterm-r5, xterm-r6 and xterm-xf86-v32 to use xterm+kbs - to match [45]xterm #272, reflecting packager's changes - + used ANSI reply for u8 in xterm-new, to reflect vt220-style - responses that could be returned. - + made xterm-pcolor sgr consistent with other capabilities + vte-2018 + add blink and setal A few entries use extensions (user-defined terminal capabilities): - * add rmxx/smxx ECMA-48 strikeout extension to tmux and xterm-basic - * used RGB capability in new *-direct entries to denote direct-color - feature. + * use ansi+enq and decid+cpr in cases where the terminal probably + supported the u6-u9 extension + * remove u6-u9 from teken-2018 + * use NQ to flag entries where the terminal does not support query + and response + * add/use bracketed+paste to help identify terminals supporting this + xterm feature + * modify samples for xterm mouse 1002/1003 modes to use 1006 mode, + and also provide for focus in/out responses + * xterm patch #371 supports DEC-compatible status-line. add dec+sl + to xterm-new, per xterm #371, add xterm-p371, add xterm-p370, for + use in older terminals, and set "xterm-new" to "xterm-p370" (to + ease adoption). Documentation @@ -639,273 +241,129 @@ Release Notes * attempts to improve the description of features which users have found confusing * fills in overlooked descriptions of features which were described - in the [46]NEWS file but treated sketchily in manual pages. - - In particular, - * Since the underlying features for [47]tset, [48]tput, and - [49]clear have been better integrated, the documentation now - includes information on how those tools evolved. - In addition to explaining the improved integration of the tools, - the manual pages made it easier to see how the tools are similar - and how they are different. - * The addch manual page has additional information on - [50]portability and differences from other implementations. - * The discussion of color-pairs in the attributes manual page is - improved in its [51]history section. - * The documentation of the chtype, cchar_t types and the attribute - values which can be stored in those types, in particular the - [52]history and [53]portability sections of the attributes manual - page, has been improved. - * improve discussion of [54]portability in the mouse manual. - * The pad manual page has a section on the [55]origin and - portability of pads. - * Differences between SVr4 and X/Open Curses soft-keys are discussed - in a new section on [56]portability. - * There are updated/improved notes on portability in the - [57]resizeterm and [58]wresize manual pages. + in the NEWS file but treated sketchily in manual pages. In addition to providing background information to explain these features and show how they evolved, there are corrections, clarifications, etc.: - * add note in the [59]addch manual about line-drawing when it - depends upon UTF-8. - * improve discussion of line-drawing characters in the [60]add_wch - manual. - * explain in [61]clear's manual page that it writes to the standard - output. - * improve description of [62]endwin. - * improve discussion of field validation in the [63]form driver - manual page. - * clarify the use of wint_t vs wchar_t in [64]get_wstr manual page. - * clarify in the [65]getch manual that the keypad mode affects an - application's ability to read KEY_MOUSE codes, but does not affect - KEY_RESIZE. - trim some obsolete/incorrect wording about EINTR from the getch - manual page - improve manual pages for [66]getch and [67]get_wch to point out - that they might return user-defined values which have no - predefined names in - * improve description of the -R option in the [68]infocmp manual - page - * clarify in the [69]resizeterm manual page how KEY_RESIZE is pushed - onto the input stream. - * document return value of [70]use_extended_names - * document differences in [71]ESCDELAY versus AIX's implementation - in the variables manual page. - * The _nc_free_tinfo function is now documented in the - [72]memory-leaks manual page, because it could be used in tack for - memory-leak checking. - * add a note to the [73]tic manual page about -W versus -f options. - * improve terminfo manual description of [74]terminfo syntax. - improve terminfo manual page discussion of [75]control- and - graphics- characters. - improve [76]color-handling section in terminfo manual page - * clarify description in [77]tput manual page regarding support for - termcap names - update [78]tput manual page to reflect changes to manipulate - terminal modes by sharing functions with tset. - * clarify in manual pages that the optional verbose option level of - [79]tic and [80]infocmp is available only when ncurses is - configured for tracing. - * improve manual page description of [81]tset/reset versus - window-size. - * improve description of [82]tgoto parameters - - There are new manual pages: - * [83]user_caps documents the terminfo extensions used by ncurses. - * [84]scr_dump documents the screen-dump format. - - Some of the improvements are more subtle, relating to the way the - information is presented: - * Made minor fixes to manpage NAME/SYNOPSIS sections to consistently - use rule that either all functions which are prototyped in - SYNOPSIS are listed in the NAME section, or the manual-page name - is the sole item listed in the NAME section. The latter is used to - reduce clutter, e.g., for the top-level library manual pages as - well as for certain feature-pages such as [85]SP-funcs and - [86]threading. - * improve manual pages for utilities with respect to POSIX versus - X/Open Curses. - * improve organization of the [87]attributes and [88]color manual - pages. + * Corrections: + + remove a stray '/' from description of %g in terminfo(5). + + correct/improve font-formatting in curs_getch.3x, as well as + other manual pages. + * New/improved history and portability sections: + + add portability notes for delscreen and delwin in manual. + + improve curs_slk.3x discussion of extensions and portability + * Other improvements: + + improve curs_bkgd.3x, explaining that bkgdset can affect + results for bkgd + + add note on portable memory-leak checking in curs_memleaks.3x + + expanded description in resizeterm.3x + + add section on releasing memory to curs_termcap.3x and + curs_terminfo.3x manpages. + + add clarification of the scope of dynamic variables in + terminfo(5). + + improve formatting of ncurses-intro.html and hackguide.html + + improve curs_clear.3x links to other pages + + update ncurses-howto, making documentation fixes along with + corrections to example programs. + + use newer version 1.36 of gnathtml for generating Ada html + files. + + update external links in Ada95.html + + There are no new manual pages (all of the manual page updates are to + existing pages). Interesting bug-fixes - * modify toe to not exit if unable to read a terminal description, - e.g., if there is a permission problem. - * correct 20100515 change for weak signals versus sigprocmask - * work around Ada tool-breakage in Debian 9 and later by invoking - gprconfig to specify the C compiler to be used by gnatmake, and - conditionally suppressing Library_Options line for static - libraries. - * There were, as well, several bug-fixes to handle illegal input for - tic. Because those did not correspond to useful terminal - descriptions, most users are unaffected. + While there were many bugs fixed during development of ncurses 6.4, + only a few (the reason for this release) were both important and + interesting. Most of the bug-fixes were for local issues which did not + affect compatibility across releases. Since those are detailed in the + NEWS file no elaboration is needed here. + + The interesting bugs were those dealing with memory leaks and buffer + overflows. Although the utilities are designed for text files (which + they do properly), some choose to test them with non-text files. + * Text files contain no embedded nulls. Also, they end with a + newline. Feeding tic non-text files exposed a few cases where the + program did not check for those issues. As a result, further + processing of the input found limit-checks whose assumptions were + invalid. + * Fixing the limit-checks (first) found a problem with tic managing + the list of strings in a terminal description. In merging two + terminal descriptions (i.e., the "use=" feature), tic was not + allocating a complete copy. A quick repair for that introduced a + memory leak. + * The checks for non-text files are improved (i.e., embedded nulls + in the input file will cause tic to reject it rather than + attempting to process it). + * The string allocations in tic are likewise improved. Configuration changes Major changes - This release provides a new binary format for terminal descriptions - that use extended numeric capabilities. Applications built with the - wide-character ncursesw library can use these extended numbers. - * This includes utilities such as tic and infocmp, because (as noted - in [89]New features), the feature relies upon an extension to the - low-level tinfo library. - * A few software packagers use a configuration option of ncurses - which allows the low-level tinfo library to be shared between the - high-level ncurses and ncursesw libraries. This new feature was - designed to work in that configuration as well. - - Other applications (i.e., using the 8-bit ncurses library) which read - the extended terminal descriptions see those numeric capabilities set - to the maximum value for a signed 16-bit number. - - Older versions of ncurses' tic accept out-of-range numeric - capabilities, storing those as the maximum value for a signed 16-bit - number. Other implementations of curses (mentioned in the discussion - of [90]picsmap) give zero for these out-of-range capabilities. + There are no major changes. No new options were added. Several + improvements were made to configure checks. Configuration options - These changes provide support for tack 1.08, released in [91]July - 2017: - * add --without-tack configure option to refine --with-progs - configure option. Normally tack is built outside the ncurses tree, - but a few packagers combine it during the build. If term_entry.h - is installed, there is no advantage to in-tree builds. - * adjust configure-script to define HAVE_CURSES_DATA_BOOLNAMES - symbol needed for tack 1.08 when built in-tree. Rather than - relying upon internal "_nc_" functions, tack now uses the boolean, - number and string capability name-arrays provided by ncurses and - SVr4 Unix curses. It still uses term_entry.h for the definitions - of the extended capability arrays. - * add dependency upon ncurses_cfg.h to tic's header-files; any - program using tic-library will have to supply this file. Legacy - tack versions supply this file; ongoing tack development has - dropped the dependency upon tic-library and new releases will not - be affected. - - Other changes to the configure-script and generated files include - * add configure options to disable checks for form, menu and panel - libraries so that ncurses-examples can be built with non-SVr4 - curses implementations. - * add configure option --enable-opaque-curses for ncurses library - and similar options for the other libraries. - * add configure option --disable-wattr-macros for use in cases where - one wants to use the same headers for ncurses5/ncurses6 - development, by suppressing the wattr* macros which differ due to - the introduction of extended colors - * modify configure macro for shared-library rules to use -Wl,-rpath - rather than -rpath to work around a bug in scons - * improve ncurses-examples' configure script to define as needed - NCURSES_WIDECHAR for platforms where _XOPEN_SOURCE_EXTENDED does - not work. Also modified the test program to ensure that if - building with ncurses, that the cchar_t type is checked, since - that is normally (since [92]20111030) ifdef'd depending on this - test. - * modify configure script to handle the case where tic-library is - renamed, but the --with-debug option is used by itself without - normal or shared libraries - * modify editing script which generates resulting.map to work with - the clang configuration on recent FreeBSD, which gives an error on - an empty "local" section. - * improve configure check for setting the WILDCARD_SYMS variable; on - ppc64 the variable is in the Data section rather than Text. - * correct result of configure option --without-fallbacks, which - caused FALLBACK_LIST to be set to "no" - * modify --with-pkg-config-libdir option to make it possible to - install ".pc" files even if pkg-config is not found. Limit this - change, to suppress the actual install if it is not overridden to - a valid directory at install time. - * disallow "no" as a possible value for --with-shlib-version option, - overlooked in cleanup-changes for [93]20000708. + There are a few new/modified configure options: + + --with-abi-version + add ABI 7 defaults to configure script. + + --with-caps + add warning in configure script if file specified for + "--with-caps" does not exist. + + --with-manpage-format + bzip2 and xz compression are now supported + + --with-xterm-kbs + add check/warning in configure script if option + "--with-xterm-kbs" is missing or inconsistent Portability Many of the portability changes are implemented via the configure script: - * improve configure script's CF_CC_ENV_FLAGS macro to allow for - compiler wrappers such as ccache. This change moves only the - preprocessor, optimization and warning flags to CPPFLAGS and - CFLAGS, leaving the residue in CC. That happens to work for gcc's - various "model" options, but may require tuning for other - compilers. - * modify ncurses-examples' configure script to use pkg-config for - the extra form/menu/panel libraries, to be more consistent with - the handling of the curses/ncurses library. - * add configuration checks to build with [94]NetBSD curses, which - for example lacks [95]use_env. - * change ncurses-examples to use attr_t vs chtype to follow X/Open - documentation more closely since Solaris xpg4-curses uses - different values for WA_xxx vs A_xxx that rely on attr_t being an - unsigned short. Tru64 aka OSF1, HPUX, AIX did as ncurses does, - equating the two sets. - * modify several test programs to reflect that ncurses honors - existing signal handlers in initscr, while other implementations - do not. - * add configure check for openpty to ncurses-examples' configure - script, for ditto. - * improve check for working poll function by using posix_openpt as a - fallback in case there is no valid terminal on the standard input - * modify ncurses-examples' configure script to check for pthread - dependency of ncursest or ncursestw library when building the - ncurses examples, e.g., in case weak symbols are used. - * add checks in ncurses-examples' configure script for some - functions neither in 4.3BSD curses, nor based on X/Open Curses: - + modify a loop limit in firework.c to work around absense of - limit checks in some libraries. - + fill the last row of a window with "?" in firstlast if waddch - does not return ERR on the lower-right corner. - * build-fixes for the Portland Group (PGI) compilers - + accept whitespace in sed expression for generating expanded.c - + modify configure check that g++ compiler warnings are not - used. - + add configure check for -fPIC option needed for shared - libraries. - * modify configure script for clang as used on FreeBSD, to work - around clang's differences in exit codes vs gcc. - * fixes for configure/build using clang on OSX - + do not redefine "inline" in ncurses_cfg.h; this was - originally to solve a problem with gcc/g++, but is aggravated - by clang's misuse of symbols to pretend it is gcc. - + add braces to configure script to prevent unwanted addition - of "-lstdc++" option to the CXXLIBS symbol. - + improve/update test-program used for checking existence of - stdc++ library. - + if $CXXLIBS is set, the linkage test uses that in addition to - $LIBS. - * fixes for OS/2: - + use button instead of kbuf[0] in EMX-specific part of - lib_mouse.c - + support building with libtool on OS/2 - + use stdc++ library with OS/2 kLIBC - + clear configure script's cf_XOPEN_SOURCE for OS/2, to work - with its header files - * add "newer" baudrate symbols to the [96]baudrate function in the - ncurses library as well as to a corresponding table in tset. - * modify ncurses-examples savescreen to work with AIX and HPUX. - * define WIN32_LEAN_AND_MEAN for MinGW port, making builds faster. - * add a configure check for wcwidth versus the ncurses line-drawing - characters, to use in special-casing systems such as Solaris. - Solaris, however, requires a special case that maps Unicode - line-drawing characters into the acsc string for non-Unicode - locales. Solaris also has a misconfigured wcwidth which marks all - of the line drawing characters as double-width. - * string-hacks (non-standard): - + fix configure script to record when strlcat is found on - OpenBSD. - + add --enable-string-hacks option to ncurses-examples' - configure script. - + completed string-hacks for sprintf, etc., including the - ncurses-examples programs. - + make --enable-string-hacks option work with Debian by - checking for the "bsd" library and its associated - "" header. - * workaround for Debian's antique/unmaintained version of mawk: - + see Debian #65617, which was fixed in mawk's upstream - releases in [97]2009. - + related fixes when building link_test. + * amend configure option's auto-search to account for systems where + none of the directories known to pkg-config exist + * corrected regex needed for older pkg-config used in Solaris 10 + * improve handling of --with-pkg-config-libdir option, allowing for + the case where either $PKG_CONFIG_LIBDIR or the option value has a + colon-separated list of directories + * if the --with-pkg-config-libdir option is not given, use + ${libdir}/pkgconfig as a default + * improve search-path check for pkg-config, e.g., for Debian testing + which installs pkg-config with architecture-prefixes. + * build-fix for cross-compiling to MingW, conditionally add -lssp + * improve configure check for getttynam + * fixes to build with dietlibc: + + add configure check for fpathconf + + add configure check for math sine/cosine, needed in + test/tclock, and eliminate pow() from test/hanoi + + use wcsnlen as an alternative to wmemchr if it is not found + * modify configure macro CF_BUILD_CC to check if the build-compiler + works, rather than that it is different from the cross-compiler, + e.g., to accommodate a compiler which can be used for either + purpose with different flags + * modify configure/scripts to work around interference by GNU grep + 3.8 + + Here are some of the other portability fixes: + * change man_db.renames to template, to handle ncurses*-config + script with the --extra-suffix configure option. + * update CF_XOPEN_SOURCE macro, adding variants "gnueabi" and + "gnueabihf" to get _DEFAULT_SOURCE special case, as well as adding + GNU libc suffixes for "abi64", "abin32", "x32" to distinguish it + from other libc flavors. + * work around musl's nonstandard use of feature test macros by + adding a definition for NCURSES_WIDECHAR to the generated ".pc" + and *-config files. + * use "command -v" rather than "type" in Ada95/gen/Makefile.in to + fix a portability issue. _________________________________________________________________ Features of ncurses @@ -936,7 +394,7 @@ Features of ncurses curses. * The ncurses utilities have options to allow you to filter terminfo entries for use with less capable curses/terminfo versions such as - the HP/UX and AIX ports. + the HP-UX and AIX ports. The ncurses package also has many useful extensions over SVr4: * The API is 8-bit clean and base-level conformant with the X/OPEN @@ -960,6 +418,7 @@ Features of ncurses use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by defining more than one control sequence to map to a given key code. + * Support for direct-color terminals, such as modern xterm. * Support for 256-color terminals, such as modern xterm. * Support for 16-color terminals, such as aixterm and modern xterm. * Better cursor-movement optimization. The package now features a @@ -982,10 +441,10 @@ Features of ncurses types even when no terminfo tree or termcap file is accessible (this may be useful for support of screen-oriented programs that must run in single-user mode). - * The [98]tic/[99]captoinfo utility provided with ncurses has the - ability to translate many termcaps from the XENIX, IBM and AT&T - extension sets. - * A BSD-like [100]tset utility is provided. + * The tic/captoinfo utility provided with ncurses has the ability to + translate many termcaps from the XENIX, IBM and AT&T extension + sets. + * A BSD-like tset utility is provided. * The ncurses library and utilities will automatically read terminfo entries from $HOME/.terminfo if it exists, and compile to that directory if it exists and the user has no write access to the @@ -1000,20 +459,20 @@ Features of ncurses other entries in the same source file (as in System V) but also to compiled entries in either the system terminfo directory or the user's $HOME/.terminfo directory. - * The table-of-entries utility [101]toe makes it easy for users to - see exactly what terminal types are available on the system. + * The table-of-entries utility toe makes it easy for users to see + exactly what terminal types are available on the system. * The library meets the XSI requirement that every macro entry point - have a corresponding function which may be linked (and will be + has a corresponding function which may be linked (and will be prototype-checked) if the macro definition is disabled with #undef. - * Extensive documentation is provided (see the [102]Additional - Reading section of the [103]ncurses FAQ for online documentation). + * Extensive documentation is provided (see the Additional Reading + section of the ncurses FAQ for online documentation). Applications using ncurses The ncurses distribution includes a selection of test programs (including a few games). These are available separately as - [104]ncurses-examples + ncurses-examples The ncurses library has been tested with a wide variety of applications including: @@ -1021,127 +480,131 @@ Applications using ncurses aptitude FrontEnd to Apt, the debian package manager - [105]https://wiki.debian.org/Aptitude + https://wiki.debian.org/Aptitude cdk Curses Development Kit - [106]https://invisible-island.net/cdk/ + https://invisible-island.net/cdk/ ded directory-editor - [107]https://invisible-island.net/ded/ + https://invisible-island.net/ded/ dialog the underlying application used in Slackware's setup, and the basis for similar install/configure applications on many systems. - [108]https://invisible-island.net/dialog/ + https://invisible-island.net/dialog/ lynx the text WWW browser - [109]https://lynx.invisible-island.net/ + https://lynx.invisible-island.net/ mutt mail utility - [110]http://www.mutt.org/ + http://www.mutt.org/ ncftp file-transfer utility - [111]https://www.ncftp.com/ + https://www.ncftp.com/ nvi New vi uses ncurses. - [112]https://sites.google.com/a/bostic.com/keithbostic/vi + https://sites.google.com/a/bostic.com/keithbostic/vi ranger A console file manager with VI key bindings in Python. - [113]https://ranger.github.io/ + https://ranger.github.io/ tin newsreader, supporting color, MIME - [114]http://www.tin.org/ + http://www.tin.org/ vifm File manager with vi like keybindings - [115]https://vifm.info/ + https://vifm.info/ as well as some that use ncurses for the terminfo support alone: minicom terminal emulator for serial modem connections - [116]https://alioth.debian.org/projects/minicom/ + https://alioth.debian.org/projects/minicom/ mosh a replacement for ssh. - [117]https://mosh.mit.edu/ + https://mosh.org/ tack terminfo action checker - [118]https://invisible-island.net/ncurses/tack.html + https://invisible-island.net/ncurses/tack.html tmux terminal multiplexor - [119]https://github.com/tmux/tmux/wiki + https://github.com/tmux/tmux/wiki vile vi-like-emacs may be built to use the terminfo, termcap or curses interfaces. - [120]https://invisible-island.net/vile/ + https://invisible-island.net/vile/ and finally, those which use only the termcap interface: emacs text editor - [121]https://www.gnu.org/software/emacs/ + https://www.gnu.org/software/emacs/ less The most commonly used pager (a program that displays text files). - [122]http://www.greenwoodsoftware.com/less/ + http://www.greenwoodsoftware.com/less/ screen terminal multiplexor - [123]https://www.gnu.org/software/screen/ + https://www.gnu.org/software/screen/ vim text editor - [124]https://www.vim.org/ + https://www.vim.org/ Development activities Zeyd Ben-Halim started ncurses from a previous package pcurses, written by Pavel Curtis. Eric S. Raymond continued development. - Juergen Pfeifer wrote most of the form and menu libraries. Ongoing - development work is done by [125]Thomas Dickey. Thomas Dickey also - acts as the maintainer for the Free Software Foundation, which holds - the [126]copyright on ncurses. + Juergen Pfeifer wrote most of the form and menu libraries. + + Ongoing development work is done by Thomas E. Dickey. Thomas E. Dickey + has acted as the maintainer for the Free Software Foundation, which + held a copyright on ncurses for releases 4.2 through 6.1. Following + the release of ncurses 6.1, effective as of release 6.2, copyright for + ncurses reverted to Thomas E. Dickey (see the ncurses FAQ for + additional information). Contact the current maintainers at - [127]bug-ncurses@gnu.org + bug-ncurses@gnu.org To join the ncurses mailing list, please write email to - [128]bug-ncurses-request@gnu.org + bug-ncurses-request@gnu.org containing the line: @@ -1150,219 +613,61 @@ Development activities This list is open to anyone interested in helping with the development and testing of this package. - Beta versions of ncurses and patches to the current release are made - available at + Beta versions of ncurses are made available at + + https://invisible-island.net/archives/ncurses/current/ and + https://invisible-mirror.net/archives/ncurses/current/ . + + Patches to the current release are made available at - [129]ftp://ftp.invisible-island.net/ncurses/ and - [130]https://invisible-mirror.net/archives/ncurses/ . + https://invisible-island.net/archives/ncurses/6.3/ and + https://invisible-mirror.net/archives/ncurses/6.3/ . There is an archive of the mailing list here: - [131]http://lists.gnu.org/archive/html/bug-ncurses (also - [132]https) + http://lists.gnu.org/archive/html/bug-ncurses (also https) Related resources The release notes make scattered references to these pages, which may be interesting by themselves: - * [133]ncurses licensing - * [134]Symbol versioning in ncurses - * [135]Comments on ncurses versus slang (S-Lang) - * [136]tack - terminfo action checker - * [137]tctest - termcap library checker - * [138]Terminal Database + * ncurses licensing + * Symbol versioning in ncurses + * Comments on ncurses versus slang (S-Lang) + * Comments on OpenBSD + * tack - terminfo action checker + * tctest - termcap library checker + * Terminal Database Other resources The distribution provides a newer version of the terminfo-format - terminal description file once maintained by [139]Eric Raymond . - Unlike the older version, the termcap and terminfo data are provided - in the same file, which also provides several user-definable - extensions beyond the X/Open specification. + terminal description file once maintained by Eric Raymond . Unlike the + older version, the termcap and terminfo data are provided in the same + file, which also provides several user-definable extensions beyond the + X/Open specification. You can find lots of information on terminal-related topics not - covered in the terminfo file at [140]Richard Shuford's archive . - - * [141]Overview - * [142]Release Notes - + [143]Library improvements - o [144]New features - o [145]Other improvements - + [146]Program improvements - o [147]Utilities - o [148]Examples - + [149]Terminal database - + [150]Documentation - + [151]Interesting bug-fixes - + [152]Configuration changes - o [153]Major changes - o [154]Configuration options - + [155]Portability - * [156]Features of ncurses - * [157]Applications using ncurses - * [158]Development activities - * [159]Related resources - * [160]Other resources - -References - - 1. https://invisible-island.net/ncurses/man/captoinfo.1m.html - 2. https://invisible-island.net/ncurses/man/clear.1.html - 3. https://invisible-island.net/ncurses/man/infocmp.1m.html - 4. https://invisible-island.net/ncurses/man/tabs.1.html - 5. https://invisible-island.net/ncurses/man/tic.1m.html - 6. https://invisible-island.net/ncurses/man/toe.1m.html - 7. https://invisible-island.net/ncurses/man/tput.1.html - 8. https://invisible-island.net/ncurses/man/tset.1.html - 9. https://invisible-island.net/ncurses/ - 10. ftp://ftp.invisible-island.net/ncurses/ - 11. https://invisible-mirror.net/archives/ncurses/ - 12. ftp://ftp.gnu.org/gnu/ncurses/ - 13. https://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-def_prog_mode_-def_shell_mode - 14. https://invisible-island.net/ncurses/ncurses-mapsyms.html - 15. https://invisible-island.net/ncurses/tctest.html#bsd42-numeric-caps - 16. https://invisible-island.net/ncurses/ncurses-slang.html#cause_numbers - 17. https://invisible-island.net/ncurses/tack.html#portable - 18. https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726 - 19. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-EXTENSIONS - 20. https://invisible-island.net/ncurses/man/tset.1.html#h3-reset---reinitialization - 21. https://invisible-island.net/ncurses/man/tset.1.html - 22. https://invisible-island.net/ncurses/man/tput.1.html - 23. https://invisible-island.net/ncurses/man/tset.1.html#h3-reset---reinitialization - 24. https://invisible-island.net/ncurses/man/clear.1.html - 25. https://invisible-island.net/ncurses/tctest.html#bsd42-ctl-question - 26. https://invisible-island.net/ncurses/tctest.html#freebsd-ctl-question - 27. https://invisible-island.net/ncurses/ncurses-examples.html - 28. https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-alloc_pair - 29. https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-find_pair - 30. https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-free_pair - 31. https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap - 32. https://invisible-island.net/dialog/ - 33. https://invisible-island.net/dialog/manpage/dialog.html#h3-Common-Options - 34. https://invisible-island.net/xterm/xterm.log.html#xterm_331 - 35. https://invisible-island.net/ncurses/terminfo.src.html#toc-_A_N_S_I__S_Y_S__I_S_O_6429__E_C_M_A-48__Capabilities - 36. https://invisible-island.net/ncurses/terminfo.src.html#tic-icl6404 - 37. https://invisible-island.net/ncurses/terminfo.src.html#tic-interix - 38. https://invisible-island.net/ncurses/terminfo.src.html#toc-_Linux_consoles - 39. https://invisible-island.net/ncurses/terminfo.src.html#toc-_Open_B_S_D_consoles - 40. https://invisible-island.net/ncurses/terminfo.src.html#toc-_Tmux - 41. https://invisible-island.net/ncurses/terminfo.src.html#toc-_D_E_C__V_T100_and_compatibles - 42. https://invisible-island.net/ncurses/terminfo.src.html#toc-_G_N_O_M_E__V_T_E_ - 43. https://invisible-island.net/ncurses/terminfo.src.html#toc-_X_T_E_R_M - 44. https://invisible-island.net/xterm/xterm.log.html#xterm_32 - 45. https://invisible-island.net/xterm/xterm.log.html#xterm_272 - 46. https://invisible-island.net/ncurses/NEWS.html - 47. https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY - 48. https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY - 49. https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY - 50. https://invisible-island.net/ncurses/man/curs_addch.3x.html#h2-PORTABILITY - 51. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY - 52. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY - 53. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY - 54. https://invisible-island.net/ncurses/man/curs_mouse.3x.html#h2-PORTABILITY - 55. https://invisible-island.net/ncurses/man/curs_pad.3x.html#h2-PORTABILITY - 56. https://invisible-island.net/ncurses/man/curs_slk.3x.html#h2-PORTABILITY - 57. https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-PORTABILITY - 58. https://invisible-island.net/ncurses/man/wresize.3x.html#h2-PORTABILITY - 59. https://invisible-island.net/ncurses/man/curs_addch.3x.html#h3-ACS-Symbols - 60. https://invisible-island.net/ncurses/man/curs_add_wch.3x.html - 61. https://invisible-island.net/ncurses/man/clear.1.html#h2-DESCRIPTION - 62. https://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-endwin - 63. https://invisible-island.net/ncurses/man/form_driver.3x.html - 64. https://invisible-island.net/ncurses/man/curs_get_wstr.3x.html#h2-RETURN-VALUE - 65. https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Predefined-key-codes - 66. https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Keypad-Mode - 67. https://invisible-island.net/ncurses/man/curs_get_wch.3x.html#h2-DESCRIPTION - 68. https://invisible-island.net/ncurses/man/infocmp.1m.html - 69. https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-NOTES - 70. https://invisible-island.net/ncurses/man/curs_extend.3x#h2-RETURN-VALUE - 71. https://invisible-island.net/ncurses/man/curs_variables.3x.html#h2-PORTABILITY - 72. https://invisible-island.net/ncurses/man/curs_memleaks.3x.html - 73. https://invisible-island.net/ncurses/man/tic.1m.html - 74. https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Terminfo-Capabilities-Syntax - 75. https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Line-Graphics - 76. https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Color-Handling - 77. https://invisible-island.net/ncurses/man/tput.1.html#h2-PORTABILITY - 78. https://invisible-island.net/ncurses/man/tput.1.html#h3-Aliases - 79. https://invisible-island.net/ncurses/man/tic.1m.html#h2-OPTIONS - 80. https://invisible-island.net/ncurses/man/infocmp.1m.html#h3-Other-Options - 81. https://invisible-island.net/ncurses/man/tset.1.html - 82. https://invisible-island.net/ncurses/man/curs_termcap.3x.html#h3-FORMATTING-CAPABILITIES - 83. https://invisible-island.net/ncurses/man/user_caps.5.html - 84. https://invisible-island.net/ncurses/man/scr_dump.5.html - 85. https://invisible-island.net/ncurses/man/curs_sp_funcs.3x.html - 86. https://invisible-island.net/ncurses/man/curs_threads.3x.html - 87. https://invisible-island.net/ncurses/man/curs_attr.3x.html - 88. file:///ncurses/man/curs_color.3x.html - 89. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-new-library - 90. https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap - 91. https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726 - 92. https://invisible-island.net/ncurses/NEWS.html#t20111030 - 93. https://invisible-island.net/ncurses/NEWS.html#t20000708 - 94. https://invisible-island.net/ncurses/ncurses-netbsd.html - 95. https://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_env - 96. https://invisible-island.net/ncurses/man/curs_termattrs.3x.html#h3-baudrate - 97. https://invisible-island.net/mawk/CHANGES.html#t20090727 - 98. https://invisible-island.net/ncurses/man/tic.1m.html - 99. https://invisible-island.net/ncurses/man/captoinfo.1m.html - 100. https://invisible-island.net/ncurses/man/tset.1.html - 101. https://invisible-island.net/ncurses/man/toe.1m.html - 102. https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading - 103. https://invisible-island.net/ncurses/ncurses.faq.html - 104. https://invisible-island.net/ncurses/ncurses-examples.html - 105. https://wiki.debian.org/Aptitude - 106. https://invisible-island.net/cdk/ - 107. https://invisible-island.net/ded/ - 108. https://invisible-island.net/dialog/ - 109. https://lynx.invisible-island.net/ - 110. http://www.mutt.org/ - 111. https://www.ncftp.com/ - 112. https://sites.google.com/a/bostic.com/keithbostic/vi - 113. https://ranger.github.io/ - 114. http://www.tin.org/ - 115. https://vifm.info/ - 116. https://alioth.debian.org/projects/minicom/ - 117. https://mosh.mit.edu/ - 118. https://invisible-island.net/ncurses/tack.html - 119. https://github.com/tmux/tmux/wiki - 120. https://invisible-island.net/vile/ - 121. https://www.gnu.org/software/emacs/ - 122. http://www.greenwoodsoftware.com/less/ - 123. https://www.gnu.org/software/screen/ - 124. https://www.vim.org/ - 125. mailto:dickey@invisible-island.net - 126. https://invisible-island.net/ncurses/ncurses-license.html - 127. mailto:bug-ncurses@gnu.org - 128. mailto:bug-ncurses-request@gnu.org - 129. ftp://ftp.invisible-island.net/ncurses/ - 130. https://invisible-mirror.net/archives/ncurses/ - 131. http://lists.gnu.org/archive/html/bug-ncurses - 132. https://lists.gnu.org/archive/html/bug-ncurses - 133. https://invisible-island.net/ncurses/ncurses-license.html - 134. https://invisible-island.net/ncurses/ncurses-mapsyms.html - 135. https://invisible-island.net/ncurses/ncurses-slang.html - 136. https://invisible-island.net/ncurses/tack.html - 137. https://invisible-island.net/ncurses/tctest.html - 138. https://invisible-island.net/ncurses/ncurses.html#download_database - 139. http://www.catb.org/~esr/terminfo/ - 140. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal - 141. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-overview - 142. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-release-notes - 143. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-library - 144. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-new-library - 145. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-fixes-library - 146. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-programs - 147. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-utilities - 148. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-examples - 149. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-database - 150. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-documentation - 151. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-bug-fixes - 152. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-config-config - 153. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-config-major - 154. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-config-options - 155. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-portability - 156. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-features - 157. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-who-uses - 158. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-development - 159. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-this-stuff - 160. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-other-stuff + covered in the terminfo file at Richard Shuford's archive . The + collection of computer manuals at bitsavers.org has also been useful. + + * Overview + * Release Notes + + Library improvements + o New features + o Other improvements + + Program improvements + o Utilities + o Examples + + Terminal database + + Documentation + + Interesting bug-fixes + + Configuration changes + o Major changes + o Configuration options + + Portability + * Features of ncurses + * Applications using ncurses + * Development activities + * Related resources + * Other resources