X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=announce.html.in;h=caaa2899b0e3f527478d3dd22ca072aa6c8c39d6;hp=89fb3ebeb4622d3121cdf68190348d4c95538c1a;hb=d21ad44bdac29dcfbd1cf10a1918a42c43215b3d;hpb=02f02dcd4464143580e783ae32c822d8eb8cdcbf diff --git a/announce.html.in b/announce.html.in index 89fb3ebe..caaa2899 100644 --- a/announce.html.in +++ b/announce.html.in @@ -1,7 +1,7 @@ - - +
- + "HTML Tidy for HTML5 for Linux version 5.6.0">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 +
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 is better known today - as X/Open 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.
+ keepers of unix releases such as + BSD/OS, FreeBSD and NetBSD to switch over to ncurses. -Since 1995, ncurses has been +
Since 1995, ncurses has been ported to many systems:
The distribution includes the library and support utilities, including
Full manual pages are provided for the library and tools.
-The ncurses distribution is - available via anonymous FTP at the GNU distribution site
+The ncurses distribution is + available at ncurses' homepage:
-It is also available at + "ftp://ftp.invisible-island.net/ncurses/">ftp://ftp.invisible-island.net/ncurses/ + or
It is also available via anonymous FTP at the GNU distribution + site
+ "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/ .
These notes are for ncurses - @VERSION@, released August 8, 2015.
+These notes are for ncurses + @VERSION@, released October 21, 2021.
This release is designed to be source-compatible with - ncurses 5.0 through 5.9; providing a - new 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 which are generally useful, but - binary-incompatible with ncurses - 5:
+ 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. -Extend the cchar_t
structure to allow more
- than 16 colors to be encoded.
There are, of course, numerous other improvements, listed in + this announcement.
-Modify the encoding of mouse state to make room for a 5th - mouse button. That allows one to use ncurses with a wheel mouse with xterm or - similar X terminal emulators.
-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.
-There are, of course, numerous other improvements, - including
+There are a few new features:
fixes made based on the Clang and Coverity static - analyzers.
+A new (experimental) driver, for the Windows Terminal + configuration is provided.
memory leak fixes using Valgrind
+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).
The release notes mention some bug-fixes, but are focused on - new features and improvements to existing features log since - ncurses 5.9 release.
- -While the intent of the release is to provide a new stable - ABI, there are other development activities which are summarized - below.
+Additionally, to improve performance other changes (and + extensions) are provided in this release:
The original release plan, e.g., for "5.10" was to improve
- the MinGW port. Ultimately that was completed (wide-character
- support, mouse, etc), but was deferred to focus on termcap
- support and performance issues. Also, pinpointing the
- problems with Console2
took a while.
modify lib_mouse.c to check for out-of-range button + numbers, convert those to position reports.
A review of termcap compatibility in 2011 led to several - minor fixes in the library and improvements to utilities. To - do this properly, a review of the various extent termcap - implementations was needed.
- -The termcap - library checker (tctest) (not part of ncurses) was one result. A followup review - of performance using ncurses-examples - in 2014 led to additional improvements.
-Output buffering provided a further, but worthwhile
- distraction. A bug report in 2012 regarding the use of signal
- handlers in ncurses) pointed out
-
- a problem with the use of unsafe functions for handling
- SIGTSTP
. Other signals could be addressed with
- workarounds; repairing SIGTSTP
required a
- different approach. The solution required changing internal
- behavior of the library: how it handles output buffering.
Now ncurses buffers its own - output, independently of the standard output. A few - applications relied upon the library's direct reuse of the - standard output buffering; however that is - unspecified behavior and has never been a - recommended practice. Identifying these applications as well - as refining the change to permit low-level applications to - work consistently took time.
-Since the introduction of the experimental support for 256 - colors early in 2005 - (released in ncurses - 5.5), there has been increased user interest. Almost all - packagers continue providing the ncurses ABI 5 which cannot - support 256 colors.
-Symbol versioning, or the lack of it in ncurses, is the - main reason why packagers would be reluctant to add a new - ncurses ABI.
- -This release provides the new ABI along with - script-generated lists of versioned symbols which can be used - for both ABI 5 and 6 (with distinct names to keep the two - separate). This took time to development, as reported in - Symbol - versioning in ncurses.
+add sp-funcs for + erasewchar, + killwchar.
X/Open curses provides more than one initialization - function:
+These are revised features:
They are documented in X/Open as if
- initscr
calls newterm
using
- stdout
for output stream, and in turn
- newterm
calls setupterm
using
- fileno(stdout)
for the file descriptor. As long as
- an implementation acts as if it does this, it conforms.
- In practice, implementations do what is implied. This creates a
- problem: the low-level setupterm
function's file
- descriptor is unbuffered, while newterm
implies
- buffered output. X/Open Curses says that all output is done
- through the file descriptor, and does not say how the output
- stream is actually used.
Initially, ncurses used the file
- descriptor (obtained from the output stream passed to
- newterm
) for changing the terminal modes, and relied
- upon the output parameter of newterm
for buffered
- output. Later (to avoid using unsafe buffered I/O in signal
- handlers), ncurses was modified to
- use the file descriptor (unbuffered output) when cleaning up on
- receipt of a signal. Otherwise (when not handling a signal), it
- continued to use the buffered output.
That approach worked reasonably well and as a side effect,
- using the same buffered output as an application might use for
- printf
meant that no flushing was needed when
- switching between normal- and screen-modes.
There were a couple of problems:
+These were done to limit or ultimately deprecate features:
to get good performance, curses (not only ncurses, but SVr4 curses in general) set an
- output buffer using setbuf
or similar function.
- There is no standard (or portable) way to turn that output
- buffer off, and revert to line-buffering. The
- NCURSES_NO_SETBUF
environment variable did make it
- optional.
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.
+to handle SIGTSTP
(the “stop”
- signal), ncurses relied upon
- unsafe functions. That is, due to the complexity of the
- feature, it relied upon reusing existing functions which
- should not have been called via the signal handler.
reduce build-warnings by excluding ncurses-internals from + deprecation warnings.
Conveniently, solving the second problem (by making ncurses do its own output buffering) - also fixed the first one. But there were special cases to - resolve: - low-level functions such as mvcur, putp, vidattr - explicitly use the standard output. Those functions were reused - internally, and required modification to distinguish whether they - were used by the high-level or low-level interfaces.
- -Finally, there may still be a few programs which should be - modified to improve their portability, e.g., adding an
- --- --fflush(stdout); --
when switching from “shell”
- mode to “program”
- (curses) mode. Those are fairly rare because most programmers
- have learned not to mix printf
and printw
.
This release introduces symbol-versioning to ncurses because without it, the change of ABI - would be less successful. A lengthy discussion will be presented - in Symbol - versioning in ncurses. These - notes summarize what has changed, and what can be done with the - new release.
- -Symbol-versioning allows the developers of a library to mark - each public symbol (both data and functions) with an identifier - denoting the library name and the version for which it was built. - By doing this, users of the library have a way to help ensure - that applications do not accidentally load an incompatible - library. In addition, private symbols can be hidden entirely.
- -This release provides sample files for the four principal
- configurations of ncurses libraries:
- ncurses
, ncursesw
,
- ncursest
and ncursestw
. Each sample is
- given in two forms:
-- --
-- “
- -.map
”- These list all public symbols, together with version - names.
- -- “
- -.sym
”- These list all public symbols, without version - names.
-
The sample files are generated by scripts which take
- into account a few special cases such as tack to omit
- many of the ncurses private symbols
- (beginning with “_nc_
”). Here are
- counts of globals versus locals:
-- --
-- - -Config - -Symbols - -Globals - -Locals - -"_nc_" -- - -ncurses - -976 - -796 - -180 - -332 -- - -ncursesw - -1089 - -905 - -184 - -343 -- - -ncursest - -979 - -804 - -175 - -358 -- -ncursestw - -1098 - -914 - -184 - -372 -
Although only four sample configurations are presented, each - is formed by merging symbols from several combinations of - configure-script options, taking into account advice from - downstream packagers. Because they are formed by merging, the - sample files may list a symbol which is not in a given package. - That is expected. The samples have been tested and are working - with systems (such as Fedora, FreeBSD and Debian) which fully - support this feature. There are other systems which do - not support the feature, and a few (such as Solaris) - which provide incomplete support.
- -The version-naming convention used allows these sample files - to build distinct libraries for ABI 5 and 6. Version names - consist of
+These are improvements to existing features:
configuration name, e.g.,
- “NCURSESW
” for the wide-character
- libraries
drop symbols GCC_PRINTF and GCC_SCANF + from <curses.h>, to simplify use.
ABI version (if not 5)
+apply gcc format attribute to prototypes which use a + va_list parameter rather than a “...” + variable-length parameter list.
library name for two special cases which have the same
- interface across configurations:
- “TINFO
” and
- “TIC
”
modify <term.h> so that it is not necessary to + include <curses.h> before <term.h>.
release version
+provide for wide-characters as background character in + wbkgrnd
patch date (for the release version)
+improve parameter-checking for tparm, adding function + _nc_tiparm() to handle the most-used case, which accepts only + numeric parameters.
For example, running nm -D
on the libraries in
- the ncurses6 test package shows these symbol-versions:
-- --0000000000000000 A NCURSES6_TIC_5.0.19991023 -0000000000000000 A NCURSES6_TIC_5.1.20000708 -0000000000000000 A NCURSES6_TIC_5.5.20051010 -0000000000000000 A NCURSES6_TIC_5.7.20081102 -0000000000000000 A NCURSES6_TIC_5.9.20150530 -0000000000000000 A NCURSES6_TINFO_5.0.19991023 -0000000000000000 A NCURSES6_TINFO_5.1.20000708 -0000000000000000 A NCURSES6_TINFO_5.2.20001021 -0000000000000000 A NCURSES6_TINFO_5.3.20021019 -0000000000000000 A NCURSES6_TINFO_5.4.20040208 -0000000000000000 A NCURSES6_TINFO_5.5.20051010 -0000000000000000 A NCURSES6_TINFO_5.6.20061217 -0000000000000000 A NCURSES6_TINFO_5.7.20081102 -0000000000000000 A NCURSES6_TINFO_5.8.20110226 -0000000000000000 A NCURSES6_TINFO_5.9.20150530 -0000000000000000 A NCURSESW6_5.1.20000708 -0000000000000000 A NCURSESW6_5.3.20021019 -0000000000000000 A NCURSESW6_5.4.20040208 -0000000000000000 A NCURSESW6_5.5.20051010 -0000000000000000 A NCURSESW6_5.6.20061217 -0000000000000000 A NCURSESW6_5.7.20081102 -0000000000000000 A NCURSESW6_5.8.20110226 -0000000000000000 A NCURSESW6_5.9.20150530 --
As a special case, this release (which makes the final change - for ABI 5) is marked with release version 5.9 and patch date - 20150530.
- -The new release has several improvements for performance and - building. For instance:
-several files in ncurses- and progs-directories were
- modified to allow const
data used in internal
- tables to be put by the linker into the readonly text
- segment.
use return-value from vsnprintf to reallocate as + needed to allow for buffers larger than the screen size.
various improvements were made to building the Ada95
- binding, both in simplifying the generated files as well as
- improving the way it uses gnatmake
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.
There are also new features in the libraries:
+These are corrections to existing features:
added - wgetdelay to retrieve _delay member of WINDOW if it - happens to be opaque, e.g., in the pthread configuration.
+add a check to guard against repeat_char emitting + digits which could be interpreted as BSD-style padding when + --enable-bsdpad is configured.
added - A_ITALIC extension.
+check for screen size-change in scr_init and + scr_restore, in + case a screen dump does not match the current screen + dimensions
added form library extension - O_DYNAMIC_JUSTIFY option which can be used to override - the different treatment of justification for static versus - dynamic fields .
-rewrote - putwin and - getwin, making an extended version which is capable of - reading screen-dumps between the wide/normal ncurses configurations. These are text - files, except for a magic code at the beginning:
+Several improvements were made to the + utility programs:
----0 string \210\210 Screen-dump (ncurses) --
several changes to mouse support include:
+implement “+m” option
+add check for duplicate “use=” + clauses.
+%u
” format to terminfo.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.
+There are a few new configure options dealing with library - customization:
+improve warning when oc/op do not mention SGR 39/49
+ for xterm compatible XT
flag.
add “--enable-ext-putwin
”
- configure option to turn on the extended putwin/getwin. By
- default, this is enabled for ABI 6 and disabled with ABI
- 5.
improve checks for number of parameters of
+ smglp
, smgrp
,
+ smgtp
, and smgbp
.
add “--enable-string-hacks
”
- option to control whether strlcat and strlcpy may be used.
- Because ncurses already does the
- requisite buffer-limit checks, this feature is mainly of
- interest to quiet compiler-warnings on a few systems.
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.
+add configure option
- “--with-tparm-arg
” to allow
- tparm's parameters to be something more likely to be the
- same size as a pointer, e.g., intptr_t
(again,
- the default is set for ABI 6).
improve check for errors detected in
+ tparm
.
improve format of output, to ensure that the messages + contain only printable text.
+Most of the termcap-related changes based on development of
- tctest
- (termcap library checker) are implemented in the tic and
- infocmp programs rather than affecting the library. As noted in
- the
- discussion of tctest
, ncurses's ability to translate between terminfo
- and termcap formats has been improved at different times, but
- subject to feedback from "real" termcap users. There are very few
- of those. Nowadays, virtually all termcap users are
- using ncurses (or NetBSD, with its
- own terminfo library) and their programs are actually using
- terminfo rather than termcap data.
Still, there are a few. A comment about the translation of the
- ASCII NUL
character prompted a review:
modify to eliminate unnecessary
+ “\
” to escape
+ “:
” in terminfo format.
Both terminfo and termcap store string capabilities as
- NUL
-terminated strings.
remove check that assumes that none or both + parameterized and non-parameterized margin-setting + capabilities are present.
+In terminfo, a \0
in a terminal description
- is stored as \200
.
There are no (known) terminals which would behave
- differently when sent \0
or
- \200
.
modify output of “toe -as” to + show first description found rather than the last.
+When translating to terminfo format (or displaying a
- printable version of an entry using infocmp), ncurses shows \200
as
- \0
.
add a check to ensure that a “termcap + file” is text rather than binary.
+It has done this since 1998 (quoting from the NEWS - file):
+---980103 -... - + modify _nc_tic_expand() to generate \0 rather than \200. -... - + correct translation of terminfo "^@", to \200, like \0. --
modify to allow multiple commands per line.
+However, the _nc_tic_expand
function (which
- optionally produces terminfo or termcap format) did not
- address this special case for termcap. Even the later 4.4BSD
-
- cgetstr interprets a \0
literally, ending
- that string (rather than using the terminfo
- improvement).
improve parameter-checking by analyzing all extended
+ string capabilities, e.g., as used in the Cs
+ and Ms
capabilities of the tmux
+ description.
As a result of the review, several improvements were made to - ncurses translation to/from termcap - format — and improving the checks made in tic for - consistency of entries. Most of these are not of general - interest, except for two new command-line options for tic and - infocmp:
+make warning messages consistently using alias names + when those are used, rather than the underlying program's + name.
+the “-0
” option generates
- termcap/terminfo source on a single line.
improve usage message for aliases such as + clear, by eliminating tput-specific + portions.
+the “-K
” option provides stricter
- BSD-compatibility for termcap output.
modify initialization to avoid opening + /dev/tty for cases other than + reset/init, e.g., for clear.
+Other user-visible improvements and new features include:
+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:
added “-D
” option to tic and
- infocmp, to show the database locations that it could
- use.
add “-r” option to the dots + test-programs, to help with scripting a performance + comparison.
added “-s
” option to toe, to sort
- its output.
build-fix for test_opaque, for configurations + without opaque curses structs, e.g., ncurses 5.7.
extended “-c
” and
- “-n
” options of infocmp to allow
- comparing more than two entries.
improve tracemunch logic for "RUN" + compaction.
modified toe's report when “-a
”
- and “-s
” options are combined, to
- add a column showing which entries belong to a given
- database.
improve tracemunch's coverage of form/menu/panel + libraries.
modified the clear program to take into account the
- “E3
” extended capability to clear
- the terminal's scrollback buffer.
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:
-Along with the library and utilities, many improvements were - made to the ncurses-examples. - Some were made to allow building (and comparison-testing) against - NetBSD curses and PDCurses. Both lack some of the X/Open Curses - features, necessitating customization. But this activity was - useful because it showed some remaining performance issues (which - have been resolved in this release).
+These changes were made to verify compatibility or compare - performance of ncurses:
+made workarounds for compiling test-programs with NetBSD - curses, though it lacks some common functions such as - - use_env.
-added dots_termcap test-program
-added dots_curses test-program, for comparison with the - low-level examples.
-added test_setupterm test-proram to demonstrate - normal/error returns from the setupterm and restartterm - functions.
-added “-d
”,
- “-e
” and
- “-q
” options to the demo_terminfo
- and demo_termcap test-programs.
added “-y
” option to demo_termcap
- and test/demo_terminfo test-programs to demonstrate behavior
- with/without extended capabilities.
There are several new terminal descriptions:
-modified demo_termcap and demo_terminfo test-programs to
- make their options more directly comparable, and add
- “-i
” option to specify a terminal
- description filename to parse for names to lookup.
+-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.
+
rewrote the tests for - mvderwin and test for recursive - mvwin in the movewindow test-program.
-There are many changes to existing terminal descriptions. Some + were updates to several descriptions:
+ +These changes were made to help with the MinGW port:
+while others affected specific descriptions. These were + retested, to take into account changes by their developers:
-added test-screens to the ncurses test-program to show - 256-characters at a time, to help with MinGW port.
-+-kitty+common, + mlterm3, + ms-terminal
+
modified the view test-program to load UTF-8 when built - with MinGW by using regular win32 API because the MinGW - functions mblen and mbtowc do not work.
-while these are specific fixes based on reviewing + documentation, user reports, or warnings from tic:
-added “-s
” option to the view
- test-program to allow it to start in single-step mode,
- reducing size of trace files when it is used for debugging
- MinGW changes.
These changes were made to verify new extensions in ncurses:
+added - form_driver_w entrypoint to wide-character forms library, - as well as form_driver_w test-program.
-modified ncurses test-program's b/B tests to display lines - only for the attributes which a given terminal supports, to - make room for an italics test.
-modified ncurses test-program, adding
- “-E
” and
- “-T
” options to demonstrate use_env
- versus use_tioctl.
modified ncurses test-program's c/C tests to cycle through - subsets of the total number of colors, to better illustrate - 8/16/88/256-colors by providing directly comparable - screens.
-modified the ncurses test-program to also show position - reports in 'a' test.
-These changes were made to make the examples more useful:
+added scripts for building dpkg and rpm test-packages
-modified the hanoi test-program to show the minimum number - of moves possible for the given number of tiles.
-modified the knight test-program to show the number of - choices possible for each position in automove option, e.g., - to allow user to follow Warnsdorff's rule to solve the - puzzle.
-This release provides improvements to tic's
- “-c
” checking option, which was used for
- example to
make sgr
in several entries agree with other
- caps.
correct padding in some entries where earlier versions had - miscounted the number of octal digits.
-There are several new terminal descriptions:
+A few entries use extensions (user-defined terminal - capabilities):
+E3
, used in linux, putty and xterm-basic is
- tested in the clear
- program to erase a terminal's scrollback.
TS
is used in the
- xterm+sl building block to help deprecate the misuse of
- tsl
for xterm's title-string.
XT
is used in some terminfo entries to
- improve usefulness for other applications than screen, which
- would like to pretend that xterm's title is a
- status-line.
xm
is used in examples
- xterm-1005 and
- xterm-1006 to illustrate a way to make mouse handling
- more general
A few terminals support italics and/or dim capabilities. In
- particular, screen does not. Documented that, and accommodated
- the terminals where this feature works with the
- A_ITALIC
extension.
A few entries use extensions (user-defined terminal + capabilities):
-fills in overlooked descriptions of features which were - described in the NEWS file - but treated sketchily in manual pages.
- - - -In addition, the mechanism for producing HTML versions of the - documentation has been improved:
- -use an improved version of man2html - to generate html manpages.
-regenerated - NCURSES-Programming-HOWTO.html to fix some of the broken - html emitted by docbook.
+ 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.:
Ada95 binding:
+Corrections:
modify makefile rules to ensure that the PIC option is - not used when building a static library
+make opts extension for getcchar + work as documented for ncurses + 6.1, adding “-g” flag to + demo_new_pair to illustrate.
make Ada95 build-fix for big-endian architectures such
- as sparc. This undoes one of the fixes from
- 20110319, which added an
- “Unused
” member to
- representation clauses, replacing that with pragmas to
- suppress warnings about unused bits.
modify tset + “-q” option to refrain from modifying + terminal modes, to match the documentation.
Color and attributes:
+New/improved history and portability sections:
parenthesize parameter of COLOR_PAIR
and
- PAIR_NUMBER
in curses.h in case it happens
- to be a comma-expression.
improve
- 20021221 workaround for broken acs, handling a case
- where that ACS_xxx character is not in the
- acsc
string but there is a known
- wide-character which can be used.
improve documentation for + tparm and static/dynamic variables.
modify - init_pair to accept -1's for color value after - - assume_default_colors has been called.
+add history note to curs_scanw.3x + for <stdarg.h> and <varargs.h>
add a check in - start_color to limit color-pairs to 256 when extended - colors are not supported.
+add history note to curs_printw.3x + for <stdarg.h> and <varargs.h>
Resizing the screen:
-propagate error-returns from wresize, i.e., the - internal increase_size and decrease_size functions - through - resize_term.
+add portability note to ncurses.3x + regarding <stdarg.h>
add check for zero/negative dimensions for
- resizeterm
and resize_term
.
add historical notes to tput, + + curses-terminfo and curses-color + manpages based on source-code for SVr2, SVr3 and + SVr4.
modify resizeterm
to always push a
- KEY_RESIZE
onto the fifo, even if screensize
- is unchanged. Modify library to push a
- KEY_RESIZE
if there was a SIGWINCH, even if
- it does not call resizeterm
). These changes
- eliminate the case where a SIGWINCH is received, but ERR
- is returned from wgetch
or
- wgetnstr
because the screen dimensions did
- not change.
improve history section for tset manpage + based on the 1BSD tarball, which preceded BSD's SCCS + checkins by more than three years.
Low-level interfaces
+Other improvements:
fix an old bug in the termcap emulation;
- “%i
” was ignored in
- tparm
because the parameters to be
- incremented were already on the internal stack.
explain in + ncurses.3x that functions in the tinfo library do not + rely upon wide-characters.
change “%l
” behavior in tparm
- to push the string length onto the stack rather than
- saving the formatted length into the output buffer.
improve manual page for panel + library, extending the portability section as well as + documenting error-returns.
modify name-comparison for tgetstr, etc., to - accommodate legacy applications as well as to improve - compatbility with BSD 4.2 termcap implementations (see - note for 980725).
+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.
+modify internal recursion in wgetch
which
- handles cooked mode to check if the call to
- wgetnstr
returned an error. This can happen
- when both nocbreak
and nodelay
- are set, for instance (see note for 960418).
improve description of BSD-style padding in curs_termcap.3x
add a check in internal function
- waddch_nosync
to ensure that tab characters
- are treated as control characters; some broken locales
- claim they are printable.
improve discussion of padding versus tparm + and tputs in + man/curs_terminfo.3x
modify menu library to ensure that a menu's top-row is - adjusted as needed to ensure that the current item is on - the screen
+add a note in manual page to explain + ungetch vs unget_wch.
fix special case where double-width character - overwrites a single- width character in the first - column.
+improve description of error-returns in waddch + and waddnstr + manual pages.
The ncurses 6.0 configure script
- makes changes to the default value of several configure
- options, depending on the --with-abi-version
option
- (i.e., whether its value is “5” or
- “6”):
--enable-const
Feature introduced in 970405
- supports the use of const
where X/Open Curses
- should have, but did not. NetBSD curses does something
- similar with const
.
--enable-ext-colors
Extends the cchar_t
structure to allow more
- than 16 colors to be encoded. This applies only to the
- wide-character (--enable-widec
)
- configuration.
--enable-ext-mouse
Modifies the encoding of mouse state to make room for a - 5th mouse button. That allows one to use ncurses with a wheel - mouse with xterm or similar X terminal emulators.
---enable-ext-putwin
Modifies the file-format written by putwin
to
- use printable text rather than binary files, allowing
- getwin
to read screen dumps written by
- differently-configured ncurses libraries. The extended
- getwin
can still read binary screen dumps from
- the same configuration of ncurses. This does not
- change the ABI (the binary interface seen by calling
- applications).
--enable-interop
Modifies the FIELDTYPE
structure used for the
- form library to make it more generic.
--enable-lp64
Allows an application to define _LP64
to
- declare chtype
and mmask_t
as
- simply “unsigned
” rather than the
- configured types using the --with-chtype
and
- --with-mmask_t
options.
--enable-sp-funcs
Compile-in support for extended functions which accept a - SCREEN pointer, reducing the need for juggling the global SP - value with - set_term and - delscreen.
---with-chtype=uint32_t
Makes chtype
explicitly a 32-bit unsigned
- value.
--with-mmask_t=uint32_t
Makes mmask_t
explicitly a 32-bit unsigned
- value.
There are no new manual pages (all of the manual page updates + are to existing pages).
---with-tparm-arg=intptr_t
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.
-X/Open Curses declares
- tparm using long
for each of the parameters
- aside from the formatting string, presuming that
- long
and char*
are the same size.
- This configure option uses intptr_t
which
- provides a better guarantee of the sizes.
The configure script no longer checks for antique compilers;
- c89
is assumed as a minimum. There are a few
- features from later revisions which are used when available. The
- configure script makes checks to turn on useful warnings from
- clang, gcc and icc. You should be able to build ncurses 6.0 with any of the current (or not so
- current) C compilers available in 2015.
The configure script, by the way, makes changes which do not
- work with systems whose /bin/sh
is non-POSIX. This
- mainly affects Solaris (the other vendor unix systems have followed the POSIX guidelines
- for the past twenty years). If you must build on Solaris, its
- xpg4
- binaries suffice, e.g.,
- - -+- #!/bin/sh
-
- WHAT=`hostname|sed -e 's/\..*//'`
- - OUT=configure.out
- cat >>$OUT <<EOF/
- ** `date`
- ** node: $WHAT
- ** user: `id`
- ** conf: $*
- EOF/
-
- SHELL=/bin/sh
- if test -f /usr/xpg4/bin/sh
- - then
- CONFIG_SHELL=/usr/xpg4/bin/sh
- export CONFIG_SHELL
- - SHELL=$CONFIG_SHELL
- fi
-
- rm -f config.status config.cache
- TOP=$HOME/$WHAT
- $SHELL ./configure --verbose \
- - --disable-echo \
- - --disable-overwrite \
- - --enable-warnings \
- - --with-warnings \
- - --prefix=$TOP $* 2>&1 | tee -a $OUT
- -
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.
-Other major changes to the configure script include:
+The interesting bugs were:
ABI 6 is now the default, intending that the existing ABI
- 5 should build as before using the
- “--with-abi-version=5
” option.
added --with-extra-suffix
option to help with
- installing nonconflicting ncurses6 packages, e.g., avoiding
- header- and library-conflicts.
NOTE: as a side-effect, this renames
+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.
--+-
adacurses-config
to -adacurses5-config
and
-adacursesw-config
to -adacursesw5-config
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.
the configure script looks for gnatgcc if the Ada95 - binding is built, in preference to the default gcc/cc. The - script also ensures that the Ada95 binding is built with the - level of optimization as the C libraries.
+remove output-related checks for nl/nonl (also + + reported on the mailing list).
the configure script captures define's related to - -D_XOPEN_SOURCE from the configure check and adds those to - the *-config and *.pc files, to simplify use for the - wide-character libraries.
+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.
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.
+There are several new (or extended) configure options:
+There are a few new/modified configure options:
--disable-db-install
Do not install the terminal database. This is used to omit
- features for packages, as done with
- --without-progs
. The option simplifies building
- cross-compile support packages.
new configure option and check for gcc + -fvisibility=hidden feature
--disable-gnat-projects
This option is used for regression testing
+corrected to allow turning leak-checking off later in a + set of options.
--disable-lib-suffixes
Suppress the “w”, “t” or
- “tw” suffixes which normally would be added to
- the library names for the --enable-widec
and
- --with-pthread
options.
new configure option makes the _Noreturn
+ keyword optional to ease transition.
--with-cxx-shared
When --with-shared
is set, build libncurses++
- as a shared library. This implicitly relies upon building
- with gcc/g++, since other compiler suites may have
- differences in the way shared libraries are built. libtool by
- the way has similar limitations.
revised option also controls whether $LDFLAGS
+ from the build is provided in “-config”
+ and “.pc” files.
--with-hashed-db
Extended this configure option to simplify building with - different versions of Berkeley database using FreeBSD - ports.
+add configure option which tells ncurses to disallow most + file-opens by setuid processes.
--with-pc-suffix
If ".pc" files are installed, optionally add a suffix to - the files and corresponding package names to separate unusual - configurations. If no option value is given (or if it is - "none"), no suffix is added. This option is used in the test - package for ncurses6.
+changed default to help packagers who reuse wide ncursesw + header file with non-wide ncurses library.
--with-xterm-kbs
Configure xterm's terminfo entries to use either BS
- (^H
, i.e., ASCII backspace) or DEL
- (^?
, or 127).
revised option uses the actual search path from + pkg-config or pkgconf using the output from + --debug.
Most of the portability-related work since - ncurses 5.9 extended and improved the MinGW port - introduced in - ncurses 5.8.
- -The MinGW port can be readily cross-compiled:
- -modified configure script to allow creating dll's for - MinGW when cross-compiling.
-enforced Windows-style path-separator if - cross-compiling,
-added scripts for test-builds of cross-compiled packages - for ncurses6 to MinGW.
-added pc-files to the MinGW cross-compiling - test-packages.
-added script for building test-packages of binaries - cross-compiled to MinGW using NSIS.
-added nc_mingw.h
to installed headers for
- MinGW port; this is needed for cross-compiling ncurses-examples.
new several --with-xxx-libname options, + to help with pkgsrc
+added test-packages for cross-compiling ncurses-examples - using the MinGW test-packages.
-The MinGW-specific Windows driver accounts for several - changes:
+Many of the portability changes are implemented via the + configure script:
wide-character display is made usable by replacing MinGW's
- non-working wcrtomb
and wctomb
- functions.
implemented some display features: beep, - flash, - - curs_set.
-the driver handles repainting on endwin/refresh - combination.
-modified treatment of TERM
variable for MinGW
- port to allow explicit use of the Windows console driver by
- checking if $TERM
is set to
- “#win32console
” or an abbreviation
- of that.
the Windows driver also matches the special
- TERM
value “unknown”
the driver now returns characters for special keys, (like
- ansi.sys
does), when keypad mode is off, rather
- than returning nothing at all.
add a special case in the configure script to work around + one of the build-time breakages reported for OpenBSD 6 here:
-the driver checks a new environment variable
- NCURSES_CONSOLE2 to optionally work around a deficiency
- in Console2
(and its descendent
- ConsoleZ
) which hang when an application creates
- a console buffer.
++ https://www.mail-archive.com/bugs@openbsd.org/msg13200.html
+
Finally, there are other improvements:
-MinGW is one of the configurations where ncurses installs by default into /usr
+modify configure check for libtool to prevent + accidental use of an OpenBSD program which uses the same + name.
extend Windows support to work with MSYS2;
- -this works with a scenario where there is an
- ANSI-escape handler such as ansicon
running
- in the console window.
isatty
calls with a macro, provide a
- corresponding set of support routines to address
- differences between MinGW and MSYS2.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.
ensure WINVER
is defined in makefiles rather
- than using headers.
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.
add check for the gnatprep
- “-T
” option.
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.
work around a bug introduced by - gcc 4.8.1 in MinGW which breaks "trace" feature.
+modify CF_NCURSES_CONFIG to work around + Xcode's c99 "-W" option, which conflicts with + conventional use for passing linker options.
add a driver-name method to each of the drivers.
+modify configure scripts to filter out redefinitions of + _XOPEN_SOURCE, e.g., for NetBSD which generally supports 500, + but 600 is needed for ncursesw.
These changes affect certain platforms (ports):
+Here are some of the other portability fixes:
the configure script knows how to build shared libraries - with DragonFlyBSD and Interix.
-support for AIX shared libraries is improved, tested with - AIX 5.3, 6.1 and 7.1 with both gcc 4.2.4 and cc:
- -the shared-library suffix for AIX 5 and 6 is now - ".so"
-the -brtl
option is used with AIX 5-7; it
- is needed to link with the shared libraries.
the configure --enable-pc-files
option takes
- into account the PKG_CONFIG_PATH
- variable.
the configure option --with-pkg-config-libdir
- provides control over the actual directory into which
- pc-files are installed.
the build scripts add explicit -ltinfo, etc., to the
- generated ".pc" file when ld
option
- “--as-needed
” is used, or when
- ncurses and tinfo are installed without using rpath.
the configure script disallows conflicting options
- “--with-termlib
” and
- “--enable-term-driver
”.
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.
the check for missing c++ compiler to work when no error - is reported, and no variables set is improved (see note for - 20021206).
+modify mk-1st.awk to account for extra-suffix configure + option.
the misc/gen_edit.sh script selects a "linux" entry which - works with the current kernel rather than assuming it is - always "linux3.0"
+build-fix for termsort module when configured with + termcap.
the test/configure script makes it simpler to override - names of curses-related libraries, to help with linking with - pdcurses in MinGW environment.
+modify configure script and makefiles to support ".PHONY" + make program feature.
the configure-script/ifdef's allow the BSD OLD_TTY feature
- to be suppressed if the type of ospeed
is
- configured using the option --with-ospeed
to not
- be a short
. By default, it is a
- short
for termcap-compatibility.
amend libtool configuration to add dependency for + install.tic, etc., in ncurses/Makefile on the lower-level + libraries.
the MKlib_gen.sh script works around a recent change in
- gcc 5 (released mid-2015) which essentially
- emits multiple #line
statements for the same
- position in a file.
modify Ada95 source-generation utility to write to a file + given as parameter rather than to the standard output, + allowing builds with MinGW.
the configure script works with Minix3.2 (see note - on portability)
+amend tic/infocmp check to allow for the respective tool's + absence.
OS/2 redux:
- -the configure script supports OS/2 kLIBC.
-the --with-lib-prefix
option allows
- configuring for old/new flavors of OS/2 EMX.
build-fixes for gnat 10.1.1, whose gnatmake drops + integration with gprbuild.
improved configure-script checks for
- _XOPEN_SOURCE
:
the definition works starting with Solaris 10.
-the definition is suppressed for IRIX64, since its
- header files have a conflict versus
- _SGI_SOURCE
.
correct configure version-check/warning for g++ to allow + for 10.x
The ncurses package is fully +
The ncurses package is fully upward-compatible with SVr4 (System V Release 4) curses:
ncurses supports all of the +
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 +
ncurses provides these SVr4 add-on libraries (not part of X/Open Curses):
ncurses's terminal database is - fully compatible with that used by SVr4 curses.
+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 @@ -1880,36 +1244,36 @@ fflush(stdout);
Alternatively, ncurses can - be configured to use hashed databases rather than the +
Alternatively, ncurses + can be configured to use hashed databases rather than the directory of files used by SVr4 curses.
The ncurses utilities have +
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.
+ as the HP-UX and AIX ports.The ncurses package also has many - useful extensions over SVr4:
+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, 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).
+ 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 +
Unlike SVr3 curses, ncurses can write to the rightmost-bottommost corner of the screen if your terminal has an insert-character capability.
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.
The tic/captoinfo - utility provided with ncurses has - the ability to translate many termcaps from the XENIX, IBM - and AT&T extension sets.
+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.
+ "@HOMEPAGE@/man/tset.1.html">tsetThe ncurses library and +
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 @@ -2030,176 +1400,204 @@ fflush(stdout);
The table-of-entries utility toe - makes it easy for users to see exactly what terminal types - are available on the system.
+ "@HOMEPAGE@/man/toe.1m.html">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
+ entry point 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 - Additional Reading section of the - ncurses FAQ for online documentation).
+ "@HOMEPAGE@/ncurses.faq.html#additional_reading">Additional + Reading section of the ncurses FAQ for online + documentation).The ncurses distribution includes - a selection of test programs (including a few games). These are - available separately as ncurses-examples
+The ncurses distribution + includes a selection of test programs (including a few games). + These are available separately as ncurses-examples
The ncurses library has been tested with a wide variety of applications including:
--
- cdk
+- aptitude +
- -
+ +Curses Development Kit
+FrontEnd to Apt, the debian package manager
http://invisible-island.net/cdk/
+
+ "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude- cdk +
+ +- +
-Curses Development Kit
+ +- ded
+- ded +
- -
directory-editor
- +- dialog
+- dialog +
- -
the underlying application used in Slackware's setup, and the basis for similar install/configure applications on many systems.
- +- lynx
+- lynx +
- -
the text WWW browser
+ "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/- Midnight Commander
+- mutt +
- -
-file manager
+mail utility
- +- mutt
+- ncftp +
- -
-mail utility
+file-transfer utility
+ "https://www.ncftp.com/">https://www.ncftp.com/- ncftp
+- nvi +
- -
-file-transfer utility
+New vi uses ncurses.
+ "https://sites.google.com/a/bostic.com/keithbostic/vi">https://sites.google.com/a/bostic.com/keithbostic/vi
+ +- nvi
+- ranger +
- -
-New vi uses ncurses.
+A console file manager with VI key bindings in + Python.
+ "https://ranger.github.io/">https://ranger.github.io/- tin
+- tin +
- + +
newsreader, supporting color, MIME
- + +- vifm +
+ +- +
File manager with vi like keybindings
+ +
as well as some that use ncurses - for the terminfo support alone:
+as well as some that use ncurses for the terminfo support alone:
@@ -2208,31 +1606,44 @@ fflush(stdout);-
- minicom
+- minicom +
- -
terminal emulator for serial modem connections
+ "https://alioth.debian.org/projects/minicom/">https://alioth.debian.org/projects/minicom/- mosh
+- mosh +
- -
a replacement for
- +ssh
.- tack
+- tack +
- -
terminfo action checker
- +- tmux
+- tmux +
- -
terminal multiplexor
+ "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki- vile
+- vile +
- -
vi-like-emacs may be built to use the terminfo, termcap - or curses interfaces.
+vi-like-emacs may be built to use the terminfo, + termcap or curses interfaces.
- +
@@ -2240,15 +1651,21 @@ fflush(stdout);-
- emacs
+- emacs +
- + +
text editor
+ "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/ +- less +
+ +- +
-The most commonly used pager (a program that + displays text files).
+ +- screen
+- screen +
- -
terminal multiplexor
+ "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/- vim
+- vim +
text editor
- +
Zeyd Ben-Halim started ncurses +
Zeyd Ben-Halim started ncurses 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 development work is done by - Thomas Dickey. - Thomas Dickey also acts as the maintainer for the Free Software - Foundation, which holds the copyright - on ncurses.
+ 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
@@ -2261,8 +1678,8 @@ fflush(stdout);bug-ncurses-request@gnu.org -containing the line: - + + containing the line:
@@ -2271,12 +1688,25 @@ fflush(stdout);
subscribe
<name>@<host.domain>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
+ +++ +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://invisible-island.net/ncurses/ .
+ "ftp://ftp.invisible-island.net/ncurses/6.2/">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:
@@ -2295,36 +1725,28 @@ fflush(stdout); which may be interesting by themselves:-
- man2html
- -- - ncurses licensing
+- ncurses licensing
-- Symbol - versioning in ncurses
+- Symbol versioning + in ncurses
-- The - MinGW port of ncurses
+- Comments on + ncurses versus slang (S-Lang)
-- tack – - terminfo action checker
+- Comments on + OpenBSD
-- tar - versus portability
+- tack – terminfo action + checker
-- tctest - – termcap library checker
+- tctest – termcap + library checker
- - Terminal Database
+ "@HOMEPAGE@/ncurses.html#download_database">Terminal + DatabaseOther @@ -2334,13 +1756,17 @@ fflush(stdout); 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, and provides several - user-definable extensions beyond the X/Open specification. + 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 .
+ Richard Shuford's archive . The collection of computer + manuals at bitsavers.org has also been + useful.