X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=announce.html.in;h=ebeee52430fef983cc92630e4106409d17f3a21a;hb=d79ff7b4d5f5ac63e7d9d7e76706d95a1ddb243c;hp=89fb3ebeb4622d3121cdf68190348d4c95538c1a;hpb=02f02dcd4464143580e783ae32c822d8eb8cdcbf;p=ncurses.git diff --git a/announce.html.in b/announce.html.in index 89fb3ebe..ebeee524 100644 --- a/announce.html.in +++ b/announce.html.in @@ -1,7 +1,7 @@ - - +
- + "HTML Tidy for HTML5 for Linux version 5.6.0">The ncurses (new curses) library - is a free software emulation of curses in System V Release 4.0 - (SVr4), and more. It uses terminfo format, supports pads and - color and multiple highlights and forms characters and +
The ncurses (new curses) + library is a free software emulation of curses in System V + Release 4.0 (SVr4), and more. It uses terminfo format, supports + pads and color and multiple highlights and forms characters and function-key mapping, and has all the other SVr4-curses - enhancements over BSD curses. SVr4 curses is better known today - as X/Open Curses.
+ enhancements over BSD curses. SVr4 curses became the basis of + X/Open Curses.In mid-June 1995, the maintainer of 4.4BSD curses declared that he considered 4.4BSD curses obsolete, and encouraged the - keepers of unix releases such as - BSD/OS, FreeBSD and NetBSD to switch over to ncurses.
+ keepers of unix releases such as + BSD/OS, FreeBSD and NetBSD to switch over to ncurses. -Since 1995, ncurses has been +
Since 1995, ncurses has been ported to many systems:
The distribution includes the library and support utilities, including
Full manual pages are provided for the library and tools.
-The ncurses distribution is - available via anonymous FTP at the GNU distribution site
+The ncurses distribution is + available at ncurses' homepage:
-It is also available at + "https://invisible-island.net/archives/ncurses/">https://invisible-island.net/archives/ncurses/ + or
It is also available at the GNU distribution site
+ "https://ftp.gnu.org/gnu/ncurses/">https://ftp.gnu.org/gnu/ncurses/ .
These notes are for ncurses - @VERSION@, released August 8, 2015.
+These notes are for ncurses + @VERSION@, released December 31, 2022.
This release is designed to be source-compatible with - ncurses 5.0 through 5.9; providing a - new application binary interface (ABI). Although the source can - still be configured to support the ncurses 5 ABI, the intent of the release is to - provide extensions which are generally useful, but - binary-incompatible with ncurses - 5:
+ ncurses 5.0 through 6.3; providing + extensions to the application binary interface (ABI). Although + the source can still be configured to support the ncurses 5 ABI, the reason for the release is + to reflect improvements to the ncurses 6 ABI and the supporting utility + programs. -Extend the cchar_t
structure to allow more
- than 16 colors to be encoded.
There are, of course, numerous other improvements, listed in + this announcement.
-Modify the encoding of mouse state to make room for a 5th - mouse button. That allows one to use ncurses with a wheel mouse with xterm or - similar X terminal emulators.
-The most important + bug-fixes/improvements dealt with robustness issues. The + release notes also mention some other bug-fixes, but are focused + on new features and improvements to existing features since + ncurses 6.3 release.
-There are, of course, numerous other improvements, - including
+fixes made based on the Clang and Coverity static - analyzers.
-memory leak fixes using Valgrind
-There are no new features in this release.
-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.
+These are improvements to existing features:
The original release plan, e.g., for "5.10" was to improve
- the MinGW port. Ultimately that was completed (wide-character
- support, mouse, etc), but was deferred to focus on termcap
- support and performance issues. Also, pinpointing the
- problems with Console2
took a while.
modify delscreen to more effectively delete all + windows on the given screen.
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.
+modify wnoutrefresh to call pnoutrefresh + if its parameter is a pad, rather than treating it as an + error, and modify new_panel to permit its window-parameter to + be a pad
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.
+modify curses_trace() to show the trace-mask as symbols, + e.g., TRACE_ORDINARY, DEBUG_LEVEL(3).
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.
+improve checks for valid mouse events when an intermediate + mouse state is not part of the mousemask specified by the + caller
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.
+allow extended-color number in opts parameter of + wattr_on.
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.
improve _tracecchar_t2 formatting of + base+combining character.
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
- -configuration name, e.g.,
- “NCURSESW
” for the wide-character
- libraries
trim out some unwanted linker options from ncurses*config + and .pc files seen in Fedora 36+.
ABI version (if not 5)
+improve shell-scripts with shellcheck
library name for two special cases which have the same
- interface across configurations:
- “TINFO
” and
- “TIC
”
improve use of "trap" in shell scripts, using a + script.
release version
-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.
various improvements were made to building the Ada95
- binding, both in simplifying the generated files as well as
- improving the way it uses gnatmake
modify make-tar.sh scripts to make timestamps + more predictable.
There are also new features in the libraries:
+These are corrections to existing features:
added - wgetdelay to retrieve _delay member of WINDOW if it - happens to be opaque, e.g., in the pthread configuration.
+modify misc/gen-pkgconfig.in to allow for the + case where the library directory does not yet exist, since + this is processed before doing an install
added - A_ITALIC extension.
+set trailing null on string passed from winsnstr + to wins_nwstr.
added form library extension - O_DYNAMIC_JUSTIFY option which can be used to override - the different treatment of justification for static versus - dynamic fields .
+modify waddch_literal to allow for double-width + base character when merging a combining character
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 improvements were made to the + utility programs:
-several changes to mouse support include:
+%u
” format to terminfo.There are a few new configure options dealing with library - customization:
+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:
Along with the library and utilities, improvements were made + to the ncurses-examples. Most of + this activity aimed at improving the test-packages:
Both terminfo and termcap store string capabilities as
- NUL
-terminated strings.
add minimal -h (usage) and -V (version) + getopt logic to all ncurses-examples programs.
In terminfo, a \0
in a terminal description
- is stored as \200
.
fix an error in "@" command in test/ncurses.c + F-menu
There are no (known) terminals which would behave
- differently when sent \0
or
- \200
.
add curses_trace to ifdef's for START_TRACE in + test/test.priv.h
When translating to terminfo format (or displaying a
- printable version of an entry using infocmp), ncurses shows \200
as
- \0
.
improve pthread-configuration for test/worm.c
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. --
add setlocale call to several test-programs.
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).
workaround in test/picsmap.c for use of floating + point for rgb values by ImageMagick 6.9.11, which appears to + use the wrong upper limit.
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:
+use static libraries for AdaCurses test-package for + Mageia, since no gprbuild package is available.
+the “-0
” option generates
- termcap/terminfo source on a single line.
install Ada95 sample programs in libexecdir, adding a + wrapper script to invoke those.
the “-K
” option provides stricter
- BSD-compatibility for termcap output.
install ncurses-examples programs in libexecdir, adding a + wrapper script to invoke those.
Other user-visible improvements and new features include:
+There are other new demo/test programs and reusable + examples:
-added “-D
” option to tic and
- infocmp, to show the database locations that it could
- use.
added “-s
” option to toe, to sort
- its output.
extended “-c
” and
- “-n
” options of infocmp to allow
- comparing more than two entries.
modified toe's report when “-a
”
- and “-s
” options are combined, to
- add a column showing which entries belong to a given
- database.
modified the clear program to take into account the
- “E3
” extended capability to clear
- the terminal's scrollback buffer.
Along with the library and utilities, many improvements were - made to the ncurses-examples. - Some were made to allow building (and comparison-testing) against - NetBSD curses and PDCurses. Both lack some of the X/Open Curses - features, necessitating customization. But this activity was - useful because it showed some remaining performance issues (which - have been resolved in this release).
+These changes were made to verify compatibility or compare - performance of ncurses:
+made workarounds for compiling test-programs with NetBSD - curses, though it lacks some common functions such as - - use_env.
-added dots_termcap test-program
-There are several new terminal descriptions:
-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:
+There are many changes to existing terminal descriptions. Some + were updates to several descriptions:
added test-screens to the ncurses test-program to show - 256-characters at a time, to help with MinGW port.
+make description-fields distinct
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.
+fix errata in description fields
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.
add/use several building-blocks:
-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:
+while others affected specific descriptions. These were + retested, to take into account changes by their developers:
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.
+kitty +
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.
+teken +
while these are specific fixes based on reviewing + documentation, user reports, or warnings from tic:
-This release provides improvements to tic's
- “-c
” checking option, which was used for
- example to
make sgr
in several entries agree with other
- caps.
correct padding in some entries where earlier versions had - miscounted the number of octal digits.
-There are several new terminal descriptions:
+A few entries use extensions (user-defined terminal capabilities):
E3
, used in linux, putty and xterm-basic is
- tested in the clear
- program to erase a terminal's scrollback.
use ansi+enq and decid+cpr in cases + where the terminal probably supported the u6-u9 extension
TS
is used in the
- xterm+sl building block to help deprecate the misuse of
- tsl
for xterm's title-string.
remove u6-u9 from teken-2018
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.
use NQ to flag entries where the terminal does + not support query and response
xm
is used in examples
- xterm-1005 and
- xterm-1006 to illustrate a way to make mouse handling
- more general
add/use bracketed+paste + to help identify terminals supporting this xterm feature
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.
modify samples for xterm mouse 1002/1003 modes to use 1006 + mode, and also provide for focus in/out responses
+xterm patch #371 supports DEC-compatible status-line. add + dec+sl to xterm-new, per xterm #371, add xterm-p371, + add xterm-p370, + for use in older terminals, and set “xterm-new” + to “xterm-p370” (to ease adoption).
+fills in overlooked descriptions of features which were - described in the NEWS file + 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.
-In addition to providing background information to explain + these features and show how they evolved, there are corrections, + clarifications, etc.:
Ada95 binding:
+Corrections:
modify makefile rules to ensure that the PIC option is - not used when building a static library
+remove a stray '/' from description of %g in + + terminfo(5).
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.
correct/improve font-formatting in curs_getch.3x, as + well as other manual pages.
Color and attributes:
+New/improved history and portability sections:
parenthesize parameter of COLOR_PAIR
and
- PAIR_NUMBER
in curses.h in case it happens
- to be a comma-expression.
add portability notes for delscreen + and delwin + in manual.
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.
modify - init_pair to accept -1's for color value after - - assume_default_colors has been called.
-add a check in - start_color to limit color-pairs to 256 when extended - colors are not supported.
+ "@HOMEPAGE@/man/curs_slk.3x.html#h2-EXTENSIONS">curs_slk.3xResizing the screen:
+Other improvements:
propagate error-returns from wresize, i.e., the - internal increase_size and decrease_size functions - through - resize_term.
+improve curs_bkgd.3x, + explaining that bkgdset can affect results for + bkgd
add check for zero/negative dimensions for
- resizeterm
and resize_term
.
add note on portable memory-leak checking in curs_memleaks.3x
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.
expanded description in resizeterm.3x
Low-level interfaces
- -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.
add section on releasing memory to + curs_termcap.3x and + curs_terminfo.3x manpages.
change “%l
” behavior in tparm
- to push the string length onto the stack rather than
- saving the formatted length into the output buffer.
add clarification of the scope of dynamic variables in + terminfo(5).
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).
+improve formatting of ncurses-intro.html + and hackguide.html
modify internal recursion in wgetch
which
- handles cooked mode to check if the call to
- wgetnstr
returned an error. This can happen
- when both nocbreak
and nodelay
- are set, for instance (see note for 960418).
improve curs_clear.3x + links to other pages
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.
update ncurses-howto, + making documentation fixes along with corrections to + example programs.
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
+use newer version 1.36 of gnathtml for generating Ada + html files.
fix special case where double-width character - overwrites a single- width character in the first - column.
+update external links in Ada95.html
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
There are no new manual pages (all of the manual page updates + are to existing pages).
-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
- -
While there were many bugs fixed during development of ncurses + 6.4, only a few (the reason for this release) were both important + and interesting. Most of the bug-fixes were for local issues + which did not affect compatibility across releases. Since those + are detailed in the NEWS file no elaboration is + needed here.
-Other major changes to the configure script include:
+The interesting bugs were those dealing with memory leaks and + buffer overflows. Although the utilities are designed for + text files (which they do properly), some choose to test + them with non-text files.
ABI 6 is now the default, intending that the existing ABI
- 5 should build as before using the
- “--with-abi-version=5
” option.
Text files contain no embedded nulls. Also, they end with + a newline. Feeding tic non-text files + exposed a few cases where the program did not check for those + issues. As a result, further processing of the input found + limit-checks whose assumptions were invalid.
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
Fixing the limit-checks (first) found a problem with + tic managing the list of strings in a + terminal description. In merging two terminal descriptions + (i.e., the “use=” feature), tic + was not allocating a complete copy. A quick repair for that + introduced a memory leak.
the 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 checks for non-text files are improved (i.e., embedded + nulls in the input file will cause tic to + reject it rather than attempting to process it).
the 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.
+The string allocations in tic are + likewise improved.
There are several new (or extended) configure options:
- ---disable-db-install
Do not install the terminal database. This is used to omit
- features for packages, as done with
- --without-progs
. The option simplifies building
- cross-compile support packages.
--disable-gnat-projects
There are no major changes. No new options were added. Several + improvements were made to configure checks.
-This option is used for regression testing
---disable-lib-suffixes
There are a few new/modified configure options:
-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.
add ABI 7 defaults to configure script.
--with-hashed-db
Extended this configure option to simplify building with - different versions of Berkeley database using FreeBSD - ports.
+add warning in configure script if file specified for + “--with-caps” does not exist.
--with-pc-suffix
If ".pc" files are installed, optionally add a suffix to - the files and corresponding package names to separate unusual - configurations. If no option value is given (or if it is - "none"), no suffix is added. This option is used in the test - package for ncurses6.
+bzip2 and xz compression are now supported
--with-xterm-kbs
Configure xterm's terminfo entries to use either BS
- (^H
, i.e., ASCII backspace) or DEL
- (^?
, or 127).
add check/warning in configure script if option + “--with-xterm-kbs” is missing or + inconsistent
Most of the portability-related work since - ncurses 5.9 extended and improved the MinGW port - introduced in - ncurses 5.8.
+The MinGW port can be readily cross-compiled:
+Many of the portability changes are implemented via the + configure script:
modified configure script to allow creating dll's for - MinGW when cross-compiling.
+amend configure option's auto-search to account for + systems where none of the directories known to + pkg-config exist
enforced Windows-style path-separator if - cross-compiling,
+corrected regex needed for older pkg-config used + in Solaris 10
added scripts for test-builds of cross-compiled packages - for ncurses6 to MinGW.
+improve handling of --with-pkg-config-libdir + option, allowing for the case where either + $PKG_CONFIG_LIBDIR or the option value has a + colon-separated list of directories
added pc-files to the MinGW cross-compiling - test-packages.
+if the --with-pkg-config-libdir option is not + given, use ${libdir}/pkgconfig as a default
added script for building test-packages of binaries - cross-compiled to MinGW using NSIS.
+improve search-path check for pkg-config, e.g., + for Debian testing which installs pkg-config with + architecture-prefixes.
added nc_mingw.h
to installed headers for
- MinGW port; this is needed for cross-compiling ncurses-examples.
build-fix for cross-compiling to MingW, conditionally add + -lssp
added test-packages for cross-compiling ncurses-examples - using the MinGW test-packages.
+improve configure check for getttynam
The MinGW-specific Windows driver accounts for several - changes:
-wide-character display is made usable by replacing MinGW's
- non-working wcrtomb
and wctomb
- functions.
implemented some display features: beep, - flash, - - curs_set.
-the driver handles repainting on endwin/refresh - combination.
-modified treatment of TERM
variable for MinGW
- port to allow explicit use of the Windows console driver by
- checking if $TERM
is set to
- “#win32console
” or an abbreviation
- of that.
the Windows driver also matches the special
- TERM
value “unknown”
the driver now returns characters for special keys, (like
- ansi.sys
does), when keypad mode is off, rather
- than returning nothing at all.
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:
- -MinGW is one of the configurations where ncurses installs by default into /usr
-extend Windows support to work with MSYS2;
+fixes to build with dietlibc:
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.
+modify configure macro CF_BUILD_CC to check if + the build-compiler works, rather than that it is different + from the cross-compiler, e.g., to accommodate a compiler + which can be used for either purpose with different flags
add a driver-name method to each of the drivers.
+modify configure/scripts to work around interference by + GNU grep 3.8
These changes affect certain platforms (ports):
+Here are some of the other portability fixes:
the configure script knows how to build shared libraries - with DragonFlyBSD and Interix.
+change man_db.renames to template, to handle + ncurses*-config script with the + --extra-suffix configure option.
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.
update CF_XOPEN_SOURCE macro, adding variants + “gnueabi" and “gnueabihf" to get + _DEFAULT_SOURCE special case, as well as adding GNU + libc suffixes for “abi64”, “abin32”, + “x32” to distinguish it from other libc + flavors.
the configure script works with Minix3.2 (see note - on portability)
+work around musl's nonstandard use of feature + test macros by adding a definition for + NCURSES_WIDECHAR to the generated “.pc” + and *-config files.
OS/2 redux:
- -the configure script supports OS/2 kLIBC.
-the --with-lib-prefix
option allows
- configuring for old/new flavors of OS/2 EMX.
improved configure-script checks for
- _XOPEN_SOURCE
:
the definition works starting with Solaris 10.
-the definition is suppressed for IRIX64, since its
- header files have a conflict versus
- _SGI_SOURCE
.
use “command -v” rather than + “type” in Ada95/gen/Makefile.in + to fix a portability issue.
The ncurses package is fully +
The ncurses package is fully upward-compatible with SVr4 (System V Release 4) curses:
ncurses supports all of the +
ncurses supports all of the for SVr4 curses features including keyboard mapping, color, forms-drawing with ACS characters, and automatic recognition of keypad and function keys.
ncurses provides these SVr4 +
ncurses provides these SVr4 add-on libraries (not part of X/Open Curses):
ncurses's terminal database is - fully compatible with that used by SVr4 curses.
+ncurses's terminal database + is fully compatible with that used by SVr4 curses.
ncurses supports + user-defined capabilities which it can see, but which are + hidden from SVr4 curses applications using the + same terminal database.
+It can be optionally configured to match the format @@ -1880,36 +973,36 @@ fflush(stdout);
Alternatively, ncurses can - be configured to use hashed databases rather than the +
Alternatively, ncurses + can be configured to use hashed databases rather than the directory of files used by SVr4 curses.
The ncurses utilities have +
The ncurses utilities have options to allow you to filter terminfo entries for use with less capable curses/terminfo versions such - as the HP/UX and AIX ports.
+ as the HP-UX and AIX ports.The ncurses package also has many - useful extensions over SVr4:
+The ncurses package also has + many useful extensions over SVr4:
The API is 8-bit clean and base-level conformant with the X/OPEN curses specification, XSI curses (that is, it - implements all BASE level features, and most EXTENDED - features). It includes many function calls not supported - under SVr4 curses (but portability of all calls is documented - so you can use the SVr4 subset only).
+ implements all BASE level features, and most + EXTENDED features). It includes many function calls + not supported under SVr4 curses (but portability of all calls + is documented so you can use the SVr4 subset only).Unlike SVr3 curses, ncurses +
Unlike SVr3 curses, ncurses can write to the rightmost-bottommost corner of the screen if your terminal has an insert-character capability.
The functions keyok
and
define_key
allow you to better control the use
- of function keys, e.g., disabling the ncurses KEY_MOUSE, or by defining more than
- one control sequence to map to a given key code.
Support for direct-color terminals, such as modern + xterm.
The tic/captoinfo - utility provided with ncurses has - the ability to translate many termcaps from the XENIX, IBM - and AT&T extension sets.
+The tic/captoinfo utility + provided with ncurses has the + ability to translate many termcaps from the XENIX, IBM and + AT&T extension sets.
A BSD-like tset - utility is provided.
+ "@HOMEPAGE@/man/tset.1.html">tset utility is provided.The ncurses library and +
The ncurses library and utilities will automatically read terminfo entries from $HOME/.terminfo if it exists, and compile to that directory if it exists and the user has no write access to the system @@ -2030,176 +1129,204 @@ fflush(stdout);
The table-of-entries utility toe - makes it easy for users to see exactly what terminal types - are available on the system.
+ "@HOMEPAGE@/man/toe.1m.html">toe makes it easy for users to see + exactly what terminal types are available on the system.The library meets the XSI requirement that every macro
- entry point have a corresponding function which may be linked
+ entry point has a corresponding function which may be linked
(and will be prototype-checked) if the macro definition is
disabled with #undef
.
Extensive documentation is provided (see the - Additional Reading section of the - ncurses FAQ for online documentation).
+ "@HOMEPAGE@/ncurses.faq.html#additional_reading">Additional + Reading section of the ncurses FAQ for online + documentation).The ncurses distribution includes - a selection of test programs (including a few games). These are - available separately as ncurses-examples
+The ncurses distribution + includes a selection of test programs (including a few games). + These are available separately as ncurses-examples
The ncurses library has been tested with a wide variety of applications including:
--
- cdk
+- aptitude +
- -
+ +Curses Development Kit
+FrontEnd to Apt, the debian package manager
http://invisible-island.net/cdk/
+
+ "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude- cdk +
+ +- +
-Curses Development Kit
+ +- ded
+- ded +
- -
directory-editor
- +- dialog
+- dialog +
- -
the underlying application used in Slackware's setup, and the basis for similar install/configure applications on many systems.
- +- lynx
+- lynx +
- -
the text WWW browser
+ "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/- Midnight Commander
+- mutt +
- -
-file manager
+mail utility
- +- mutt
+- ncftp +
- -
-mail utility
+file-transfer utility
+ "https://www.ncftp.com/">https://www.ncftp.com/- ncftp
+- nvi +
- -
-file-transfer utility
+New vi uses ncurses.
+ "https://sites.google.com/a/bostic.com/keithbostic/vi">https://sites.google.com/a/bostic.com/keithbostic/vi
+ +- nvi
+- ranger +
- -
-New vi uses ncurses.
+A console file manager with VI key bindings in + Python.
+ "https://ranger.github.io/">https://ranger.github.io/- tin
+- tin +
- + +
newsreader, supporting color, MIME
- + +- vifm +
+ +- +
File manager with vi like keybindings
+ +
as well as some that use ncurses - for the terminfo support alone:
+as well as some that use ncurses for the terminfo support alone:
@@ -2208,31 +1335,44 @@ fflush(stdout);-
- minicom
+- minicom +
- -
terminal emulator for serial modem connections
+ "https://alioth.debian.org/projects/minicom/">https://alioth.debian.org/projects/minicom/- mosh
+- mosh +
- -
a replacement for
- +ssh
.- tack
+- tack +
- -
terminfo action checker
- +- tmux
+- tmux +
- -
terminal multiplexor
+ "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki- vile
+- vile +
- -
vi-like-emacs may be built to use the terminfo, termcap - or curses interfaces.
+vi-like-emacs may be built to use the terminfo, + termcap or curses interfaces.
- +
@@ -2240,15 +1380,21 @@ fflush(stdout);-
- emacs
+- emacs +
- -
text editor
+ "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/- screen
+- less +
+ +- +
+ +The most commonly used pager (a program that + displays text files).
+ + +- screen +
- -
terminal multiplexor
+ "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/- vim
+- vim +
text editor
- +
Zeyd Ben-Halim started ncurses +
Zeyd Ben-Halim started ncurses from a previous package pcurses, written by Pavel Curtis. Eric S. Raymond continued development. Jürgen Pfeifer wrote most of - the form and menu libraries. Ongoing development work is done by - Thomas Dickey. - Thomas Dickey also acts as the maintainer for the Free Software - Foundation, which holds the copyright - on ncurses.
+ the form and menu libraries. + +Ongoing development work is done by Thomas E. Dickey. Thomas + E. Dickey has acted as the maintainer for the Free Software + Foundation, which held a copyright on ncurses for + releases 4.2 through 6.1. Following the release of ncurses 6.1, + effective as of release 6.2, copyright for ncurses reverted to + Thomas E. Dickey (see the ncurses FAQ for + additional information).
Contact the current maintainers at
@@ -2261,8 +1407,8 @@ fflush(stdout);bug-ncurses-request@gnu.org -containing the line: - + + containing the line:
@@ -2271,12 +1417,25 @@ fflush(stdout);
subscribe
<name>@<host.domain>This list is open to anyone interested in helping with the development and testing of this package.
-Beta versions of ncurses and - patches to the current release are made available at
+Beta versions of ncurses are + made available at
+ +ftp://invisible-island.net/ncurses/ .
+ "https://invisible-island.net/archives/ncurses/current/">https://invisible-island.net/archives/ncurses/current/ + and
+ https://invisible-mirror.net/archives/ncurses/current/ . +Patches to the current release are made available at
+ ++https://invisible-island.net/archives/ncurses/6.3/ + and
+ https://invisible-mirror.net/archives/ncurses/6.3/ .There is an archive of the mailing list here:
@@ -2295,36 +1454,28 @@ fflush(stdout); which may be interesting by themselves:-
- man2html
+- ncurses licensing
-- - ncurses licensing
- -- Symbol - versioning in ncurses
+- Symbol versioning + in ncurses
-- The - MinGW port of ncurses
+- Comments on + ncurses versus slang (S-Lang)
-- tack – - terminfo action checker
+- Comments on + OpenBSD
-- tar - versus portability
+- tack – terminfo action + checker
-- tctest - – termcap library checker
+- tctest – termcap + library checker
- - Terminal Database
+ "@HOMEPAGE@/ncurses.html#download_database">Terminal + DatabaseOther @@ -2334,13 +1485,17 @@ fflush(stdout); terminfo-format terminal description file once maintained by Eric Raymond . Unlike the older version, the termcap and - terminfo data are provided in the same file, and provides several - user-definable extensions beyond the X/Open specification. + terminfo data are provided in the same file, which also provides + several user-definable extensions beyond the X/Open + specification.
You can find lots of information on terminal-related topics not covered in the terminfo file at - Richard Shuford's archive .
+ Richard Shuford's archive . The collection of computer + manuals at bitsavers.org has also been + useful.