X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=doc%2Fhtml%2Fannounce.html;h=51433167009c0f15554f6c81a02ded012ae2b074;hb=HEAD;hp=694848a1e939642f9eda9a2143b928f7e5102bbc;hpb=02f02dcd4464143580e783ae32c822d8eb8cdcbf;p=ncurses.git diff --git a/doc/html/announce.html b/doc/html/announce.html index 694848a1..2aa03cfa 100644 --- a/doc/html/announce.html +++ b/doc/html/announce.html @@ -1,7 +1,7 @@ - - + - - Announcing ncurses 6.0 - + "HTML Tidy for HTML5 for Linux version 5.6.0"> + Announcing ncurses 6.5 + - -

Announcing ncurses 6.0

+

Announcing ncurses 6.5

Overview

-

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:

ftp://ftp.gnu.org/gnu/ncurses/ .

-
It is also available at + "https://invisible-island.net/archives/ncurses/">https://invisible-island.net/archives/ncurses/ + or
+ https://invisible-mirror.net/archives/ncurses/ .

+ + +

It is also available at the GNU distribution site

ftp://invisible-island.net/ncurses/ .

+ "https://ftp.gnu.org/gnu/ncurses/">https://ftp.gnu.org/gnu/ncurses/ .

Release Notes

-

These notes are for ncurses - 6.0, released August 8, 2015.

+

These notes are for ncurses + 6.5, released April 27, 2024.

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.4; 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.

- +

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.4 release.

-

There are, of course, numerous other improvements, - including

+

Library improvements

+ +

New features

+ +

These are new features:

+

The functions which convert parameterized terminal + capability strings for output to the terminal + (tiparm and tparm) analyze the + capability string to determine which parameters are strings + (i.e., addresses), versus numbers (not addresses).

-

The release notes mention some bug-fixes, but are focused on - new features and improvements to existing features log since - ncurses 5.9 release.

+

The library's analysis of a capability string may differ + from the calling application's design if environment + variables are used to point to an invalid terminal database. + This is a longstanding problem with all + implementations of terminfo, dating from the early 1980s.

-

While the intent of the release is to provide a new stable - ABI, there are other development activities which are summarized - below.

+

Two new functions address this problem: by providing a + function which allows the calling application to tell ncurses + how many string-parameters to expect:

- -

Library - improvements

+

This release drops compatibility with obsolete versions of + tack, e.g., pre-1.08

-

Output - buffering

+

Other + improvements

-

X/Open curses provides more than one initialization - function:

+

These are improvements to existing features:

+ - - -

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.

- -

Symbol - versioning

- -

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:

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ConfigSymbolsGlobalsLocals"_nc_"
ncurses976796180332
ncursesw1089905184343
ncursest979804175358
ncursestw1098914184372
-
- -

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

- - - -

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.

- -

Miscellaneous

-

The new release has several improvements for performance and - building. For instance:

- - - -

There are also new features in the libraries:

- - -

There are a few new configure options dealing with library - customization:

+

These are corrections to existing features:

Program improvements

-

Utilities

- -

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:

+

Several improvements were made to the + utility programs. Some were done to make the infocmp + option “-u” option help refactor the + terminal database.

- +
+ +
+ +
tput and tset
+ +
+ +
+ -

Other user-visible improvements and new features include:

+

Examples

+ +

Along with the library and utilities, improvements were made + to the ncurses-examples:

-

Examples

+

There is one new demo/test programs:

-

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).

+
+
test/test_endwin.c +
-

These changes were made to verify compatibility or compare - performance of ncurses:

+
+

This program shows the return-status from + endwin with different combinations of + endwin (repeated), initscr, + newterm.

+
+
- -

In addition, the mechanism for producing HTML versions of the - documentation has been improved:

- - - -

Interesting - bug-fixes

+

In addition to providing background information to explain + these features and show how they evolved, there are corrections, + clarifications, etc.:

+

There are no new manual pages (all of the manual page updates + are to existing pages).

+ +

Interesting + bug-fixes

+ +

The changes to tparm, tgoto which improve + the design of the low-level interfaces are interesting, + but are not bug-fixes per se.

+

Configuration changes

Major changes

-

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
+

These are the major changes (aside from introducing tiparm_s):

-
-

Modifies the FIELDTYPE structure used for the - form library to make it more generic.

-
- -
--enable-lp64
- -
-

Allows an application to define _LP64 to - declare chtype and mmask_t as - simply “unsigned” rather than the - configured types using the --with-chtype and - --with-mmask_t options.

-
- -
--enable-sp-funcs
- -
-

Compile-in support for extended functions which accept a - SCREEN pointer, reducing the need for juggling the global SP - value with - set_term and - delscreen.

-
- -
--with-chtype=uint32_t
- -
-

Makes chtype explicitly a 32-bit unsigned - value.

-
+ -
-

Makes mmask_t explicitly a 32-bit unsigned - value.

-
+

However, most of the work on configure scripts was done to + reduce warnings within the configure script:

-
--with-tparm-arg=intptr_t
+
+
  • +

    fatal errors in compile-checks, arising from recent + “Modern C” efforts by some developers which + caused longstanding configure checks to fail.

    -

    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
    - -

    -
    +

    After repairing the configure script, none of that + activity affected ncurses because stricter warnings are used + routinely in development.

    +
  • + -

    Other major changes to the configure script include:

    +

    Other improvements made to configure checks include

    Configuration options

    -

    There are several new (or extended) configure options:

    +

    There are a few new configure options:

    -
    --disable-db-install
    +
    --disable-setuid-environ +
    -

    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.

    +

    Compile with environment restriction, so certain + environment variables are not available when running via a + setuid/setgid application. These are (for example + $TERMINFO) those that allow the search path for the + terminfo or termcap entry to be customized.

    + +

    A setuid/setgid application inherits its environment + variables from the current user, in contrast to sudo which + may limit the environment variables that ncurses uses.

    -
    --disable-gnat-projects
    +
    --enable-check-size +
    -

    This option is used for regression testing

    +

    Compile-in feature to detect screensize for terminals + which do not advertise their screensize, e.g., serial + terminals.

    -
    --disable-lib-suffixes
    +
    --with-abi-altered=NUM +
    -

    Suppress the “w”, “t” or - “tw” suffixes which normally would be added to - the library names for the --enable-widec and - --with-pthread options.

    +

    Override the displayed (rather than compiled-in) ABI. Only + packagers who have created configurations where the ABI + differs from ncurses should be interested in this option.

    -
    --with-cxx-shared
    +
    --with-strip-program=XXX +
    -

    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.

    +

    When stripping executables during install, use the + specified program rather than “strip” overriding + program chosen by the install program for stripping + executables.

    +
    -
    --with-hashed-db
    - -
    -

    Extended this configure option to simplify building with - different versions of Berkeley database using FreeBSD - ports.

    -
    +

    These configure options are modified:

    -
    --with-pc-suffix
    +
    +
    --with-pkg-config-libdir[=DIR] +
    -

    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.

    +

    The optional DIR parameter can now be + “auto” to automatically use pkg-config's library + directory.

    + +

    The default is $(libdir).

    -
    --with-xterm-kbs
    +
    --with-xterm-kbs[=XXX] +
    -

    Configure xterm's terminfo entries to use either BS - (^H, i.e., ASCII backspace) or DEL - (^?, or 127).

    +

    The default is “auto” which tells the + configure script to choose BS or DEL according to platform + defaults.

    -

    Portability

    - -

    MinGW

    - -

    Most of the portability-related work since - ncurses 5.9 extended and improved the MinGW port - introduced in - ncurses 5.8.

    +

    Portability

    -

    The MinGW port can be readily cross-compiled:

    +

    Many of the portability changes are implemented via the + configure script:

    - -

    The MinGW-specific Windows driver accounts for several - changes:

    - -

    Other - ports

    - -

    These changes affect certain platforms (ports):

    +

    Here are some of the other portability fixes:

    +
    -

    Features of ncurses

    +

    Features of + ncurses

    -

    The ncurses package is fully +

    The ncurses package is fully upward-compatible with SVr4 (System V Release 4) curses:

    -

    The ncurses package also has many - useful extensions over SVr4:

    +

    The ncurses package also has + many useful extensions over SVr4:

    Applications using - ncurses

    + ncurses -

    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

    + +

    https://invisible-island.net/cdk/

    -
    ded
    +
    ded +

    directory-editor

    -

    http://invisible-island.net/ded/

    +

    https://invisible-island.net/ded/

    -
    dialog
    +
    dialog +

    the underlying application used in Slackware's setup, and the basis for similar install/configure applications on many systems.

    -

    http://invisible-island.net/dialog/

    +

    https://invisible-island.net/dialog/

    -
    lynx
    +
    lynx +

    the text WWW browser

    http://lynx.isc.org/

    + "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/

    -
    Midnight Commander
    +
    mutt +
    -

    file manager

    +

    mail utility

    -

    http://www.midnight-commander.org/

    +

    http://www.mutt.org/

    -
    mutt
    +
    ncftp +
    -

    mail utility

    +

    file-transfer utility

    http://www.mutt.org/

    + "https://www.ncftp.com/">https://www.ncftp.com/

    -
    ncftp
    +
    nvi +
    -

    file-transfer utility

    +

    New vi uses ncurses.

    http://www.ncftp.com/

    + "https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page"> + https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page
    + +

    -
    nvi
    +
    ranger +
    -

    New vi uses ncurses.

    +

    A console file manager with VI key bindings in + Python.

    https://sites.google.com/a/bostic.com/keithbostic/nvi
    -

    + "https://ranger.github.io/">https://ranger.github.io/

    -
    tin
    +
    tin +

    newsreader, supporting color, MIME

    -

    http://www.tin.org/

    +

    http://www.tin.org/

    +
    + +
    vifm +
    + +
    +

    File manager with vi like keybindings

    + +

    https://vifm.info/

    -

    as well as some that use ncurses - for the terminfo support alone:

    +

    as well as some that use ncurses for the terminfo support alone:

    -
    minicom
    +
    minicom +

    terminal emulator for serial modem connections

    http://alioth.debian.org/projects/minicom/

    + "https://salsa.debian.org/minicom-team/minicom">https://salsa.debian.org/minicom-team/minicom

    -
    mosh
    +
    mosh +

    a replacement for ssh.

    -

    https://mosh.mit.edu/

    +

    https://mosh.org/

    -
    tack
    +
    tack +

    terminfo action checker

    -

    http://invisible-island.net/ncurses/tack.html

    +

    https://invisible-island.net/ncurses/tack.html

    -
    tmux
    +
    tmux +

    terminal multiplexor

    http://tmux.github.io/

    + "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.

    -

    http://invisible-island.net/vile/

    +

    https://invisible-island.net/vile/

    @@ -2208,31 +1530,44 @@ fflush(stdout);
    -
    emacs
    +
    emacs +

    text editor

    http://www.gnu.org/software/emacs/

    + "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).

    + +

    http://www.greenwoodsoftware.com/less/

    +
    + +
    screen +

    terminal multiplexor

    http://www.gnu.org/software/screen/

    + "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/

    -
    vim
    +
    vim +

    text editor

    -

    http://www.vim.org/

    +

    https://www.vim.org/

    @@ -2240,15 +1575,21 @@ fflush(stdout);

    Development activities

    -

    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 +1602,8 @@ fflush(stdout);
    bug-ncurses-request@gnu.org -
    containing the line: - + + containing the line:

    subscribe <name>@<host.domain>

    @@ -2271,21 +1612,32 @@ fflush(stdout);

    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

    + +
    +

    https://invisible-island.net/archives/ncurses/current/ + and
    + https://invisible-mirror.net/archives/ncurses/current/ .

    +
    + +

    Patches to the current release are made available at

    ftp://invisible-island.net/ncurses/ .

    + "https://invisible-island.net/archives/ncurses/6.4/">https://invisible-island.net/archives/ncurses/6.4/ + and
    + https://invisible-mirror.net/archives/ncurses/6.4/ .

    There is an archive of the mailing list here:

    http://lists.gnu.org/archive/html/bug-ncurses - (also https)

    + "https://lists.gnu.org/archive/html/bug-ncurses">https://lists.gnu.org/archive/html/bug-ncurses .

    Related @@ -2295,36 +1647,28 @@ fflush(stdout); which may be interesting by themselves:

    Other @@ -2334,13 +1678,18 @@ 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 Curses + specification.

    You can find lots of information on terminal-related topics - not covered in the terminfo file at - Richard Shuford's archive .

    + not covered in the terminfo file in Richard Shuford's + archive (original). + The collection of computer manuals at bitsavers.org has also been + useful.