X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=announce.html.in;h=378f6f80b012306a993e9f59a3b37b69f380862e;hp=89fb3ebeb4622d3121cdf68190348d4c95538c1a;hb=5ed80e8d7031c3fa12b4915d5e1f040257a24323;hpb=02f02dcd4464143580e783ae32c822d8eb8cdcbf diff --git a/announce.html.in b/announce.html.in index 89fb3ebe..378f6f80 100644 --- a/announce.html.in +++ b/announce.html.in @@ -1,7 +1,7 @@ - + @@ -42,6 +42,15 @@ @@ -50,21 +59,21 @@ p,li { max-width:700px; }

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, @@ -90,1743 +100,2252 @@ p,li { max-width:700px; }

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 + "ftp://ftp.invisible-island.net/ncurses/">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://invisible-island.net/ncurses/ .

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

Release Notes

-

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

+

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

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.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, - including

+

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:

+

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.

-

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

+

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.

-

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

+

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.

+ - + +

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:

+ + -

Library - improvements

+

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

-

Output - buffering

+ -

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:

+

These were done to limit or ultimately deprecate features:

-
-
-
.map
+
-
+
  • +

    ifdef'd header-file definition of mouse_trafo + with NCURSES_NOMACROS

    +
  • -

    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:

    +
  • +

    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:

    - + +
  • +

    move SCREEN field for use_tioctl + data before the ncursesw fields, and limit that to the + sp-funcs configuration to improve termlib compatibility

    +
  • - - +
  • +

    modify db-iterator:

    -
  • - + +
  • +

    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 _nc_outc_wrapper to use the standard + output if the screen was not initialized, rather than + returning an error.

    +
  • - +
  • +

    improve checks for low-level terminfo functions when the + terminal has not been initialized.

    +
  • - - +
  • +

    modify set_curterm to update + ttytype[] data used by longname/p>

    +
  • - - +
  • +

    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.

    +
  • - +
  • +

    remove an early-return from _nc_do_color, + which can interfere with data needed by bkgd + when ncurses is configured + with extended colors

    +
  • - +
  • +

    incorporate A_COLOR mask into + COLOR_PAIR, in case user application provides an + out-of-range pair number

    +
  • - +
  • +

    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.

    +
  • + - - +

    These are corrections to existing features:

    - - + +
  • +

    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

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

    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.

    +
  • -

    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

    +
  • +

    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.

    +
  • - -

    For example, running nm -D on the libraries in - the ncurses6 test package shows these symbol-versions:

    +
  • +

    move PUTC_INIT calls next to + wcrtomb calls, to avoid carry-over of error + status when processing Unicode values which are not + mapped.

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

    add missing assignment in lib_getch.c to make + notimeout work

    +
  • + + +

    Program + improvements

    -

    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.

    +

    While reviewing user feedback, it became apparent that the + differences between + reset (an alias for + tset) and “tput reset” were confusing:

    -

    Miscellaneous

    + -

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

    +

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

    -

    There are also new features in the libraries:

    +
  • +

    add “clear” as a possible link/alias to + tput.

    +
  • - + +

    Other user-visible improvements and new features include:

    + + -

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

    +
  • +

    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.

    +
  • - -

    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:

    +

    Other less-visible improvements and new features include:

    -

    As a result of the review, several improvements were made to - ncurses translation to/from termcap - format — and improving the checks made in tic for - consistency of entries. Most of these are not of general - interest, except for two new command-line options for tic and - infocmp:

    - - -

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

    +
  • +

    add check in tic for + unnecessary use of “2” to denote a + shifted special key.

    +
  • -

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

    +
  • +

    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.

    +
  • -

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

    +
  • +

    improve checks in trim_sgr0, comp_parse.c and + parse_entry.c, for cancelled string capabilities.

    +
  • - -

    These changes were made to help with the MinGW port:

    +

    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:

    -

    These changes were made to verify new extensions in ncurses:

    +

    There are other new example programs and a few scripts:

    - -

    These changes were made to make the examples more useful:

    - -

    Terminal - database

    +

    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.

    -

    This release provides improvements to tic's - “-c” checking option, which was used for - example to

    +

    The ncurses program is the + largest; a proportionately large number of changes were made to + it:

    -

    There are several new terminal descriptions:

    - - -

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

    +

    These changes were made to the other examples:

    -

    A few terminals support italics and/or dim capabilities. In - particular, screen does not. Documented that, and accommodated - the terminals where this feature works with the - A_ITALIC extension.

    +
  • +

    add several options to the “dots” + test-programs.

    +
  • - +
  • +

    modify the view + program:

    -

    Documentation

    + +
  • - -

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

    +
  • +

    modify several test programs to use new + popup_msgs function, adapted from the + help-screen used in the edit_field program.

    +
  • - -

    Interesting - bug-fixes

    +

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

    make Ada95 build-fix for big-endian architectures such - as sparc. This undoes one of the fixes from - 20110319, which added an - “Unused” member to - representation clauses, replacing that with pragmas to - suppress warnings about unused bits.

    -
  • +
    + icl6402
    + +
    + - +
    -
  • -

    Color and attributes:

    +
    + interix
    +
      -
    • -

      parenthesize parameter of COLOR_PAIR and - PAIR_NUMBER in curses.h in case it happens - to be a comma-expression.

      -
    • +
    • updated using tack and + SFU with Windows 7 Ultimate.
    • -
    • -

      improve - 20021221 workaround for broken acs, handling a case - where that ACS_xxx character is not in the - acsc string but there is a known - wide-character which can be used.

      -
    • +
    • used ^? for kdch1
    • +
    +
    -
  • -

    modify - init_pair to accept -1's for color value after - - assume_default_colors has been called.

    -
  • +
    + linux
    -
  • -

    add a check in - start_color to limit color-pairs to 256 when extended - colors are not supported.

    -
  • +
    + - +
    -
  • -

    Resizing the screen:

    +
    + pccon entries
    +
      -
    • -

      propagate error-returns from wresize, i.e., the - internal increase_size and decrease_size functions - through - resize_term.

      -
    • +
    • fixed some inconsistencies in the + pccon* entries
    • -
    • -

      add check for zero/negative dimensions for - resizeterm and resize_term.

      -
    • +
    • add bold to pccon+sgr+acs and + pccon-base
    • -
    • -

      modify resizeterm to always push a - KEY_RESIZE onto the fifo, even if screensize - is unchanged. Modify library to push a - KEY_RESIZE if there was a SIGWINCH, even if - it does not call resizeterm). These changes - eliminate the case where a SIGWINCH is received, but ERR - is returned from wgetch or - wgetnstr because the screen dimensions did - not change.

      -
    • +
    • add keys f12-f124 to pccon+keys
    -
  • + -
  • -

    Low-level interfaces

    +
    + tmux
    +
      -
    • -

      fix an old bug in the termcap emulation; - “%i” was ignored in - tparm because the parameters to be - incremented were already on the internal stack.

      -
    • +
    • corrected sgr string, which used + screen's "standout" code rather than the + standard code.
    • -
    • -

      change “%l” behavior in tparm - to push the string length onto the stack rather than - saving the formatted length into the output buffer.

      -
    • +
    • add settings corresponding to xterm-keys + option to reflect upcoming change to make that option + "on" by default
    • -
    • -

      modify name-comparison for tgetstr, etc., to - accommodate legacy applications as well as to improve - compatbility with BSD 4.2 termcap implementations (see - note for 980725).

      -
    • +
    • uncanceled Ms
    -
  • + -
  • High-level interfaces +
    + vt100
    +
      -
    • -

      modify internal recursion in wgetch which - handles cooked mode to check if the call to - wgetnstr returned an error. This can happen - when both nocbreak and nodelay - are set, for instance (see note for 960418).

      -
    • +
    • modify vt100 rs2 string to reset + vt52 mode and scrolling regions
    • -
    • -

      add a check in internal function - waddch_nosync to ensure that tab characters - are treated as control characters; some broken locales - claim they are printable.

      -
    • +
    • corrected rs2 string for + vt100-nam
    • -
    • -

      modify menu library to ensure that a menu's top-row is - adjusted as needed to ensure that the current item is on - the screen

      -
    • +
    • made minor fixes for vt100+4bsd, e.g., + delay in sgr for consistency
    • +
    +
    -
  • -

    fix special case where double-width character - overwrites a single- width character in the first - column.

    -
  • +
    + vte
    + +
    + +
    + +
    + xterm
    + +
    + +
    +
    + +

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

    + + + +

    Documentation

    + +

    As usual, this release

    + + -

    Configuration changes

    +

    In particular,

    -

    Major - changes

    + -
    -

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

    -
    +

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

    -
    --enable-interop
    + -
  • Features of ncurses
  • +
  • Features of ncurses
  • -
  • Applications using ncurses
  • +
  • Applications using ncurses
  • Development activities