X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=announce.html.in;h=89fb3ebeb4622d3121cdf68190348d4c95538c1a;hp=da9298a298deb6b14bedb468b8cb23c3d706b3da;hb=c3b21f65a2687f3894a0d3217006c23f162c893a;hpb=f86cbeb5f9bd96ab041d34039c35749a14965039 diff --git a/announce.html.in b/announce.html.in index da9298a2..89fb3ebe 100644 --- a/announce.html.in +++ b/announce.html.in @@ -1,8 +1,7 @@ - ++ "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
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 SYSV-curses - enhancements over BSD curses. + function-key mapping, and has all the other SVr4-curses + enhancements over BSD curses. SVr4 curses is better known today + as 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 + ported to many systems:+ +
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!+
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.+ including + +
The ncurses distribution is available via anonymous FTP at the
- GNU distribution site ftp://ftp.gnu.org/gnu/ncurses/ .
Full manual pages are provided for the library and tools.- It is also available at ftp://invisible-island.net/ncurses/ . +
The ncurses distribution is + available via anonymous FTP at the GNU distribution site-
+It is also available at -
These notes are for ncurses + @VERSION@, released August 8, 2015.+ +
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:
_XOPEN_CURSESdefinition in -
cchar_t structure to allow more
+ than 16 colors to be encoded.
has_mouse, reflect its use in C++ and Ada95.
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.+
is_subwin- functions for opaque access to the WINDOW structure.
There are, of course, numerous other improvements, + including+ +
fixes made based on the Clang and Coverity static + analyzers.+
tiparm, based on review of X/Open Curses - Issue 7.
memory leak fixes using Valgrind+
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.
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.
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.+ +
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.+
SCREENpointer for several curses functions which - use the global
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.+
NCURSES_NO_UTF8_ACSfeature by - adding a check for an extended terminfo capability -
tigetstr, etc., by - using hashing code from tic.
X/Open curses provides more than one initialization + function:-
They are documented in X/Open as if
stdout for output stream, and in turn
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
+ 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:+ +
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
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.
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
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:
ncursestw. Each sample is
+ given in two forms:
- “+ +
- These list all public symbols, together with version + names.+ +
- “+ +
- 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
configuration name, e.g.,
NCURSESW” for the wide-character
ABI version (if not 5)+
library name for two special cases which have the same
+ interface across configurations:
_nc_infotocap(used by tic - and infocmp) to recognize the -
setabstrings from -
xterm+88color,and - provide a reduced version which works with termcap.
patch date (for the release version)+
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
btermterminfo entry, based on bogl - 0.1.18
various improvements were made to building the Ada95
+ binding, both in simplifying the generated files as well as
+ improving the way it uses
There are also new features in the libraries:-
added + wgetdelay to retrieve _delay member of WINDOW if it + happens to be opaque, e.g., in the pthread configuration.+
added + A_ITALIC extension.+
mlterm+256colorentry, for mlterm - 3.0.0
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:+ +
+++0 string \210\210 Screen-dump (ncurses) ++
several changes to mouse support include:+ +
%u” format to terminfo.
xterm-utf8entry as a demo of the -
There are a few new configure options dealing with library + customization:-
U8feature to denote entries for - terminal emulators which do not support VT100 SI/SO - when processing UTF-8 encoding
XTcapability to entries for - terminals that support both xterm-style mouse- and - title-controls, for
screenwhich - special-cases TERM beginning with
+ configure option to turn on the extended putwin/getwin. By
+ default, this is enabled for ABI 6 and disabled with ABI
+ 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.
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.,
+ the default is set for ABI 6).
Most of the termcap-related changes based on development of
+ (termcap library checker) are implemented in the tic and
+ infocmp programs rather than affecting the library. As noted in
+ 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
NUL character prompted a review:
Both terminfo and termcap store string capabilities as
tek4115to make -
In terminfo, a
\0 in a terminal description
+ is stored as
There are no (known) terminals which would behave
+ differently when sent
pfkey- capability from kf1-kf10 to kf1-kf48, moving function key - definitions from
emx-basefor - consistency.
When translating to terminfo format (or displaying a
+ printable version of an entry using infocmp), ncurses shows
pfkey- capability of
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. ++
st52- terminfo entries to atari-old, st52-old, use newer entries - from FreeMiNT.
_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
gnometerminfo entries as -
gnomevariants for - compatibility, but generally deprecating those since the - VTE library is what actually defines the behavior of - "gnome", etc., since 2003.
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:-
smsoterminfo - capability by using reverse rather than bold.
-0” option generates
+ termcap/terminfo source on a single line.
initccapability of -
linux-c-ncend-of-range, make similar change - for
-K” option provides stricter
+ BSD-compatibility for termcap output.
Other user-visible improvements and new features include:-
-D” option to tic and
+ infocmp, to show the database locations that it could
kcanassignment to -
-s” option to toe, to sort
+ its output.
konsole-baseentries, allowing underline.
-n” options of infocmp to allow
+ comparing more than two entries.
sun-colorterminfo entry to match Sun's entry - for this.
modified toe's report when “
+ and “
-s” options are combined, to
+ add a column showing which entries belong to a given
modified the clear program to take into account the
E3” extended capability to clear
+ the terminal's scrollback buffer.
vt52, - show arrow keys.
wsvt25to help ensure that reset ends the - alternate character set.
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).-
initc- capabilities to
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.+
-q” options to the demo_terminfo
+ and demo_termcap test-programs.
-y” option to demo_termcap
+ and test/demo_terminfo test-programs to demonstrate behavior
+ with/without extended capabilities.
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.
These changes were made to help with the MinGW port:
added test-screens to the ncurses test-program to show + 256-characters at a time, to help with MinGW port.+
getccharto - count the trailing null which is documented in - X/Open.
unctrlto obtain a printable version of - the control character, but was not passing color or - video attributes.
waddch_literal, updating - line-pointer after a multicolumn character is found to - not fit on the current row, and wrapping is done. Since - the line-pointer was not updated, the wrapped - multicolumn character was written to the beginning of - the current row.
wins_nwstrand related - functions to ensure that special characters, i.e., - control characters are handled properly with the - wide-character configuration.
_nc_insert_chto use -
_nc_insert_wchwhen inserting wide - characters, since the
wins_wchfunction - that it used did not update the cursor position.
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.+
-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
-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
sgr in several entries agree with other
correct padding in some entries where earlier versions had + miscounted the number of octal digits.+
There are several new terminal descriptions:+ +
Gpm_Openreturns a -2, - e.g., for "xterm". This is normally suppressed but can - be overridden using
$NCURSES_GPM_TERMS. - Ensure that
Gpm_Closeis called in this - case.
getmouseto act as its - documentation implied, returning on each call the - preceding event until none are left. When no more - events remain, it will return
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
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
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, 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.+
Ada95 binding:+ +
modify makefile rules to ensure that the PIC option is + not used when building a static library
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.
Color and attributes:-
parenthesize parameter of
PAIR_NUMBER in curses.h in case it happens
+ to be a comma-expression.
$CCenvironment variable - which is defined by X/Open as a curses feature, to - ignore it if it is not a single character.
+ 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.
cur_termwhen - broken-linker is used, but enable-reentrant is not, to - match pre-5.7.
add a check in + start_color to limit color-pairs to 256 when extended + colors are not supported.+
mvderwinwhich - prevented moving a derived window whose origin happened - to coincide with its parent's origin.
Resizing the screen:-
newwin, to - ensure that windows have nonzero size.
propagate error-returns from wresize, i.e., the + internal increase_size and decrease_size functions + through + resize_term.+
set_curtermto make - broken-linker configuration work with changes from - 20090228.
add check for zero/negative dimensions for
wgetchto ensure it checks -
SIGWINCHwhen it gets an error in - non-blocking mode.
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
wgetnstr because the screen dimensions did
+ not change.
wredrawln, - accounting for
_nc_format_slksin lib_slk.c, from - 20070704 changes.
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.
_nc_infotocap, used to transform terminfo - to termcap strings.
%l” behavior in tparm
+ to push the string length onto the stack rather than
+ saving the formatted length into the output buffer.
_nc_wgetchto check for a -1 in - the fifo, e.g., after a
SIGWINCH, and - discard that value, to avoid confusing - application.
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).
field_buffer, which stopped at the end of the - first row due to filling of unused entries in a cchar_t - array with nulls.
set_field_buffer, broken in - 20081018 changes.
modify internal recursion in
+ handles cooked mode to check if the call to
wgetnstr returned an error. This can happen
+ when both
+ are set, for instance (see note for 960418).
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.
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+
fix special case where double-width character + overwrites a single- width character in the first + column.+
The ncurses 6.0 configure script
+ makes changes to the default value of several configure
+ options, depending on the
+ (i.e., whether its value is “5” or
Feature introduced in 970405
+ supports the use of
const where X/Open Curses
+ should have, but did not. NetBSD curses does something
+ similar with
cchar_t structure to allow more
+ than 16 colors to be encoded. This applies only to the
+ wide-character (
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.+
Modifies the file-format written by
+ 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
FIELDTYPE structure used for the
+ form library to make it more generic.
Allows an application to define
+ simply “
unsigned” rather than the
+ configured types using the
chtype explicitly a 32-bit unsigned
mmask_t explicitly a 32-bit unsigned
X/Open Curses declares
+ tparm using
long for each of the parameters
+ aside from the formatting string, presuming that
char* are the same size.
+ This configure option uses
+ 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
+ binaries suffice, e.g.,
+ + ++ +
+ WHAT=`hostname|sed -e 's/\..*//'`
+ + OUT=configure.out
+ cat >>$OUT <<EOF/
+ ** `date`
+ ** node: $WHAT
+ ** user: `id`
+ ** conf: $*
+ if test -f /usr/xpg4/bin/sh
+ + then
+ export CONFIG_SHELL
+ + SHELL=$CONFIG_SHELL
+ rm -f config.status config.cache
+ $SHELL ./configure --verbose \
+ + --disable-echo \
+ + --disable-overwrite \
+ + --enable-warnings \
+ + --with-warnings \
+ + --prefix=$TOP $* 2>&1 | tee -a $OUT
Other major changes to the configure script include:
ABI 6 is now the default, intending that the existing ABI
+ 5 should build as before using the
--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-
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.+
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.+
There are several new (or extended) configure options:-
pkg-config's library - directory.
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.
EINTRto - interrupt a read operation in
wgetch. This - applies only to the pthread configuration
This option is used for regression testing+
SCREENpointer, reducing the need - for juggling the global
SPvalue with -
Suppress the “w”, “t” or
+ “tw” suffixes which normally would be added to
+ the library names for the
--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.
Extended this configure option to simplify building with + different versions of Berkeley database using FreeBSD + ports.+
pkg-config, optionally - specifying its path.
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.+
Configure xterm's terminfo entries to use either BS
^H, i.e., ASCII backspace) or DEL
^?, or 127).
--with-database, - which was coded as an enable-type switch.
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.+
adacurses-configto look for - ".ali" files in the adalib directory.
added pc-files to the MinGW cross-compiling + test-packages.+
added script for building test-packages of binaries + cross-compiled to MinGW using NSIS.+
nc_mingw.h to installed headers for
+ MinGW port; this is needed for cross-compiling ncurses-examples.
libAdaCurses.aused in -
added test-packages for cross-compiling ncurses-examples + using the MinGW test-packages.+
adacurses-configto - provide additional flavors such as -
adacursesw-config, for ncursesw.
The MinGW-specific Windows driver accounts for several + changes:-
ncurses*-configand pc-files to add - dependency for tinfo library.
wide-character display is made usable by replacing MinGW's
ncurses*-configscripts if - available for test/configure.
ncurses*-config, e.g., if it is renamed to - provide a single file for ncurses/ncursesw - libraries.
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.
$includedirsymbol in -
misc/ncurses-config.in, add -
the driver checks a new environment variable
+ NCURSES_CONSOLE2 to optionally work around a deficiency
Console2 (and its descendent
ConsoleZ) which hang when an application creates
+ a console buffer.
Finally, there are other improvements:-
pkg-configlibrary - directory if needed.
MinGW is one of the configurations where ncurses installs by default into /usr+
==" where "
=" - is needed in
gen-pkgconfig.into eliminate a - dependency on rpath when deciding whether to add -
--libsoutput; that - should be shown for the ncurses and tinfo libraries - without taking rpath into account.
extend Windows support to work with MSYS2;-
$PKG_CONFIG_LIBDIR- to use only the first item in a possibly - colon-separated list.
this works with a scenario where there is an
+ ANSI-escape handler such as
+ in the console window.
isattycalls with a macro, provide a + corresponding set of support routines to address + differences between MinGW and MSYS2.
WINVER is defined in makefiles rather
+ than using headers.
add check for the
work around a bug introduced by + gcc 4.8.1 in MinGW which breaks "trace" feature.+
add a driver-name method to each of the drivers.+
make-tar.shscripts to Ada95 and - test subdirectories to help with making those - separately distributable.
Ada95/configurescript, to use in - tar-file created by -
These changes affect certain platforms (ports):-
tar-copy.shand related -
configure/Makefilechunks, since the Ada95 - binding is now installed using rules in -
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"+
-brtl option is used with AIX 5-7; it
+ is needed to link with the shared libraries.
--enable-pc-files option takes
+ into account the
the configure option
+ 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
--as-needed” is used, or when
+ ncurses and tinfo are installed without using rpath.
the configure script disallows conflicting options
the check for missing c++ compiler to work when no error + is reported, and no variables set is improved (see note for + 20021206).+
the misc/gen_edit.sh script selects a "linux" entry which + works with the current kernel rather than assuming it is + always "linux3.0"+
the test/configure script makes it simpler to override + names of curses-related libraries, to help with linking with + pdcurses in MinGW environment.+
the configure-script/ifdef's allow the BSD OLD_TTY feature
+ to be suppressed if the type of
+ configured using the option
--with-ospeed to not
+ be a
short. By default, it is a
short for termcap-compatibility.
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.
the configure script works with Minix3.2 (see note + on portability)+
make_keys, improving cross-compilation of - ncursesw.
make_keys, to reduce the need for setting - BUILD_CPPFLAGS in cross-compiling when the build- and - target-machines differ.
CF_MKSTEMPmacro, by adding a check cache - variable set by
the configure script supports OS/2 kLIBC.+
--with-lib-prefix option allows
+ configuring for old/new flavors of OS/2 EMX.
improved configure-script checks for
wecho_wcharto eliminate dependency on -
the definition works starting with Solaris 10.+
the definition is suppressed for IRIX64, since its
+ header files have a conflict versus
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.
CCHARW_MAXvalue configurable, noting - that changing this would change the size of -
cchar_t, and would be ABI-incompatible.
mkdirs.sh, use - "
misc/jpf-indent; they are provided by an - external package cindent.
$ARFLAGSrather - than
$AR_OPTS, provide a configure check to - detect whether a "-" is needed before "ar" options.
CF_DISABLE_LEAKSconfigure macro so - that the --enable-leaks option is not the same as - --disable-leaks.
LIBSvalues to the search-lists.
CF_GCC_WARNINGSto work with gcc 4.x's c89 - alias, which gives warning messages for cases where older - versions would produce an error.
CF_WITH_LIBTOOLconfigure check to - allow unreleased libtool version numbers (e.g. which - include alphabetic chars, as well as digits, after the - final '.').
-f" option if it is supported, to eliminate - temporary removal of the target
MK_SHARED_LIBwhen - -Bsharable is used, for *BSD's, without which "main" might - be one of the shared library's dependencies.
misc/run_tic.into create parent - directory, in case this is a new install of hashed - database.
It can be optionally configured to match the format + used in related systems such as AIX and Tru64.+
Alternatively, ncurses can + be configured to use hashed databases rather than the + directory of files used by SVr4 curses.+
The ncurses utilities have + options to allow you to filter terminfo entries for use with + less capable curses/terminfo versions such + as the HP/UX and AIX ports.+
The ncurses package also has many + useful extensions over SVr4:-
The API is 8-bit clean and base-level conformant with the + X/OPEN curses specification, XSI curses (that is, it + implements all BASE level features, and most EXTENDED + features). It includes many function calls not supported + under SVr4 curses (but portability of all calls is documented + so you can use the SVr4 subset only).+
Unlike SVr3 curses, ncurses + can write to the rightmost-bottommost corner of the screen if + your terminal has an insert-character capability.+
Ada95 and C++ bindings.+
Support for mouse event reporting with X Window xterm and + FreeBSD and OS/2 console windows.+
Extended mouse support via Alessandro Rubini's gpm + package.+
wresize allows you to resize
+ windows, preserving their data.
key_namein test/ncurses.c - 'A' test, which only displays wide-characters, not - key-codes since 20070612.
use_default_colors allows you to
+ use the terminal's default colors for the default color pair,
+ achieving the effect of transparent colors.
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.+
linedata.hfunctions): - test/test_addstr.c test/test_addwstr.c test/test_addchstr.c - test/test_add_wchstr.c
Support for 16-color terminals, such as aixterm + and modern xterm.+
Better cursor-movement optimization. The package now + features a cursor-local-movement computation more efficient + than either BSD's or System V's.+
Super hardware scrolling support. The screen-update code
+ incorporates a novel, simple, and cheap algorithm that
+ enables it to make optimal use of hardware scrolling,
+ line-insertion, and line-deletion for screen-line movements.
+ This algorithm is more powerful than the 4.4BSD curses
Real support for terminals with the magic-cookie glitch. + The screen-update code will refrain from drawing a highlight + if the magic- cookie unattributed spaces required just before + the beginning and after the end would step on a non-space + character. It will automatically shift highlight boundaries + when doing so would make it possible to draw the highlight + without changing the visual appearance of the screen.
It is possible to generate the library with a list of + pre-loaded fallback entries linked to it so that it can serve + those terminal types even when no terminfo tree or termcap + file is accessible (this may be useful for support of + screen-oriented programs that must run in single-user + mode).+
A BSD-like tset + utility is provided.+
The ncurses library and + utilities will automatically read terminfo entries from + $HOME/.terminfo if it exists, and compile to that directory + if it exists and the user has no write access to the system + directory. This feature makes it easier for users to have + personal terminfo entries without giving up access to the + system terminfo directory.+
You may specify a path of directories to search for + compiled descriptions with the environment variable + TERMINFO_DIRS (this generalizes the feature provided by + TERMINFO under stock System V.)+
In terminfo source files, use capabilities may refer not + just to other entries in the same source file (as in System + V) but also to compiled entries in either the system terminfo + directory or the user's $HOME/.terminfo directory.+
The table-of-entries utility toe + makes it easy for users to see exactly what terminal types + are available on the system.+
The library meets the XSI requirement that every macro
+ entry point have a corresponding function which may be linked
+ (and will be prototype-checked) if the macro definition is
+ disabled with
wresizeallows you to resize - windows, preserving their data.
use_default_colorsallows you to - use the terminal's default colors for the default color pair, - achieving the effect of transparent colors.
define_keyallow 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.
The ncurses code has been tested with a wide variety of - applications including (versions starting with those noted):+
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:-
Curses Development Kit-
the underlying application used in Slackware's setup, + and the basis for similar install/configure applications on + many systems.-
the text WWW browser-
New vi uses ncurses.-
newsreader, supporting color, MIME+ +
as well as some that use ncurses + for the terminfo support alone:+ +
- minicom+ +
- ++ +
terminal emulator for serial modem connections+ +
- mosh+ +
a replacement for-
The ncurses distribution includes a selection of test programs - (including a few games).+
Who's Who and What's WhatZeyd Ben-Halim started it from - a previous package pcurses, written by Pavel Curtis. Eric S. +
- tack+ +
- ++ +
terminfo action checker+ +
- tmux+ +
- ++ +
terminal multiplexor+ +
- vile+ +
vi-like-emacs may be built to use the terminfo, termcap + or curses interfaces.+ +
and finally, those which use only the termcap interface:+ +
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 work is being done by + the form and menu libraries. Ongoing development work is done by Thomas Dickey. - Thomas Dickey acts as the maintainer for the Free Software - Foundation, which holds the copyright on ncurses. Contact the - current maintainers at email@example.com. - -
To join the ncurses mailing list, please write email to
firstname.lastname@example.org containing the line:
- subscribe <name>@<host.domain> -+ Thomas Dickey also acts as the maintainer for the Free Software + Foundation, which holds the copyright + on ncurses. + +
Contact the current maintainers at+ +
+ email@example.com ++ +
To join the ncurses mailing list, please write email to+ +
+ firstname.lastname@example.org +containing the line: + +
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 ftp://invisible-island.net/ncurses/ .+
Beta versions of ncurses and + patches to the current release are made available at+ +
There is an archive of the mailing list here:+ +
http://lists.gnu.org/archive/html/bug-ncurses + (also https)+
The release notes make scattered references to these pages, + which may be interesting by themselves:
The distribution provides a newer version of the + terminfo-format terminal description file once maintained by + Eric Raymond . Unlike the older version, the termcap and terminfo data are provided in the same file, and provides several - user-definable extensions beyond the X/Open specification. + 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 .+ +