X-Git-Url: http://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=ANNOUNCE;h=0684b3dc41d7e5df96990f73f9201f4b40b7d747;hb=414771292d2331e48bc09f49813998adc33929e2;hp=7b5f4efa69ae44ea29f14dc42e07bdc41dd5ca87;hpb=c633e5103a29a38532cf1925257b91cea33fd090;p=ncurses.git diff --git a/ANNOUNCE b/ANNOUNCE index 7b5f4efa..0684b3dc 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,486 +1,775 @@ - - Announcing ncurses 5.2 - - The ncurses (new curses) library is a free software emulation of - curses in System V Release 4.0, and more. It uses terminfo format, - supports pads and color and multiple highlights and forms characters - and function-key mapping, and has all the other SYSV-curses - enhancements over BSD curses. - - In mid-June 1995, the maintainer of 4.4BSD curses declared that he - considered 4.4BSD curses obsolete, and is encouraging the keepers of - Unix releases such as BSD/OS, freeBSD and netBSD to switch over to - ncurses. - - The ncurses code was developed under GNU/Linux. It should port easily - to any ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 - Warp! + Announcing ncurses 6.3 + +Overview + + The ncurses (new curses) library is a free software emulation of + curses in System V Release 4.0 (SVr4), and more. It uses terminfo + format, supports pads and color and multiple highlights and forms + characters and function-key mapping, and has all the other SVr4-curses + enhancements over BSD curses. SVr4 curses became the basis of X/Open + Curses. + + In mid-June 1995, the maintainer of 4.4BSD curses declared that he + considered 4.4BSD curses obsolete, and encouraged the keepers of unix + releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses. + + Since 1995, ncurses has been ported to many systems: + * 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 + 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 + vendor unix systems, e.g., AIX, HP-UX, IRIX64, SCO, Solaris, + Tru64. + * It should work readily on any ANSI/POSIX-conforming unix. The distribution includes the library and support utilities, including - a terminfo compiler tic(1), a decompiler infocmp(1), clear(1), - tput(1), tset(1), and a termcap conversion tool captoinfo(1). Full - manual pages are provided for the library and tools. - - The ncurses distribution is available via anonymous FTP at the GNU - distribution site [1]ftp://ftp.gnu.org/pub/gnu/ncurses. - It is also available at [2]ftp://dickey.his.com/ncurses. - - Release Notes - - This release is designed to be upward compatible from ncurses 5.0 and - 5.1; very few applications will require recompilation, depending on - the platform. These are the highlights from the change-log since - ncurses 5.1 release. - - Interface changes: - * change type of ospeed variable back to short to match its use in - legacy applications. It was altered after ncurses 4.2 to speed_t - to repair a type mismatch which was introduced after 1.9.4 in - 1995. The principal users of termcap continued to use short, which - is not the same size. - NOTE: A few applications will have to be recompiled (about 1% of - the programs in a typical Linux distribution, 10% of the programs - that use ncurses). These are easy to identify with nm or strings. - * remove a private function _nc_can_clear_with(), which was built - with the configure --enable-expanded option but not used. - * add several private functions (prefixed with "_nc_") for tracing - chtype values in the debug library, and for better access and - buffer limit checking. - - New features and improvements: - * rewrote tgoto() to make it better support existing termcap - applications which use hardcoded strings rather than obtain all of - their information from the termcap file. If the string does not - appear to be a terminfo string (i.e., does not refer to a "%p" - parameter, or terminfo-style padding), and termcap support is - configured, tgoto() will interpret it as termcap. Otherwise, as - before, it will use tparm(). - * to ensure that the tgoto() changes work properly, added checks to - tic which report capabilities that do not reference the expected - number of parameters. - * new configure script options: - + option --disable-root-environ adds runtime checks which tell - ncurses to disregard $TERMINFO and similar environment - variables if the current user is root, or running - setuid/setgid. - + option --disable-assumed-color allows you to use the pre-5.1 - convention of default colors used for color-pair 0 to be - configured (see assume_default_colors()). - + implement configure script options that transform installed - program names, e.g., --program-prefix, including the manpage - names and cross references. - + option --with-database allows you to specify a different - terminfo source-file to install. On OS/2 EMX, the default is - misc/emx.src, otherwise misc/terminfo.src - + option --with-default-terminfo-dir allows you to specify the - default terminfo database directory. - + option --with-libtool allows you to build with libtool. - NOTE: libtool uses a different notation for numbering shared - library versions from the existing ncurses configuration. - + option --with-manpage-tbl causes the manpages to be - preprocessed by tbl(1) prior to installation, - + option --without-curses-h causes the installation process to - install curses.h as ncurses.h and make appropriate changes to - headers and manpages. - * modified configure script options: - + change symbol used by the --install-prefix configure option - from INSTALL_PREFIX to DESTDIR (the latter has become common - usage although the name is misleading). - + modify ld -rpath options (e.g., Linux, and Solaris) to use an - absolute pathname for the build tree's lib directory, - avoiding confusion with directories relative to the current - one with the installed programs. - + modified misc/run_tic.in to use tic -o, to eliminate - dependency on $TERMINFO variable for installs. - * terminfo database: - + updated xterm terminfo entries to match XFree86 xterm patch - #146. - + added amiga-vnc, Matrix Orbital, and QNX qansi to - misc/terminfo.src. - + added os2 entry to misc/emx.src. - + add S0 and E0 extensions to screen's terminfo entry since - otherwise the FreeBSD port makes it pass termcap equivalents - to tgoto, which would be misinterpreted by older versions of - ncurses. - * improvements to program usability: - + modify programs to use curses_version() string to report the - version of ncurses with which they are compiled rather than - the NCURSES_VERSION string. The function returns the patch - level in addition to the major and minor version numbers. - + modify tput program so it can be renamed or invoked via a - link as 'reset' or 'init', producing the same effect as - tput reset or tput init. - + add error checking to infocmp's -v and -m options to ensure - that the option value is indeed a number. - * improved performance: - + replace a lookup table in lib_vidattr.c used to decode - no_color_video with a logic expression which is faster. - - Major bug fixes: - * correct manlinks.sed script introduced in ncurses 5.1 to avoid - using ERE "\+", which is not understood by standard versions of - sed. This happens to work with GNU sed, but is not portable, and - was the initial motivation for this release. - * remove "hpux10.*" case from CF_SHARED_OPTS configure script macro. - This differed from the "hpux*" case by using reversed symbolic - links, which made the 5.1 version not match the configuration of - 5.0 shared libraries. - * guard against corrupt terminfo data: - + modify tparm() to disallow arithmetic on strings, analyze the - varargs list to read strings as strings and numbers as - numbers. - + modify tparm()'s internal function spop() to treat a null - pointer as an empty string. - + modify parse_format() in lib_tparm.c to ignore precision if - it is longer than 10000. - + rewrote limit checks in lib_mvcur.c using new functions - _nc_safe_strcat(), etc. Made other related changes to check - lengths used for strcat() and strcpy(). - * corrections to screen optimization: - + added special case in lib_vidattr.c to reset underline and - standout for devices that have no sgr0 defined. - + change handling of non_dest_scroll_region in tty_update.c to - clear text after it is shifted in rather than before shifting - out. Also correct row computation. - + modify rs2 capability in xterm-r6 and similar entries where - cursor save/restore bracketed the sequence for resetting - video attributes. The cursor restore would undo that. - * UTF-8 support: - + when checking LC_ALL, LC_CTYPE, and LANG environment - variables for UTF-8 locale, ignore those which are set to an - empty value, as per SUSV2. - + encode 0xFFFD in UTF-8 with 3 bytes, not 2. - + modify _nc_utf8_outch() to avoid sign-extension when checking - for out-of-range value. - * other library fixes: - + added checks for an empty $HOME environment variable, to - avoid retrieving terminfo descriptions from ./.terminfo . - + change functions _nc_parse_entry() and postprocess_termcap() - to avoid using strtok(), because it is non-reentrant. - + initialize fds[] array to 0's in _nc_timed_wait(); apparently - poll() only sets the revents members of that array when there - is activity corresponding to the related file. - + add a check for null pointer in Make_Enum_Type(). - + fix a heap problem with the c++ binding. - + correct missing includes for in several places, - including the C++ binding. This is not noted by gcc unless we - use the -fno-builtin option. - * several fixes for tic: - + add a check for empty buffers returned by fgets() in - comp_scan.c next_char() function, in case tic is run on a - non-text file (fixes a core dump). - + modify tic to verify that its inputs are really files, in - case someone tries to read a directory (or /dev/zero). - + correct an uninitialized parameter to open_tempfile() in - tic.c which made "tic -I" give an ambiguous error message - about tmpnam. - + correct logic in adjust_cancels(), which did not check both - alternatives when reclassifying an extended name between - boolean, number and string, causing an infinite loop in tic. - * using new checks in tic for parameter counts in capability - strings, found/fixed several errors both in the terminfo database - and in the include/Caps file. - + modified several terminfo capability strings, including the - definitions for setaf, setab, in include/Caps to indicate - that the entries are parameterized. This information is used - to tell which strings are translated when converting to - termcap. This fixes a problem where the generated termcap - would contain a spurious "%p1" for the terminfo "%p1%d". - + correct parameter counts in include/Caps for dclk as well as - some printer-specific capabilities: csnm, defc, scs, scsd, - smgtp, smglp. - * various fixes for install scripts used to support configure - --srcdir and --with-install-prefix. - * correct several mismatches between manpage filename and ".TH" - directives, renaming dft_fgbg.3x to default_colors.3x and - menu_attribs.3x to menu_attributes.3x. - - Portability: - * configure script: - + newer config.guess, config.sub, including changes to support - OS/2 EMX. The configure script for OS/2 EMX still relies on a - patch since there is no (working) support for that platform - in the main autoconf distribution. - + make configure script checks on variables $GCC and $GXX - consistently compare against 'yes' rather than test if they - are nonnull, since either may be set to the corresponding - name of the C or C++ compiler. - + change configure script to use AC_CANONICAL_SYSTEM rather - than AC_CANONICAL_HOST, which means that configure --target - will set a default program-prefix. - + modify the check for big-core to force a couple of memory - accesses, which may work as needed for older/less-capable - machines (if not, there's still the explicit configure - option). - + modify configure test for tcgetattr() to allow for old - implementations, e.g., on BeOS, which only defined it as a - macro. - + add configure check for filesystems (such as OS/2 EMX) which - do not distinguish between upper/lowercase filenames, use - this to fix tags rules in makefiles. - + add MKncurses_def.sh to generate fallback definitions for - ncurses_cfg.h, to quiet gcc -Wundef warnings, modified - ifdef's in code to consistently use "#if" rather than - "#ifdef". - + change most remaining unquoted parameters of test in - configure script to use quotes, for instance fixing a problem - in the --disable-database option. - + modify scripts so that "make install.data" works on OS/2 EMX. - + modify scripts and makefiles so the Ada95 directory builds on - OS/2 EMX. - * library: - + replaced case-statement in _nc_tracebits() for CSIZE with a - table to simplify working around implementations that define - random combinations of the related macros to zero. - + improved OS/2 mouse support by retrying as a 2-button mouse - if code fails to set up a 3-button mouse. - + added private entrypoint _nc_basename(), used to consolidate - related code in progs, as well as accommodating OS/2 EMX - pathnames. - + alter definition of NCURSES_CONST to make it non-empty. - + redefine 'TEXT' in menu.h for AMIGA, since it is reported to - have an (unspecified) symbol conflict. - * programs: - + modified progs/tset.c and tack/sysdep.c to build with sgttyb - interface if neither termio or termios is available. Tested - this with FreeBSD 2.1.5 (which does have termios - but the - sgttyb does work). - - Features of Ncurses - - The ncurses package is fully compatible with SVr4 (System V Release 4) - curses: - * All 257 of the SVr4 calls have been implemented (and are - documented). - * Full support for SVr4 curses features including keyboard mapping, - color, forms-drawing with ACS characters, and automatic - recognition of keypad and function keys. - * An emulation of the SVr4 panels library, supporting a stack of - windows with backing store, is included. - * An emulation of the SVr4 menus library, supporting a uniform but - flexible interface for menu programming, is included. - * An emulation of the SVr4 form library, supporting data collection - through on-screen forms, is included. - * Binary terminfo entries generated by the ncurses tic(1) - implementation are bit-for-bit-compatible with the entry format - SVr4 curses uses. - * The 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. + * 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 + * tset, to initialize the terminal + + Full manual pages are provided for the library and tools. + + The ncurses distribution is available at ncurses' homepage: + + ftp://ftp.invisible-island.net/ncurses/ or + https://invisible-mirror.net/archives/ncurses/ . + + It is also available via anonymous FTP at the GNU distribution site + + ftp://ftp.gnu.org/gnu/ncurses/ . + +Release Notes + + These notes are for ncurses 6.3, released October 21, 2021. + + This release is designed to be source-compatible with ncurses 5.0 + through 6.2; providing extensions to the application binary interface + (ABI). Although the source can still be configured to support the + 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 most important bug-fixes/improvements dealt with portability + issues. The release notes also mention some other bug-fixes, but are + focused on new features and improvements to existing features since + ncurses 6.2 release. + + Library improvements + + New features + + There are a few new features: + * A new (experimental) driver, for the Windows Terminal + configuration is provided. + * A script is provided which enables OpenBSD users to upgrade their + system to use ncurses 6.3 (OpenBSD developers are also invited to + do this). + + Additionally, to improve performance other changes (and extensions) + are provided in this release: + * modify lib_mouse.c to check for out-of-range button numbers, + convert those to position reports. + * add sp-funcs for erasewchar, killwchar. + + Other improvements + + These are revised features: + * modify wgetnstr, wgetn_wstr to improve compatibility with SVr4 + curses in its treatment of interrupt and quit characters + + These were done to limit or ultimately deprecate features: + * mark wgetch-events feature as deprecated. + + prevent KEY_EVENT from appearing in curses.h unless the + configure option --enable-wgetch-events is used. + + modify MKkey_defs.sh to hide ncurses' definition of + KEY_EVENTS to reduce Visual Studio C++ redefinition warnings. + * reduce build-warnings by excluding ncurses-internals from + deprecation warnings. + + These are improvements to existing features: + * drop symbols GCC_PRINTF and GCC_SCANF from , to simplify + use. + * apply gcc format attribute to prototypes which use a va_list + parameter rather than a "..." variable-length parameter list. + * modify so that it is not necessary to include + before . + * provide for wide-characters as background character in wbkgrnd + * improve parameter-checking for tparm, adding function _nc_tiparm() + to handle the most-used case, which accepts only numeric + parameters. + * use return-value from vsnprintf to reallocate as needed to allow + for buffers larger than the screen size. + * add another fflush(stdout) in _nc_flush to handle time-delays in + the middle of strings such as flash when the application uses + low-level calls rather than curses. + + These are corrections to existing features: + * add a check to guard against repeat_char emitting digits which + could be interpreted as BSD-style padding when --enable-bsdpad is + configured. + * check for screen size-change in scr_init and scr_restore, in case + a screen dump does not match the current screen dimensions + + Program improvements + + Several improvements were made to the utility programs: + + tabs + + + implement "+m" option + + tic + + + add check for duplicate "use=" clauses. + + add check to report instances where tparm would detect an + error in an expression. + + add user-defined capabilities from mintty to Caps-ncurses, + for checking consistency. + + improve warning when oc/op do not mention SGR 39/49 for xterm + compatible XT flag. + + improve checks for number of parameters of smglp, smgrp, + smgtp, and smgbp. + + improve "-c" option to validate the number and type of + parameters and compare against expected number/type before + deciding which set of parameter-lists to use in tparm calls. + + improve check for errors detected in tparm. + + improve format of output, to ensure that the messages contain + only printable text. + + modify to eliminate unnecessary "\" to escape ":" in terminfo + format. + + remove check that assumes that none or both parameterized and + non-parameterized margin-setting capabilities are present. + + toe + + + modify output of "toe -as" to show first description found + rather than the last. + + add a check to ensure that a "termcap file" is text rather + than binary. + + tput + + + modify to allow multiple commands per line. + + improve parameter-checking by analyzing all extended string + capabilities, e.g., as used in the Cs and Ms capabilities of + the tmux description. + + make warning messages consistently using alias names when + those are used, rather than the underlying program's name. + + improve usage message for aliases such as clear, by + eliminating tput-specific portions. + + modify initialization to avoid opening /dev/tty for cases + other than reset/init, e.g., for clear. + + Examples + + Along with the library and utilities, improvements were made to the + ncurses-examples. Most of this activity aimed at improving the + test-packages. A few changes are more generally useful, e.g., for the + main ncurses test-program, and for analyzing traces using the + tracemunch script: + * add "-r" option to the dots test-programs, to help with scripting + a performance comparison. + * build-fix for test_opaque, for configurations without opaque + curses structs, e.g., ncurses 5.7. + * improve tracemunch logic for "RUN" compaction. + * improve tracemunch's coverage of form/menu/panel libraries. + * improve tracemunch's checking/reporting the type for the first + parameter, e.g., "WINDOW*" rather than "#1". + * modify tracemunch and the panel library to show readable traces + for panel- and user-pointers. + + There are other new demo/test programs and reusable examples: + + back_ground + to exercise the wide-character background functions. + + move_field + to demonstrate move_field, and a stub for a corresponding demo + of dup_field. + + test_tparm + for checking tparm changes. + + Terminal database + + There are several new terminal descriptions: + + absolute, att610+cvis, foot, foot-direct, hp98550-color, + hpterm-color2, hterm, hterm-256color, linux-s, putty+keypad, + putty+screen, putty-screen, screen.linux-s, scrt/securecrt, + tmux-direct, vt220+cvis, vt220+cvis8, vt220+pcedit, vt220+vtedit, + vt220-base, vt52+keypad, xterm+256color2, xterm+88color2, + xterm-direct16, xterm-direct256, xterm+nofkeys, and + xterm+nopcfkeys. + + There are many changes to existing terminal descriptions. Some were + updates to several descriptions: + * correct use-ordering in some xterm-direct flavors + * fix some sgr inconsistencies in d230c, ibm6153, ibm6154, + ncrvt100an + * improve vt50h and vt52 based on DECScope manual + * use hp+arrows in a few places + * use hp+pfk-cr in a few places + * use vt220+cvis in st, terminology, termite since they ignore + blinking-cursor detail in att610+cvis + + while others affected specific descriptions. These were retested, to + take into account changes by their developers: + + kitty+common, mlterm3, ms-terminal + + while these are specific fixes based on reviewing documentation, user + reports, or warnings from tic: + + aaa+dec, aaa+rv + correct rmacs/smacs + + aaa+rv + correct sgr + + icl6404 + correct csr + + kitty + use att610+cvis, xterm+tmux and ansi+enq + + konsole-base + re-enable "bel" + + linux2.6 + fix pound-sign mapping in acsc + + linux3.0 + modify to reflect default mapping of shift-tab by kbd 1.14 + + pccons + fill in some missing pieces, to make it comparable to the vt220 + entry + + putty + use vt100+fnkeys, add rep + + screen + use vt100+enq + + terminator + corrected tsl capability + + ti916 + correct cup + + tmux + change kbs to ^? + + vt220 + use vt220+cvis + + vt420+lrmm + add smglp and smgrp + + vt420 + use vt420+lrmm + + xterm-new + add nel + + xterm-vt52 + use vt52+keypad + + A few entries use extensions (user-defined terminal capabilities): + * add shifted Linux console keys in linux+sfkeys entry for + screen.linux + * add Smulx to alacritty + * add kbeg to xterm+keypad to accommodate termcap applications + * add extensions in xterm+tmux and ecma+strikeout to ms-terminal, + but cancel the non-working Cr and Ms capabilities + + Documentation + + As usual, this release + * improves documentation by describing new features, + * attempts to improve the description of features which users have + found confusing + * fills in overlooked descriptions of features which were described + 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.: + * Corrections: + + make opts extension for getcchar work as documented for + ncurses 6.1, adding "-g" flag to demo_new_pair to illustrate. + + modify tset "-q" option to refrain from modifying terminal + modes, to match the documentation. + * New/improved history and portability sections: + + improve documentation for tparm and static/dynamic variables. + + add history note to curs_scanw.3x for and + + + add history note to curs_printw.3x for and + + + add portability note to ncurses.3x regarding + + add historical notes to tput, curses-terminfo and + curses-color manpages based on source-code for SVr2, SVr3 and + SVr4. + + improve history section for tset manpage based on the 1BSD + tarball, which preceded BSD's SCCS checkins by more than + three years. + * Other improvements: + + explain in ncurses.3x that functions in the tinfo library do + not rely upon wide-characters. + + improve manual page for panel library, extending the + portability section as well as documenting error-returns. + + add section on margins to terminfo.5, adapted from X/Open + Curses. + + improve man/term.5 section on legacy storage format. + + add a note in terminfo.5 explaining that no-parameter strings + such as sgr0 or cnorm should not be used with tparm. + + improve description of BSD-style padding in curs_termcap.3x + + improve discussion of padding versus tparm and tputs in + man/curs_terminfo.3x + + add a note in manual page to explain ungetch vs unget_wch. + + improve description of error-returns in waddch and waddnstr + manual pages. + + There are no new manual pages (all of the manual page updates are to + existing pages). + + Some of the improvements are more subtle, relating to the way the + information is presented. For instance, hyphenation is suppressed in + the HTML files generated from manual pages because an upgrade to groff + gave noticeably poorer results, interfering with the process of + creating links between the resulting webpages. + + Interesting bug-fixes + + While there were many bugs fixed during development of ncurses 6.3, + 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: + * modify wbkgd and wbkgrnd to avoid storing a null in the background + character, because it may be used in cases where the corresponding + 0x80 is not treated as a null. + This was a regression introduced in ncurses 6.2 (reported on the + mailing list), for which the workaround was to specify a blank for + the background character. + * remove output-related checks for nl/nonl (also reported on the + mailing list). + * improve tparm implementation of %P and %g, more closely matching + SVr4 terminfo. Those denote static and dynamic variables in + terminfo expressions. + Exactly what those terms meant was never documented before in any + implementation of curses, aside from source code. Unlike the other + two fixes, the problem was discovered while studying OpenBSD's + version of tset. + + Configuration changes + + Major changes + + There are no major changes. Several new options were added to ease + integration of packages with systems using different versions of GNAT + and ncurses. Also, improvements were made to configure checks. + + Configuration options + + There are a few new/modified configure options: + + --enable-fvisibility + new configure option and check for gcc -fvisibility=hidden + feature + + --enable-leaks + corrected to allow turning leak-checking off later in a set of + options. + + --enable-stdnoreturn + new configure option makes the _Noreturn keyword optional to + ease transition. + + --disable-pkg-ldflags + revised option also controls whether $LDFLAGS from the build is + provided in "-config" and ".pc" files. + + --disable-root-access + add configure option which tells ncurses to disallow most + file-opens by setuid processes. + + --disable-wattr-macros + changed default to help packagers who reuse wide ncursesw + header file with non-wide ncurses library. + + --with-pkg-config-libdir + revised option uses the actual search path from pkg-config or + pkgconf using the output from --debug. + + --with-ada-libname + --with-form-libname + --with-menu-libname + --with-panel-libname + new several --with-xxx-libname options, to help with pkgsrc + + Portability + + Many of the portability changes are implemented via the configure + script: + * add a special case in the configure script to work around one of + the build-time breakages reported for OpenBSD 6 here: + + https://www.mail-archive.com/bugs@openbsd.org/msg13200.html + * modify configure check for libtool to prevent accidental use of an + OpenBSD program which uses the same name. + * modify configuration checks for build-time tic/infocmp to use + AC_CHECK_TOOL. That can still be overridden by --with-tic-path and + --with-infocmp-path when fallbacks are used, but even if not using + fallbacks, the improved check may help with cross-compiling. + * relax modification-time comparison in CF_LINK_FUNCS to allow it to + accept link() function with NFS filesystems which change the mtime + on the link target, e.g., several BSD systems. + * modify configure check for c89/c99 aliases of clang to use its + -std option instead, because some platforms, in particular macOS, + do not provide workable c89/c99 aliases. + * modify CF_NCURSES_CONFIG to work around Xcode's c99 "-W" option, + which conflicts with conventional use for passing linker options. + * modify configure scripts to filter out redefinitions of + _XOPEN_SOURCE, e.g., for NetBSD which generally supports 500, but + 600 is needed for ncursesw. + + Here are some of the other portability fixes: + * change configure-check and source-code for gcc's noreturn + attribute to assume it is a prefix rather than suffix, matching + c11's _Noreturn convention. + * modify mk-1st.awk to account for extra-suffix configure option. + * build-fix for termsort module when configured with termcap. + * modify configure script and makefiles to support ".PHONY" make + program feature. + * amend libtool configuration to add dependency for install.tic, + etc., in ncurses/Makefile on the lower-level libraries. + * modify Ada95 source-generation utility to write to a file given as + parameter rather than to the standard output, allowing builds with + MinGW. + * amend tic/infocmp check to allow for the respective tool's + absence. + * build-fixes for gnat 10.1.1, whose gnatmake drops integration with + gprbuild. + * correct configure version-check/warning for g++ to allow for 10.x + _________________________________________________________________ + +Features of ncurses + + The ncurses package is fully upward-compatible with SVr4 (System V + Release 4) curses: + * All of the SVr4 calls have been implemented (and are documented). + * ncurses supports all of the for SVr4 curses features including + keyboard mapping, color, forms-drawing with ACS characters, and + automatic recognition of keypad and function keys. + * ncurses provides these SVr4 add-on libraries (not part of X/Open + Curses): + + the panels library, supporting a stack of windows with + backing store. + + the menus library, supporting a uniform but flexible + interface for menu programming. + + the form library, supporting data collection through + on-screen forms. + * ncurses's terminal database is fully compatible with that used by + SVr4 curses. + + ncurses supports user-defined capabilities which it can see, + but which are hidden from SVr4 curses applications using the + same terminal database. + + It can be optionally configured to match the format used in + related systems such as AIX and Tru64. + + Alternatively, ncurses can be configured to use hashed + databases rather than the directory of files used by SVr4 + 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 ncurses package also has many useful extensions over SVr4: - * The API is 8-bit clean and base-level conformant with the X/OPEN - curses specification, XSI curses (that is, it implements all BASE - level features, but not all EXTENDED features). Most - EXTENDED-level features not directly concerned with wide-character - support are implemented, including many function calls not - supported under SVr4 curses (but portability of all calls is - documented so you can use the SVr4 subset only). - * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost - corner of the screen if your terminal has an insert-character + * The API is 8-bit clean and base-level conformant with the X/OPEN + curses specification, XSI curses (that is, it implements all BASE + level features, and most EXTENDED features). It includes many + function calls not supported under SVr4 curses (but portability of + all calls is documented so you can use the SVr4 subset only). + * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost + corner of the screen if your terminal has an insert-character capability. * Ada95 and C++ bindings. - * Support for mouse event reporting with X Window xterm and OS/2 - console windows. + * Support for mouse event reporting with X Window xterm and FreeBSD + and OS/2 console windows. * Extended mouse support via Alessandro Rubini's gpm package. - * The function wresize() allows you to resize windows, preserving + * The function wresize allows you to resize windows, preserving their data. - * The function use_default_colors() allows you to use the terminal's + * The function use_default_colors allows you to use the terminal's default colors for the default color pair, achieving the effect of transparent colors. - * The functions keyok() and define_key() allow you to better control - the 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 16-color terminals, such as aixterm and XFree86 xterm. - * Better cursor-movement optimization. The package now features a + * The functions keyok and define_key allow you to better control the + 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 cursor-local-movement computation more efficient than either BSD's or System V's. - * Super hardware scrolling support. The screen-update code - incorporates a novel, simple, and cheap algorithm that enables it - to make optimal use of hardware scrolling, line-insertion, and - line-deletion for screen-line movements. This algorithm is more - powerful than the 4.4BSD curses quickch() routine. - * Real support for terminals with the magic-cookie glitch. The - screen-update code will refrain from drawing a highlight if the - magic- cookie unattributed spaces required just before the - beginning and after the end would step on a non-space character. - It will automatically shift highlight boundaries when doing so - would make it possible to draw the highlight without changing the + * Super hardware scrolling support. The screen-update code + incorporates a novel, simple, and cheap algorithm that enables it + to make optimal use of hardware scrolling, line-insertion, and + line-deletion for screen-line movements. This algorithm is more + powerful than the 4.4BSD curses quickch routine. + * Real support for terminals with the magic-cookie glitch. The + screen-update code will refrain from drawing a highlight if the + magic- cookie unattributed spaces required just before the + beginning and after the end would step on a non-space character. + It will automatically shift highlight boundaries when doing so + would make it possible to draw the highlight without changing the visual appearance of the screen. - * It is possible to generate the library with a list of pre-loaded - fallback entries linked to it so that it can serve those terminal - types even when no terminfo tree or termcap file is accessible - (this may be useful for support of screen-oriented programs that + * It is possible to generate the library with a list of pre-loaded + fallback entries linked to it so that it can serve those terminal + 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 tic(1)/captoinfo utility provided with ncurses has the ability - to translate many termcaps from the XENIX, IBM and AT&T extension + * 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(1) utility is provided. + * 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 - system directory. This feature makes it easier for users to have - personal terminfo entries without giving up access to the system + entries from $HOME/.terminfo if it exists, and compile to that + directory if it exists and the user has no write access to the + system directory. This feature makes it easier for users to have + personal terminfo entries without giving up access to the system terminfo directory. - * You may specify a path of directories to search for compiled - descriptions with the environment variable TERMINFO_DIRS (this - generalizes the feature provided by TERMINFO under stock System + * You may specify a path of directories to search for compiled + descriptions with the environment variable TERMINFO_DIRS (this + generalizes the feature provided by TERMINFO under stock System V.) - * In terminfo source files, use capabilities may refer not just to + * In terminfo source files, use capabilities may refer not just to other entries in the same source file (as in System V) but also to - compiled entries in either the system terminfo directory or the + compiled entries in either the system terminfo directory or the user's $HOME/.terminfo directory. - * A script (capconvert) is provided to help BSD users transition - from termcap to terminfo. It gathers the information in a TERMCAP - environment variable and/or a ~/.termcap local entries file and - converts it to an equivalent local terminfo tree under - $HOME/.terminfo. - * Automatic fallback to the /etc/termcap file can be compiled in - when it is not possible to build a terminfo tree. This feature is - neither fast nor cheap, you don't want to use it unless you have - to, but it's there. - * The table-of-entries utility toe makes it easy for users to see + * 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 - prototype-checked) if the macro definition is disabled with + has a corresponding function which may be linked (and will be + prototype-checked) if the macro definition is disabled with #undef. - * An HTML "Introduction to Programming with NCURSES" document - provides a narrative introduction to the curses programming - interface. + * Extensive documentation is provided (see the Additional Reading + section of the ncurses FAQ for online documentation). + +Applications using ncurses - State of the Package + The ncurses distribution includes a selection of test programs + (including a few games). These are available separately as + ncurses-examples - Numerous bugs present in earlier versions have been fixed; the library - is far more reliable than it used to be. Bounds checking in many - `dangerous' entry points has been improved. The code is now type-safe - according to gcc -Wall. The library has been checked for malloc leaks - and arena corruption by the Purify memory-allocation tester. + The ncurses library has been tested with a wide variety of + applications including: - The ncurses code has been tested with a wide variety of applications - including (versions starting with those noted): + aptitude + FrontEnd to Apt, the debian package manager + + https://wiki.debian.org/Aptitude cdk Curses Development Kit - [3]http://www.vexus.ca/CDK.html - [4]http://dickey.his.com/cdk. + + https://invisible-island.net/cdk/ ded directory-editor - [5]http://dickey.his.com/ded. + + https://invisible-island.net/ded/ dialog - the underlying application used in Slackware's setup, and the - basis for similar applications on GNU/Linux. - [6]http://dickey.his.com/dialog. + the underlying application used in Slackware's setup, and the + basis for similar install/configure applications on many + systems. + + https://invisible-island.net/dialog/ lynx - the character-screen WWW browser - [7]http://lynx.isc.org/release. + the text WWW browser - Midnight Commander 4.1 - file manager - [8]www.gnome.org/mc/. + https://lynx.invisible-island.net/ mutt mail utility - [9]http://www.mutt.org. + + http://www.mutt.org/ ncftp file-transfer utility - [10]http://www.ncftp.com. + + https://www.ncftp.com/ nvi - New vi versions 1.50 are able to use ncurses versions 1.9.7 and - later. - [11]http://www.bostic.com/vi/. + New vi uses ncurses. + + https://sites.google.com/a/bostic.com/keithbostic/vi + + ranger + A console file manager with VI key bindings in Python. + + https://ranger.github.io/ tin newsreader, supporting color, MIME - [12]http://www.tin.org. - taper - tape archive utility - [13]http://members.iinet.net.au/~yusuf/taper/. + http://www.tin.org/ + + vifm + File manager with vi like keybindings - vh-1.6 - Volks-Hypertext browser for the Jargon File - [14]http://www.bg.debian.org/Packages/unstable/text/vh.html. + https://vifm.info/ as well as some that use ncurses for the terminfo support alone: minicom - terminal emulator - [15]http://www.pp.clinet.fi/~walker/minicom.html. + terminal emulator for serial modem connections + + https://alioth.debian.org/projects/minicom/ + + mosh + a replacement for ssh. + + https://mosh.org/ + + tack + terminfo action checker + + https://invisible-island.net/ncurses/tack.html + + tmux + terminal multiplexor + + https://github.com/tmux/tmux/wiki vile - vi-like-emacs - [16]http://dickey.his.com/vile. + vi-like-emacs may be built to use the terminfo, termcap or + curses interfaces. + + https://invisible-island.net/vile/ + + and finally, those which use only the termcap interface: + + emacs + text editor + + https://www.gnu.org/software/emacs/ + + less + The most commonly used pager (a program that displays text + files). + + http://www.greenwoodsoftware.com/less/ - The ncurses distribution includes a selection of test programs - (including a few games). + screen + terminal multiplexor -Who's Who and What's What + https://www.gnu.org/software/screen/ - The original developers of ncurses are [17]Zeyd Ben-Halim and [18]Eric - S. Raymond. Ongoing work is being done by [19]Thomas Dickey and - [20]Jürgen Pfeifer. [21]Thomas Dickey acts as the maintainer for the - Free Software Foundation, which holds the copyright on ncurses. - Contact the current maintainers at [22]bug-ncurses@gnu.org. + vim + text editor + + 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 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 + + bug-ncurses@gnu.org To join the ncurses mailing list, please write email to - bug-ncurses-request@gnu.org containing the line: - subscribe @ + + bug-ncurses-request@gnu.org + + containing the line: + + subscribe @ 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 [23]ftp://dickey.his.com/ncurses. - -Future Plans - - * Extended-level XPG4 conformance, with internationalization - support. - * Ports to more systems, including DOS and Windows. - - We need people to help with these projects. If you are interested in - working on them, please join the ncurses list. - -Other Related Resources - - The distribution includes and uses a version of the terminfo-format - terminal description file maintained by Eric Raymond. - [24]http://earthspace.net/~esr/terminfo. - - You can find lots of information on terminal-related topics not - covered in the terminfo file at [25]Richard Shuford's archive. - -References - - 1. ftp://ftp.gnu.org/pub/gnu/ncurses - 2. ftp://dickey.his.com/ncurses - 3. http://www.vexus.ca/CDK.html - 4. http://dickey.his.com/cdk/cdk.html - 5. http://dickey.his.com/ded/ded.html - 6. http://dickey.his.com/dialog/dialog.html - 7. http://lynx.isc.org/release/ - 8. file://localhost/usr/build/ncurses/ncurses-5.2-20001021/doc/html/www.gnome.org/mc/ - 9. http://www.mutt.org/ - 10. http://www.ncftp.com/ - 11. http://www.bostic.com/vi/ - 12. http://www.tin.org/ - 13. http://members.iinet.net.au/~yusuf/taper/ - 14. http://www.bg.debian.org/Packages/unstable/text/vh.html - 15. http://www.pp.clinet.fi/~walker/minicom.html - 16. http://dickey.his.com/vile/vile.html - 17. mailto:zmbenhal@netcom.com - 18. http://www.ccil.org/~esr/home.html - 19. mailto:dickey@herndon4.his.com - 20. mailto:juergen.pfeifer@gmx.net - 21. mailto:dickey@herndon4.his.com - 22. mailto:bug-ncurses@gnu.org - 23. ftp://dickey.his.com/ncurses - 24. http://earthspace.net/~esr/terminfo - 25. http://www.cs.utk.edu/~shuford/terminal_index.html + Beta versions of ncurses are made available at + + ftp://ftp.invisible-island.net/ncurses/current/ and + https://invisible-mirror.net/archives/ncurses/current/ . + + Patches to the current release are made available at + + ftp://ftp.invisible-island.net/ncurses/6.2/ and + https://invisible-mirror.net/archives/ncurses/6.2/ . + + There is an archive of the mailing list here: + + 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: + * 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 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 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