X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=announce.html.in;h=378f6f80b012306a993e9f59a3b37b69f380862e;hp=c73a5dd2c04976c1e06bc4e3fdaf1e440ebdde7a;hb=b93d96b78ac5250135975df892cee793dc3c0797;hpb=3c19a91c36092255fbac7de00e3db8830aefc053 diff --git a/announce.html.in b/announce.html.in index c73a5dd2..378f6f80 100644 --- a/announce.html.in +++ b/announce.html.in @@ -1,8 +1,7 @@ - + + "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org"> Announcing ncurses @VERSION@ + -

Announcing ncurses @VERSION@

The ncurses (new curses) +

Announcing ncurses @VERSION@

+ +

Overview

+ +

The ncurses (new curses) library is a free software emulation of curses in System V - Release 4.0, and more. It uses terminfo format, supports pads and - color and multiple highlights and forms characters and - function-key mapping, and has all the other SYSV-curses - enhancements over BSD curses. + 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 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.

+ +

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 at ncurses' homepage:

+ +
+

ftp://ftp.invisible-island.net/ncurses/ + or
+ https://invisible-mirror.net/archives/ncurses/ .

+
+ +

It is also available via anonymous FTP at the GNU distribution + site

+ +
+

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

+
+ +

Release + Notes

+ +

These notes are for ncurses + @VERSION@, released January 27, 2018.

+ +

This release is designed to be source-compatible with + ncurses 5.0 through 6.0; 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:

+ + + +

There are, of course, numerous other improvements, listed in + this announcement.

+ +

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

+ +

Library + improvements

+ +

New + features

+ +

The improved integration of tput and tset + made only small changes to the libraries. However, supporting + extended numeric capabilities required a few changes:

+ + + +

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:

+ + + +

Additionally, to improve performance other changes (and + extensions) are provided in this release:

+ + + +

Other + improvements

+ +

These are new or revised features:

+ + + +

These were done to limit or ultimately deprecate features:

+ + + +

These are improvements to existing features:

+ + + +

These are corrections to existing features:

+ + + +

Program + improvements

+ +

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

+ + + +

Other user-visible improvements and new features include:

+ + + +

Other less-visible improvements and new features include:

+ + + +

Several of the less apparent features deal with translation of + terminfo to termcap (and the reverse), with corresponding checks + by tic:

+ + + +

Examples

+ +

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

+ +

These changes were made to demonstrate new extensions in + ncurses:

+ + + +

There are other new example programs and a few scripts:

+ + + +

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:

+ + + +

These changes were made to the other examples:

+ + + +

Terminal + database

+ +

There are several new terminal descriptions:

+ +
+

dumb-emacs-ansi, dvtm, + dvtm-256color, fbterm, + iterm2, linux-m1 minitel + entries, putty-noapp, viewdata, + and vt100+4bsd building-block.

+ +

xterm+noalt, xterm+titlestack, + xterm+alt1049, xterm+alt+title + building blocks and xterm+direct, + xterm+indirect, xterm-direct. from + xterm + patch #331.

+ +

several other “-direct” + descriptions to address the differences of other terminal + emulators versus xterm-direct.

+
+ +

There are many changes to existing terminal descriptions. Some + were updates to several descriptions:

+ + + +

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 blocks
+ +
+ +
+ +
+ icl6402
+ +
+ +
+ +
+ interix
+ +
+ +
+ +
+ linux
+ +
+ +
+ +
+ pccon entries
+ +
+ +
+ +
+ tmux
+ +
+ +
+ +
+ vt100
+ +
+ +
+ +
+ vte
+ +
+ +
+ +
+ xterm
+ +
+ +
+
+ +

A few entries use extensions (user-defined terminal + capabilities):

+ + + +

Documentation

+ +

As usual, this release

+ + + +

In particular,

+ + + +

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

+ + -

It also improves the Ada95 binding:

+

There are new manual pages:

-
  • improves configurability and portability, particularly when - built separately from the main ncurses tree. The 5.8 release - introduced scripts which can be used to construct separate - tarballs for the Ada95 and ncurses examples. +

    Some of the improvements are more subtle, relating to the way + the information is presented:

    -

    Those were a proof of concept. For the 5.9 release, those - scripts are augmented with rpm- and dpkg-scripts used in test - builds against a variety of gnat- and system ncurses versions - as old as gnat 3.15 and ncurses 5.4 (see snapshots and - systems tested here.

    + -

    Features of Ncurses

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

    Interesting + bug-fixes

    The ncurses package also has many useful extensions over - SVr4: - - -
  • The functions keyok and - define_key allow you to better control the use of - function keys, e.g., disabling the ncurses KEY_MOUSE, or by - defining more than one control sequence to map to a given key - code.
  • - -
  • Support for 256-color terminals, such as modern xterm, when - configured using the --enable-ext-colors - option.
  • - -
  • Support for 16-color terminals, such as aixterm - and modern xterm.
  • - -
  • Better cursor-movement optimization. The package now - features a cursor-local-movement computation more efficient - than either BSD's or System V's.
  • - -
  • Super hardware scrolling support. The screen-update code - incorporates a novel, simple, and cheap algorithm that enables - it to make optimal use of hardware scrolling, line-insertion, - and line-deletion for screen-line movements. This algorithm is - more powerful than the 4.4BSD curses quickch - routine.
  • - -
  • Real support for terminals with the magic-cookie glitch. - The screen-update code will refrain from drawing a highlight if - the magic- cookie unattributed spaces required just before the - beginning and after the end would step on a non-space - character. It will automatically shift highlight boundaries - when doing so would make it possible to draw the highlight - without changing the visual appearance of the screen.
  • +

    Configuration changes

    -
  • It is possible to generate the library with a list of - pre-loaded fallback entries linked to it so that it can serve - those terminal types even when no terminfo tree or termcap file - is accessible (this may be useful for support of - screen-oriented programs that must run in single-user - mode).
  • +

    Major + changes

    -
  • The tic(1)/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(1) utility is provided.
  • - -
  • The ncurses library and utilities will automatically read - terminfo entries from $HOME/.terminfo if it exists, and compile - to that directory if it exists and the user has no write access - to the system directory. This feature makes it easier for users - to have personal terminfo entries without giving up access to - the system terminfo directory.
  • - -
  • You may specify a path of directories to search for - compiled descriptions with the environment variable - TERMINFO_DIRS (this generalizes the feature provided by - TERMINFO under stock System V.)
  • - -
  • In terminfo source files, use capabilities may refer not - just to other entries in the same source file (as in System V) - but also to compiled entries in either the system terminfo - directory or the user's $HOME/.terminfo directory.
  • - -
  • A script (capconvert) is provided to help - BSD users transition from termcap to terminfo. It gathers the - information in a TERMCAP environment variable and/or a - ~/.termcap local entries file and converts it to an equivalent - local terminfo tree under $HOME/.terminfo.
  • - -
  • Automatic fallback to the /etc/termcap file can be compiled - in when it is not possible to build a terminfo tree. This - feature is neither fast nor cheap, you don't want to use it - unless you have to, but it's there.
  • - -
  • The table-of-entries utility toe makes it - easy for users to see exactly what terminal types are available - on the system.
  • - -
  • The library meets the XSI requirement that every macro - entry point have a corresponding function which may be linked - (and will be prototype-checked) if the macro definition is - disabled with #undef.
  • - -
  • An HTML "Introduction to Programming with NCURSES" document - provides a narrative introduction to the curses programming - interface.
  • - - -

    State of the Package

    Numerous bugs present in earlier - versions have been fixed; the library is far more reliable than - it used to be. Bounds checking in many `dangerous' entry points - has been improved. The code is now type-safe according to gcc - -Wall. The library has been checked for malloc leaks and arena - corruption by the Purify memory-allocation tester. - -

    The ncurses code has been tested with a wide variety of - applications including (versions starting with those noted):

    +

    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.

    -
    -
    cdk
    + - http://www.vexus.ca/products/CDK/ +

    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.

    -
    ded
    +

    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.

    -
    directory-editor
    - http://invisible-island.net/ded/
    +

    Configuration options

    -
    dialog
    +

    These changes provide support for tack 1.08, released in + July 2017:

    -
    the underlying application used in Slackware's setup, and - the basis for similar applications on GNU/Linux.
    - http://invisible-island.net/dialog/
    + -
    Midnight Commander
    +

    Other changes to the configure-script and generated files + include

    -
    file manager
    - http://www.midnight-commander.org/
    +
    as well as some that use ncurses for the terminfo support - alone: +
  • +

    disallow “no” as a possible value for + --with-shlib-version option, overlooked in + cleanup-changes for 20000708.

    +
  • + -
    -
    minicom
    +

    Portability

    -
    terminal emulator
    - http://alioth.debian.org/projects/minicom/
    +

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

    -
    vile
    +
    +
  • +

    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.

    +
  • + +
  • +

    add configuration checks to build with NetBSD + curses, which for example lacks + use_env.

    +
  • + +
  • +

    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 several test programs to reflect that ncurses honors existing signal handlers in + initscr, while other implementations do not.

    +
  • + +
  • +

    add configure check for openpty to + ncurses-examples' configure script, for ditto.

    +
  • + +
  • +

    improve check for working poll function by + using posix_openpt as a fallback in case there + is no valid terminal on the standard input

    +
  • + +
  • +

    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.

    +
  • + +
  • +

    add checks in ncurses-examples' configure script for some + functions neither in 4.3BSD curses, nor based on X/Open + Curses:

    + + +
  • + +
  • +

    build-fixes for the Portland Group (PGI) compilers

    + + +
  • + +
  • +

    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

    + + +
  • + +
  • +

    fixes for OS/2:

    + + +
  • + +
  • +

    add “newer” baudrate symbols to the + baudrate function in the ncurses library as + well as to a corresponding table in tset.

    +
  • + +
  • +

    modify ncurses-examples savescreen to work with AIX and HPUX.

    +
  • + +
  • +

    define WIN32_LEAN_AND_MEAN for MinGW port, + making builds faster.

    +
  • + +
  • +

    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.

    +
  • + +
  • +

    string-hacks (non-standard):

    + + +
  • + +
  • +

    workaround for Debian's antique/unmaintained version of + mawk:

    + + +
  • + +
    + +

    Features of + ncurses

    + +

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

    + + + +

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

    + + + +

    Applications using + ncurses

    + +

    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:

    + +
    +
    +
    aptitude
    + +
    +

    FrontEnd to Apt, the debian package manager

    + +

    https://wiki.debian.org/Aptitude

    +
    + +
    cdk
    + +
    +

    Curses Development Kit

    + +

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

    +
    + +
    ded
    + +
    +

    directory-editor

    + +

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

    +
    + +
    dialog
    + +
    +

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

    + +

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

    +
    + +
    lynx
    + +
    +

    the text WWW browser

    + +

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

    +
    + +
    mutt
    + +
    +

    mail utility

    + +

    http://www.mutt.org/

    +
    + +
    ncftp
    + +
    +

    file-transfer utility

    + +

    https://www.ncftp.com/

    +
    + +
    nvi
    + +
    +

    New vi uses ncurses.

    + +

    https://sites.google.com/a/bostic.com/keithbostic/vi
    +

    +
    + +
    ranger
    + +
    +

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

    + +

    https://ranger.github.io/

    +
    -

    The ncurses distribution includes a selection of test programs - (including a few games).

    +
    tin
    -

    Who's Who and What's What

    Zeyd Ben-Halim started it from - a previous package pcurses, written by Pavel Curtis. Eric S. +
    +

    newsreader, supporting color, MIME

    + +

    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:

    + +
    +
    +
    minicom
    + +
    +

    terminal emulator for serial modem connections

    + +

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

    +
    + +
    mosh
    + +
    +

    a replacement for ssh.

    + +

    https://mosh.mit.edu/

    +
    + +
    tack
    + +
    +

    terminfo action checker

    + +

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

    +
    + +
    tmux
    + +
    +

    terminal multiplexor

    + +

    https://github.com/tmux/tmux/wiki

    +
    + +
    vile
    + +
    +

    vi-like-emacs may be built to use the terminfo, termcap + or curses interfaces.

    + +

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

    +
    +
    +
    + +

    and finally, those which use only the termcap interface:

    + +
    +
    +
    emacs
    + +
    +

    text editor

    + +

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

    +
    + +
    less
    + +
    +

    The most commonly used pager (a program that + displays text files).

    + +

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

    +
    + +
    screen
    + +
    +

    terminal multiplexor

    + +

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

    +
    + +
    vim
    + +
    +

    text editor

    + +

    https://www.vim.org/

    +
    +
    +
    + +

    Development + activities

    + +

    Zeyd Ben-Halim started ncurses + from a previous package pcurses, written by Pavel Curtis. Eric S. Raymond continued development. Jürgen Pfeifer wrote most of - the form and menu libraries. Ongoing work is being done by + the form and menu libraries. Ongoing development work is done by Thomas Dickey. - Thomas Dickey acts as the maintainer for the Free Software - Foundation, which holds the copyright on ncurses. Contact the - current maintainers at bug-ncurses@gnu.org. + Thomas Dickey also acts as the maintainer for the Free Software + Foundation, which holds the copyright + on ncurses.

    + +

    Contact the current maintainers at

    + +
    + bug-ncurses@gnu.org +
    + +

    To join the ncurses mailing list, please write email to

    + +
    + bug-ncurses-request@gnu.org +
    containing the line: -

    To join the ncurses mailing list, please write email to - bug-ncurses-request@gnu.org containing the line:

    -
    -             subscribe <name>@<host.domain>
    -
    +
    +

    subscribe + <name>@<host.domain>

    +

    This list is open to anyone interested in helping with the development and testing of this package.

    -

    Beta versions of ncurses and patches to the current release - are made available at ftp://invisible-island.net/ncurses/ .

    +

    Beta versions of ncurses and + patches to the current release are made available at

    + +
    +

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

    +

    There is an archive of the mailing list here:

    -

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

    +
    +

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

    +
    -

    Future Plans

    +

    Related + resources

    + +

    The release notes make scattered references to these pages, + which may be interesting by themselves:

    -
  • Ports to more systems, including DOS and Windows.
  • - We need people to help with these projects. If you are - interested in working on them, please join the ncurses list. +

    Other + resources

    -

    Other Related Resources

    The distribution provides a newer - version of the terminfo-format terminal description file once - maintained by Eric +

    The distribution provides a newer version of the + terminfo-format terminal description file once maintained by + Eric Raymond . Unlike the older version, the termcap and - terminfo data are provided in the same file, and provides several - user-definable extensions beyond the X/Open specification. + 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 .

    + +