X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=doc%2Fhtml%2Fannounce.html;h=51433167009c0f15554f6c81a02ded012ae2b074;hb=88595a127ec2e56af0875eb04e0f2396d6d121c5;hp=45c0c1254da08efbeb9387bc6d29f1b57c5ed442;hpb=d66080c21038ad4feb2e41a0c4e517d5b4a03ab2;p=ncurses.git diff --git a/doc/html/announce.html b/doc/html/announce.html index 45c0c125..51433167 100644 --- a/doc/html/announce.html +++ b/doc/html/announce.html @@ -1,7 +1,7 @@ -
- -Full manual pages are provided for the library and tools.
@@ -141,376 +137,105 @@ p,li { max-width:700px; }-ftp://ftp.invisible-island.net/ncurses/ + "https://invisible-island.net/archives/ncurses/">https://invisible-island.net/archives/ncurses/ or
https://invisible-mirror.net/archives/ncurses/ .
It is also available via anonymous FTP at the GNU distribution - site
+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 - 6.1, released January 27, 2018.
+ 6.4, released December 31, 2022.This release is designed to be source-compatible with - ncurses 5.0 through 6.0; providing + 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 intent of the release is to - provide extensions to the ncurses - 6 ABI:
- -improve integration of tput - and tset
-provide support for extended numeric capabilities.
-There are, of course, numerous other improvements, listed in this announcement.
-The release notes also mention some bug-fixes, but are focused +
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.0 release.
- -The improved integration of tput and tset - made only small changes to the libraries. However, supporting - extended numeric capabilities required a few changes:
- -The TERMINAL
structure in
- <term.h>
is now opaque. Doing that allowed
- making the structure larger, to hold the extended numeric
- data.
A few applications required changes during development of - ncurses 6.1 because those - applications misused the members of that structure, e.g., - directly modifying it rather than using - def_prog_mode.
-Having made TERMINAL
opaque (and because none
- of the library functions use anything except a pointer to
- TERMINAL
), it was possible to increase the size
- of the structure, adding to the end.
Existing applications which were linked to the
- ncurses 6.0 high-level
- (ncurses, ncursesw) and low-level
- (tinfo, tinfo) libraries should not require
- re-linking since the binary interface did not change, nor did
- the structure offsets with TERMINAL
change.
A few applications use the inner TERMTYPE
- structure's offsets to refer to terminfo capabilities within
- that structure. Again, those do not require modification
- because their offsets within TERMINAL
did not
- change.
When configured for wide-characters, i.e.,
- “ncursesw” the TERMINAL
structure is
- extended.
The new data in TERMINAL
holds the same
- information as TERMTYPE
, but with larger numbers
- (“int” versus “short”). It is named
- TERMTYPE2
.
The library uses this structure internally in preference
- to TERMTYPE
, referring to TERMTYPE
- only to initialize it for applications that use the
- capabilities defined in <term.h>
When configured for 8-bit (narrow) characters, the
- TERMTYPE2
structure is not used.
The motivation for making this extension came from noticing - that - termcap applications could (though not - realistically) use larger numbers than would fit in 16-bits, - and the fact that the number of color pairs for a 256-color xterm - could not be expressed in terminfo (i.e., 32767 versus 65536). - Also, a few terminals support direct-colors, which could use the - extension.
- -Generally speaking, applications that use internal details of
- a library are unsupported. There was exactly one exception for
- ncurses: the tack program used the internal
- details of TERMINAL
, because it provides an
- ncurses-specific feature for interactively modifying a terminfo
- description and writing the updated description to a text-file.
- It was possible to not only separate tack from these internal
- details of ncurses, but to
- generalize it so that the program works with Unix curses
- (omitting the ncurses-specific feature). That was released as
-
- tack 1.08 in July
- 2017.
While making changes to tack to - eliminate its dependency upon ncurses internals, the publicly-visible - details of those internals were reviewed, and some symbols were - moved to private header files, while others were marked - explicitly as ncurses internals. - Future releases of ncurses may - eliminate some of those symbols (such as those used by - tack 1.07) because they are - neither part of the API or the ABI.
- -Using the TERMTYPE2
extended numeric
- capabilities, it is possible to support both color pair values
- and color values past 32767. Taking compatibility into account,
- developers readily understand that neither function signatures
- nor structure offsets change. Also, existing functions have to
- operate with the extended numbers. Most of that work is internal
- to the library. For the external interfaces, a hybrid approach
- was used:
X/Open Curses defined function prototypes such as
- wattr_set
with an unused parameter, for
- “future” use. After 25 years, the future is here:
- ncurses uses the parameter to
- augment color pair values as described in the
- manual page.
Other functions such as those defining color pairs did not
- have a corresponding reserved parameter. For those,
- ncurses defines extended
- versions such as init_extended_pair
(versus
- init_pair
), init_extended_color
- (versus init_color
).
Additionally, to improve performance other changes (and - extensions) are provided in this release:
- -Several new functions simplify management of large sets of
- color pairs: reset_color_pairs
,
- alloc_pair
, find_pair
and
- free_pair
.
New "RGB" extension capability for direct-color support is
- used to improve performance of
- color_content
.
The internal colorpair_t
is now a struct,
- eliminating an internal 8-bit limit on colors
Allocation for SCREEN
's color-pair table
- starts small, grows on demand up to the limit given in the
- terminal description.
setcchar
and getcchar
now treat
- a negative color-pair as an error.
There are no new features in this release.
These are new or revised features:
- -modify c++/etip.h.in
to accommodate
- deprecation of throw and throws in c++17
add new function unfocus_current_field
add option to preserve leading whitespace in form - fields
-add a macro for is_linetouched
and adjust the
- function's return value to make it possible for most
- applications to check for an error-return.
add build-time utility report_offsets
to help
- show when the various configurations of tinfo library are
- compatible or not.
These were done to limit or ultimately deprecate features:
- -drop two symbols obsoleted in 2004:
- _nc_check_termtype
, and
- _nc_resolve_uses
move _nc_tracebits
, _tracedump
- and _tracemouse
to curses.priv.h
,
- since they are not part of the suggested ABI6.
mark some structs in form/menu/panel libraries as - potentially opaque without modifying API/ABI.
-ifdef'd header-file definition of mouse_trafo
- with NCURSES_NOMACROS
remove initialization-check for calling napms
- in the term-driver configuration; none is needed.
modify trace
to avoid overwriting existing
- file
These are improvements to existing features:
modify make_hash
to allow building with
- address-sanitizer, assuming that --disable-leaks
- is configured.
modify delscreen to more effectively delete all + windows on the given screen.
move SCREEN
field for use_tioctl
- data before the ncursesw fields, and limit that to the
- sp-funcs configuration to improve termlib compatibility
modify wnoutrefresh to call pnoutrefresh + if its parameter is a pad, rather than treating it as an + error, and modify new_panel to permit its window-parameter to + be a pad
modify db-iterator:
- -ignore zero-length files in db-iterator; these are
- useful for instance to suppress
- $HOME/.terminfo
when not wanted.
modify update_getenv
to ensure that
- environment variables which are not initially set will be
- checked later if an application happens to set them
modify curses_trace() to show the trace-mask as symbols, + e.g., TRACE_ORDINARY, DEBUG_LEVEL(3).
modify _nc_outc_wrapper
to use the standard
- output if the screen was not initialized, rather than
- returning an error.
improve checks for valid mouse events when an intermediate + mouse state is not part of the mousemask specified by the + caller
improve checks for low-level terminfo functions when the - terminal has not been initialized.
+allow extended-color number in opts parameter of + wattr_on.
modify set_curterm
to update
- ttytype[]
data used by longname/p>
improve _tracecchar_t2 formatting of + base+combining character.
modify _nc_get_screensize
to allow for
- use_env
and use_tioctl
state to be
- per-screen when sp-funcs are configured, better matching the
- behavior when using the term-driver configuration.
trim out some unwanted linker options from ncurses*config + and .pc files seen in Fedora 36+.
remove an early-return from _nc_do_color,
- which can interfere with data needed by bkgd
- when ncurses is configured
- with extended colors
improve shell-scripts with shellcheck
incorporate A_COLOR
mask into
- COLOR_PAIR
, in case user application provides an
- out-of-range pair number
improve use of "trap" in shell scripts, using a + script.
modify logic for endwin
-state to be able to
- detect the case where the screen was never initialized, using
- that to trigger a flush of ncurses' buffer for mvcur
,
- e.g., in the sample program dots_mvcur for the term-driver
- configuration.
modify make-tar.sh scripts to make timestamps + more predictable.
fixes for writing extended color pairs in
- putwin
.
modify no-leaks code for lib_cur_term.c
to
- account for the tgetent
cache.
amend handling of the repeat_char
capability
- in EmitRange
to avoid scope creep: translate the
- character to the alternate character set when the alternate
- character set is enabled, and do not use
- repeat_char
for characters past 255.
improve wide-character implementation of
- myADDNSTR
in frm_driver.c
, which
- was inconsistent with the normal implementation.
modify winnstr
and winchnstr
to
- return error if the output pointer is null, as well as adding
- a null pointer check of the window pointer for better
- compatibility with other implementations.
modify setupterm
to save original tty-modes
- so that erasechar
works as expected. Also modify
- _nc_setupscreen
to avoid redundant calls to get
- original tty-modes.
modify wattr_set
and wattr_get
- to return ERR
if win-parameter is null,
- as documented.
correct order of initialization for traces in
- use_env
and use_tioctl
versus first
- _tracef
calls.
correct parameters for copywin
call in
- _nc_Synchronize_Attributes
flush the standard output in _nc_flush
for
- the case where SP
is zero, e.g., when called via
- putp
. This fixes a scenario where
- “tput flash” did not work after changes in
- 20130112.
amend internal use of tputs
to consistently
- use the number of lines affected, e.g., for insert/delete
- character operations. While merging terminfo source early in
- 1995, several descriptions used the
- “*
” proportional delay for these
- operations, prompting a change in doupdate
.
correct return-value of extended putwin
.
double-width multibyte characters were not counted
- properly in winsnstr
and
- wins_nwstr
.
amend fix for _nc_ripoffline
from 20091031 to
- make test/ditto.c
work in threaded
- configuration.
modify _nc_viscbuf2
and
- _tracecchar_t2
to trace wide-characters as a
- whole rather than their multibyte equivalents.
minor fix in wadd_wchnstr
to ensure that each
- cell has nonzero width.
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
move PUTC_INIT
calls next to
- wcrtomb
calls, to avoid carry-over of error
- status when processing Unicode values which are not
- mapped.
set trailing null on string passed from winsnstr + to wins_nwstr.
add missing assignment in lib_getch.c
to make
- notimeout
work
modify waddch_literal to allow for double-width + base character when merging a combining character
While reviewing user feedback, it became apparent that the - differences between - reset (an alias for - tset) and “tput reset” were confusing:
- -On further investigation, it turned out that the differences - were largely an accident due to the way those programs had - evolved.
- -This release eliminates the unnecessary differences, using the - same approach for tput's - init (initialization), reset and clear - operations as the separate - reset and - clear programs. Doing this does not change the - command-line options; existing scripts are unaffected.
- -These are the user-visible changes for the three programs - (tput, tset and clear):
- -add the terminal-mode parts of “reset” (aka tset) to the “tput
- reset
” command, making the two almost the same
- except for window-size.
improve tput's check for - being called as “init” or “reset” to - allow for transformed names.
-add “clear” as a possible link/alias to - tput.
-amend changes for tput to - reset tty modes to “sane” if the program is run - as “reset”, like tset. Likewise, ensure that tset sends either reset- or - init-strings.
-add -x
option to clear/tput
- to make the E3
extension optional
add functionality of
- “tset -w
” to tput, like the
- “-c
” feature this is not optional in
- tput.
add options -T
and -V
to
- clear command for
- compatibility with tput.
drop long-obsolete “-n
” option
- from tset.
modify tset's assignment to
- TERM
in its output to reflect the name by which
- the terminal description is found, rather than the primary
- name. That was an unnecessary part from the initial
- conversion of tset from
- termcap to terminfo. The termcap library in 4.3BSD did this
- to avoid using the short 2-character name
remove a restriction in tput's support for termcap names which - omitted capabilities normally not shown in termcap - translations
-add usage message to clear - command
-improve usage messages for tset and tput.
-Other user-visible improvements and new features include:
- -modify tic/infocmp display of numeric values to use - hexadecimal when they are "close" to a power of two, making - the result more readable.
-Several improvements were made to the + utility programs:
-add “-W
” option to tic/infocmp
- to force long strings to wrap.
This is in addition to the
- “-w
” option which attempts to
- fit capabilities into a given line-length.
If “-f
” option splits line,
- do not further split it with
- “-W
”.
Begin a new line when adding
- “use=
” after a wrapped line.
add “-q
” option to infocmp to suppress the
- “Reconstructed from
” comment from
- the header, and a corresponding option to tic to suppress all comments from the
- “tic -I
” output.
Sorted options in usage message for infocmp, to make it simpler to see unused - letters.
-Updated usage message for tic, adding “-0
”
- option.
add infocmp/tic “-Q
” option,
- which allows one to dump the compiled form of the terminal
- entry, in hexadecimal or base64:
b64:
” prefix in the
- TERMINFO
variable tells the terminfo reader to
- use base64 according to RFC-3548 as well as RFC-4648
- url/filename-safe format.hex:
” prefix tells the
- terminfo reader to accept hexadecimal data as generated by
- “infocmp -0qQ1
”.Other less-visible improvements and new features include:
+modify utility headers such as tic.h
to make
- it clearer which are externals that are used by tack.
add “reset
” to list of programs
- whose names might change in manpages due to
- program-transformation configure options.
modify “-T
” option of
- clear and tput to call use_tioctl
to
- obtain the operating system's notion of the screensize if
- possible.
add check in tput for - init/reset operands to ensure those use a terminal.
-modify programs clear, - tabs, tput and tset to pass the actual tty file - descriptor to setupterm rather than the standard output or - error, making padding work.
-change tset's
- initialization to allow it to get settings from the standard
- input as well as /dev/tty
, to be more effective
- when output or error are redirected.
amend check in tput,
- tabs and clear to allow those to use the
- database-only features in cron
- if a “-T
” option gives a suitable
- terminal name.
improve error message from tset/reset - when both stderr/stdout are redirected to a file or pipe.
-Several of the less apparent features deal with translation of - terminfo to termcap (and the reverse), with corresponding checks - by tic:
- -modify check in fmt_entry
to handle a
- cancelled reset string. Make similar fixes in other parts of
- dump_entry.c
and tput.c
correct read of terminfo entry in which all strings are - absent or explicitly cancelled. Before this fix, the result - was that all were treated as only absent.
-modify infocmp to suppress
- mixture of absent/cancelled capabilities that would only show
- as “NULL, NULL
”, unless the
- “-q
” option is used, e.g., to show
- “-, @
” or “@,
- -
”.
correct a warning from tic - about keys which are the same, to skip over missing/cancelled - values.
-add check in tic for use of
- bold, etc., video attributes in the color capabilities,
- accounting whether the feature is listed in
- ncv
.
add check in tic for
- unnecessary use of “2
” to denote a
- shifted special key.
improve check in tic for - delays by also warning about beep/flash when a delay is not - embedded, or if those use the VT100 reverse video escape - without using a delay.
-improve checks in trim_sgr0
, comp_parse.c and
- parse_entry.c, for cancelled string capabilities.
add check in tic for some - syntax errors of delays, as well as use of proportional - delays for non-line capabilities.
-add check in tic for
- conflict between ritm
, rmso
,
- rmul
versus sgr0
.
add check in _nc_parse_entry
for invalid
- entry name, setting the name to
- “invalid
” to avoid problems storing
- entries.
improve _nc_tparm_analyze
, using that to
- extend the checks made by tic
- for reporting inconsistencies between the expected number of
- parameters for a capability and the actual.
remove tic warning about
- “^?
” in string capabilities, which
- was marked as an extension; however all Unix implementations
- support this and X/Open Curses does not address it. On the
- other hand,
- BSD termcap did not support this feature (until the
-
- mid-1990s).
in _nc_infotocap
, added a check to ensure
- that terminfo “^?
” is not written to
- termcap.
modify sscanf
calls in
- _nc_infotocap
for patterns
- “%{number}%+%c
” and
- “%'char'%+%c
” to check that the
- final character is really “c
”,
- avoiding a case in icl6404 which cannot be converted to
- termcap.
in _nc_tic_expand
and
- _nc_infotocap
, improved string-length check when
- deciding whether to use “^X
” or
- “\xxx
” format for control
- characters, to make the output of tic/infocmp
- more predictable.
limited termcap “%d
” width to 2
- digits on input, and use “%2
” in
- preference to “%02
” on output.
correct terminfo/termcap conversion of
- “%02
” and
- “%03
” into
- “%2
” and
- “%3
”; the result repeated the last
- character.
Along with the library and utilities, many improvements were - made to the ncurses-examples.
- -These changes were made to demonstrate new extensions in - ncurses:
- -add demo_new_pair program,
- to demonstrate
- alloc_pair
,
- find_pair
and
- free_pair
functions.
This program iterates over the possible color - combinations, allocating or initializing color pairs. For - best results, choose screen-width dividing evenly into the - number of colors. e.g.,
- ----
-- - -- - 32x64,32x128
256 colors -- - -- - 24x44,24x88
88 colors -- -- - 32x64,24x128
16 colors -
add extended_color program, - like the older color_set - program, but using the extended color functions, with and - without the SP-functions interface.
-add picsmap program to fill - in some testing issues not met by dots, using this as the third example in a - comparison of the - ncurses versus slang libraries.
- -The program can directly read X bitmap and pixmap files, - displaying a picture. It can read other image files using - ImageMagick's convert program to translate the image - into text.
- -For 16-, 88- and 256-color terminal descriptions,
- picsmap can load a palette
- file which tells it which color palette entries to use. For
- direct-colors, the terminal descriptions use the
- RGB
extension capability.
There are other new example programs and a few scripts:
- -add dots_xcurses program to - illustrate a different approach used for extended colors - which can be contrasted with dots_curses.
-add list_keys program show - function keys for one or more terminal descriptions. It uses - ncurses's convention of - modifiers for special keys, based on xterm.
-add padview program, to - compare pads with direct updates in the view program.
-add sp_tinfo program to - exercise the SP-functions extension of the low-level terminfo - library.
-add test-programs for termattrs
and
- term_attrs
functions.
add test_sgr program to - exercise all combinations of the sgr capability.
-add tput-colorcube demo - script, imitating xterm's 88- and 256-color scripts using - tput.
-add tput-initc script to - demonstrate how tput may be - used to initialize a color palette from a data file.
-A variety of improvements were made to existing programs, both - new features as well as options added to make the set of programs - more consistent.
- -The ncurses program is the - largest; a proportionately large number of changes were made to - it:
+Along with the library and utilities, improvements were made + to the ncurses-examples. Most of + this activity aimed at improving the test-packages:
modify a/A screens to make exiting on an escape character - depend on the start of keypad and timeout modes, to allow - better testing of function-keys.
- -add “t
” toggle for
- notimeout
function.
modify layout of b/B screens to allow for additional - annotation on the right margin; some terminals with partial - support did not display well.
-modify c/C screens to allow for extended color pairs.
- -add z/Z zoom feature to make extended color pairs - easier to test.
- -modify test-screens to take advantage of wide screens, - reducing the number of lines used for 88- and 256-colors.
-modify “d
” edit-color screen to
- optionally read xterm color palette directly from terminal,
- as well as handling KEY_RESIZE
and
- screen-repainting with control/L and control/R.
add examples to “F
” screen for
- WACS_D_PLUS
and WACS_T_PLUS
.
improve “g
” screen, correcting
- ifdef which made the legend not reflect changes to keypad-
- and scroll-modes. Added check for return-value of
- putwin
.
make “s
” test easier to
- understand which subtests are available
add a corresponding “S
”
- wide-character overlap test-screen.
add “v
” screen to show
- baudrate
and other values.
These changes were made to the other examples:
- -modify blue program to use - Unicode values for card-glyphs when available, as well as - improving the check for CP437 and CP850.
-improve demo_menus program,
- allowing mouse-click on the menu-headers to switch the active
- menu. This requires a new extension option
- O_MOUSE_MENU
to tell the menu driver to put
- mouse events which do not apply to the active menu back into
- the queue so that the application can handle the event.
correct logic in demo_terminfo program for
- “-f
” option
modify ditto program to
- allow $XTERM_PROG
environment variable to
- override "xterm" as the name of the program to run in the
- threaded configuration.
add several options to the “dots” - test-programs.
-modify filter program:
- -getnstr
, that
- polls for input while updating a clock on the right margin
- as well as responding to window size-changes.--keep-tite
” option for
- filter program as the "-a"
- option. When set, filter
- attempts to suppress the alternate screen.modify knight program to
- provide the "slow" solution for small screens using
- “R
”, noting that Warnsdorf's method
- is easily done with “a
”.
modify the savescreen - program to add test patterns that exercise 88-, 256-, etc., - colors.
-add options to test_arrays, - for selecting termcap vs terminfo, etc.
-modify the view - program:
- --n
” option by
- simply reading the whole file.SIGWINCH
example; just
- use KEY_RESIZE
.improve animation in xmas
- program by adding a time-delay in blinkit
.
modify several test-programs which call
- use_default_colors
to consistently do this only
- if the “-d
” option is given.
modify the install-rule for ncurses-examples to put the
- data files in the data directory, e.g.,
- /usr/share/ncurses-examples
.
modify several test programs to use new
- popup_msgs
function, adapted from the
- help-screen used in the edit_field
program.
modify test data for xterm palettes to use the newer - color4/color12 values.
-improve the tracemunch - script:
- -add_wch
,
- color_content
and pair_content
to
- dummy parameters.There are several new terminal descriptions:
- --- -- -
dumb-emacs-ansi
,dvtm
, -dvtm-256color
,fbterm
, -iterm2
,linux-m1
minitel - entries,putty-noapp
,viewdata
, - andvt100+4bsd
building-block.- -
xterm+noalt
,xterm+titlestack
, -xterm+alt1049
,xterm+alt+title
- building blocks andxterm+direct
, -xterm+indirect
,xterm-direct
. from - xterm - patch #331.several other “
--direct
” - descriptions to address the differences of other terminal - emulators versusxterm-direct
.
There are many changes to existing terminal descriptions. Some - were updates to several descriptions:
- -xterm+sm+1006
in several terminal
- descriptions which were validated as supporting the extended
- mouse feature for their respective terminal emulators.while others affected specific descriptions. These were - retested, to take into account new/undocumented changes by their - developers:
- --- --
iterm
,minitel
,st
, -viewdata
,nsterm
while these are specific fixes based on user reports, or - warnings from tic:
- -ansi
building blocksansi+idc
to better match original
- ansiterm+idc
, add alias
- ansiterm
icl6402
icl6402
and
- m2-nam
interix
^?
for kdch1linux
linux3.0
entry the default
- linux
entrylinux2.6
entry to improve
- line-drawing so that the linux3.0
entry can be
- used in non-UTF-8 modelinux
- and wyse
entries to put the delay between the
- reverse/normal escapes rather than afterlinux-16color
to not mask dim,
- standout or reverse with the ncv capabilitypccon
entriespccon*
entriespccon+sgr+acs
and
- pccon-base
pccon+keys
tmux
screen
's "standout" code rather than the
- standard code.xterm-keys
- option to reflect upcoming change to make that option
- "on" by defaultvt100
vt100
rs2 string to reset
- vt52 mode and scrolling regionsvt100-nam
vt100+4bsd
, e.g.,
- delay in sgr for consistencyvte
vte-2014
to
- vte-2012
xterm
xterm-new
, available
- since
- late 1996.xterm+256color
and
- xterm+256setaf
to use correct number of color
- pairs.xterm-16color
,
- xterm-88color
and xterm-256color
- to reset palette using oc string as in
- linux
entry.xterm-256color
xterm+256color
, allowing palette reset for
- xtermxterm+256setaf
xterm-r5
, xterm-r6
and
- xterm-xf86-v32
to use xterm+kbs
- to match
- xterm #272, reflecting packager's changesxterm-new
, to reflect vt220-style responses
- that could be returned.xterm-pcolor
sgr consistent
- with other capabilitiesA few entries use extensions (user-defined terminal - capabilities):
- -tmux
and xterm-basic
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 particular,
- -Since the underlying features for - tset, - tput, and - clear have been better - integrated, the documentation now includes information on how - those tools evolved.
- -In addition to explaining the improved integration of the - tools, the manual pages made it easier to see how the tools - are similar and how they are different.
-The addch
manual page has additional
- information on
- portability and differences from other
- implementations.
The discussion of color-pairs in the attributes - manual page is improved in its - history section.
-The documentation of the chtype
,
- cchar_t
types and the attribute values which can
- be stored in those types, in particular the
- history and
- portability sections of the attributes manual
- page, has been improved.
improve discussion of - portability in the mouse manual.
-The pad manual page has a section on the - origin and portability of pads.
-Differences between SVr4 and X/Open Curses soft-keys are - discussed in a new section on - portability.
-There are updated/improved notes on portability in the - - resizeterm and - wresize manual pages.
-In addition to providing background information to explain - these features and show how they evolved, there are corrections, - clarifications, etc.:
- -add note in the - addch manual about line-drawing when it depends - upon UTF-8.
-improve discussion of line-drawing characters in the - - add_wch manual.
-explain in - clear's manual page that - it writes to the standard output.
-improve description of - endwin.
-improve discussion of field validation in the - form driver manual page.
-clarify the use of wint_t
vs
- wchar_t
in
- get_wstr manual page.
clarify in the
- getch manual that the keypad mode affects an
- application's ability to read KEY_MOUSE
codes,
- but does not affect KEY_RESIZE
.
trim some obsolete/incorrect wording about
- EINTR
from the getch manual page
improve manual pages for
- getch and
- get_wch to point out that they might return
- user-defined values which have no predefined names in
- <curses.h>
improve description of the -R
option in the
-
- infocmp manual page
clarify in the
- resizeterm manual page how
- KEY_RESIZE
is pushed onto the input stream.
document return value of
- use_extended_names
document differences in
- ESCDELAY
versus AIX's implementation in the
- variables manual page.
The _nc_free_tinfo
function is now documented
- in the
- memory-leaks manual page, because it could be
- used in tack for memory-leak
- checking.
add a note to the - tic manual page about -W versus -f options.
-improve terminfo manual description of - terminfo syntax.
- -improve terminfo manual page discussion of - control- and graphics- characters.
- -improve - color-handling section in terminfo manual page
-clarify description in - tput manual page regarding - support for termcap names
- -update - tput manual page to - reflect changes to manipulate terminal modes by sharing - functions with tset.
-clarify in manual pages that the optional verbose option - level of - tic and - infocmp is available only - when ncurses is configured for - tracing.
-improve manual page description of tset/reset - versus window-size.
+add minimal -h (usage) and -V (version) + getopt logic to all ncurses-examples programs.
improve description of - tgoto parameters
+fix an error in "@" command in test/ncurses.c + F-menu
There are new manual pages:
- -- scr_dump documents the screen-dump format.
+add curses_trace to ifdef's for START_TRACE in + test/test.priv.h
Some of the improvements are more subtle, relating to the way - the information is presented:
- -Made minor fixes to manpage NAME/SYNOPSIS - sections to consistently use rule that either all functions - which are prototyped in SYNOPSIS are listed in the - NAME section, or the manual-page name is the sole - item listed in the NAME section. The latter is used - to reduce clutter, e.g., for the top-level library manual - pages as well as for certain feature-pages such as - SP-funcs and - threading.
+improve pthread-configuration for test/worm.c
improve manual pages for utilities with respect to POSIX - versus X/Open Curses.
+add setlocale call to several test-programs.
improve organization of the - attributes and color manual - pages.
+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.
modify toe to not exit if - unable to read a terminal description, e.g., if there is a - permission problem.
+use static libraries for AdaCurses test-package for + Mageia, since no gprbuild package is available.
correct 20100515 change for weak signals versus - sigprocmask
+install Ada95 sample programs in libexecdir, adding a + wrapper script to invoke those.
gprconfig
to specify the C compiler to be
- used by gnatmake
, and conditionally suppressing
- Library_Options
line for static libraries.There were, as well, several bug-fixes to handle illegal - input for tic. Because those - did not correspond to useful terminal descriptions, most - users are unaffected.
+install ncurses-examples programs in libexecdir, adding a + wrapper script to invoke those.
There are other new demo/test programs and reusable + examples:
-This release provides a new binary format for terminal - descriptions that use extended numeric capabilities. Applications - built with the wide-character ncursesw library can use - these extended numbers.
+This includes utilities such as tic and infocmp, because (as noted in New features), the feature - relies upon an extension to the low-level tinfo - library.
-A few software packagers use a configuration option of - ncurses which allows the - low-level tinfo library to be shared between the - high-level ncurses and ncursesw libraries. - This new feature was designed to work in that configuration - as well.
-Other applications (i.e., using the 8-bit ncurses - library) which read the extended terminal descriptions see those - numeric capabilities set to the maximum value for a signed 16-bit - number.
+Older versions of ncurses' - tic accept out-of-range numeric - capabilities, storing those as the maximum value for a signed - 16-bit number. Other implementations of curses (mentioned in the - discussion of - picsmap) give zero for these - out-of-range capabilities.
+These changes provide support for tack 1.08, released in - July 2017:
+There are several new terminal descriptions:
add --without-tack
configure option to refine
- --with-progs
configure option. Normally
- tack is built outside the
- ncurses tree, but a few
- packagers combine it during the build. If
- term_entry.h
is installed, there is no advantage
- to in-tree builds.
adjust configure-script to define
- HAVE_CURSES_DATA_BOOLNAMES
symbol needed for
- tack 1.08 when built in-tree.
- Rather than relying upon internal "_nc_" functions,
- tack now uses the boolean,
- number and string capability name-arrays provided by
- ncurses and SVr4 Unix curses.
- It still uses term_entry.h
for the definitions
- of the extended capability arrays.
add dependency upon ncurses_cfg.h to tic's header-files; any program using - tic-library will have to - supply this file. Legacy tack - versions supply this file; ongoing tack development has dropped the - dependency upon tic-library - and new releases will not be affected.
+Other changes to the configure-script and generated files - include
-add configure options to disable checks for form, menu and - panel libraries so that ncurses-examples can be built with - non-SVr4 curses implementations.
+add configure option --enable-opaque-curses
- for ncurses library and similar options for the
- other libraries.
add configure option --disable-wattr-macros
- for use in cases where one wants to use the same headers for
- ncurses5/ncurses6 development, by suppressing the
- wattr* macros which differ due to the introduction
- of extended colors
modify configure macro for shared-library rules to use
- -Wl,-rpath
rather than -rpath
to
- work around a bug in scons
There are many changes to existing terminal descriptions. Some + were updates to several descriptions:
+improve ncurses-examples' configure script to define as
- needed NCURSES_WIDECHAR
for platforms where
- _XOPEN_SOURCE_EXTENDED
does not work. Also
- modified the test program to ensure that if building with
- ncurses, that the
- cchar_t
type is checked, since that is normally
- (since 20111030)
- ifdef'd depending on this test.
make description-fields distinct
modify configure script to handle the case where
- tic-library is renamed, but
- the --with-debug
option is used by itself
- without normal or shared libraries
fix errata in description fields
modify editing script which generates resulting.map to - work with the clang configuration on recent FreeBSD, which - gives an error on an empty "local" section.
-add/use several building-blocks:
-improve configure check for setting the
- WILDCARD_SYMS
variable; on ppc64 the variable is
- in the Data section rather than
- Text.
correct result of configure option
- --without-fallbacks
, which caused FALLBACK_LIST
- to be set to "no"
while others affected specific descriptions. These were + retested, to take into account changes by their developers:
+ +modify --with-pkg-config-libdir
option to
- make it possible to install “.pc” files even if
- pkg-config is not found. Limit
- this change, to suppress the actual install if it is not
- overridden to a valid directory at install time.
kitty +
disallow “no” as a possible value for
- --with-shlib-version
option, overlooked in
- cleanup-changes for 20000708.
teken +
while these are specific fixes based on reviewing + documentation, user reports, or warnings from tic:
-Many of the portability changes are implemented via the - configure script:
+A few entries use extensions (user-defined terminal + capabilities):
improve configure script's CF_CC_ENV_FLAGS
- macro to allow for compiler wrappers such as ccache. This change moves only the
- preprocessor, optimization and warning flags to
- CPPFLAGS
and CFLAGS
, leaving the
- residue in CC
. That happens to work for
- gcc's various
- “model” options, but may require tuning for other
- compilers.
use ansi+enq and decid+cpr in cases + where the terminal probably supported the u6-u9 extension
+remove u6-u9 from teken-2018
modify ncurses-examples' configure script to use - pkg-config for the extra - form/menu/panel libraries, to be more consistent with the - handling of the curses/ncurses library.
+use NQ to flag entries where the terminal does + not support query and response
add configuration checks to build with NetBSD
- curses, which for example lacks
- use_env
.
add/use bracketed+paste + to help identify terminals supporting this xterm feature
change ncurses-examples to use attr_t
vs
- chtype
to follow X/Open documentation more
- closely since Solaris xpg4-curses uses different values for
- WA_xxx
vs A_xxx
- that rely on attr_t being an unsigned short. Tru64 aka OSF1,
- HPUX, AIX did as ncurses does,
- equating the two sets.
modify samples for xterm mouse 1002/1003 modes to use 1006 + mode, and also provide for focus in/out responses
modify several test programs to reflect that ncurses honors existing signal handlers in - initscr, while other implementations do not.
+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).
As usual, this release
+add configure check for openpty
to
- ncurses-examples' configure script, for ditto.
improves documentation by describing new features,
improve check for working poll
function by
- using posix_openpt
as a fallback in case there
- is no valid terminal on the standard input
attempts to improve the description of features which + users have found confusing
modify ncurses-examples' configure script to check for - pthread dependency of - ncursest or ncursestw library when building - the ncurses examples, e.g., in - case weak symbols are used.
+fills in overlooked descriptions of features which were + described in the NEWS file + but treated sketchily in manual pages.
In addition to providing background information to explain + these features and show how they evolved, there are corrections, + clarifications, etc.:
+add checks in ncurses-examples' configure script for some - functions neither in 4.3BSD curses, nor based on X/Open - Curses:
+Corrections:
modify a loop limit in firework.c to work around - absense of limit checks in some libraries.
+remove a stray '/' from description of %g in + + terminfo(5).
fill the last row of a window with
- “?
” in firstlast if waddch does
- not return ERR
on the lower-right
- corner.
correct/improve font-formatting in curs_getch.3x, as + well as other manual pages.
build-fixes for the Portland Group (PGI) compilers
+New/improved history and portability sections:
accept whitespace in sed expression for generating - expanded.c
-modify configure check that g++ compiler warnings are - not used.
+add portability notes for delscreen + and delwin + in manual.
add configure check for -fPIC option needed for shared - libraries.
+improve curs_slk.3x + discussion of extensions and portability
modify configure script for clang as used on FreeBSD, to - work around clang's differences in exit codes vs gcc.
-fixes for configure/build using clang on OSX
+Other improvements:
do not redefine “inline” in
- ncurses_cfg.h
; this was originally to solve
- a problem with gcc/g++, but is aggravated by clang's
- misuse of symbols to pretend it is gcc.
improve curs_bkgd.3x, + explaining that bkgdset can affect results for + bkgd
add braces to configure script to prevent unwanted
- addition of “-lstdc++
” option to
- the CXXLIBS
symbol.
add note on portable memory-leak checking in curs_memleaks.3x
improve/update test-program used for checking - existence of stdc++ library.
+expanded description in resizeterm.3x
if $CXXLIBS
is set, the linkage test uses
- that in addition to $LIBS
.
add section on releasing memory to + curs_termcap.3x and + curs_terminfo.3x manpages.
fixes for OS/2:
+add clarification of the scope of dynamic variables in + terminfo(5).
+improve formatting of ncurses-intro.html + and hackguide.html
+use button instead of kbuf[0]
in
- EMX-specific part of lib_mouse.c
improve curs_clear.3x + links to other pages
support building with libtool on OS/2
+update ncurses-howto, + making documentation fixes along with corrections to + example programs.
use stdc++ library with OS/2 kLIBC
+use newer version 1.36 of gnathtml for generating Ada + html files.
clear configure script's cf_XOPEN_SOURCE
- for OS/2, to work with its header files
update external links in Ada95.html
There are no new manual pages (all of the manual page updates + are to existing pages).
+ +While there were many bugs fixed during development of ncurses + 6.4, only a few (the reason for this release) were both important + and interesting. Most of the bug-fixes were for local issues + which did not affect compatibility across releases. Since those + are detailed in the NEWS file no elaboration is + needed here.
+ +The interesting bugs were those dealing with memory leaks and + buffer overflows. Although the utilities are designed for + text files (which they do properly), some choose to test + them with non-text files.
+ +Text files contain no embedded nulls. Also, they end with + a newline. Feeding tic non-text files + exposed a few cases where the program did not check for those + issues. As a result, further processing of the input found + limit-checks whose assumptions were invalid.
+add “newer” baudrate symbols to the
- baudrate
function in the ncurses library as
- well as to a corresponding table in tset.
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.
modify ncurses-examples savescreen to work with AIX and HPUX.
+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).
define WIN32_LEAN_AND_MEAN
for MinGW port,
- making builds faster.
The string allocations in tic are + likewise improved.
There are no major changes. No new options were added. Several + improvements were made to configure checks.
+ +There are a few new/modified configure options:
+ +add ABI 7 defaults to configure script.
+add warning in configure script if file specified for + “--with-caps” does not exist.
+bzip2 and xz compression are now supported
+add check/warning in configure script if option + “--with-xterm-kbs” is missing or + inconsistent
+Many of the portability changes are implemented via the + configure script:
+add a configure check for wcwidth versus the - ncurses line-drawing - characters, to use in special-casing systems such as Solaris. - Solaris, however, requires a special case that maps Unicode - line-drawing characters into the acsc string for non-Unicode - locales. Solaris also has a misconfigured wcwidth which marks - all of the line drawing characters as double-width.
+amend configure option's auto-search to account for + systems where none of the directories known to + pkg-config exist
string-hacks (non-standard):
+corrected regex needed for older pkg-config used + in Solaris 10
+fix configure script to record when
- strlcat
is found on OpenBSD.
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
+add --enable-string-hacks
option to
- ncurses-examples' configure script.
if the --with-pkg-config-libdir option is not + given, use ${libdir}/pkgconfig as a default
+completed string-hacks for sprintf, etc., - including the ncurses-examples programs.
-improve search-path check for pkg-config, e.g., + for Debian testing which installs pkg-config with + architecture-prefixes.
+make --enable-string-hacks
option work
- with Debian by checking for the "bsd" library and its
- associated "<bsd/string.h>" header.
build-fix for cross-compiling to MingW, conditionally add + -lssp
+improve configure check for getttynam
workaround for Debian's antique/unmaintained version of - mawk:
+fixes to build with dietlibc:
see Debian #65617, which was fixed in mawk's upstream releases in - 2009.
-related fixes when building link_test.
-modify configure macro CF_BUILD_CC to check if + the build-compiler works, rather than that it is different + from the cross-compiler, e.g., to accommodate a compiler + which can be used for either purpose with different flags
+modify configure/scripts to work around interference by + GNU grep 3.8
+Here are some of the other portability fixes:
+ +change man_db.renames to template, to handle + ncurses*-config script with the + --extra-suffix configure option.
+update CF_XOPEN_SOURCE macro, adding variants + “gnueabi" and “gnueabihf" to get + _DEFAULT_SOURCE special case, as well as adding GNU + libc suffixes for “abi64”, “abin32”, + “x32” to distinguish it from other libc + flavors.
+work around musl's nonstandard use of feature + test macros by adding a definition for + NCURSES_WIDECHAR to the generated “.pc” + and *-config files.
+use “command -v” rather than + “type” in Ada95/gen/Makefile.in + to fix a portability issue.
+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. @@ -2423,10 +995,10 @@ p,li { max-width:700px; }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).Support for direct-color terminals, such as modern + xterm.
+Support for 256-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.
+ "https://invisible-island.net/ncurses/man/tset.1.html">tsetThe table-of-entries utility - toe makes it easy for users to see exactly what - terminal types are available on the system.
+ "https://invisible-island.net/ncurses/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).
+ "https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading">Additional + Reading section of the ncurses FAQ for online + documentation).+ containing the line:-
- aptitude
+- aptitude +
- -
FrontEnd to Apt, the debian package manager
@@ -2596,37 +1174,38 @@ p,li { max-width:700px; } "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude- cdk
+- 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
@@ -2635,16 +1214,17 @@ p,li { max-width:700px; } "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/- mutt
+- mutt +
- -
mail utility
- +- ncftp
+- ncftp +
- -
file-transfer utility
@@ -2653,17 +1233,20 @@ p,li { max-width:700px; } "https://www.ncftp.com/">https://www.ncftp.com/- nvi
+- nvi +
- -
New vi uses ncurses.
- ranger
+- ranger +
- -
A console file manager with VI key bindings in @@ -2673,16 +1256,17 @@ p,li { max-width:700px; } "https://ranger.github.io/">https://ranger.github.io/
- tin
+- tin +
- -
newsreader, supporting color, MIME
- +- vifm
+- vifm +
File manager with vi like keybindings
@@ -2697,7 +1281,8 @@ p,li { max-width:700px; }@@ -2749,7 +1335,8 @@ p,li { max-width:700px; }-
- minicom
+- minicom +
- -
terminal emulator for serial modem connections
@@ -2706,25 +1291,26 @@ p,li { max-width:700px; } "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
@@ -2733,14 +1319,14 @@ p,li { max-width:700px; } "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.
- +@@ -2794,12 +1383,18 @@ p,li { max-width:700px; }-
- emacs
+- emacs +
- -
text editor
@@ -2758,7 +1345,8 @@ p,li { max-width:700px; } "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/- less
+- less +
- -
The most commonly used pager (a program that @@ -2768,7 +1356,8 @@ p,li { max-width:700px; } "http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/
- screen
+- screen +
- -
terminal multiplexor
@@ -2777,13 +1366,13 @@ p,li { max-width:700px; } "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/- vim
+- 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 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
@@ -2812,8 +1407,8 @@ p,li { max-width:700px; }bug-ncurses-request@gnu.org -containing the line: - +
@@ -2822,15 +1417,25 @@ p,li { max-width:700px; }
subscribe
<name>@<host.domain>This list is open to anyone interested in helping with the development and testing of this package.
-Beta versions of ncurses and - patches to the current release are made available at
+Beta versions of ncurses are + made available at
+ +ftp://ftp.invisible-island.net/ncurses/ + "https://invisible-island.net/archives/ncurses/current/">https://invisible-island.net/archives/ncurses/current/ and
+ "https://invisible-mirror.net/archives/ncurses/current/">https://invisible-mirror.net/archives/ncurses/current/ . +
https://invisible-mirror.net/archives/ncurses/ .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:
@@ -2849,30 +1454,28 @@ p,li { max-width:700px; } which may be interesting by themselves:-
- - ncurses licensing
+- ncurses licensing
-- Symbol - versioning in ncurses
+- Symbol versioning + in ncurses
-- Comments - on ncurses versus Comments on + ncurses versus slang (S-Lang)
-- tack – - terminfo action checker
+- Comments on + OpenBSD
-- tctest - – termcap library checker
+- tack – terminfo action + checker
+ +- tctest – termcap + library checker
- - Terminal Database
+ "https://invisible-island.net/ncurses/ncurses.html#download_database">Terminal + DatabaseOther @@ -2889,7 +1492,10 @@ p,li { max-width:700px; }
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.