X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=announce.html.in;h=89fb3ebeb4622d3121cdf68190348d4c95538c1a;hb=5817afea017464ac3b89170fb205f21d99bec47c;hp=da9298a298deb6b14bedb468b8cb23c3d706b3da;hpb=f86cbeb5f9bd96ab041d34039c35749a14965039;p=ncurses.git 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_CURSES
definition in
- curses.h
.Extend the cchar_t
structure to allow more
+ than 16 colors to be encoded.
_nc_has_mouse
to
- 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_pad
and 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.
+ +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.
+SCREEN
pointer for several curses functions which
- use the global SP
.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_ACS
feature by
- adding a check for an extended terminfo capability
- U8
.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
+ 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:
+ +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.
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.
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
tabs
program.configuration name, e.g.,
+ “NCURSESW
” for the wide-character
+ libraries
ABI version (if not 5)
+library name for two special cases which have the same
+ interface across configurations:
+ “TINFO
” and
+ “TIC
”
release version
+_nc_infotocap
(used by tic
- and infocmp) to recognize the
- setaf
/setab
strings from
- xterm+256color
and 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
+ segment.
bterm
terminfo entry, based on bogl
- 0.1.18various improvements were made to building the Ada95
+ binding, both in simplifying the generated files as well as
+ improving the way it uses gnatmake
cons25-debian
entryThere are also new features in the libraries:
-eterm-color
entryadded + wgetdelay to retrieve _delay member of WINDOW if it + happens to be opaque, e.g., in the pthread configuration.
+linux-16color
added + A_ITALIC extension.
+mlterm+256color
entry, for mlterm
- 3.0.0added 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) ++
screen.Eterm
terminfo entryseveral changes to mouse support include:
+ +vwmterm
entry%u
” format to terminfo.xterm-utf8
entry as a demo of the
- U8
featureThere are a few new configure options dealing with library + customization:
-U8
feature to denote entries for
- terminal emulators which do not support VT100 SI/SO
- when processing UTF-8 encodingXT
capability to entries for
- terminals that support both xterm-style mouse- and
- title-controls, for screen
which
- special-cases TERM beginning with xterm
or
- rxvt
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.
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.
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).
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:
Both terminfo and termcap store string capabilities as
+ NUL
-terminated strings.
nsterm,
xnuppc
and
- tek4115
to make
- sgr
/sgr0
consistentIn 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
.
ansi.sys
pfkey
- capability from kf1-kf10 to kf1-kf48, moving function key
- definitions from emx-base
for
- consistency.When translating to terminfo format (or displaying a
+ printable version of an entry using infocmp), ncurses shows \200
as
+ \0
.
pfkey
- capability of ansi.sys-old
.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. ++
atari
and st52
- terminfo entries to atari-old, st52-old, use newer entries
- from FreeMiNT.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).
gnome
terminfo entries as
- vte
, retaining gnome
variants 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:
-interix
smso
terminfo
- capability by using reverse rather than bold.the “-0
” option generates
+ termcap/terminfo source on a single line.
initc
capability of
- linux-c-nc
end-of-range, make similar change
- for dg+ccc
and dgunix+ccc
.the “-K
” option provides stricter
+ BSD-compatibility for termcap output.
minix
terminfo entry.Other user-visible improvements and new features include:
-nsterm*
entries.added “-D
” option to tic and
+ infocmp, to show the database locations that it could
+ use.
kcan
assignment to
- ^C
from putty
.added “-s
” option to toe, to sort
+ its output.
ncv
in screen
and
- konsole-base
entries, allowing underline.extended “-c
” and
+ “-n
” options of infocmp to allow
+ comparing more than two entries.
sun-color
terminfo entry to match Sun's entry
- for this.modified toe's report when “-a
”
+ and “-s
” options are combined, to
+ add a column showing which entries belong to a given
+ database.
rmso
for tek4106
- entry.modified the clear program to take into account the
+ “E3
” extended capability to clear
+ the terminal's scrollback buffer.
acsc
string for vt52
,
- show arrow keys.rs2
to
- wsvt25
to 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).
-ccc
and initc
- capabilities to xterm-16color
.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.
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.
rewrote the tests for + mvderwin and test for recursive + mvwin in the movewindow test-program.
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.
+getcchar
to
- count the trailing null which is documented in
- X/Open.insch
.unctrl
to 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_nwstr
and related
- functions to ensure that special characters, i.e.,
- control characters are handled properly with the
- wide-character configuration._nc_insert_ch
to use
- _nc_insert_wch
when inserting wide
- characters, since the wins_wch
function
- 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.
+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:
+ +Gpm_Open
returns a -2,
- e.g., for "xterm". This is normally suppressed but can
- be overridden using $NCURSES_GPM_TERMS
.
- Ensure that Gpm_Close
is called in this
- case.getmouse
to act as its
- documentation implied, returning on each call the
- preceding event until none are left. When no more
- events remain, it will return ERR
.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.
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 COLOR_PAIR
and
+ PAIR_NUMBER
in curses.h in case it happens
+ to be a comma-expression.
$CC
environment variable
- which is defined by X/Open as a curses feature, to
- ignore it if it is not a single character.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.
cur_term
when
- broken-linker is used, but enable-reentrant is not, to
- match pre-5.7.modify + init_pair to accept -1's for color value after + + assume_default_colors has been called.
+derwin
.add a check in + start_color to limit color-pairs to 256 when extended + colors are not supported.
+mvderwin
which
- 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_curterm
to make
- broken-linker configuration work with changes from
- 20090228.add check for zero/negative dimensions for
+ resizeterm
and resize_term
.
wgetch
to ensure it checks
- SIGWINCH
when it gets an error in
- non-blocking mode.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.
wredrawln
,
- accounting for begy
/begx
- values.Low-level interfaces
-_nc_format_slks
in 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.change “%l
” behavior in tparm
+ to push the string length onto the stack rather than
+ saving the formatted length into the output buffer.
_nc_wgetch
to 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.set_field_buffer
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).
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 --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.
--with-tparm-arg=intptr_t
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
+ +
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-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
-+++
adacurses-config
to +adacurses5-config
and
+adacursesw-config
to +adacursesw5-config
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:
---disable-db-install
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.
--disable-gnat-projects
EINTR
to
- interrupt a read operation in wgetch
. This
- applies only to the pthread configurationThis option is used for regression testing
+--disable-lib-suffixes
SCREEN
pointer, reducing the need
- for juggling the global SP
value with
- set_term
and delscreen
.Suppress the “w”, “t” or
+ “tw” suffixes which normally would be added to
+ the library names for the --enable-widec
and
+ --with-pthread
options.
--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.
--with-hashed-db
_nc_
".Extended this configure option to simplify building with + different versions of Berkeley database using FreeBSD + ports.
+--with-pc-suffix
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.
+--with-xterm-kbs
Configure xterm's terminfo entries to use either BS
+ (^H
, i.e., ASCII backspace) or DEL
+ (^?
, or 127).
Most of the portability-related work since + ncurses 5.9 extended and improved the MinGW port + introduced in + ncurses 5.8.
---with-database
,
- which was coded as an enable-type switch.The MinGW port can be readily cross-compiled:
-lib_gen.o
when
- --disable-ext-funcs
is used.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-config
to 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.
+added nc_mingw.h
to installed headers for
+ MinGW port; this is needed for cross-compiling ncurses-examples.
libAdaCurses.a
used in
- adacurses-config
.added test-packages for cross-compiling ncurses-examples + using the MinGW test-packages.
+adacurses-config
to
- provide additional flavors such as
- adacursesw-config
, for ncursesw.The MinGW-specific Windows driver accounts for several + changes:
-ncurses*-config
and pc-files to add
- dependency for tinfo library.wide-character display is made usable by replacing MinGW's
+ non-working wcrtomb
and wctomb
+ functions.
ncurses*-config
scripts if
- available for test/configure.implemented some display features: beep, + flash, + + curs_set.
+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.
+help2man
.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.
--srcdir
.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.
$includedir
symbol in
- misc/ncurses-config.in
, add
- --includedir
option.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.
Finally, there are other improvements:
-pkg-config
library
- directory if needed.MinGW is one of the configurations where ncurses installs by default into /usr
+==
" where "=
"
- is needed in ncurses-config.in
and
- gen-pkgconfig.in
files.gen-pkgconfig.in
to eliminate a
- dependency on rpath when deciding whether to add
- $LIBS
to --libs
output; 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 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.ensure WINVER
is defined in makefiles rather
+ than using headers.
add check for the gnatprep
+ “-T
” option.
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.sh
scripts to Ada95 and
- test subdirectories to help with making those
- separately distributable.Ada95/configure
script, to use in
- tar-file created by
- Ada95/make-tar.sh
.These changes affect certain platforms (ports):
-tar-copy.sh
and related
- configure/Makefile
chunks, since the Ada95
- binding is now installed using rules in
- Ada95/src
.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
”.
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 ospeed
is
+ 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)
+OS/2 redux:
make_hash
and
- make_keys
, improving cross-compilation of
- ncursesw.make_hash
- and make_keys
, to reduce the need for setting
- BUILD_CPPFLAGS in cross-compiling when the build- and
- target-machines differ.CF_MKSTEMP
macro, by adding a check cache
- variable set by AC_CHECK_FUNC
.the configure script supports OS/2 kLIBC.
+the --with-lib-prefix
option allows
+ configuring for old/new flavors of OS/2 EMX.
improved configure-script checks for
+ _XOPEN_SOURCE
:
wadd_wch
and
- wecho_wchar
to eliminate dependency on
- unctrl
.the definition works starting with Solaris 10.
+the definition is suppressed for IRIX64, since its
+ header files have a conflict versus
+ _SGI_SOURCE
.
The ncurses package is fully + upward-compatible with SVr4 (System V Release 4) curses:
-Ada95/src
.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_MAX
value configurable, noting
- that changing this would change the size of
- cchar_t
, and would be ABI-incompatible.mkdirs.sh
, use
- "mkdir -p
".misc/ncu-indent
and
- misc/jpf-indent
; they are provided by an
- external package cindent.$ARFLAGS
rather
- than $AR_OPTS
, provide a configure check to
- detect whether a "-" is needed before "ar" options.CF_DISABLE_LEAKS
configure macro so
- that the --enable-leaks option is not the same as
- --disable-leaks.CF_HEADER_PATH
and
- CF_LIBRARY_PATH
by adding CFLAGS
,
- CPPFLAGS
and LDFLAGS
,
- LIBS
values to the search-lists.CF_GCC_VERSION
- and CF_GCC_WARNINGS
to work with gcc 4.x's c89
- alias, which gives warning messages for cases where older
- versions would produce an error.CF_WITH_LIBTOOL
configure 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 targetCC_SHARED_OPTS
for Solaris.MK_SHARED_LIB
when
- -Bsharable is used, for *BSD's, without which "main" might
- be one of the shared library's dependencies.misc/run_tic.in
to 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.
+The function wresize
allows you to resize
+ windows, preserving their data.
key_name
in test/ncurses.c
- 'A' test, which only displays wide-characters, not
- key-codes since 20070612.The function use_default_colors
allows you to
+ use the terminal's default colors for the default color pair,
+ achieving the effect of transparent colors.
The functions keyok
and
+ define_key
allow you to better control the use
+ of function keys, e.g., disabling the ncurses KEY_MOUSE, or by defining more than
+ one control sequence to map to a given key code.
Support for 256-color terminals, such as modern xterm.
+linedata.h
functions):
- test/test_addstr.c test/test_addwstr.c test/test_addchstr.c
- test/test_add_wchstr.cSupport for 16-color terminals, such as aixterm + and modern xterm.
+Better cursor-movement optimization. The package now + features a cursor-local-movement computation more efficient + than either BSD's or System V's.
+Super hardware scrolling support. The screen-update code
+ incorporates a novel, simple, and cheap algorithm that
+ enables it to make optimal use of hardware scrolling,
+ line-insertion, and line-deletion for screen-line movements.
+ This algorithm is more powerful than the 4.4BSD curses
+ quickch
routine.
Real support for terminals with the magic-cookie glitch. + The screen-update code will refrain from drawing a highlight + if the magic- cookie unattributed spaces required just before + the beginning and after the end would step on a non-space + character. It will automatically shift highlight boundaries + when doing so would make it possible to draw the highlight + without changing the 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).
+The tic/captoinfo + utility provided with ncurses has + the ability to translate many termcaps from the XENIX, IBM + and AT&T extension sets.
+A BSD-like tset + utility is provided.
+The ncurses library and + utilities will automatically read terminfo entries from + $HOME/.terminfo if it exists, and compile to that directory + if it exists and the user has no write access to the 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 #undef
.
wresize
allows you to resize
- windows, preserving their data.use_default_colors
allows you to
- use the terminal's default colors for the default color pair,
- achieving the effect of transparent colors.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.--enable-ext-colors
- option.quickch
- routine.#undef
.Extensive documentation is provided (see the + Additional Reading section of the + ncurses FAQ for online documentation).
+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:
-++
- cdk
- http://www.vexus.ca/products/CDK/
Curses Development Kit
-http://invisible-island.net/cdk/
+
directory-editor
-the underlying application used in Slackware's setup, + and the basis for similar install/configure applications on + many systems.
-http://invisible-island.net/dialog/
+ -the text WWW browser
-file manager
-http://www.midnight-commander.org/
+ -mail utility
-file-transfer utility
-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
-ssh
.The ncurses distribution includes a selection of test programs - (including a few games).
+ +Who's Who and What's What
Zeyd 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:
+ +++ ++
+- emacs
+ +- +
+ +text editor
+ + +- screen
+ +- +
+ +terminal multiplexor
+ + +- vim
+ +- +
+text editor
+ + +
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 bug-ncurses@gnu.org. - -
To join the ncurses mailing list, please write email to
- bug-ncurses-request@gnu.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
+ ++ bug-ncurses@gnu.org ++ +
To join the ncurses mailing list, please write email to
+ ++ bug-ncurses-request@gnu.org +containing the line: + +
++
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 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 .
+ +