<div dir="auto"><div>New ncurses release. RSB should need updating</div><div dir="auto"><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">---------- Forwarded message ---------<br>From: <strong class="gmail_sendername" dir="auto">Thomas Dickey</strong> <span dir="auto"><<a href="mailto:dickey@his.com">dickey@his.com</a>></span><br>Date: Sun, Feb 16, 2020, 2:35 PM<br>Subject: [Hangout - NYLXS] ncurses 6.2<br>To:  <<a href="mailto:info-gnu@gnu.org">info-gnu@gnu.org</a>><br></div><br><br>                            Announcing ncurses 6.2<br>
<br>
Overview<br>
<br>
   The  ncurses  (new  curses)  library  is  a free software emulation of<br>
   curses  in  System  V  Release  4.0 (SVr4), and more. It uses terminfo<br>
   format,  supports  pads  and  color  and multiple highlights and forms<br>
   characters and function-key mapping, and has all the other SVr4-curses<br>
   enhancements  over  BSD curses. SVr4 curses became the basis of X/Open<br>
   Curses.<br>
<br>
   In  mid-June  1995,  the  maintainer of 4.4BSD curses declared that he<br>
   considered  4.4BSD curses obsolete, and encouraged the keepers of unix<br>
   releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses.<br>
<br>
   Since 1995, ncurses has been ported to many systems:<br>
     * It is used in almost every system based on the Linux kernel (aside<br>
       from some embedded applications).<br>
     * It  is  used  as the system curses library on OpenBSD, FreeBSD and<br>
       MacOS.<br>
     * It  is used in environments such as Cygwin and MinGW. The first of<br>
       these was EMX on OS/2 Warp.<br>
     * It is used (though usually not as the system curses) on all of the<br>
       vendor  unix  systems,  e.g.,  AIX,  HP-UX,  IRIX64, SCO, Solaris,<br>
       Tru64.<br>
     * It should work readily on any ANSI/POSIX-conforming unix.<br>
<br>
   The distribution includes the library and support utilities, including<br>
     * captoinfo, a termcap conversion tool<br>
     * clear, utility for clearing the screen<br>
     * infocmp, the terminfo decompiler<br>
     * tabs, set tabs on a terminal<br>
     * tic, the terminfo compiler<br>
     * toe, list (table of) terminfo entries<br>
     * tput,  utility  for  retrieving  terminal  capabilities  in  shell<br>
       scripts<br>
     * tset, to initialize the terminal<br>
<br>
   Full manual pages are provided for the library and tools.<br>
<br>
   The ncurses distribution is available at ncurses' homepage:<br>
<br>
     <a href="ftp://ftp.invisible-island.net/ncurses/" rel="noreferrer noreferrer" target="_blank">ftp://ftp.invisible-island.net/ncurses/</a> or<br>
     <a href="https://invisible-mirror.net/archives/ncurses/" rel="noreferrer noreferrer" target="_blank">https://invisible-mirror.net/archives/ncurses/</a> .<br>
<br>
   It is also available via anonymous FTP at the GNU distribution site<br>
<br>
     <a href="ftp://ftp.gnu.org/gnu/ncurses/" rel="noreferrer noreferrer" target="_blank">ftp://ftp.gnu.org/gnu/ncurses/</a> .<br>
<br>
Release Notes<br>
<br>
   These notes are for ncurses 6.2, released February 12, 2020.<br>
<br>
   This  release  is  designed  to  be source-compatible with ncurses 5.0<br>
   through  6.1; providing extensions to the application binary interface<br>
   (ABI).  Although  the  source  can  still be configured to support the<br>
   ncurses  5  ABI, the reason for the release is to reflect improvements<br>
   to the ncurses 6 ABI and the supporting utility programs.<br>
<br>
   There  are,  of  course,  numerous  other improvements, listed in this<br>
   announcement.<br>
<br>
   The  most  important  bug-fixes/improvements  dealt  with user-defined<br>
   capabilities  in terminal descriptions. The release notes also mention<br>
   some other bug-fixes, but are focused on new features and improvements<br>
   to existing features since ncurses 6.1 release.<br>
<br>
  Library improvements<br>
<br>
    New features<br>
<br>
   There are several new features:<br>
     * O_EDGE_INSERT_STAY  tells  the  form  library  to optionally delay<br>
       cursor movement on a field edge/boundary<br>
     * O_INPUT_FIELD  extension to form library allows a dynamic field to<br>
       shrink if the new limit is smaller than the current field size.<br>
     * added  exit_curses  and  exit_terminfo to replace internal symbols<br>
       for leak-checking.<br>
     * added curses_trace, to replace trace().<br>
<br>
   Additionally,  to  improve  performance other changes (and extensions)<br>
   are provided in this release:<br>
     * mouse  decoding  now handles shift/control/alt logic when decoding<br>
       xterm's 1006 mode<br>
     * ncurses  now  defines a limit for wgetnstr, wgetn_wstr when length<br>
       is negative or "too large".<br>
     * reordered  loop-limit checks in winsnstr in case the string has no<br>
       terminating null and only the number of characters is used.<br>
     * there  is  now  no  buffer-size  limit  when  reading the $TERMCAP<br>
       variable.<br>
     * the  $TERMCAP  variable  may  be  interpreted  as  a fallback to a<br>
       terminfo entry<br>
     * mvcur  now decides whether to use hard-tabs, using xt, tbc and hts<br>
       as clues.<br>
     * extended  colors  are  improved  by  modifying an internal call to<br>
       vid_puts  to pass extended color pairs e.g., from tty_update.c and<br>
       lib_mvcur.c<br>
     * the  initialization  functions  now  avoid relying upon persistent<br>
       data for the result from getenv<br>
     * scrolling is improved:<br>
          + a limit check in newline_forces_scroll handles the case where<br>
            the row is inside scroll-margins, but not at the end.<br>
          + improved loop limits in _nc_scroll_window handle a case where<br>
            the scrolled data is a pad which is taller than the window.<br>
<br>
    Other improvements<br>
<br>
   These are revised features:<br>
     * used  "const"  in  some prototypes rather than NCURSES_CONST where<br>
       X/Open  Curses  was updated to do this, e.g., wscanw, newterm, the<br>
       terminfo  interface.  Also  use  "const"  for  consistency  in the<br>
       termcap interface, which was withdrawn by X/Open Curses in Issue 5<br>
       (2007).  As  of  Issue  7,  X/Open  Curses still lacks "const" for<br>
       certain return values, e.g., keyname.<br>
     * modified  wbkgd  and  wbkgrnd  to  improve compatibility with SVr4<br>
       curses,  changing the way the window rendition is updated when the<br>
       background character is modified<br>
     * improved  terminfo  write/read by modifying the fourth item of the<br>
       extended  header  to  denote  the  number  of valid strings in the<br>
       extended string table (see term(5)).<br>
     * modified   the   initialization  checks  for  mouse  so  that  the<br>
       xterm+sm+1006  block  will  work  with  terminal  descriptions not<br>
       mentioning xterm.<br>
<br>
   These were done to limit or ultimately deprecate features:<br>
     * deprecated  safe-sprintf, since the vsnprintf function, which does<br>
       what was needed, was standardized long ago.<br>
     * marked   vwprintw  and  vwscanw  as  deprecated;  recommend  using<br>
       vw_printw and vw_scanw, respectively.<br>
     * added  deprecation warnings for internal functions called by older<br>
       versions of tack.<br>
     * removed unused _nc_import_termtype2 function.<br>
<br>
   These are improvements to existing features:<br>
     * check parameter of set_escdelay, return ERR if negative.<br>
     * check  parameter  of  set_tabsize,  return ERR if not greater than<br>
       zero<br>
     * correct  a status-check in _nc_read_tic_entry() so that if reading<br>
       a hex/b64 $TERMINFO, and the $TERM does not match, fall-through to<br>
       the compiled-in search list.<br>
     * amend check for repeat_char to handle a case where setlocale() was<br>
       called after initscr<br>
     * move macro for is_linetouched inside NCURSES_NOMACROS ifndef.<br>
     * use _nc_copy_termtype2 rather than direct assignment in setupterm,<br>
       in   case   it   is  called  repeatedly  using  fallback  terminfo<br>
       descriptions<br>
     * improve   workaround   for  Solaris  wcwidth  versus  line-drawing<br>
       characters<br>
     * add  checks  in repair_subwindows to keep the current position and<br>
       scroll-margins inside the resized subwindow.<br>
     * correct  a  buffer-limit  in  write_entry.c  for  systems that use<br>
       caseless filenames.<br>
     * improved build-time utility report_offsets:<br>
          + add categories, e.g., "w" for wide-character, "t" for threads<br>
            to  make the report more readable. Reorganized the structures<br>
            reported to make the categories more apparent.<br>
          + add  NCURSES_GLOBALS  and NCURSES_PRESCREEN to report to show<br>
            how similar the different libtinfo configurations are.<br>
     * modified  some header files to ensure that those include necessary<br>
       files except for the previously-documented cases<br>
     * added  some  traces  in  initialization to show whether a fallback<br>
       entry is used.<br>
     * made minor optimization to reduce calls to _nc_reserve_pairs<br>
<br>
   These are corrections to existing features:<br>
     * fix  a  special  case  in  PutAttrChar  where  a cell is marked as<br>
       alternate-character  set,  but  the  terminal  does  not  actually<br>
       support the given graphic character. This would happen in an older<br>
       terminal such as vt52, which lacks most line-drawing capability.<br>
     * corrected  flag  for "seq" method of db 1.8.5 interface, needed by<br>
       toe on some of the BSDs.<br>
     * modify  comparison  in  make_hash.c  to  correct a special case in<br>
       collision handling for Caps-hpux11<br>
     * add    extended_slk_color{,_sp}   symbols   to   the   appropriate<br>
       package/*.{map,sym} files<br>
     * modify  lib_setup  to  avoid  calling pthread_self() without first<br>
       verifying that the address is valid, i.e., for weak symbols<br>
     * add  a  couple  of  broken-linker symbols to the list of versioned<br>
       symbols to help with link-time optimization versus weak symbols.<br>
<br>
  Program improvements<br>
<br>
   Several improvements were made to the utility programs:<br>
<br>
   clear<br>
<br>
          + improved  logic  for  clearing with the E3 extension, in case<br>
            the  terminal  scrolls  content  onto  its saved-lines before<br>
            actually  clearing  the  display, by clearing the saved-lines<br>
            after clearing the display<br>
<br>
   infocmp<br>
<br>
          + omit  filtering  of  "OTxx" names which are used for obsolete<br>
            capabilities,  when  the output is sorted by long-names. This<br>
            change helps when making a table of the short/long capability<br>
            names.<br>
<br>
   tic<br>
<br>
          + added   check   for   consistent   alternate   character  set<br>
            capabilities.<br>
          + added check for paired indn/rin.<br>
          + added check for terminals with parm_dch vs parm_ich.<br>
          + added  check  for  the  case  where setf/setb are given using<br>
            different   strings,   but   provide   identical  results  to<br>
            setaf/setab.<br>
          + corrected check for ich1.<br>
          + changed  a  too-large  terminal entry from a fatal error to a<br>
            warning.<br>
<br>
   toe<br>
<br>
          + ignores  any  hex/b64 $TERMINFO value in the list of terminfo<br>
            databases.<br>
<br>
   tset<br>
<br>
          + replace  check  in reset command for obsolete "pt" capability<br>
            using tbc and hts capabilities as clues<br>
          + modify reset to allow for tabstops at intervals other than 8.<br>
          + change   reset's   behavior   for  margins  to  simply  clear<br>
            soft-margins  if  possible,  rather  than  clearing  and then<br>
            setting them according to the terminal's width.<br>
<br>
   tput<br>
<br>
          + add "x" to getopt string so that "tput -x clear" works.<br>
<br>
   Several  changes were made to the generated ncurses*config scripts and<br>
   the   analogous   ".pc"   files  to  reduce  differences  between  the<br>
   configurations they report:<br>
     * modified the ncurse*-config and pc-files to more closely match for<br>
       the -I and -l options.<br>
     * filtered out linker-specs from the --libs report.<br>
     * amended  the ncurses*-config and pc-files to take into account the<br>
       rpath hack which differed between those files.<br>
     * modified  generated  ncurses*config  and  ncurses.pc, ncursesw.pc,<br>
       etc., to list helper libraries such as gpm for static linking.<br>
<br>
    Examples<br>
<br>
   Along  with  the  library and utilities, improvements were made to the<br>
   ncurses-examples.  Most  of  this  activity  aimed  at  improving  the<br>
   test-packages.  A few changes are more generally useful, e.g., for the<br>
   main   ncurses  test-program,  and  for  analyzing  traces  using  the<br>
   tracemunch script:<br>
     * improve  recovery  from  error  when  reading command-character in<br>
       test/ncurses.c, showing the relevant error message and not exiting<br>
       on EINTR.<br>
     * improve  tracemunch,  by keeping track of TERMINAL* values, and if<br>
       tracing  was first turned on after initialization, attempt to show<br>
       distinct screen, window and terminal names anyway.<br>
     * modify tracemunch to accept filename parameters in addition to use<br>
       as a pipe/filter.<br>
     * update  tracemunch  to  work  with  perl 5.26.2, which changed the<br>
       rules for escaping regular expressions.<br>
     * add some checks in tracemunch for undefined variables.<br>
     * modify TurnOn/TurnOff macros (in lib_vidattr.c and lib_vid_attr.c)<br>
       to avoid expansion of "CUR" in trace.<br>
<br>
   There are other new demo/test programs and reusable examples:<br>
<br>
   color_content<br>
          Demonstrate   the   color_content   and  extended_color_content<br>
          functions.<br>
<br>
   demo_tabs<br>
          A simple demo of tabs in curses.<br>
<br>
   dump_window<br>
          A  portable  curses screen-dump, used to compare ncurses screen<br>
          contents with Solaris.<br>
<br>
   pair_content<br>
          Demonstrate    the   pair_content   and   extended_pair_content<br>
          functions.<br>
<br>
   report_hashing<br>
          Check hash-tables used for terminfo and termcap names.<br>
<br>
   parse_rgb<br>
          Sample   implementation  of  the  ncurses  RGB  extension  from<br>
          user_caps.5, used in picsmap and savescreen programs.<br>
<br>
   A  variety  of  improvements  were made to existing programs, both new<br>
   features  as  well  as  options added to make the set of programs more<br>
   consistent.<br>
     * add  "-l"  option to test/background, to dump screen contents in a<br>
       form that lets different curses implementations be compared.<br>
     * add  "@"  command  to  test/ncurses F-test, to allow rapid jump to<br>
       different character pages.<br>
     * added enum, regex examples to test/demo_forms<br>
     * amend  Scaled256() macro in test/picsmap.c to cover the full range<br>
       0..1000<br>
     * corrected  pathname used in Ada95 sample programs for explain.txt,<br>
       to  work  with  test-packages, and used an awk script to split the<br>
       resulting pathname when it would be too long for a single line.<br>
     * ignore  interrupted  system-call  in  test/ncurses's command-line,<br>
       e.g., if the terminal were resized.<br>
     * improved  ifdef's  for  TABSIZE  variable,  to  help with AIX/HPUX<br>
       ports.<br>
<br>
  Terminal database<br>
<br>
   There are several new terminal descriptions:<br>
<br>
     alacritty,  domterm,  kitty,  mintty,  mintty-direct,  ms-terminal,<br>
     n7900,   nsterm-build309,  nsterm-direct,  screen5,  ti703,  ti707,<br>
     ti703-w, ti707-w vscode, vscode-direct, xterm-mono, xterm.js<br>
<br>
   There  are  many  changes to existing terminal descriptions. Some were<br>
   updates to several descriptions:<br>
     * use ansi+rep in a dozen places<br>
     * add rs1 to konsole, mlterm<br>
     * improve several flash capabilities with trailing mandatory delays<br>
     * drop   ich1   from   rxvt-basic,   Eterm  and  mlterm  to  improve<br>
       compatibility with old non-curses programs<br>
     * add/use xterm+keypad in xterm-new<br>
     * use xterm+sl-twm for consistency, nine places<br>
     * improve xm example in xterm+x11mouse and xterm+sm_1006.<br>
<br>
   while  others  affected specific descriptions. These were retested, to<br>
   take into account changes by their developers:<br>
<br>
     terminator, st<br>
<br>
   while  these are specific fixes based on reviewing documentation, user<br>
   reports, or warnings from tic:<br>
<br>
   adds200:<br>
<br>
          + fix typo<br>
<br>
   gnome-256color<br>
<br>
          + base entry on "gnome", not "vte", for consistency<br>
<br>
   interix<br>
<br>
          + trim unnecessary setf/setb<br>
<br>
   linux-16color<br>
<br>
          + accommodate  Linux  console driver incompatibility introduced<br>
            in early 2018<br>
<br>
   nsterm-256color:<br>
<br>
          + add nsterm-build309 to replace nsterm-256color, assigning the<br>
            latter  as  an  alias  of  nsterm,  to  make  mouse work with<br>
            nsterm-256color<br>
<br>
   regent40:<br>
<br>
          + renumber function-keys to match manual<br>
<br>
   regent60:<br>
<br>
          + add cd (clr_eos)<br>
          + corrected acsc<br>
          + add shifted function-keys<br>
<br>
   tvi950:<br>
<br>
          + added  function-key  definitions  to agree with Televideo 950<br>
            manual<br>
          + corrected acsc<br>
          + remove bogus kf0<br>
          + add bel<br>
<br>
   tvi955:<br>
<br>
          + fix typo<br>
<br>
   vi200:<br>
<br>
          + add acsc string, including right/down-arrow<br>
<br>
   wy50:<br>
<br>
          + corrected acsc<br>
<br>
   wy50 and wy60:<br>
<br>
          + add shifted function-keys as kF1 to kF16<br>
<br>
   xterm+x11hilite:<br>
<br>
          + eliminate unused p5 parameter.<br>
<br>
   A few entries use extensions (user-defined terminal capabilities):<br>
     * use  xterm+sm+1006  (aka  "SGR  1006  mouse") for konsole-base and<br>
       putty<br>
     * add Smol/Rmol user-defined capability to tmux and vte-2018<br>
     * add Smulx user-defined capability to tmux, vte-2018<br>
<br>
  Documentation<br>
<br>
   As usual, this release<br>
     * improves documentation by describing new features,<br>
     * attempts  to  improve the description of features which users have<br>
       found confusing<br>
     * fills  in overlooked descriptions of features which were described<br>
       in the NEWS file but treated sketchily in manual pages.<br>
<br>
   In  addition  to  providing  background  information  to explain these<br>
   features   and   show   how   they  evolved,  there  are  corrections,<br>
   clarifications, etc.:<br>
     * Corrections:<br>
          + correct  error-returns  listed in manual pages for a few form<br>
            functions<br>
          + corrected  prototypes  in  several  manpages  using script to<br>
            extract those in compilable form.<br>
          + fix typo in term.5, improve explanation of format<br>
     * Clarify in manual pages that vwprintw and vwscanw are obsolete.<br>
       They have not been part of X/Open Curses since 2007.<br>
     * New/improved history and portability sections:<br>
          + curs_addch.3x gives some background for ACS symbols.<br>
          + curs_getcchar.3x  explains  a  difference between ncurses and<br>
            X/Open Curses.<br>
          + curs_getstr.3x  gives  historical/portability  background for<br>
            the length parameter of wgetnstr.<br>
          + curs_slk.3x  lists  a few differences between SVr4 curses and<br>
            X/Open Curses for soft-keys.<br>
          + curs_terminfo.3x  explains that the initial implementation of<br>
            terminfo  in  SVr2 was mostly replaced by other developers in<br>
            SVr3.<br>
          + infocmp.1  explains  that the initial version of terminfo had<br>
            no  tool  for decompiling descriptions. That came later, with<br>
            SVr3, with a different developer.<br>
          + tabs.1 tells more than you wanted to know about the tool.<br>
          + tic.1  explains  that  the  initial version of terminfo had a<br>
            rudimentary  tool  (based  on termcap) for compiling entries.<br>
            The tool used with Unix was developed by others for SVr3.<br>
          + toe.1 explains the origin of this tool.<br>
     * Improvements for user_caps.5:<br>
          + mention meml, memu and box1<br>
          + expanded description of XM<br>
          + add a clarification regarding the RGB capability.<br>
          + mention user_caps.5 in the tic and infocmp manual pages.<br>
     * Other improvements:<br>
          + curs_add_wch.3x  adds  note about Unicode terminology for the<br>
            line-drawing characters.<br>
          + curs_color.3x   improves  discussion  of  error  returns  and<br>
            extensions.<br>
          + curs_mouse.3x  explains how the kmous and XM capabilities are<br>
            used for xterm-mouse input.<br>
          + curs_refresh.3x  improves documentation regarding the virtual<br>
            and physical screens.<br>
          + curs_util.3x  mentions  a  difference between SVr4 and X/Open<br>
            Curses for unctrl.h<br>
          + curs_variables.3x   improves  description  of  the  init_tabs<br>
            capability and TABSIZE variable.<br>
          + ncurses.3x   improves  documentation  regarding  feature-test<br>
            macros in curses.h<br>
          + resizeterm.3x   about   top-level  windows  which  touch  the<br>
            screen's borders.<br>
          + tput.1 clarifies how tput determines the terminal size.<br>
<br>
   There  are  no new manual pages (all of the manual page updates are to<br>
   existing pages).<br>
<br>
   Some  of  the  improvements  are  more subtle, relating to the way the<br>
   information  is presented. For instance, the generated terminfo.5 file<br>
   uses  a  different  table  layout,  allowing  it  to use space on wide<br>
   terminals more effectively.<br>
<br>
  Interesting bug-fixes<br>
<br>
   While  there  were  many bugs fixed during development of ncurses 6.2,<br>
   only  a  few  (the  reason  for  this release) were both important and<br>
   interesting. Most of the bug-fixes were for local issues which did not<br>
   affect  compatibility across releases. Since those are detailed in the<br>
   NEWS file no elaboration is needed here.<br>
<br>
   The  interesting  bugs  were in tic/infocmp's handling of user-defined<br>
   capabilities.  These  were  not recent bugs. Initially it was a simple<br>
   problem:<br>
     * The  user-defined capabilities can be any type (boolean, number or<br>
       string),  but  once given a type all uses of the name must conform<br>
       to  that  type--unless  some  special  support  for  a  particular<br>
       multi-typed name is built into ncurses.<br>
     * One of simpleterm's contributors copied some definitions for using<br>
       tmux's user-defined capabilities in late in 2016.<br>
<br>
diff --git a/<a href="http://st.info" rel="noreferrer noreferrer" target="_blank">st.info</a> b/<a href="http://st.info" rel="noreferrer noreferrer" target="_blank">st.info</a><br>
@@ -185,7 +185,10 @@ st| simpleterm,<br>
  tsl=\E]0;,<br>
  xenl,<br>
  vpa=\E[%i%p1%dd,<br>
-<br>
+# Tmux unofficial extensions, see TERMINFO EXTENSIONS in tmux(1)<br>
+ Se,<br>
+ Ss,<br>
+ Tc,<br>
<br>
 st-256color| simpleterm with 256 colors,<br>
  use=st,<br>
<br>
     * Later,  in (referring to a version from mid-2017), a user asked to<br>
       have it updated in ncurses.<br>
     * However,  it  had  an  error  from  the  change  in late 2016. The<br>
       terminal description made what tmux expected to be string actually<br>
       a boolean.<br>
       Over  the  years,  there  were  problems with each of simpleterm's<br>
       terminal  descriptions.  I  repaired those, and usually dealt with<br>
       the problem.<br>
     * The  difference  in this case was that when compiling the terminal<br>
       database, tic may have in memory the definitions for more than one<br>
       terminal  description  (so  that  it  can resolve "use=" clauses).<br>
       Seeing   two  different  types  for  the  same  name,  in  certain<br>
       situations  it  would  incorrectly merge the symbol tables for the<br>
       two terminal descriptions.<br>
     * On  simpleterm's  side,  their bug was finally fixed in late 2019,<br>
       three years after the bug was created.<br>
<br>
   For  ncurses,  the  elapsed  time  to fix this bug was less than three<br>
   years.  Someone reported a problem with the terminal description a few<br>
   weeks  after  releasing  ncurses 6.1 (in tmux #1264), and the terminal<br>
   description was updated that week (ncurses patch 20180224):<br>
<br>
20180224<br>
        + modify _nc_resolve_uses2() to detect incompatible types when merging<br>
          a "use=" clause of extended capabilities.  The problem was seen in a<br>
          defective terminfo integrated from simpleterm sources in 20171111,<br>
          compounded by repair in 20180121.<br>
        + correct Ss/Ms interchange in st-0.7 entry (tmux #1264) -TD<br>
<br>
   The larger part of that change added a check to prevent a simple merge<br>
   of  terminal  descriptions  where  the same user-defined name was used<br>
   with different types. But it raised some questions:<br>
     * Was  there  a  reliable  way to manage terminal descriptions which<br>
       used the same extended name in different ways?<br>
     * Should  ncurses  provide  a registry of well-known extended names,<br>
       with their types?<br>
<br>
   Since  the  correction to terminfo.src could have been readily adopted<br>
   by  packagers,  there  was  nothing  more  to  be  done  from ncurses'<br>
   standpoint  on that part. But improving ncurses to prevent issues like<br>
   that is the reason for making a release.<br>
<br>
   Nothing  more  (constructive) was mentioned with regard to simpleterm.<br>
   But  a  few  problems  were  found  in  the  handling  of user-defined<br>
   capabilities:<br>
     * Forward-references to user-defined capabilities in a "use=" clause<br>
       did  not  allocate  new  data  for  each  use.  In tic, successive<br>
       compilation   of   terminal   entries   could   add   user-defined<br>
       capabilities to the wrong terminal entry.<br>
       This  was  not noticed before, since xterm's terminal descriptions<br>
       were  the main users of the feature, and almost all of the uses of<br>
       the building-blocks which contained user-defined capabilities were<br>
       backward-references.<br>
     * There  is  one  (documented)  case  where  ncurses  6.1 supports a<br>
       user-defined  capability that could be any type (i.e., "RGB"). The<br>
       check  added  in February 2018 to guard against mismatches did not<br>
       handle all of the combinations needed.<br>
<br>
   Both  of  these  issues  dated  from  the  original  implementation of<br>
   user-defined  capabilities.  Fixing  them does not change the terminal<br>
   database, but a older tic without the fixes will not be able to handle<br>
   terminfo  sources  which rely upon those fixes. Starting in June 2019,<br>
   the  download  link  for  the  terminfo source file was capped at that<br>
   date. The development sources have an up-to-date copy of the file, for<br>
   people with a legitimate need for it.<br>
<br>
   The  "-c"  (check) option of tic is not very useful if it cannot offer<br>
   advice on parameters needed for user-defined capabilities. The various<br>
   Caps  files  were  reorganized to reduce redundancy, and in the common<br>
   portion  (Caps-ncurses),  a  registry  of user-defined capabilities is<br>
   provided for use by tic. While users can still define their own custom<br>
   capabilities,  tic  will not offer any advice when their parameters do<br>
   not match.<br>
<br>
   In  ncurses  6.2, tic makes a special check to allow any type for RGB,<br>
   but  its  being  able to do this relies upon fixes made in the ncurses<br>
   library in mid-2019.<br>
<br>
  Configuration changes<br>
<br>
    Major changes<br>
<br>
   There  are  no  major  changes. Several new options were added to ease<br>
   integration  of packages with systems using different versions of GNAT<br>
   and ncurses. Also, improvements were made to configure checks.<br>
<br>
    Configuration options<br>
<br>
   There are a few new/modified configure options:<br>
<br>
   --with-config-suffix<br>
          helps  work  around  a  filename  conflict with Debian packages<br>
          versus test-packages.<br>
<br>
   --with-ada-libname<br>
          allows  one  to  rename  the  "AdaCurses" library (at least one<br>
          packager prefers a lowercase name).<br>
<br>
   --with-fallbacks<br>
          now ensures there is a value, and adds the fallback information<br>
          to top-level Makefile summary.<br>
<br>
   --with-pcre2<br>
          check for pcre-posix library to help with MinGW port.<br>
<br>
   --with-tic-path and<br>
<br>
   --with-infocmp-path<br>
          help  work  around  problems  building  fallback  source  using<br>
          pre-6.0 tic/infocmp.<br>
<br>
   --with-versioned-syms<br>
          option value can now be a relative pathname.<br>
<br>
  Portability<br>
<br>
   Many  of  the  portability  changes  are implemented via the configure<br>
   script:<br>
     * ignore $TERMINFO as a default value in configure script if it came<br>
       from the infocmp -Q option.<br>
     * distinguish  gcc  from  icc  and  clang when the --enable-warnings<br>
       option   is   not   used,  to  avoid  unnecessary  warnings  about<br>
       unrecognized inline options<br>
     * consistently  prepend  new  libraries  as  they  are  found during<br>
       configuration,  rather  than  relying  upon  the linker to resolve<br>
       order dependencies of libraries.<br>
     * modified  configure  scripts  to  reduce  relinking/ranlib  during<br>
       library install :<br>
          + use  "install -p" when available, to avoid need for ranlib of<br>
            static libraries.<br>
          + scripts which use "--disable-relink;" add a 1-second sleep to<br>
            work around tools which use whole-second timestamps, e.g., in<br>
            utime rather than the actual file system resolution.<br>
     * add configure check for getenv to work around implementation shown<br>
       in  Emscripten  which overwrites the previous return value on each<br>
       call.<br>
       Use  that  to optionally suppress START_TRACE macro, whose call to<br>
       getenv may not work properly<br>
     * change  target configure level for _XOPEN_SOURCE to 600 to address<br>
       use of vsscanf and setenv.<br>
     * reduce  use of _GNU_SOURCE for current glibc where _DEFAULT_SOURCE<br>
       combines with _XOPEN_SOURCE<br>
       Allow  for  Cygwin's  newlib when checking for the _DEFAULT_SOURCE<br>
       symbol.<br>
       MidnightBSD   is   now   checked   for  the  _XOPEN_SOURCE-related<br>
       definitions.<br>
     * If the check for va_copy or __va_copy fails,<br>
          + configure  now  tries copying the pointers for va_list, or as<br>
            an array.<br>
          + alternatively, it checks for __builtin_va_copy(), which could<br>
            be used with AIX xlc in c89 mode.<br>
     * several changes to support a port to Ultrix 3.1:<br>
          + check if "b" binary feature of fopen works<br>
          + check for missing feature of locale.h<br>
          + add fallback for strstr() in test-programs<br>
          + add fallback for STDOUT_FILENO in test-programs<br>
     * The test/configure script (used for ncurses-examples) is improved:<br>
          + work around non-ncurses termcap.h file, e.g., in Slackware.<br>
          + check for TABSIZE variable.<br>
          + checks  for  the  X11/Intrinsic.h  header, accommodate recent<br>
            MacOS changes which largely emptied /usr/include.<br>
<br>
   Here are some of the other portability fixes:<br>
     * added  dummy  "check"  rule  in  top-level  and  test-Makefile  to<br>
       simplify building test-packages for ArchLinux.<br>
     * dropped   library-dependency   on  psapi  for  MinGW  port,  since<br>
       win_driver.c   defines   PSAPI_VERSION   to   2,   making  it  use<br>
       GetProcessImageFileName from kernel32.dll<br>
     * made  build-fixes  for  configuration  using --program-suffix with<br>
       Ada95,  noticed  with  MacOS  but  applicable  to  other platforms<br>
       without libpanelw, etc.<br>
     * modified  ncurses/Makefile.in  to  fix a case where Debian/testing<br>
       changes to the ld --as-needed configuration broke ncurses-examples<br>
       test packages.<br>
     * used   _WIN32/_WIN64   in  preference  to  __MINGW32__/__MINGW64__<br>
       symbols  to simplify building with Microsoft Visual C++, since the<br>
       former are defined in both compiler configurations.<br>
     _________________________________________________________________<br>
<br>
Features of ncurses<br>
<br>
   The  ncurses  package  is  fully upward-compatible with SVr4 (System V<br>
   Release 4) curses:<br>
     * All of the SVr4 calls have been implemented (and are documented).<br>
     * ncurses  supports  all  of  the for SVr4 curses features including<br>
       keyboard  mapping,  color,  forms-drawing with ACS characters, and<br>
       automatic recognition of keypad and function keys.<br>
     * ncurses  provides  these SVr4 add-on libraries (not part of X/Open<br>
       Curses):<br>
          + the  panels  library,  supporting  a  stack  of  windows with<br>
            backing store.<br>
          + the   menus   library,  supporting  a  uniform  but  flexible<br>
            interface for menu programming.<br>
          + the   form   library,   supporting  data  collection  through<br>
            on-screen forms.<br>
     * ncurses's  terminal database is fully compatible with that used by<br>
       SVr4 curses.<br>
          + ncurses  supports user-defined capabilities which it can see,<br>
            but  which are hidden from SVr4 curses applications using the<br>
            same terminal database.<br>
          + It  can  be optionally configured to match the format used in<br>
            related systems such as AIX and Tru64.<br>
          + Alternatively,  ncurses  can  be  configured  to  use  hashed<br>
            databases  rather  than  the  directory of files used by SVr4<br>
            curses.<br>
     * The ncurses utilities have options to allow you to filter terminfo<br>
       entries for use with less capable curses/terminfo versions such as<br>
       the HP/UX and AIX ports.<br>
<br>
   The ncurses package also has many useful extensions over SVr4:<br>
     * The  API  is 8-bit clean and base-level conformant with the X/OPEN<br>
       curses  specification, XSI curses (that is, it implements all BASE<br>
       level  features,  and  most  EXTENDED  features). It includes many<br>
       function calls not supported under SVr4 curses (but portability of<br>
       all calls is documented so you can use the SVr4 subset only).<br>
     * Unlike  SVr3 curses, ncurses can write to the rightmost-bottommost<br>
       corner  of  the  screen  if  your terminal has an insert-character<br>
       capability.<br>
     * Ada95 and C++ bindings.<br>
     * Support  for mouse event reporting with X Window xterm and FreeBSD<br>
       and OS/2 console windows.<br>
     * Extended mouse support via Alessandro Rubini's gpm package.<br>
     * The  function  wresize  allows  you  to resize windows, preserving<br>
       their data.<br>
     * The  function  use_default_colors allows you to use the terminal's<br>
       default colors for the default color pair, achieving the effect of<br>
       transparent colors.<br>
     * The functions keyok and define_key allow you to better control the<br>
       use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by<br>
       defining  more  than  one  control  sequence to map to a given key<br>
       code.<br>
     * Support for 256-color terminals, such as modern xterm.<br>
     * Support for 16-color terminals, such as aixterm and modern xterm.<br>
     * Better  cursor-movement  optimization.  The package now features a<br>
       cursor-local-movement computation more efficient than either BSD's<br>
       or System V's.<br>
     * Super   hardware   scrolling   support.   The  screen-update  code<br>
       incorporates  a novel, simple, and cheap algorithm that enables it<br>
       to  make  optimal  use  of hardware scrolling, line-insertion, and<br>
       line-deletion  for  screen-line  movements. This algorithm is more<br>
       powerful than the 4.4BSD curses quickch routine.<br>
     * Real  support  for  terminals  with  the  magic-cookie glitch. The<br>
       screen-update  code  will  refrain from drawing a highlight if the<br>
       magic-   cookie  unattributed  spaces  required  just  before  the<br>
       beginning  and  after the end would step on a non-space character.<br>
       It  will  automatically  shift  highlight boundaries when doing so<br>
       would  make it possible to draw the highlight without changing the<br>
       visual appearance of the screen.<br>
     * It  is  possible to generate the library with a list of pre-loaded<br>
       fallback  entries linked to it so that it can serve those terminal<br>
       types  even  when  no  terminfo tree or termcap file is accessible<br>
       (this  may  be useful for support of screen-oriented programs that<br>
       must run in single-user mode).<br>
     * The tic/captoinfo utility provided with ncurses has the ability to<br>
       translate  many  termcaps  from  the XENIX, IBM and AT&T extension<br>
       sets.<br>
     * A BSD-like tset utility is provided.<br>
     * The ncurses library and utilities will automatically read terminfo<br>
       entries  from  $HOME/.terminfo  if  it exists, and compile to that<br>
       directory  if  it  exists  and the user has no write access to the<br>
       system  directory.  This feature makes it easier for users to have<br>
       personal  terminfo  entries without giving up access to the system<br>
       terminfo directory.<br>
     * You  may  specify  a  path  of  directories to search for compiled<br>
       descriptions  with  the  environment  variable TERMINFO_DIRS (this<br>
       generalizes  the  feature  provided by TERMINFO under stock System<br>
       V.)<br>
     * In  terminfo  source files, use capabilities may refer not just to<br>
       other entries in the same source file (as in System V) but also to<br>
       compiled  entries  in  either the system terminfo directory or the<br>
       user's $HOME/.terminfo directory.<br>
     * The  table-of-entries  utility  toe makes it easy for users to see<br>
       exactly what terminal types are available on the system.<br>
     * The library meets the XSI requirement that every macro entry point<br>
       have  a  corresponding  function  which may be linked (and will be<br>
       prototype-checked)  if  the  macro  definition  is  disabled  with<br>
       #undef.<br>
     * Extensive  documentation  is  provided (see the Additional Reading<br>
       section of the ncurses FAQ for online documentation).<br>
<br>
Applications using ncurses<br>
<br>
   The  ncurses  distribution  includes  a  selection  of  test  programs<br>
   (including   a   few   games).   These  are  available  separately  as<br>
   ncurses-examples<br>
<br>
   The   ncurses   library  has  been  tested  with  a  wide  variety  of<br>
   applications including:<br>
<br>
   aptitude<br>
          FrontEnd to Apt, the debian package manager<br>
<br>
          <a href="https://wiki.debian.org/Aptitude" rel="noreferrer noreferrer" target="_blank">https://wiki.debian.org/Aptitude</a><br>
<br>
   cdk<br>
          Curses Development Kit<br>
<br>
          <a href="https://invisible-island.net/cdk/" rel="noreferrer noreferrer" target="_blank">https://invisible-island.net/cdk/</a><br>
<br>
   ded<br>
          directory-editor<br>
<br>
          <a href="https://invisible-island.net/ded/" rel="noreferrer noreferrer" target="_blank">https://invisible-island.net/ded/</a><br>
<br>
   dialog<br>
          the  underlying  application used in Slackware's setup, and the<br>
          basis   for  similar  install/configure  applications  on  many<br>
          systems.<br>
<br>
          <a href="https://invisible-island.net/dialog/" rel="noreferrer noreferrer" target="_blank">https://invisible-island.net/dialog/</a><br>
<br>
   lynx<br>
          the text WWW browser<br>
<br>
          <a href="https://lynx.invisible-island.net/" rel="noreferrer noreferrer" target="_blank">https://lynx.invisible-island.net/</a><br>
<br>
   mutt<br>
          mail utility<br>
<br>
          <a href="http://www.mutt.org/" rel="noreferrer noreferrer" target="_blank">http://www.mutt.org/</a><br>
<br>
   ncftp<br>
          file-transfer utility<br>
<br>
          <a href="https://www.ncftp.com/" rel="noreferrer noreferrer" target="_blank">https://www.ncftp.com/</a><br>
<br>
   nvi<br>
          New vi uses ncurses.<br>
<br>
          <a href="https://sites.google.com/a/bostic.com/keithbostic/vi" rel="noreferrer noreferrer" target="_blank">https://sites.google.com/a/bostic.com/keithbostic/vi</a><br>
<br>
   ranger<br>
          A console file manager with VI key bindings in Python.<br>
<br>
          <a href="https://ranger.github.io/" rel="noreferrer noreferrer" target="_blank">https://ranger.github.io/</a><br>
<br>
   tin<br>
          newsreader, supporting color, MIME<br>
<br>
          <a href="http://www.tin.org/" rel="noreferrer noreferrer" target="_blank">http://www.tin.org/</a><br>
<br>
   vifm<br>
          File manager with vi like keybindings<br>
<br>
          <a href="https://vifm.info/" rel="noreferrer noreferrer" target="_blank">https://vifm.info/</a><br>
<br>
   as well as some that use ncurses for the terminfo support alone:<br>
<br>
   minicom<br>
          terminal emulator for serial modem connections<br>
<br>
          <a href="https://alioth.debian.org/projects/minicom/" rel="noreferrer noreferrer" target="_blank">https://alioth.debian.org/projects/minicom/</a><br>
<br>
   mosh<br>
          a replacement for ssh.<br>
<br>
          <a href="https://mosh.mit.edu/" rel="noreferrer noreferrer" target="_blank">https://mosh.mit.edu/</a><br>
<br>
   tack<br>
          terminfo action checker<br>
<br>
          <a href="https://invisible-island.net/ncurses/tack.html" rel="noreferrer noreferrer" target="_blank">https://invisible-island.net/ncurses/tack.html</a><br>
<br>
   tmux<br>
          terminal multiplexor<br>
<br>
          <a href="https://github.com/tmux/tmux/wiki" rel="noreferrer noreferrer" target="_blank">https://github.com/tmux/tmux/wiki</a><br>
<br>
   vile<br>
          vi-like-emacs  may  be  built  to  use the terminfo, termcap or<br>
          curses interfaces.<br>
<br>
          <a href="https://invisible-island.net/vile/" rel="noreferrer noreferrer" target="_blank">https://invisible-island.net/vile/</a><br>
<br>
   and finally, those which use only the termcap interface:<br>
<br>
   emacs<br>
          text editor<br>
<br>
          <a href="https://www.gnu.org/software/emacs/" rel="noreferrer noreferrer" target="_blank">https://www.gnu.org/software/emacs/</a><br>
<br>
   less<br>
          The  most  commonly  used  pager  (a program that displays text<br>
          files).<br>
<br>
          <a href="http://www.greenwoodsoftware.com/less/" rel="noreferrer noreferrer" target="_blank">http://www.greenwoodsoftware.com/less/</a><br>
<br>
   screen<br>
          terminal multiplexor<br>
<br>
          <a href="https://www.gnu.org/software/screen/" rel="noreferrer noreferrer" target="_blank">https://www.gnu.org/software/screen/</a><br>
<br>
   vim<br>
          text editor<br>
<br>
          <a href="https://www.vim.org/" rel="noreferrer noreferrer" target="_blank">https://www.vim.org/</a><br>
<br>
Development activities<br>
<br>
   Zeyd  Ben-Halim  started  ncurses  from  a  previous  package pcurses,<br>
   written  by  Pavel  Curtis.  Eric  S.  Raymond  continued development.<br>
   Juergen Pfeifer wrote most of the form and menu libraries.<br>
<br>
   Ongoing development work is done by Thomas E. Dickey. Thomas E. Dickey<br>
   has  acted  as  the maintainer for the Free Software Foundation, which<br>
   holds  a  copyright on ncurses for releases 4.2 through 6.1. Following<br>
   the release of ncurses 6.1, effective as of release 6.2, copyright for<br>
   ncurses  reverted  to  Thomas  E.  Dickey  (see  the  ncurses  FAQ for<br>
   additional information).<br>
<br>
   Contact the current maintainers at<br>
<br>
     <a href="mailto:bug-ncurses@gnu.org" target="_blank" rel="noreferrer">bug-ncurses@gnu.org</a><br>
<br>
   To join the ncurses mailing list, please write email to<br>
<br>
     <a href="mailto:bug-ncurses-request@gnu.org" target="_blank" rel="noreferrer">bug-ncurses-request@gnu.org</a><br>
<br>
   containing the line:<br>
<br>
     subscribe <name>@<host.domain><br>
<br>
   This list is open to anyone interested in helping with the development<br>
   and testing of this package.<br>
<br>
   Beta versions of ncurses are made available at<br>
<br>
     <a href="ftp://ftp.invisible-island.net/ncurses/current/" rel="noreferrer noreferrer" target="_blank">ftp://ftp.invisible-island.net/ncurses/current/</a> and<br>
     <a href="https://invisible-mirror.net/archives/ncurses/current/" rel="noreferrer noreferrer" target="_blank">https://invisible-mirror.net/archives/ncurses/current/</a> .<br>
<br>
   Patches to the current release are made available at<br>
<br>
     <a href="ftp://ftp.invisible-island.net/ncurses/6.1/" rel="noreferrer noreferrer" target="_blank">ftp://ftp.invisible-island.net/ncurses/6.1/</a> and<br>
     <a href="https://invisible-mirror.net/archives/ncurses/6.1/" rel="noreferrer noreferrer" target="_blank">https://invisible-mirror.net/archives/ncurses/6.1/</a> .<br>
<br>
   There is an archive of the mailing list here:<br>
<br>
     <a href="http://lists.gnu.org/archive/html/bug-ncurses" rel="noreferrer noreferrer" target="_blank">http://lists.gnu.org/archive/html/bug-ncurses</a> (also https)<br>
<br>
Related resources<br>
<br>
   The  release notes make scattered references to these pages, which may<br>
   be interesting by themselves:<br>
     * ncurses licensing<br>
     * Symbol versioning in ncurses<br>
     * Comments on ncurses versus slang (S-Lang)<br>
     * tack - terminfo action checker<br>
     * tctest - termcap library checker<br>
     * Terminal Database<br>
<br>
Other resources<br>
<br>
   The  distribution  provides  a  newer  version  of the terminfo-format<br>
   terminal description file once maintained by Eric Raymond . Unlike the<br>
   older  version, the termcap and terminfo data are provided in the same<br>
   file, which also provides several user-definable extensions beyond the<br>
   X/Open specification.<br>
<br>
   You  can  find  lots  of  information  on  terminal-related topics not<br>
   covered  in  the  terminfo  file  at  Richard  Shuford's archive . The<br>
   collection of computer manuals at <a href="http://bitsavers.org" rel="noreferrer noreferrer" target="_blank">bitsavers.org</a> has also been useful.<br>
<br>
     * Overview<br>
     * Release Notes<br>
          + Library improvements<br>
               o New features<br>
               o Other improvements<br>
          + Program improvements<br>
               o Utilities<br>
               o Examples<br>
          + Terminal database<br>
          + Documentation<br>
          + Interesting bug-fixes<br>
          + Configuration changes<br>
               o Major changes<br>
               o Configuration options<br>
          + Portability<br>
     * Features of ncurses<br>
     * Applications using ncurses<br>
     * Development activities<br>
     * Related resources<br>
     * Other resources<br>
<br>
-- <br>
Thomas E. Dickey <<a href="mailto:dickey@invisible-island.net" target="_blank" rel="noreferrer">dickey@invisible-island.net</a>><br>
<a href="https://invisible-island.net" rel="noreferrer noreferrer" target="_blank">https://invisible-island.net</a><br>
<a href="ftp://ftp.invisible-island.net" rel="noreferrer noreferrer" target="_blank">ftp://ftp.invisible-island.net</a><br>
-- <br>
If you have a working or partly working program that you'd like<br>
to offer to the GNU project as a GNU package,<br>
see <a href="https://www.gnu.org/help/evaluation.html" rel="noreferrer noreferrer" target="_blank">https://www.gnu.org/help/evaluation.html</a>._______________________________________________<br>
Hangout mailing list<br>
<a href="mailto:Hangout@nylxs.com" target="_blank" rel="noreferrer">Hangout@nylxs.com</a><br>
<a href="http://lists.mrbrklyn.com/mailman/listinfo/hangout" rel="noreferrer noreferrer" target="_blank">http://lists.mrbrklyn.com/mailman/listinfo/hangout</a><br>
</div></div></div>