X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ANNOUNCE;h=0684b3dc41d7e5df96990f73f9201f4b40b7d747;hp=e09e73177a45557238edf8d979c8ac5a3b665a66;hb=HEAD;hpb=e70a86c3d48b8cbad0f6d1c33ba5b027a243834e diff --git a/ANNOUNCE b/ANNOUNCE index e09e7317..45b1a0ea 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,265 +1,400 @@ - Announcing ncurses 5.7 + Announcing ncurses 6.4 + +Overview 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. + 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 + considered 4.4BSD curses obsolete, and encouraged 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 has been in use for - some time with OpenBSD as the system curses library, and on FreeBSD - and NetBSD as an external package. It should port easily to any - ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 Warp! + 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/gnu/ncurses/ . - It is also available at [2]ftp://invisible-island.net/ncurses/ . - - Release Notes - - This release is designed to be upward compatible from ncurses 5.0 - through 5.6; very few applications will require recompilation, - depending on the platform. These are the highlights from the - change-log since ncurses 5.6 release. - - Interface changes: - * generate linkable stubs for some macros: - getattrs - - New features and improvements: - * library - + new flavor of the ncurses library provides rudimentary - support for POSIX threads. Several functions are reentrant, - but most require either a window-level or screen-level mutex. - (This is API-compatible, but not ABI-compatible with the - normal library). - + add NCURSES_OPAQUE symbol to curses.h, will use to make - structs opaque in selected configurations. - + add NCURSES_EXT_FUNCS and NCURSES_EXT_COLORS symbols to - curses.h to make it simpler to tell if the extended functions - and/or colors are declared. - + add wresize() to C++ binding - + eliminate fixed-buffer vsprintf() calls in C++ binding. - + add several functions to C++ binding which wrap C functions - that pass a WINDOW* parameter. - + adapt mouse-handling code from menu library in form-library - + improve tracing for form library, showing created forms, - fields, etc. - + make $NCURSES_NO_PADDING feature work for termcap interface . - + add check to trace-file open, if the given name is a - directory, add ".log" to the name and try again. - + several new manpages: curs_legacy.3x, curs_memleaks.3x, - curs_opaque.3x and curs_threads.3x - * programs: - + modified three test-programs to demonstrate the threading - support in this version: ditto, rain, worm. - + several new test-programs: demo_panels, dots_mvcur, - inch_wide, inchs, key_name, key_names, savescreen, - savescreen.sh test_arrays, test_get_wstr, test_getstr, - test_instr, test_inwstr and test_opaque. - + add adacurses-config to the Ada95 install. - + modify tic -f option to format spaces as \s to prevent them - from being lost when that is read back in unformatted - strings. - + The tack program is now distributed separately from ncurses. - * terminal database - + added entries: - o Eterm-256color, Eterm-88color and rxvt-88color - o aterm - o konsole-256color - o mrxvt - o screen.mlterm - o screen.rxvt - o teraterm4.59 is now the primary primary teraterm entry, - renamed original to teraterm2.3 - o 9term terminal - o Newbury Data entries - + updated/improved entries: - o gnome to version 2.22.3 - o h19, z100 - o konsole to version 1.6.6 - o mlterm, mlterm+pcfkeys - o xterm, and building-blocks for function-keys to [3]xterm - patch #230. - - Major bug fixes: - * add logic to tic for cancelling strings in user-defined - capabilities (this is needed for current konsole terminfo entry). - * modify mk-1st.awk so the generated makefile rules for linking or - installing shared libraries do not first remove the library, in - case it is in use, e.g., libncurses.so by /bin/sh. - * correct check for notimeout() in wgetch(). - * fix a sign-extension bug in infocmp's repair_acsc() function. - * change winnstr() to stop at the end of the line. - * make Ada95 demo_panels() example work. - * fix for adding a non-spacing character at the beginning of a line. - * fill in extended-color pair to make colors work for - wide-characters using extended-colors. - * improve refresh of window on top of multi-column characters, - taking into account split characters on left/right window - boundaries. - * modify win_wchnstr() to ensure that only a base cell is returned - for each multi-column character. - * improve waddch() and winsch() handling of EILSEQ from mbrtowc() by - using unctrl() to display illegal bytes rather than trying to - append further bytes to make up a valid sequence. - * restore curs_set() state after endwin()/refresh() - * modify keyname() to use "^X" form only if meta() has been called, - or if keyname() is called without initializing curses, e.g., via - initscr() or newterm(). - * modify unctrl() to check codes in 128-255 range versus isprint(). - If they are not printable, and locale was set, use a "M-" or "~" - sequence. - * improve resizeterm() by moving ripped-off lines, and repainting - the soft-keys. - * modify form library to accept control characters such as newline - in set_field_buffer(), which is compatible with Solaris. - * use NCURSES_MOUSE_MASK() in definition of BUTTON_RELEASE(), etc., - to make those work properly with the --enable-ext-mouse - configuration - * correct some functions in Ada95 binding which were using return - value from C where none was returned. - * reviewed/fixed issues reported by Coverity and Klocwork tools. - - Portability: - * configure script: - + new options: - - --disable-big-strings - control whether static string tables are generated - as single large strings (to improve startup - performance), or as array of individual strings. - - --disable-relink - control whether shared libraries are relinked - (during install) when rpath is enabled. - - --disable-tic-depends - make explicit whether tic library depends on - ncurses/ncursesw library. - - --enable-mixed-case - override the configure script's check if the - filesystem supports mixed-case filenames. This - allows one to control how the terminal database - maps to the filesystem. For filesystems that do not - support mixed-case, the library uses generate - 2-character (hexadecimal) codes for the lower-level - of the filesystem terminfo database - - --enable-reentrant - builds a different flavor of the ncurses library - (ncursest) which improves reentrant use of the - library by reducing global and static variables - (see the "--with-pthread" option for the threaded - support). - - --enable-weak-symbols - use weak-symbols for linking to the POSIX thread - library, and use the same soname for the ncurses - shared library as the normal library (caveat: the - ABI is for the threaded library, which makes global - data accessed via functions). - - --with-pthread - build with the POSIX thread library (tested with - AIX, Linux, FreeBSD, OpenBSD, HPUX, IRIX64, - Solaris, Tru64). - - --with-ticlib - build/install the tic-support functions in a - separate library - - + improved options: - - --enable-ext-colors - requires the wide-character configuration. - - --with-chtype - ignore option value "unsigned" is always added to - the type in curses.h; do the same for - --with-mmask-t. - - --with-dmalloc - build-fix for redefinition of strndup. - - --with-hashed-db - accepts a parameter which is the install-prefix of - a given Berkeley Database. - - --with-hashed-db - the $LIBS environment variable overrides the search - for the db library. - - --without-hashed-db - assumed when "--disable-database" is used. - - * other configure/build issues: - + build-fixes for LynxOS - + modify shared-library rules to allow FreeBSD 3.x to use - rpath. - + build-fix for FreeBSD "contemporary" TTY interface. - + build-fixes for AIX with libtool. - + build-fixes for Darwin and libtool. - + modify BeOS-specific ifdef's to build on Haiku. - + corrected gcc options for building shared libraries on - Solaris and IRIX64. - + change shared-library configuration for OpenBSD, make rpath - work. - + build-fixes for using libutf8, e.g., on OpenBSD 3.7 - + add "-e" option in ncurses/Makefile.in when generating - source-files to force earlier exit if the build environment - fails unexpectedly. - + add support for shared libraries for QNX. - + change delimiter in MKlib_gen.sh from '%' to '@', to avoid - substitution by IBM xlc to '#' as part of its extensions to - digraphs. - * library: - + rewrite wrapper for wcrtomb(), making it work on Solaris. - This is used in the form library to determine the length of - the buffer needed by field_buffer. - + add/use configure script macro CF_SIG_ATOMIC_T, use the - corresponding type for data manipulated by signal handlers. - + set locale in misc/ncurses-config.in since it uses a range - + disable GPM mouse support when $TERM does not happen to - contain "linux", since Gpm_Open() no longer limits its - assertion to terminals that it might handle, e.g., within - "screen" in xterm. - + reset mouse file-descriptor when unloading GPM library. - * test programs: - + update test programs to build/work with various UNIX curses - for comparisons. - - 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: + + https://invisible-island.net/archives/ncurses/ or + https://invisible-mirror.net/archives/ncurses/ . + + It is also available at the GNU distribution site + + https://ftp.gnu.org/gnu/ncurses/ . + +Release Notes + + 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.3; 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 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 + + There are no new features in this release. + + Other improvements + + These are improvements to existing features: + * 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: + * 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 + + Several improvements were made to the utility programs: + + infocmp + + + 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. + + tabs + limit tab-stop values to max-columns + + tic + add consistency check in tic for u6/u7/u8/u9 and NQ + capabilities. + + tput + corrected use of original tty-modes in init/reset subcommands + + Examples + + 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 + + Terminal database + + 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: + * 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 changes by their developers: + * kitty + * teken + + while these are specific fixes based on reviewing documentation, user + reports, or warnings from tic: + + att610+cvis0 + amended note as per documentation for att610, att620, att730 + + kon, kon2, jfbterm + revise to undo "linux2.6" change to smacs/rmacs/enacs + + st-0.6 + add dim, ecma+strikeout + + foot+base + add xterm+sl-alt + + dec+sl + correct dsl in dec+sl + + mintty and tmux + correct setal in mintty/tmux entries, add to vte-2018 + + nsterm + modify nsterm to use xterm+alt1049 + + putty + modify putty to use xterm+alt1049 + + vte-2018 + add blink and setal + + A few entries use extensions (user-defined terminal capabilities): + * 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 + + 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: + + 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 + + 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 + + There are no major changes. No new options were added. Several + improvements were made to configure checks. + + Configuration options + + 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: + * 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 + + 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 @@ -274,17 +409,17 @@ * 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 256-color terminals, such as modern xterm, when - configured using the --enable-ext-colors option. + * 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 @@ -293,7 +428,7 @@ 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. + 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 @@ -306,10 +441,10 @@ 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 @@ -324,150 +459,215 @@ 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. - * 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 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. - * 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 + + The ncurses distribution includes a selection of test programs + (including a few games). These are available separately as + ncurses-examples - State of the Package + The ncurses library has been tested with a wide variety of + applications including: - 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. + aptitude + FrontEnd to Apt, the debian package manager - The ncurses code has been tested with a wide variety of applications - including (versions starting with those noted): + https://wiki.debian.org/Aptitude cdk Curses Development Kit - [4]http://invisible-island.net/cdk/ - [5]http://www.vexus.ca/products/CDK/ + + https://invisible-island.net/cdk/ ded directory-editor - [6]http://invisible-island.net/ded/ + + https://invisible-island.net/ded/ dialog the underlying application used in Slackware's setup, and the - basis for similar applications on GNU/Linux. - [7]http://invisible-island.net/dialog/ + basis for similar install/configure applications on many + systems. + + https://invisible-island.net/dialog/ lynx - the character-screen WWW browser - [8]http://lynx.isc.org/release/ + the text WWW browser - Midnight Commander - file manager - [9]http://www.ibiblio.org/mc/ + https://lynx.invisible-island.net/ mutt mail utility - [10]http://www.mutt.org/ + + http://www.mutt.org/ ncftp file-transfer utility - [11]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. - [12]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. - pinfo - Lynx-like info browser. - [13]https://alioth.debian.org/projects/pinfo/ + https://ranger.github.io/ tin - newsreader, supporting color, MIME [14]http://www.tin.org/ + newsreader, supporting color, MIME + + http://www.tin.org/ + + vifm + File manager with vi like keybindings + + https://vifm.info/ as well as some that use ncurses for the terminfo support alone: minicom - terminal emulator - [15]http://alioth.debian.org/projects/minicom/ + 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://invisible-island.net/vile/ + vi-like-emacs may be built to use the terminfo, termcap or + curses interfaces. - The ncurses distribution includes a selection of test programs - (including a few games). + 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/ + + screen + terminal multiplexor + + https://www.gnu.org/software/screen/ + + vim + text editor + + https://www.vim.org/ -Who's Who and What's What +Development activities - Zeyd Ben-Halim started it from a previous package pcurses, written by - Pavel Curtis. Eric S. Raymond continued development. Jürgen Pfeifer - wrote most of the form and menu libraries. Ongoing work is being done - by [17]Thomas Dickey. Thomas Dickey acts as the maintainer for the - Free Software Foundation, which holds the copyright on ncurses. - Contact the current maintainers at [18]bug-ncurses@gnu.org. + 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. - To join the ncurses mailing list, please write email to - bug-ncurses-request@gnu.org containing the line: - subscribe @ + 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 @ 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 [19]ftp://invisible-island.net/ncurses/ . + 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 + + 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: -Future Plans + http://lists.gnu.org/archive/html/bug-ncurses (also https) - * Extended-level XPG4 conformance, with internationalization - support. - * Ports to more systems, including DOS and Windows. +Related resources - We need people to help with these projects. If you are interested in - working on them, please join the ncurses list. + 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 Related Resources +Other resources The distribution provides a newer version of the terminfo-format - terminal description file once maintained by [20]Eric Raymond . Unlike - the older version, the termcap and terminfo data are provided in the - same file, and provides several user-definable extensions beyond the + 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 [21]Richard Shuford's archive . - -References - - 1. ftp://ftp.gnu.org/gnu/ncurses/ - 2. ftp://invisible-island.net/ncurses/ - 3. http://invisible-island.net/xterm/xterm.log.html#xterm_230 - 4. http://invisible-island.net/cdk/ - 5. http://www.vexus.ca/products/CDK/ - 6. http://invisible-island.net/ded/ - 7. http://invisible-island.net/dialog/ - 8. http://lynx.isc.org/release/ - 9. http://www.ibiblio.org/mc/ - 10. http://www.mutt.org/ - 11. http://www.ncftp.com/ - 12. http://www.bostic.com/vi/ - 13. https://alioth.debian.org/projects/pinfo/ - 14. http://www.tin.org/ - 15. http://alioth.debian.org/projects/minicom/ - 16. http://invisible-island.net/vile/ - 17. mailto:dickey@invisible-island.net - 18. mailto:bug-ncurses@gnu.org - 19. ftp://invisible-island.net/ncurses/ - 20. http://www.catb.org/~esr/terminfo/ - 21. http://www.cs.utk.edu/~shuford/terminal_index.html + 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