xref: /freebsd/contrib/ncurses/doc/html/announce.html (revision 6419bb52)
1<!--
2  $Id: announce.html,v 1.61 2020/02/09 21:26:51 tom Exp $
3  ****************************************************************************
4  * Copyright 2018-2019,2020 Thomas E. Dickey                                *
5  *                                                                          *
6  * Permission is hereby granted, free of charge, to any person obtaining a  *
7  * copy of this software and associated documentation files (the            *
8  * "Software"), to deal in the Software without restriction, including      *
9  * without limitation the rights to use, copy, modify, merge, publish,      *
10  * distribute, distribute with modifications, sublicense, and/or sell       *
11  * copies of the Software, and to permit persons to whom the Software is    *
12  * furnished to do so, subject to the following conditions:                 *
13  *                                                                          *
14  * The above copyright notice and this permission notice shall be included  *
15  * in all copies or substantial portions of the Software.                   *
16  *                                                                          *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
18  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
20  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
21  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
22  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
23  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
24  *                                                                          *
25  * Except as contained in this notice, the name(s) of the above copyright   *
26  * holders shall not be used in advertising or otherwise to promote the     *
27  * sale, use or other dealings in this Software without prior written       *
28  * authorization.                                                           *
29  ****************************************************************************
30-->
31<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
32
33<html>
34<head>
35  <meta name="generator" content=
36  "HTML Tidy for HTML5 for Linux version 5.2.0">
37
38  <title>Announcing ncurses 6.2</title>
39  <link rel="author" href="mailto:bug-ncurses@gnu.org">
40  <meta http-equiv="Content-Type" content=
41  "text/html; charset=us-ascii">
42  <style type="text/css">
43  p,li { max-width:700px; }
44  dd { max-width:630px; }
45  *.main-name {
46        font-style: italic;
47        font-variant: small-caps;
48  }
49  *.part-name {
50        font-family: "Andale Mono", "Monotype.com", monospace;
51        font-size: 12pt;
52        font-weight: bold;
53  }
54  *.demo-name {
55        font-family: "Andale Mono", "Monotype.com", monospace;
56        font-size: 10pt;
57  }
58  </style>
59</head>
60
61<body>
62  <h1 class="no-header">Announcing ncurses 6.2</h1>
63
64  <h2><a name="h2-overview" id="h2-overview">Overview</a></h2>
65
66  <p>The <span class="main-name">ncurses</span> (new curses)
67  library is a free software emulation of curses in System V
68  Release 4.0 (SVr4), and more. It uses terminfo format, supports
69  pads and color and multiple highlights and forms characters and
70  function-key mapping, and has all the other SVr4-curses
71  enhancements over BSD curses. SVr4 curses became the basis of
72  X/Open Curses.</p>
73
74  <p>In mid-June 1995, the maintainer of 4.4BSD curses declared
75  that he considered 4.4BSD curses obsolete, and encouraged the
76  keepers of <span class="main-name">unix</span> releases such as
77  BSD/OS, FreeBSD and NetBSD to switch over to <span class=
78  "main-name">ncurses</span>.</p>
79
80  <p>Since 1995, <span class="main-name">ncurses</span> has been
81  ported to many systems:</p>
82
83  <ul>
84    <li>It is used in almost every system based on the Linux kernel
85    (aside from some embedded applications).</li>
86
87    <li>It is used as the system curses library on OpenBSD, FreeBSD
88    and MacOS.</li>
89
90    <li>It is used in environments such as Cygwin and MinGW. The
91    first of these was EMX on OS/2 Warp.</li>
92
93    <li>It is used (though usually not as the <em>system</em>
94    curses) on all of the vendor <span class=
95    "main-name">unix</span> systems, e.g., AIX, HP-UX, IRIX64, SCO,
96    Solaris, Tru64.</li>
97
98    <li>It should work readily on any ANSI/POSIX-conforming
99    <span class="main-name">unix</span>.</li>
100  </ul>
101
102  <p>The distribution includes the library and support utilities,
103  including</p>
104
105  <ul>
106    <li><a href=
107    "https://invisible-island.net/ncurses/man/captoinfo.1m.html"><span class="part-name">
108    captoinfo</span></a>, a termcap conversion tool</li>
109
110    <li><a href=
111    "https://invisible-island.net/ncurses/man/clear.1.html"><span class="part-name">
112    clear</span></a>, utility for clearing the screen</li>
113
114    <li><a href=
115    "https://invisible-island.net/ncurses/man/infocmp.1m.html"><span class="part-name">
116    infocmp</span></a>, the terminfo decompiler</li>
117
118    <li><a href=
119    "https://invisible-island.net/ncurses/man/tabs.1.html"><span class="part-name">
120    tabs</span></a>, set tabs on a terminal</li>
121
122    <li><a href=
123    "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name">
124    tic</span></a>, the terminfo compiler</li>
125
126    <li><a href=
127    "https://invisible-island.net/ncurses/man/toe.1m.html"><span class="part-name">
128    toe</span></a>, list (table of) terminfo entries</li>
129
130    <li><a href=
131    "https://invisible-island.net/ncurses/man/tput.1.html"><span class="part-name">
132    tput</span></a>, utility for retrieving terminal capabilities
133    in shell scripts</li>
134
135    <li><a href=
136    "https://invisible-island.net/ncurses/man/tset.1.html"><span class="part-name">
137    tset</span></a>, to initialize the terminal</li>
138  </ul>
139
140  <p>Full manual pages are provided for the library and tools.</p>
141
142  <p>The <span class="main-name">ncurses</span> distribution is
143  available at <span class="main-name">ncurses</span>' <a href=
144  "https://invisible-island.net/ncurses/">homepage</a>:</p>
145
146  <blockquote>
147    <p><a href=
148    "ftp://ftp.invisible-island.net/ncurses/">ftp://ftp.invisible-island.net/ncurses/</a>
149    or<br>
150    <a href=
151    "https://invisible-mirror.net/archives/ncurses/">https://invisible-mirror.net/archives/ncurses/</a>&nbsp;.</p>
152  </blockquote>
153
154  <p>It is also available via anonymous FTP at the GNU distribution
155  site</p>
156
157  <blockquote>
158    <p><a href=
159    "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a>&nbsp;.</p>
160  </blockquote>
161
162  <h2><a name="h2-release-notes" id="h2-release-notes">Release
163  Notes</a></h2>
164
165  <p>These notes are for <span class="main-name">ncurses</span>
166  6.2, released <strong>February 12, 2020</strong>.</p>
167
168  <p>This release is designed to be source-compatible with
169  <span class="main-name">ncurses</span> 5.0 through 6.1; providing
170  extensions to the application binary interface (ABI). Although
171  the source can still be configured to support the <span class=
172  "main-name">ncurses</span> 5 ABI, the reason for the release is
173  to reflect improvements to the <span class=
174  "main-name">ncurses</span> 6 ABI and the supporting utility
175  programs.</p>
176
177  <p>There are, of course, numerous other improvements, listed in
178  this announcement.</p>
179
180  <p>The most <a href="#h3-bug-fixes">important
181  bug-fixes/improvements</a> dealt with user-defined capabilities
182  in terminal descriptions. The release notes also mention some
183  other bug-fixes, but are focused on new features and improvements
184  to existing features since <span class="main-name">ncurses</span>
185  6.1 release.</p>
186
187  <h3><a name="h3-library" id="h3-library">Library improvements</a></h3>
188
189  <h4><a name="h4-new-library" id="h4-new-library">New features</a></h4>
190
191  <p>There are several new features:</p>
192
193  <ul>
194    <li>
195      <p><a href=
196      "https://invisible-island.net/ncurses/man/form_field_opts.3x.html">
197      O_EDGE_INSERT_STAY</a> tells the form library to optionally
198      delay cursor movement on a field edge/boundary</p>
199    </li>
200
201    <li>
202      <p><a href=
203      "https://invisible-island.net/ncurses/man/form_field_opts.3x.html">
204      O_INPUT_FIELD</a> extension to form library allows a dynamic
205      field to shrink if the new limit is smaller than the current
206      field size.</p>
207    </li>
208
209    <li>
210      <p>added <a href=
211      "https://invisible-island.net/ncurses/man/curs_memleaks.3x.html">
212      exit_curses</a> and <a href=
213      "https://invisible-island.net/ncurses/man/curs_memleaks.3x.html">
214      exit_terminfo</a> to replace internal symbols for
215      leak-checking.</p>
216    </li>
217
218    <li>
219      <p>added <a href=
220      "https://invisible-island.net/ncurses/man/curs_trace.3x.html#h3-Functions">
221      curses_trace</a>, to replace trace().</p>
222    </li>
223  </ul>
224
225  <p>Additionally, to improve performance other changes (and
226  extensions) are provided in this release:</p>
227
228  <ul>
229    <li>
230      <p>mouse decoding now handles shift/control/alt logic when
231      decoding xterm's 1006 mode</p>
232    </li>
233
234    <li>
235      <p>ncurses now defines a limit for <a href=
236      "https://invisible-island.net/ncurses/man/curs_getstr.3x.html">
237      wgetnstr</a>, <a href=
238      "https://invisible-island.net/ncurses/man/curs_get_wstr.3x.html">
239      wgetn_wstr</a> when length is negative or &ldquo;too
240      large&rdquo;.</p>
241    </li>
242
243    <li>reordered loop-limit checks in <a href=
244    "https://invisible-island.net/ncurses/man/curs_insstr.3x.html">winsnstr</a>
245    in case the string has no terminating null and only the number
246    of characters is used.</li>
247
248    <li>
249      <p>there is now no buffer-size limit when reading the
250      <a href="https://invisible-island.net/ncurses/man/ncurses.3x.html#h3-TERMCAP">
251      <tt>$TERMCAP</tt></a> variable.</p>
252    </li>
253
254    <li>
255      <p>the <a href=
256      "https://invisible-island.net/ncurses/man/ncurses.3x.html#h3-TERMCAP">
257      <tt>$TERMCAP</tt></a> variable may be interpreted as a
258      fallback to a terminfo entry</p>
259    </li>
260
261    <li>
262      <p><a href=
263      "https://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Output-Functions">
264      <tt>mvcur</tt></a> now decides whether to use hard-tabs,
265      using <strong><tt>xt</tt></strong>,
266      <strong><tt>tbc</tt></strong> and
267      <strong><tt>hts</tt></strong> as clues.</p>
268    </li>
269
270    <li>
271      <p>extended colors are improved by modifying an internal call
272      to <a href=
273      "https://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Output-Functions">
274      <tt>vid_puts</tt></a> to pass extended color pairs e.g., from
275      <tt>tty_update.c</tt> and <tt>lib_mvcur.c</tt></p>
276    </li>
277
278    <li>
279      <p id="getenv-fixes">the initialization functions now avoid
280      relying upon persistent data for the result from <a href=
281      "#getenv-check"><tt>getenv</tt></a></p>
282    </li>
283
284    <li>
285      <p>scrolling is improved:</p>
286
287      <ul>
288        <li>a limit check in <tt>newline_forces_scroll</tt> handles
289        the case where the row is inside scroll-margins, but not at
290        the end.</li>
291
292        <li>
293          <p>improved loop limits in <tt>_nc_scroll_window</tt>
294          handle a case where the scrolled data is a pad which is
295          taller than the window.</p>
296        </li>
297      </ul>
298    </li>
299  </ul>
300
301  <h4><a name="h4-fixes-library" id="h4-fixes-library">Other
302  improvements</a></h4>
303
304  <p>These are revised features:</p>
305
306  <ul>
307    <li>
308      <p>used &ldquo;<tt>const</tt>&rdquo; in some prototypes
309      rather than <tt>NCURSES_CONST</tt> where X/Open Curses was
310      updated to do this, e.g., <tt>wscanw</tt>, <tt>newterm</tt>,
311      the terminfo interface. Also use &ldquo;<tt>const</tt>&rdquo;
312      for consistency in the termcap interface, which was withdrawn
313      by X/Open Curses in Issue 5 (2007). As of Issue 7, X/Open
314      Curses still lacks &ldquo;<tt>const</tt>&rdquo; for certain
315      return values, e.g., <a href=
316      "https://invisible-island.net/ncurses/man/curs_util.3x.html#h3-keyname_key_name">
317      keyname</a>.</p>
318    </li>
319
320    <li>
321      <p>modified <a href=
322      "https://invisible-island.net/ncurses/man/curs_bkgd.3x.html#h3-bkgd">
323      <tt>wbkgd</tt></a> and <a href=
324      "https://invisible-island.net/ncurses/man/curs_bkgrnd.3x.html#h3-bkgrnd">
325      <tt>wbkgrnd</tt></a> to improve compatibility with SVr4
326      curses, changing the way the window rendition is updated when
327      the background character is modified</p>
328    </li>
329
330    <li>
331      <p>improved terminfo write/read by modifying the fourth item
332      of the extended header to denote the number of valid strings
333      in the extended string table (see <a href=
334      "https://invisible-island.net/ncurses/man/term.5.html#h3-EXTENDED-STORAGE-FORMAT">
335      term(5)</a>).</p>
336    </li>
337
338    <li>
339      <p>modified the initialization checks for mouse so that the
340      <a href=
341      "/ncurses/terminfo.src.html#tic-xterm_sm_1006"><tt>xterm+sm+1006</tt></a>
342      block will work with terminal descriptions not mentioning
343      <em>xterm</em>.</p>
344    </li>
345  </ul>
346
347  <p>These were done to limit or ultimately deprecate features:</p>
348
349  <ul>
350    <li>
351      <p>deprecated <a href=
352      "https://invisible-island.net/ncurses/NEWS.html#t970831">safe-sprintf</a>,
353      since the <tt>vsnprintf</tt> function, which does what was
354      needed, was standardized long ago.</p>
355    </li>
356
357    <li>
358      <p>marked <a href=
359      "https://invisible-island.net/ncurses/man/curs_printw.3x.html#h3-PORTABILITY">
360      <tt>vwprintw</tt></a> and <tt>vwscanw</tt> as deprecated;
361      recommend using <a href=
362      "https://invisible-island.net/ncurses/man/curs_printw.3x.html">
363      <tt>vw_printw</tt></a> and <tt>vw_scanw</tt>,
364      respectively.</p>
365    </li>
366
367    <li>
368      <p>added deprecation warnings for internal functions called
369      by older versions of <a href=
370      "https://invisible-island.net/ncurses/tack.html">tack</a>.</p>
371    </li>
372
373    <li>
374      <p>removed unused <tt>_nc_import_termtype2</tt> function.</p>
375    </li>
376  </ul>
377
378  <p>These are improvements to existing features:</p>
379
380  <ul>
381    <li>
382      <p>check parameter of <a href=
383      "https://invisible-island.net/ncurses/man/curs_threads.3x.html">
384      set_escdelay</a>, return ERR if negative.</p>
385    </li>
386
387    <li>
388      <p>check parameter of <a href=
389      "https://invisible-island.net/ncurses/man/curs_threads.3x.html">
390      set_tabsize</a>, return ERR if not greater than zero</p>
391    </li>
392
393    <li>
394      <p>correct a status-check in _nc_read_tic_entry() so that if
395      reading a hex/b64 <a href=
396      "https://invisible-island.net/ncurses/man/ncurses.3x.html#h3-TERMINFO">
397      <tt>$TERMINFO</tt></a>, and the <a href=
398      "https://invisible-island.net/ncurses/man/ncurses.3x.html#h3-TERM">
399      <tt>$TERM</tt></a> does not match, fall-through to the
400      compiled-in search list.</p>
401    </li>
402
403    <li>
404      <p>amend check for <a href=
405      "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Predefined-Capabilities">
406      <tt>repeat_char</tt></a> to handle a case where setlocale()
407      was called after <a href=
408      "https://invisible-island.net/ncurses/man/curs_initscr.3x.html">
409      <tt>initscr</tt></a></p>
410    </li>
411
412    <li>
413      <p>move macro for <a href=
414      "https://invisible-island.net/ncurses/man/curs_touch.3x.html">
415      <tt>is_linetouched</tt></a> inside
416      <strong><tt>NCURSES_NOMACROS</tt></strong>
417      <em><tt>ifndef</tt></em>.</p>
418    </li>
419
420    <li>
421      <p>use <tt>_nc_copy_termtype2</tt> rather than direct
422      assignment in <a href=
423      "https://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Initialization">
424      setupterm</a>, in case it is called repeatedly using fallback
425      terminfo descriptions</p>
426    </li>
427
428    <li>
429      <p>improve workaround for Solaris wcwidth versus line-drawing
430      characters</p>
431    </li>
432
433    <li>
434      <p>add checks in <a href=
435      "https://invisible-island.net/ncurses/man/resizeterm.3x.html">
436      <tt>repair_subwindows</tt></a> to keep the current position
437      and scroll-margins inside the resized subwindow.</p>
438    </li>
439
440    <li>
441      <p>correct a buffer-limit in <tt>write_entry.c</tt> for
442      systems that use caseless filenames.</p>
443    </li>
444
445    <li>
446      <p>improved build-time utility <em>report_offsets</em>:</p>
447
448      <ul>
449        <li>
450          <p>add categories, e.g., "w" for wide-character, "t" for
451          threads to make the report more readable. Reorganized the
452          structures reported to make the categories more
453          apparent.</p>
454        </li>
455
456        <li>
457          <p>add <tt>NCURSES_GLOBALS</tt> and
458          <tt>NCURSES_PRESCREEN</tt> to report to show how similar
459          the different <em>libtinfo</em> configurations are.</p>
460        </li>
461      </ul>
462    </li>
463
464    <li>
465      <p>modified some header files to ensure that those include
466      necessary files except for the previously-documented
467      cases</p>
468    </li>
469
470    <li>
471      <p>added some traces in initialization to show whether a
472      fallback entry is used.</p>
473    </li>
474
475    <li>
476      <p>made minor optimization to reduce calls to
477      _nc_reserve_pairs</p>
478    </li>
479  </ul>
480
481  <p>These are corrections to existing features:</p>
482
483  <ul>
484    <li>
485      <p>fix a special case in <tt>PutAttrChar</tt> where a cell is
486      marked as alternate-character set, but the terminal does not
487      actually support the given graphic character. This would
488      happen in an older terminal such as <em>vt52</em>, which
489      lacks most line-drawing capability.</p>
490    </li>
491
492    <li>
493      <p>corrected flag for "seq" method of db 1.8.5 interface,
494      needed by toe on some of the BSDs.</p>
495    </li>
496
497    <li>
498      <p>modify comparison in make_hash.c to correct a special case
499      in collision handling for Caps-hpux11</p>
500    </li>
501
502    <li>
503      <p>add extended_slk_color{,_sp} symbols to the appropriate
504      package/*.{map,sym} files</p>
505    </li>
506
507    <li>
508      <p>modify lib_setup to avoid calling pthread_self() without
509      first verifying that the address is valid, i.e., for weak
510      symbols</p>
511    </li>
512
513    <li>
514      <p>add a couple of broken-linker symbols to the list of
515      versioned symbols to help with link-time optimization versus
516      weak symbols.</p>
517    </li>
518  </ul>
519
520  <h3><a name="h3-programs" id="h3-programs">Program
521  improvements</a></h3>
522
523  <p>Several improvements were made to the utility programs:</p>
524
525  <dl>
526    <dt><span class="part-name">clear</span>
527    </dt>
528
529    <dd>
530      <ul>
531        <li>improved logic for clearing with the <em>E3</em>
532        extension, in case the terminal scrolls content onto its
533        saved-lines before actually clearing the display, by
534        clearing the saved-lines after clearing the display</li>
535      </ul>
536    </dd>
537
538    <dt><span class="part-name">infocmp</span>
539    </dt>
540
541    <dd>
542      <ul>
543        <li>omit filtering of &ldquo;<tt>OTxx</tt>&rdquo; names
544        which are used for obsolete capabilities, when the output
545        is sorted by long-names. This change helps when making a
546        table of the short/long capability names.</li>
547      </ul>
548    </dd>
549
550    <dt><span class="part-name">tic</span>
551    </dt>
552
553    <dd>
554      <ul>
555        <li>added check for consistent alternate character set
556        capabilities.</li>
557
558        <li>added check for paired <tt>indn</tt>/<tt>rin</tt>.</li>
559
560        <li>added check for terminals with <tt>parm_dch</tt> vs
561        <tt>parm_ich</tt>.</li>
562
563        <li>added check for the case where
564        <tt>setf</tt>/<tt>setb</tt> are given using different
565        strings, but provide identical results to
566        <tt>setaf</tt>/<tt>setab</tt>.</li>
567
568        <li>corrected check for <tt>ich1</tt>.</li>
569
570        <li>changed a too-large terminal entry from a fatal error
571        to a warning.</li>
572      </ul>
573    </dd>
574
575    <dt><span class="part-name">toe</span>
576    </dt>
577
578    <dd>
579      <ul>
580        <li>ignores any hex/b64 <tt>$TERMINFO</tt> value in the
581        list of terminfo databases.</li>
582      </ul>
583    </dd>
584
585    <dt><span class="part-name">tset</span>
586    </dt>
587
588    <dd>
589      <ul>
590        <li>replace check in <span class="part-name">reset</span>
591        command for obsolete &ldquo;<tt>pt</tt>&rdquo; capability
592        using <tt>tbc</tt> and <tt>hts</tt> capabilities as
593        clues</li>
594
595        <li>modify <span class="part-name">reset</span> to allow
596        for tabstops at intervals other than 8.</li>
597
598        <li>change <span class="part-name">reset</span>'s behavior
599        for margins to simply clear soft-margins if possible,
600        rather than clearing and then setting them according to the
601        terminal's width.</li>
602      </ul>
603    </dd>
604
605    <dt><span class="part-name">tput</span>
606    </dt>
607
608    <dd>
609      <ul>
610        <li>add &ldquo;<tt>x</tt>&rdquo; to <tt>getopt</tt> string
611        so that &ldquo;<tt>tput&nbsp;-x&nbsp;clear</tt>&rdquo;
612        works.</li>
613      </ul>
614    </dd>
615  </dl>
616
617  <p>Several changes were made to the generated ncurses*config
618  scripts and the analogous &ldquo;<tt>.pc</tt>&rdquo; files to
619  reduce differences between the configurations they report:</p>
620
621  <ul>
622    <li>
623      <p>modified the ncurse*-config and pc-files to more closely
624      match for the <tt>-I</tt> and <tt>-l</tt> options.</p>
625    </li>
626
627    <li>
628      <p>filtered out linker-specs from the <tt>--libs</tt>
629      report.</p>
630    </li>
631
632    <li>
633      <p>amended the ncurses*-config and pc-files to take into
634      account the rpath hack which differed between those
635      files.</p>
636    </li>
637
638    <li>
639      <p>modified generated ncurses*config and ncurses.pc,
640      ncursesw.pc, etc., to list helper libraries such as gpm for
641      static linking.</p>
642    </li>
643  </ul>
644
645  <h4><a name="h4-examples" id="h4-examples">Examples</a></h4>
646
647  <p>Along with the library and utilities, improvements were made
648  to the <a href=
649  "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>.
650  Most of this activity aimed at improving the test-packages. A few
651  changes are more generally useful, e.g., for the main ncurses
652  test-program, and for analyzing traces using the
653  <em>tracemunch</em> script:</p>
654
655  <ul>
656    <li>
657      <p>improve recovery from error when reading command-character
658      in <tt>test/ncurses.c</tt>, showing the relevant error
659      message and not exiting on EINTR.</p>
660    </li>
661
662    <li>
663      <p>improve <em>tracemunch</em>, by keeping track of
664      <tt>TERMINAL*</tt> values, and if tracing was first turned on
665      after initialization, attempt to show distinct screen, window
666      and terminal names anyway.</p>
667    </li>
668
669    <li>
670      <p>modify <em>tracemunch</em> to accept filename parameters
671      in addition to use as a pipe/filter.</p>
672    </li>
673
674    <li>
675      <p>update <em>tracemunch</em> to work with <em>perl
676      5.26.2</em>, which changed the rules for escaping regular
677      expressions.</p>
678    </li>
679
680    <li>
681      <p>add some checks in <em>tracemunch</em> for undefined
682      variables.</p>
683    </li>
684
685    <li>
686      <p>modify <tt>TurnOn</tt>/<tt>TurnOff</tt> macros (in
687      lib_vidattr.c and lib_vid_attr.c) to avoid expansion of
688      &ldquo;<tt>CUR</tt>&rdquo; in trace.</p>
689    </li>
690  </ul>
691
692  <p>There are other new demo/test programs and reusable
693  examples:</p>
694
695  <dl>
696    <dt><span class="part-name">color_content</span>
697    </dt>
698
699    <dd>Demonstrate the <tt>color_content</tt> and
700    <tt>extended_color_content</tt> functions.</dd>
701
702    <dt><span class="part-name">demo_tabs</span>
703    </dt>
704
705    <dd>A simple demo of tabs in curses.</dd>
706
707    <dt><span class="part-name">dump_window</span>
708    </dt>
709
710    <dd>A portable curses screen-dump, used to compare ncurses
711    screen contents with Solaris.</dd>
712
713    <dt><span class="part-name">pair_content</span>
714    </dt>
715
716    <dd>Demonstrate the <tt>pair_content</tt> and
717    <tt>extended_pair_content</tt> functions.</dd>
718
719    <dt><span class="part-name">report_hashing</span>
720    </dt>
721
722    <dd>Check hash-tables used for terminfo and termcap names.</dd>
723
724    <dt><span class="part-name">parse_rgb</span>
725    </dt>
726
727    <dd>Sample implementation of the ncurses RGB extension from
728    <a href=
729    "https://invisible-island.net/ncurses/man/user_caps.5.html">user_caps.5</a>,
730    used in <em>picsmap</em> and <em>savescreen</em> programs.</dd>
731  </dl>
732
733  <p>A variety of improvements were made to existing programs, both
734  new features as well as options added to make the set of programs
735  more consistent.</p>
736
737  <ul>
738    <li>
739      <p>add &ldquo;<tt>-l</tt>&rdquo; option to test/background,
740      to dump screen contents in a form that lets different curses
741      implementations be compared.</p>
742    </li>
743
744    <li>
745      <p>add &ldquo;<tt>@</tt>&rdquo; command to test/ncurses
746      F-test, to allow rapid jump to different character pages.</p>
747    </li>
748
749    <li>
750      <p>added enum, regex examples to test/demo_forms</p>
751    </li>
752
753    <li>
754      <p>amend Scaled256() macro in test/picsmap.c to cover the
755      full range 0..1000</p>
756    </li>
757
758    <li>
759      <p>corrected pathname used in Ada95 sample programs for
760      <tt>explain.txt</tt>, to work with test-packages, and used an
761      awk script to split the resulting pathname when it would be
762      too long for a single line.</p>
763    </li>
764
765    <li>
766      <p>ignore interrupted system-call in test/ncurses's
767      command-line, e.g., if the terminal were resized.</p>
768    </li>
769
770    <li>
771      <p>improved ifdef's for <tt>TABSIZE</tt> variable, to help
772      with AIX/HPUX ports.</p>
773    </li>
774  </ul>
775
776  <h3><a name="h3-database" id="h3-database">Terminal database</a></h3>
777
778  <p>There are several new terminal descriptions:</p>
779
780  <blockquote style="word-break:keep-all">
781    <p><tt>alacritty</tt>, <tt>domterm</tt>, <tt>kitty</tt>,
782    <tt>mintty</tt>, <tt>mintty-direct</tt>, <tt>ms-terminal</tt>,
783    <tt>n7900</tt>, <tt>nsterm-build309</tt>,
784    <tt>nsterm-direct</tt>, <tt>screen5</tt>, <tt>ti703</tt>,
785    <tt>ti707</tt>, <tt>ti703-w</tt>, <tt>ti707-w</tt>
786    <tt>vscode</tt>, <tt>vscode-direct</tt>, <tt>xterm-mono</tt>,
787    <tt>xterm.js</tt></p>
788  </blockquote>
789
790  <p>There are many changes to existing terminal descriptions. Some
791  were updates to several descriptions:</p>
792
793  <ul>
794    <li>use <a href=
795    "/ncurses/terminfo.src.html#tic-ansi_rep"><tt>ansi+rep</tt></a>
796    in a dozen places</li>
797
798    <li>add rs1 to konsole, mlterm</li>
799
800    <li>improve several flash capabilities with trailing mandatory
801    delays</li>
802
803    <li>drop <tt>ich1</tt> from <tt>rxvt-basic</tt>, <tt>Eterm</tt>
804    and <tt>mlterm</tt> to improve compatibility with old
805    non-curses programs</li>
806
807    <li>add/use <a href=
808    "/ncurses/terminfo.src.html#tic-xterm_keypad"><tt>xterm+keypad</tt></a>
809    in <tt>xterm-new</tt></li>
810
811    <li>use <a href=
812    "/ncurses/terminfo.src.html#tic-xterm_sl-twm"><tt>xterm+sl-twm</tt></a>
813    for consistency, nine places</li>
814
815    <li>improve <em>xm</em> example in <a href=
816    "/ncurses/terminfo.src.html#tic-xterm_x11mouse">xterm+x11mouse</a>
817    and <a href=
818    "/ncurses/terminfo.src.html#tic-xterm_sm_1006">xterm+sm_1006</a>.</li>
819  </ul>
820
821  <p>while others affected specific descriptions. These were
822  retested, to take into account changes by their developers:</p>
823
824  <blockquote>
825    <p><tt>terminator</tt>, <tt>st</tt></p>
826  </blockquote>
827
828  <p>while these are specific fixes based on reviewing
829  documentation, user reports, or warnings from <span class=
830  "part-name">tic</span>:</p>
831
832  <dl>
833    <dt><a href=
834    "/ncurses/terminfo.src.html#tic-adds200">adds200</a>:</dt>
835
836    <dd>
837      <ul>
838        <li>fix typo</li>
839      </ul>
840    </dd>
841
842    <dt><a href=
843    "/ncurses/terminfo.src.html#tic-gnome-256color">gnome-256color</a>
844    </dt>
845
846    <dd>
847      <ul>
848        <li>base entry on "gnome", not "vte", for consistency</li>
849      </ul>
850    </dd>
851
852    <dt><a href=
853    "/ncurses/terminfo.src.html#tic-interix">interix</a>
854    </dt>
855
856    <dd>
857      <ul>
858        <li>trim unnecessary setf/setb</li>
859      </ul>
860    </dd>
861
862    <dt><a href=
863    "/ncurses/terminfo.src.html#tic-linux-16color">linux-16color</a>
864    </dt>
865
866    <dd>
867      <ul>
868        <li>accommodate <a href=
869        "https://lists.gnu.org/archive/html/bug-ncurses/2019-10/msg00061.html">
870        Linux console driver</a> incompatibility introduced in
871        early 2018</li>
872      </ul>
873    </dd>
874
875    <dt><a href=
876    "/ncurses/terminfo.src.html#tic-nsterm-256color">nsterm-256color</a>:</dt>
877
878    <dd>
879      <ul>
880        <li>add nsterm-build309 to replace nsterm-256color,
881        assigning the latter as an alias of nsterm, to make mouse
882        work with nsterm-256color</li>
883      </ul>
884    </dd>
885
886    <dt><a href=
887    "/ncurses/terminfo.src.html#tic-regent40">regent40</a>:</dt>
888
889    <dd>
890      <ul>
891        <li>renumber function-keys to match manual</li>
892      </ul>
893    </dd>
894
895    <dt><a href=
896    "/ncurses/terminfo.src.html#tic-regent60">regent60</a>:</dt>
897
898    <dd>
899      <ul>
900        <li>add cd (clr_eos)</li>
901
902        <li>corrected acsc</li>
903
904        <li>add shifted function-keys</li>
905      </ul>
906    </dd>
907
908    <dt><a href=
909    "/ncurses/terminfo.src.html#tic-tvi950">tvi950</a>:</dt>
910
911    <dd>
912      <ul>
913        <li>added function-key definitions to agree with Televideo
914        950 manual</li>
915
916        <li>corrected acsc</li>
917
918        <li>remove bogus kf0</li>
919
920        <li>add bel</li>
921      </ul>
922    </dd>
923
924    <dt><a href=
925    "/ncurses/terminfo.src.html#tic-tvi955">tvi955</a>:</dt>
926
927    <dd>
928      <ul>
929        <li>fix typo</li>
930      </ul>
931    </dd>
932
933    <dt><a href=
934    "/ncurses/terminfo.src.html#tic-vi200">vi200</a>:</dt>
935
936    <dd>
937      <ul>
938        <li>add acsc string, including right/down-arrow</li>
939      </ul>
940    </dd>
941
942    <dt><a href=
943    "/ncurses/terminfo.src.html#tic-wy50">wy50</a>:</dt>
944
945    <dd>
946      <ul>
947        <li>corrected acsc</li>
948      </ul>
949    </dd>
950
951    <dt><a href="/ncurses/terminfo.src.html#tic-wy50">wy50</a> and
952    <a href="/ncurses/terminfo.src.html#tic-wy60">wy60</a>:</dt>
953
954    <dd>
955      <ul>
956        <li>add shifted function-keys as kF1 to kF16</li>
957      </ul>
958    </dd>
959
960    <dt><a href=
961    "/ncurses/terminfo.src.html#tic-xterm_x11hilite">xterm+x11hilite</a>:</dt>
962
963    <dd>
964      <ul>
965        <li>eliminate unused <em>p5</em> parameter.</li>
966      </ul>
967    </dd>
968  </dl>
969
970  <p>A few entries use extensions (user-defined terminal
971  capabilities):</p>
972
973  <ul>
974    <li>use <a href=
975    "/ncurses/terminfo.src.html#tic-xterm_sm_1006"><tt>xterm+sm+1006</tt></a>
976    (aka &ldquo;SGR 1006 mouse&rdquo;) for konsole-base and
977    putty</li>
978
979    <li>add <em><tt>Smol/Rmol</tt></em> user-defined capability to
980    <tt>tmux</tt> and <tt>vte-2018</tt></li>
981
982    <li>add <em><tt>Smulx</tt></em> user-defined capability to
983    <tt>tmux</tt>, <tt>vte-2018</tt></li>
984  </ul>
985
986  <h3><a name="h3-documentation" id=
987  "h3-documentation">Documentation</a></h3>
988
989  <p>As usual, this release</p>
990
991  <ul>
992    <li>
993      <p>improves documentation by describing new features,</p>
994    </li>
995
996    <li>
997      <p>attempts to improve the description of features which
998      users have found confusing</p>
999    </li>
1000
1001    <li>
1002      <p>fills in overlooked descriptions of features which were
1003      described in the <a href=
1004      "https://invisible-island.net/ncurses/NEWS.html">NEWS</a>
1005      file but treated sketchily in manual pages.</p>
1006    </li>
1007  </ul>
1008
1009  <p>In addition to providing background information to explain
1010  these features and show how they evolved, there are corrections,
1011  clarifications, etc.:</p>
1012
1013  <ul>
1014    <li>
1015      <p>Corrections:</p>
1016
1017      <ul>
1018        <li>correct error-returns listed in manual pages for a few
1019        form functions</li>
1020
1021        <li>corrected prototypes in several manpages using script
1022        to extract those in compilable form.</li>
1023
1024        <li>fix typo in <a href=
1025        "https://invisible-island.net/ncurses/man/term.5.html#h3-EXTENDED-NUMBER-FORMAT">
1026        term.5</a>, improve explanation of format</li>
1027      </ul>
1028    </li>
1029
1030    <li>
1031      <p>Clarify in manual pages that <a href=
1032      "https://invisible-island.net/ncurses/man/curs_printw.3x.html#h2-PORTABILITY">
1033      vwprintw</a> and <a href=
1034      "https://invisible-island.net/ncurses/man/curs_scanw.3x.html#h2-PORTABILITY">
1035      vwscanw</a> are obsolete.<br>
1036      They have not been part of X/Open Curses since 2007.</p>
1037    </li>
1038
1039    <li>
1040      <p>New/improved history and portability sections:</p>
1041
1042      <ul>
1043        <li><a href=
1044        "https://invisible-island.net/ncurses/man/curs_addch.3x.html#h3-ACS-Symbols">
1045        curs_addch.3x</a> gives some background for ACS
1046        symbols.</li>
1047
1048        <li><a href=
1049        "https://invisible-island.net/ncurses/man/curs_getcchar.3x.html#h2-PORTABILITY">
1050        curs_getcchar.3x</a> explains a difference between ncurses
1051        and X/Open Curses.</li>
1052
1053        <li><a href=
1054        "https://invisible-island.net/ncurses/man/curs_getstr.3x.html#h2-PORTABILITY">
1055        curs_getstr.3x</a> gives historical/portability background
1056        for the length parameter of <tt>wgetnstr</tt>.</li>
1057
1058        <li><a href=
1059        "https://invisible-island.net/ncurses/man/curs_slk.3x.html">
1060        curs_slk.3x</a> lists a few differences between SVr4 curses
1061        and X/Open Curses for soft-keys.</li>
1062
1063        <li><a href=
1064        "https://invisible-island.net/ncurses/man/curs_terminfo.3x.html">
1065        curs_terminfo.3x</a> explains that the initial
1066        implementation of terminfo in SVr2 was mostly replaced by
1067        other developers in SVr3.</li>
1068
1069        <li><a href=
1070        "https://invisible-island.net/ncurses/man/infocmp.1m.html">infocmp.1</a>
1071        explains that the initial version of terminfo had no tool
1072        for decompiling descriptions. That came later, with SVr3,
1073        with a different developer.</li>
1074
1075        <li><a href=
1076        "https://invisible-island.net/ncurses/man/tabs.1">tabs.1</a>
1077        tells more than you wanted to know about the tool.</li>
1078
1079        <li><a href=
1080        "https://invisible-island.net/ncurses/man/tic.1m.html">tic.1</a>
1081        explains that the initial version of terminfo had a
1082        rudimentary tool (based on termcap) for compiling entries.
1083        The tool used with Unix was developed by others for
1084        SVr3.</li>
1085
1086        <li><a href=
1087        "https://invisible-island.net/ncurses/man/toe.1m.html">toe.1</a>
1088        explains the origin of this tool.</li>
1089      </ul>
1090    </li>
1091
1092    <li>
1093      <p>Improvements for <a href=
1094      "https://invisible-island.net/ncurses/man/user_caps.5.html">user_caps.5</a>:</p>
1095
1096      <ul>
1097        <li>mention <tt>meml</tt>, <tt>memu</tt> and
1098        <tt>box1</tt></li>
1099
1100        <li>expanded description of <tt>XM</tt></li>
1101
1102        <li>add a clarification regarding the <tt>RGB</tt>
1103        capability.</li>
1104
1105        <li>mention user_caps.5 in the tic and infocmp manual
1106        pages.</li>
1107      </ul>
1108    </li>
1109
1110    <li>
1111      <p>Other improvements:</p>
1112
1113      <ul>
1114        <li><a href=
1115        "https://invisible-island.net/ncurses/man/curs_add_wch.3x.html#h3-Line-Graphics">
1116        curs_add_wch.3x</a> adds note about Unicode terminology for
1117        the line-drawing characters.</li>
1118
1119        <li><a href=
1120        "https://invisible-island.net/ncurses/man/curs_color.3x.html#h3-RETURN-VALUE">
1121        curs_color.3x</a> improves discussion of error returns and
1122        extensions.</li>
1123
1124        <li><a href=
1125        "https://invisible-island.net/ncurses/man/curs_mouse.3x.html">
1126        curs_mouse.3x</a> explains how the <tt>kmous</tt> and
1127        <tt>XM</tt> capabilities are used for xterm-mouse
1128        input.</li>
1129
1130        <li><a href=
1131        "https://invisible-island.net/ncurses/man/curs_refresh.3x.html#h3-wnoutrefresh_doupdate">
1132        curs_refresh.3x</a> improves documentation regarding the
1133        virtual and physical screens.</li>
1134
1135        <li><a href=
1136        "https://invisible-island.net/ncurses/man/curs_util.3x.html">
1137        curs_util.3x</a> mentions a difference between SVr4 and
1138        X/Open Curses for <tt>unctrl.h</tt></li>
1139
1140        <li><a href=
1141        "https://invisible-island.net/ncurses/man/curs_variables.3x.html#h2-PORTABILITY">
1142        curs_variables.3x</a> improves description of the
1143        <em>init_tabs</em> capability and <tt>TABSIZE</tt>
1144        variable.</li>
1145
1146        <li><a href=
1147        "https://invisible-island.net/ncurses/man/ncurses.3x.html#h2-ALTERNATE-CONFIGURATIONS">
1148        ncurses.3x</a> improves documentation regarding
1149        feature-test macros in curses.h</li>
1150
1151        <li><a href=
1152        "https://invisible-island.net/ncurses/man/resizeterm.3x.html#h3-resize_term">
1153        resizeterm.3x</a> about top-level windows which touch the
1154        screen's borders.</li>
1155
1156        <li><a href=
1157        "https://invisible-island.net/ncurses/man/tput.1.html#h3-Terminal-Size">
1158        tput.1</a> clarifies how <em>tput</em> determines the
1159        terminal size.</li>
1160      </ul>
1161    </li>
1162  </ul>
1163
1164  <p>There are no new manual pages (all of the manual page updates
1165  are to existing pages).</p>
1166
1167  <p>Some of the improvements are more subtle, relating to the way
1168  the information is presented. For instance, the generated
1169  terminfo.5 file uses a different table layout, allowing it to use
1170  space on wide terminals more effectively.</p>
1171
1172  <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
1173  bug-fixes</a></h3>
1174
1175  <p>While there were many bugs fixed during development of ncurses
1176  6.2, only a few (the reason for this release) were both important
1177  and interesting. Most of the bug-fixes were for local issues
1178  which did not affect compatibility across releases. Since those
1179  are detailed in the NEWS file no elaboration is needed here.</p>
1180
1181  <p>The interesting bugs were in tic/infocmp's handling of
1182  user-defined capabilities. These were not recent bugs. Initially
1183  it was a simple problem:</p>
1184
1185  <ul>
1186    <li>The user-defined capabilities can be any type (boolean,
1187    number or string), but once given a type all uses of the name
1188    must conform to that type&mdash;unless some special support for
1189    a particular multi-typed name is built into ncurses.</li>
1190
1191    <li>
1192      <p>One of simpleterm's contributors copied some definitions
1193      for using <em>tmux</em>'s user-defined capabilities in
1194      <a href=
1195      "https://git.suckless.org/st/commit/06f8cf8ca87a81db15816658c40b2afcd1ad5332.html">
1196      late in 2016</a>.</p>
1197
1198      <blockquote>
1199        <pre class="demo-name">
1200diff --git a/st.info b/st.info
1201@@ -185,7 +185,10 @@ st| simpleterm,
1202  tsl=\E]0;,
1203  xenl,
1204  vpa=\E[%i%p1%dd,
1205-
1206+# Tmux unofficial extensions, see TERMINFO EXTENSIONS in tmux(1)
1207+ Se,
1208+ Ss,
1209+ Tc,
1210
1211 st-256color| simpleterm with 256 colors,
1212  use=st,
1213</pre>
1214      </blockquote>
1215    </li>
1216
1217    <li>
1218      <p>Later, in (referring to a version from <a href=
1219      "https://git.suckless.org/st/commit/c0882f2ed1d7a2dd0fa2efa52157e6fc6fde3652.html">
1220      mid-2017</a>), a user asked to have it updated in
1221      ncurses.</p>
1222    </li>
1223
1224    <li>
1225      <p>However, it had an error from the change in late 2016. The
1226      terminal description made what <em>tmux</em> expected to be
1227      <strong>string</strong> actually a
1228      <strong>boolean</strong>.</p>
1229
1230      <p>Over the years, there were problems with each of
1231      simpleterm's terminal descriptions. I repaired those, and
1232      usually dealt with the problem.</p>
1233    </li>
1234
1235    <li>
1236      <p>The difference in this case was that when compiling the
1237      terminal database, <em>tic</em> may have in memory the
1238      definitions for more than one terminal description (so that
1239      it can resolve &ldquo;<tt>use=</tt>&rdquo; clauses). Seeing
1240      two different types for the same name, in certain situations
1241      it would incorrectly merge the symbol tables for the two
1242      terminal descriptions.</p>
1243    </li>
1244
1245    <li>
1246      <p>On simpleterm's side, their bug was finally fixed in
1247      <a href=
1248      "https://git.suckless.org/st/commit/83866428de031300eab03fbb116bcf7d2b1d4f60.html">
1249      late 2019</a>, three years after the bug was created.</p>
1250    </li>
1251  </ul>
1252
1253  <p>For ncurses, the elapsed time to fix this bug was less than
1254  three years. Someone reported a problem with the terminal
1255  description a few weeks after releasing ncurses 6.1 (in <a href=
1256  "https://github.com/tmux/tmux/issues/1264">tmux #1264</a>), and
1257  the terminal description was updated that week (ncurses patch
1258  <a href=
1259  "https://invisible-island.net/ncurses/NEWS.html#t20180224">20180224</a>):</p>
1260
1261  <blockquote>
1262    <pre class="demo-name">
126320180224
1264        + modify _nc_resolve_uses2() to detect incompatible types when merging
1265          a "use=" clause of extended capabilities.  The problem was seen in a
1266          defective terminfo integrated from simpleterm sources in 20171111,
1267          compounded by repair in 20180121.
1268        + correct Ss/Ms interchange in st-0.7 entry (tmux #1264) -TD
1269</pre>
1270  </blockquote>
1271
1272  <p>The larger part of that change added a check to prevent a
1273  simple merge of terminal descriptions where the same user-defined
1274  name was used with different types. But it raised some
1275  questions:</p>
1276
1277  <ul>
1278    <li>
1279      <p>Was there a reliable way to manage terminal descriptions
1280      which used the same extended name in different ways?</p>
1281    </li>
1282
1283    <li>
1284      <p>Should ncurses provide a registry of well-known extended
1285      names, with their types?</p>
1286    </li>
1287  </ul>
1288
1289  <p>Since the correction to <a href=
1290  "https://invisible-island.net/ncurses/ncurses.html#download_database">
1291  <tt>terminfo.src</tt></a> could have been readily adopted by
1292  packagers, there was nothing more to be done from ncurses'
1293  standpoint on that part. But improving ncurses to prevent issues
1294  like that is the reason for making a release.</p>
1295
1296  <p>Nothing more (constructive) was mentioned with regard to
1297  simpleterm. But a few problems were found in the handling of
1298  user-defined capabilities:</p>
1299
1300  <ul>
1301    <li>
1302      <p>Forward-references to user-defined capabilities in a
1303      &ldquo;<tt>use=</tt>&rdquo; clause did not allocate new data
1304      for each use. In <em>tic</em>, successive compilation of
1305      terminal entries could add user-defined capabilities to the
1306      wrong terminal entry.</p>
1307
1308      <p>This was not noticed before, since xterm's terminal
1309      descriptions were the main users of the feature, and almost
1310      all of the uses of the building-blocks which contained
1311      user-defined capabilities were backward-references.</p>
1312    </li>
1313
1314    <li>
1315      <p>There is one (documented) case where ncurses 6.1 supports
1316      a user-defined capability that could be any type (i.e.,
1317      &ldquo;RGB&rdquo;). The check added in February 2018 to guard
1318      against mismatches did not handle all of the combinations
1319      needed.</p>
1320    </li>
1321  </ul>
1322
1323  <p>Both of these issues dated from the original implementation of
1324  user-defined capabilities. Fixing them does not change the
1325  terminal database, but a older <em>tic</em> without the fixes
1326  will not be able to handle terminfo sources which rely upon those
1327  fixes. Starting in June 2019, the download link for the terminfo
1328  source file was capped at that date. The development sources have
1329  an up-to-date copy of the file, for people with a legitimate need
1330  for it.</p>
1331
1332  <p>The &ldquo;<tt>-c</tt>&rdquo; (check) option of <em>tic</em>
1333  is not very useful if it cannot offer advice on parameters needed
1334  for user-defined capabilities. The various <em>Caps</em> files
1335  were reorganized to reduce redundancy, and in the common portion
1336  (<a href=
1337  "https://github.com/ThomasDickey/ncurses-snapshots/blob/master/include/Caps-ncurses">Caps-ncurses</a>),
1338  a registry of user-defined capabilities is provided for use by
1339  <em>tic</em>. While users can still define their own custom
1340  capabilities, <em>tic</em> will not offer any advice when their
1341  parameters do not match.</p>
1342
1343  <p>In ncurses 6.2, <em>tic</em> makes a special check to allow
1344  any type for <em>RGB</em>, but its being able to do this relies
1345  upon fixes made in the ncurses library in mid-2019.</p>
1346
1347  <h3><a name="h3-config-config" id=
1348  "h3-config-config">Configuration changes</a></h3>
1349
1350  <h4><a name="h4-config-major" id="h4-config-major">Major
1351  changes</a></h4>
1352
1353  <p>There are no major changes. Several new options were added to
1354  ease integration of packages with systems using different
1355  versions of <em>GNAT</em> and <em>ncurses</em>. Also,
1356  improvements were made to configure checks.</p>
1357
1358  <h4><a name="h4-config-options" id=
1359  "h4-config-options">Configuration options</a></h4>
1360
1361  <p>There are a few new/modified configure options:</p>
1362
1363  <dl>
1364    <dt><tt>--with-config-suffix</tt>
1365    </dt>
1366
1367    <dd>
1368      <p>helps work around a filename conflict with Debian packages
1369      versus test-packages.</p>
1370    </dd>
1371
1372    <dt><tt>--with-ada-libname</tt>
1373    </dt>
1374
1375    <dd>
1376      <p>allows one to rename the &ldquo;AdaCurses&rdquo; library
1377      (at least one packager prefers a lowercase name).</p>
1378    </dd>
1379
1380    <dt><tt>--with-fallbacks</tt>
1381    </dt>
1382
1383    <dd>
1384      <p>now ensures there is a value, and adds the fallback
1385      information to top-level Makefile summary.</p>
1386    </dd>
1387
1388    <dt><tt>--with-pcre2</tt>
1389    </dt>
1390
1391    <dd>
1392      <p>check for pcre-posix library to help with MinGW port.</p>
1393    </dd>
1394
1395    <dt><tt>--with-tic-path</tt> and<br></dt>
1396
1397    <dt><tt>--with-infocmp-path</tt>
1398    </dt>
1399
1400    <dd>
1401      <p>help work around problems building fallback source using
1402      pre-6.0 tic/infocmp.</p>
1403    </dd>
1404
1405    <dt><tt>--with-versioned-syms</tt>
1406    </dt>
1407
1408    <dd>
1409      <p>option value can now be a relative pathname.</p>
1410    </dd>
1411  </dl>
1412
1413  <h3><a name="h3-portability" id="h3-portability">Portability</a></h3>
1414
1415  <p>Many of the portability changes are implemented via the
1416  configure script:</p>
1417
1418  <ul>
1419    <li>
1420      <p>ignore <a href=
1421      "/ncurses/man/ncurses.3x.html#h3-TERMINFO"><tt>$TERMINFO</tt></a>
1422      as a default value in configure script if it came from the
1423      <tt>infocmp</tt> <strong><tt>-Q</tt></strong> option.</p>
1424    </li>
1425
1426    <li>
1427      <p>distinguish gcc from icc and clang when the
1428      <tt>--enable-warnings</tt> option is not used, to avoid
1429      unnecessary warnings about unrecognized inline options</p>
1430    </li>
1431
1432    <li>
1433      <p>consistently prepend new libraries as they are found
1434      during configuration, rather than relying upon the linker to
1435      resolve order dependencies of libraries.</p>
1436    </li>
1437
1438    <li>
1439      <p>modified configure scripts to reduce relinking/ranlib
1440      during library install :</p>
1441
1442      <ul>
1443        <li>use &ldquo;<tt>install -p</tt>&rdquo; when available,
1444        to avoid need for ranlib of static libraries.</li>
1445
1446        <li>scripts which use
1447        &ldquo;<tt>--disable-relink</tt>;&rdquo; add a 1-second
1448        sleep to work around tools which use whole-second
1449        timestamps, e.g., in <tt>utime</tt> rather than the actual
1450        file system resolution.</li>
1451      </ul>
1452    </li>
1453
1454    <li>
1455      <p id="getenv-check">add configure check for <a href=
1456      "#getenv-fixes"><tt>getenv</tt></a> to work around
1457      implementation shown in Emscripten which overwrites the
1458      previous return value on each call.</p>
1459
1460      <p>Use that to optionally suppress <tt>START_TRACE</tt>
1461      macro, whose call to <tt>getenv</tt> may not work
1462      properly</p>
1463    </li>
1464
1465    <li>
1466      <p>change target configure level for <tt>_XOPEN_SOURCE</tt>
1467      to 600 to address use of <tt>vsscanf</tt> and
1468      <tt>setenv</tt>.</p>
1469    </li>
1470
1471    <li>
1472      <p>reduce use of <tt>_GNU_SOURCE</tt> for current glibc where
1473      <tt>_DEFAULT_SOURCE</tt> combines with
1474      <tt>_XOPEN_SOURCE</tt></p>
1475
1476      <p>Allow for Cygwin's newlib when checking for the
1477      _DEFAULT_SOURCE symbol.</p>
1478
1479      <p>MidnightBSD is now checked for the
1480      <tt>_XOPEN_SOURCE</tt>-related definitions.</p>
1481    </li>
1482
1483    <li>
1484      <p>If the check for <tt>va_copy</tt> or <tt>__va_copy</tt>
1485      fails,</p>
1486
1487      <ul>
1488        <li>configure now tries copying the pointers for
1489        <tt>va_list</tt>, or as an array.</li>
1490
1491        <li>alternatively, it checks for
1492        <tt>__builtin_va_copy</tt>(), which could be used with AIX
1493        <tt>xlc</tt> in <em>c89</em> mode.</li>
1494      </ul>
1495    </li>
1496
1497    <li>
1498      <p>several changes to support a port to Ultrix 3.1:</p>
1499
1500      <ul>
1501        <li>check if "b" binary feature of fopen works</li>
1502
1503        <li>check for missing feature of locale.h</li>
1504
1505        <li>add fallback for strstr() in test-programs</li>
1506
1507        <li>add fallback for STDOUT_FILENO in test-programs</li>
1508      </ul>
1509    </li>
1510
1511    <li>
1512      <p>The <em>test/configure</em> script (used for <a href=
1513      "/ncurses/ncurses-examples.html"><em>ncurses-examples</em></a>)
1514      is improved:</p>
1515
1516      <ul>
1517        <li>work around non-ncurses termcap.h file, e.g., in
1518        Slackware.</li>
1519
1520        <li>check for <a href=
1521        "/ncurses/man/curs_variables.3x.html#h3-TABSIZE"><tt>TABSIZE</tt></a>
1522        variable.</li>
1523
1524        <li>checks for the X11/Intrinsic.h header, accommodate
1525        recent MacOS changes which largely emptied
1526        <tt>/usr/include</tt>.</li>
1527      </ul>
1528    </li>
1529  </ul>
1530
1531  <p>Here are some of the other portability fixes:</p>
1532
1533  <ul>
1534    <li>
1535      <p>added dummy "check" rule in top-level and test-Makefile to
1536      simplify building test-packages for ArchLinux.</p>
1537    </li>
1538
1539    <li>
1540      <p>dropped library-dependency on psapi for MinGW port, since
1541      win_driver.c defines <tt>PSAPI_VERSION</tt> to 2, making it
1542      use <tt>GetProcessImageFileName</tt> from kernel32.dll</p>
1543    </li>
1544
1545    <li>
1546      <p>made build-fixes for configuration using --program-suffix
1547      with Ada95, noticed with MacOS but applicable to other
1548      platforms without libpanelw, etc.</p>
1549    </li>
1550
1551    <li>
1552      <p>modified ncurses/Makefile.in to fix a case where
1553      Debian/testing changes to the ld --as-needed configuration
1554      broke ncurses-examples test packages.</p>
1555    </li>
1556
1557    <li>
1558      <p>used <tt>_WIN32</tt>/<tt>_WIN64</tt> in preference to
1559      <tt>__MINGW32__</tt>/<tt>__MINGW64__</tt> symbols to simplify
1560      building with Microsoft Visual C++, since the former are
1561      defined in both compiler configurations.</p>
1562    </li>
1563  </ul>
1564
1565  <hr>
1566
1567  <h2><a name="h2-features" id="h2-features">Features of
1568  <span class="main-name">ncurses</span></a></h2>
1569
1570  <p>The <span class="main-name">ncurses</span> package is fully
1571  upward-compatible with SVr4 (System V Release 4) curses:</p>
1572
1573  <ul>
1574    <li>
1575      <p>All of the SVr4 calls have been implemented (and are
1576      documented).</p>
1577    </li>
1578
1579    <li>
1580      <p><span class="main-name">ncurses</span> supports all of the
1581      for SVr4 curses features including keyboard mapping, color,
1582      forms-drawing with ACS characters, and automatic recognition
1583      of keypad and function keys.</p>
1584    </li>
1585
1586    <li>
1587      <p><span class="main-name">ncurses</span> provides these SVr4
1588      add-on libraries (not part of X/Open Curses):</p>
1589
1590      <ul>
1591        <li>
1592          <p>the panels library, supporting a stack of windows with
1593          backing store.</p>
1594        </li>
1595
1596        <li>
1597          <p>the menus library, supporting a uniform but flexible
1598          interface for menu programming.</p>
1599        </li>
1600
1601        <li>
1602          <p>the form library, supporting data collection through
1603          on-screen forms.</p>
1604        </li>
1605      </ul>
1606    </li>
1607
1608    <li>
1609      <p><span class="main-name">ncurses</span>'s terminal database
1610      is fully compatible with that used by SVr4 curses.</p>
1611
1612      <ul>
1613        <li>
1614          <p><span class="main-name">ncurses</span> supports
1615          user-defined capabilities which it can see, but which are
1616          hidden from SVr4 curses applications using the
1617          <em>same</em> terminal database.</p>
1618        </li>
1619
1620        <li>
1621          <p>It can be optionally configured to match the format
1622          used in related systems such as AIX and Tru64.</p>
1623        </li>
1624
1625        <li>
1626          <p>Alternatively, <span class="main-name">ncurses</span>
1627          can be configured to use hashed databases rather than the
1628          directory of files used by SVr4 curses.</p>
1629        </li>
1630      </ul>
1631    </li>
1632
1633    <li>
1634      <p>The <span class="main-name">ncurses</span> utilities have
1635      options to allow you to filter terminfo entries for use with
1636      less capable <em>curses</em>/<em>terminfo</em> versions such
1637      as the HP/UX and AIX ports.</p>
1638    </li>
1639  </ul>
1640
1641  <p>The <span class="main-name">ncurses</span> package also has
1642  many useful extensions over SVr4:</p>
1643
1644  <ul>
1645    <li>
1646      <p>The API is 8-bit clean and base-level conformant with the
1647      X/OPEN curses specification, XSI curses (that is, it
1648      implements all BASE level features, and most EXTENDED
1649      features). It includes many function calls not supported
1650      under SVr4 curses (but portability of all calls is documented
1651      so you can use the SVr4 subset only).</p>
1652    </li>
1653
1654    <li>
1655      <p>Unlike SVr3 curses, <span class="main-name">ncurses</span>
1656      can write to the rightmost-bottommost corner of the screen if
1657      your terminal has an insert-character capability.</p>
1658    </li>
1659
1660    <li>
1661      <p>Ada95 and C++ bindings.</p>
1662    </li>
1663
1664    <li>
1665      <p>Support for mouse event reporting with X Window xterm and
1666      FreeBSD and OS/2 console windows.</p>
1667    </li>
1668
1669    <li>
1670      <p>Extended mouse support via Alessandro Rubini's gpm
1671      package.</p>
1672    </li>
1673
1674    <li>
1675      <p>The function <code>wresize</code> allows you to resize
1676      windows, preserving their data.</p>
1677    </li>
1678
1679    <li>
1680      <p>The function <code>use_default_colors</code> allows you to
1681      use the terminal's default colors for the default color pair,
1682      achieving the effect of transparent colors.</p>
1683    </li>
1684
1685    <li>
1686      <p>The functions <code>keyok</code> and
1687      <code>define_key</code> allow you to better control the use
1688      of function keys, e.g., disabling the <span class=
1689      "main-name">ncurses</span> KEY_MOUSE, or by defining more
1690      than one control sequence to map to a given key code.</p>
1691    </li>
1692
1693    <li>
1694      <p>Support for 256-color terminals, such as modern xterm.</p>
1695    </li>
1696
1697    <li>
1698      <p>Support for 16-color terminals, such as <em>aixterm</em>
1699      and <em>modern xterm</em>.</p>
1700    </li>
1701
1702    <li>
1703      <p>Better cursor-movement optimization. The package now
1704      features a cursor-local-movement computation more efficient
1705      than either BSD's or System V's.</p>
1706    </li>
1707
1708    <li>
1709      <p>Super hardware scrolling support. The screen-update code
1710      incorporates a novel, simple, and cheap algorithm that
1711      enables it to make optimal use of hardware scrolling,
1712      line-insertion, and line-deletion for screen-line movements.
1713      This algorithm is more powerful than the 4.4BSD curses
1714      <code>quickch</code> routine.</p>
1715    </li>
1716
1717    <li>
1718      <p>Real support for terminals with the magic-cookie glitch.
1719      The screen-update code will refrain from drawing a highlight
1720      if the magic- cookie unattributed spaces required just before
1721      the beginning and after the end would step on a non-space
1722      character. It will automatically shift highlight boundaries
1723      when doing so would make it possible to draw the highlight
1724      without changing the visual appearance of the screen.</p>
1725    </li>
1726
1727    <li>
1728      <p>It is possible to generate the library with a list of
1729      pre-loaded fallback entries linked to it so that it can serve
1730      those terminal types even when no terminfo tree or termcap
1731      file is accessible (this may be useful for support of
1732      screen-oriented programs that must run in single-user
1733      mode).</p>
1734    </li>
1735
1736    <li>
1737      <p>The <a href=
1738      "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name">
1739      tic</span></a>/<a href=
1740      "https://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a>
1741      utility provided with <span class="main-name">ncurses</span>
1742      has the ability to translate many termcaps from the XENIX,
1743      IBM and AT&amp;T extension sets.</p>
1744    </li>
1745
1746    <li>
1747      <p>A BSD-like <a href=
1748      "https://invisible-island.net/ncurses/man/tset.1.html"><span class="part-name">
1749      tset</span></a> utility is provided.</p>
1750    </li>
1751
1752    <li>
1753      <p>The <span class="main-name">ncurses</span> library and
1754      utilities will automatically read terminfo entries from
1755      $HOME/.terminfo if it exists, and compile to that directory
1756      if it exists and the user has no write access to the system
1757      directory. This feature makes it easier for users to have
1758      personal terminfo entries without giving up access to the
1759      system terminfo directory.</p>
1760    </li>
1761
1762    <li>
1763      <p>You may specify a path of directories to search for
1764      compiled descriptions with the environment variable
1765      TERMINFO_DIRS (this generalizes the feature provided by
1766      TERMINFO under stock System V.)</p>
1767    </li>
1768
1769    <li>
1770      <p>In terminfo source files, use capabilities may refer not
1771      just to other entries in the same source file (as in System
1772      V) but also to compiled entries in either the system terminfo
1773      directory or the user's $HOME/.terminfo directory.</p>
1774    </li>
1775
1776    <li>
1777      <p>The table-of-entries utility <a href=
1778      "https://invisible-island.net/ncurses/man/toe.1m.html"><span class="part-name">
1779      toe</span></a> makes it easy for users to see exactly what
1780      terminal types are available on the system.</p>
1781    </li>
1782
1783    <li>
1784      <p>The library meets the XSI requirement that every macro
1785      entry point have a corresponding function which may be linked
1786      (and will be prototype-checked) if the macro definition is
1787      disabled with <code>#undef</code>.</p>
1788    </li>
1789
1790    <li>
1791      <p>Extensive documentation is provided (see the <em><a href=
1792      "https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading">
1793      Additional Reading</a></em> section of the <em><a href=
1794      "https://invisible-island.net/ncurses/ncurses.faq.html"><span class="main-name">
1795      ncurses</span> FAQ</a></em> for online documentation).</p>
1796    </li>
1797  </ul>
1798
1799  <h2><a name="h2-who-uses" id="h2-who-uses">Applications using
1800  <span class="main-name">ncurses</span></a></h2>
1801
1802  <p>The <span class="main-name">ncurses</span> distribution
1803  includes a selection of test programs (including a few games).
1804  These are available separately as <a href=
1805  "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a></p>
1806
1807  <p>The ncurses library has been tested with a wide variety of
1808  applications including:</p>
1809
1810  <blockquote>
1811    <dl>
1812      <dt><span class="part-name">aptitude</span>
1813      </dt>
1814
1815      <dd>
1816        <p>FrontEnd to Apt, the debian package manager</p>
1817
1818        <p><a href=
1819        "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude</a></p>
1820      </dd>
1821
1822      <dt><span class="part-name">cdk</span>
1823      </dt>
1824
1825      <dd>
1826        <p>Curses Development Kit</p>
1827
1828        <p><a href=
1829        "https://invisible-island.net/cdk/">https://invisible-island.net/cdk/</a><br>
1830
1831        </p>
1832      </dd>
1833
1834      <dt><span class="part-name">ded</span>
1835      </dt>
1836
1837      <dd>
1838        <p>directory-editor</p>
1839
1840        <p><a href=
1841        "https://invisible-island.net/ded/">https://invisible-island.net/ded/</a></p>
1842      </dd>
1843
1844      <dt><span class="part-name">dialog</span>
1845      </dt>
1846
1847      <dd>
1848        <p>the underlying application used in Slackware's setup,
1849        and the basis for similar install/configure applications on
1850        many systems.</p>
1851
1852        <p><a href=
1853        "https://invisible-island.net/dialog/">https://invisible-island.net/dialog/</a></p>
1854      </dd>
1855
1856      <dt><span class="part-name">lynx</span>
1857      </dt>
1858
1859      <dd>
1860        <p>the text WWW browser</p>
1861
1862        <p><a href=
1863        "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/</a></p>
1864      </dd>
1865
1866      <dt><span class="part-name">mutt</span>
1867      </dt>
1868
1869      <dd>
1870        <p>mail utility</p>
1871
1872        <p><a href="http://www.mutt.org/">http://www.mutt.org/</a></p>
1873      </dd>
1874
1875      <dt><span class="part-name">ncftp</span>
1876      </dt>
1877
1878      <dd>
1879        <p>file-transfer utility</p>
1880
1881        <p><a href=
1882        "https://www.ncftp.com/">https://www.ncftp.com/</a></p>
1883      </dd>
1884
1885      <dt><span class="part-name">nvi</span>
1886      </dt>
1887
1888      <dd>
1889        <p>New vi uses ncurses.</p>
1890
1891        <p><a href=
1892        "https://sites.google.com/a/bostic.com/keithbostic/vi">https://sites.google.com/a/bostic.com/keithbostic/vi</a><br>
1893
1894        </p>
1895      </dd>
1896
1897      <dt><span class="part-name">ranger</span>
1898      </dt>
1899
1900      <dd>
1901        <p>A console file manager with VI key bindings in
1902        <em>Python</em>.</p>
1903
1904        <p><a href=
1905        "https://ranger.github.io/">https://ranger.github.io/</a></p>
1906      </dd>
1907
1908      <dt><span class="part-name">tin</span>
1909      </dt>
1910
1911      <dd>
1912        <p>newsreader, supporting color, MIME</p>
1913
1914        <p><a href="http://www.tin.org/">http://www.tin.org/</a></p>
1915      </dd>
1916
1917      <dt><span class="part-name">vifm</span>
1918      </dt>
1919
1920      <dd>
1921        <p>File manager with vi like keybindings</p>
1922
1923        <p><a href="https://vifm.info/">https://vifm.info/</a></p>
1924      </dd>
1925    </dl>
1926  </blockquote>
1927
1928  <p>as well as some that use <span class=
1929  "main-name">ncurses</span> for the terminfo support alone:</p>
1930
1931  <blockquote>
1932    <dl>
1933      <dt><span class="part-name">minicom</span>
1934      </dt>
1935
1936      <dd>
1937        <p>terminal emulator for serial modem connections</p>
1938
1939        <p><a href=
1940        "https://alioth.debian.org/projects/minicom/">https://alioth.debian.org/projects/minicom/</a></p>
1941      </dd>
1942
1943      <dt><span class="part-name">mosh</span>
1944      </dt>
1945
1946      <dd>
1947        <p>a replacement for <code>ssh</code>.</p>
1948
1949        <p><a href=
1950        "https://mosh.mit.edu/">https://mosh.mit.edu/</a></p>
1951      </dd>
1952
1953      <dt><span class="part-name">tack</span>
1954      </dt>
1955
1956      <dd>
1957        <p>terminfo action checker</p>
1958
1959        <p><a href=
1960        "https://invisible-island.net/ncurses/tack.html">https://invisible-island.net/ncurses/tack.html</a></p>
1961      </dd>
1962
1963      <dt><span class="part-name">tmux</span>
1964      </dt>
1965
1966      <dd>
1967        <p>terminal multiplexor</p>
1968
1969        <p><a href=
1970        "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki</a></p>
1971      </dd>
1972
1973      <dt><span class="part-name">vile</span>
1974      </dt>
1975
1976      <dd>
1977        <p><em>vi-like-emacs</em> may be built to use the terminfo,
1978        termcap or curses interfaces.</p>
1979
1980        <p><a href=
1981        "https://invisible-island.net/vile/">https://invisible-island.net/vile/</a></p>
1982      </dd>
1983    </dl>
1984  </blockquote>
1985
1986  <p>and finally, those which use only the termcap interface:</p>
1987
1988  <blockquote>
1989    <dl>
1990      <dt><span class="part-name">emacs</span>
1991      </dt>
1992
1993      <dd>
1994        <p>text editor</p>
1995
1996        <p><a href=
1997        "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/</a></p>
1998      </dd>
1999
2000      <dt><span class="part-name">less</span>
2001      </dt>
2002
2003      <dd>
2004        <p>The most commonly used <em>pager</em> (a program that
2005        displays text files).</p>
2006
2007        <p><a href=
2008        "http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/</a></p>
2009      </dd>
2010
2011      <dt><span class="part-name">screen</span>
2012      </dt>
2013
2014      <dd>
2015        <p>terminal multiplexor</p>
2016
2017        <p><a href=
2018        "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/</a></p>
2019      </dd>
2020
2021      <dt><span class="part-name">vim</span>
2022      </dt>
2023
2024      <dd>
2025        <p>text editor</p>
2026
2027        <p><a href="https://www.vim.org/">https://www.vim.org/</a></p>
2028      </dd>
2029    </dl>
2030  </blockquote>
2031
2032  <h2><a name="h2-development" id="h2-development">Development
2033  activities</a></h2>
2034
2035  <p>Zeyd Ben-Halim started <span class="main-name">ncurses</span>
2036  from a previous package pcurses, written by Pavel Curtis. Eric S.
2037  Raymond continued development. J&uuml;rgen Pfeifer wrote most of
2038  the form and menu libraries.</p>
2039
2040  <p>Ongoing development work is done by <a href=
2041  "mailto:dickey@invisible-island.net">Thomas E. Dickey</a>. Thomas
2042  E. Dickey has acted as the maintainer for the Free Software
2043  Foundation, which holds a <a href=
2044  "https://invisible-island.net/ncurses/ncurses-license.html">copyright
2045  on ncurses</a> for releases 4.2 through 6.1. Following the
2046  release of ncurses 6.1, effective as of release 6.2, copyright
2047  for ncurses reverted to Thomas E. Dickey (see the <a href=
2048  "https://invisible-island.net/ncurses/ncurses.faq.html#relicensed">
2049  ncurses FAQ</a> for additional information).</p>
2050
2051  <p>Contact the current maintainers at</p>
2052
2053  <blockquote>
2054    <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>
2055  </blockquote>
2056
2057  <p>To join the ncurses mailing list, please write email to</p>
2058
2059  <blockquote>
2060    <a href=
2061    "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a>
2062  </blockquote>
2063  containing the line:
2064
2065  <blockquote>
2066    <p><code>subscribe</code>
2067    <em>&lt;name&gt;@&lt;host.domain&gt;</em></p>
2068  </blockquote>
2069
2070  <p>This list is open to anyone interested in helping with the
2071  development and testing of this package.</p>
2072
2073  <p>Beta versions of <span class="main-name">ncurses</span> are
2074  made available at</p>
2075
2076  <blockquote>
2077    <p><a href=
2078    "ftp://ftp.invisible-island.net/ncurses/current/">ftp://ftp.invisible-island.net/ncurses/current/</a>
2079    and<br>
2080    <a href=
2081    "https://invisible-mirror.net/archives/ncurses/current/">https://invisible-mirror.net/archives/ncurses/current/</a>&nbsp;.</p>
2082  </blockquote>
2083
2084  <p>Patches to the current release are made available at</p>
2085
2086  <blockquote>
2087    <p><a href=
2088    "ftp://ftp.invisible-island.net/ncurses/6.1/">ftp://ftp.invisible-island.net/ncurses/6.1/</a>
2089    and<br>
2090    <a href=
2091    "https://invisible-mirror.net/archives/ncurses/6.1/">https://invisible-mirror.net/archives/ncurses/6.1/</a>&nbsp;.</p>
2092  </blockquote>
2093
2094  <p>There is an archive of the mailing list here:</p>
2095
2096  <blockquote>
2097    <p><a href=
2098    "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a>
2099    (also <a href=
2100    "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p>
2101  </blockquote>
2102
2103  <h2><a name="h2-this-stuff" id="h2-this-stuff">Related
2104  resources</a></h2>
2105
2106  <p>The release notes make scattered references to these pages,
2107  which may be interesting by themselves:</p>
2108
2109  <ul>
2110    <li><a href=
2111    "https://invisible-island.net/ncurses/ncurses-license.html"><span class="main-name">
2112    ncurses</span> licensing</a></li>
2113
2114    <li><a href=
2115    "https://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol
2116    versioning in <span class="main-name">ncurses</span></a></li>
2117
2118    <li><a href=
2119    "https://invisible-island.net/ncurses/ncurses-slang.html">Comments
2120    on <span class="main-name">ncurses</span> versus <span class=
2121    "main-name">slang</span> (S-Lang)</a></li>
2122
2123    <li><a href=
2124    "https://invisible-island.net/ncurses/tack.html">tack &ndash;
2125    terminfo action checker</a></li>
2126
2127    <li><a href=
2128    "https://invisible-island.net/ncurses/tctest.html">tctest
2129    &ndash; termcap library checker</a></li>
2130
2131    <li><a href=
2132    "https://invisible-island.net/ncurses/ncurses.html#download_database">
2133    Terminal Database</a></li>
2134  </ul>
2135
2136  <h2><a name="h2-other-stuff" id="h2-other-stuff">Other
2137  resources</a></h2>
2138
2139  <p>The distribution provides a newer version of the
2140  terminfo-format terminal description file once maintained by
2141  <a href="http://www.catb.org/~esr/terminfo/">Eric
2142  Raymond</a>&nbsp;. Unlike the older version, the termcap and
2143  terminfo data are provided in the same file, which also provides
2144  several user-definable extensions beyond the X/Open
2145  specification.</p>
2146
2147  <p>You can find lots of information on terminal-related topics
2148  not covered in the terminfo file at <a href=
2149  "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">
2150  Richard Shuford's archive</a>&nbsp;. The collection of computer
2151  manuals at <a href=
2152  "http://www.bitsavers.org/pdf/">bitsavers.org</a> has also been
2153  useful.</p>
2154
2155  <div class="nav">
2156    <ul>
2157      <li><a href="#h2-overview">Overview</a></li>
2158
2159      <li>
2160        <a href="#h2-release-notes">Release Notes</a>
2161
2162        <ul>
2163          <li>
2164            <a href="#h3-library">Library improvements</a>
2165
2166            <ul>
2167              <li><a href="#h4-new-library">New features</a></li>
2168
2169              <li><a href="#h4-fixes-library">Other
2170              improvements</a></li>
2171            </ul>
2172          </li>
2173
2174          <li>
2175            <a href="#h3-programs">Program improvements</a>
2176
2177            <ul>
2178              <li><a href="#h4-utilities">Utilities</a></li>
2179
2180              <li><a href="#h4-examples">Examples</a></li>
2181            </ul>
2182          </li>
2183
2184          <li><a href="#h3-database">Terminal database</a></li>
2185
2186          <li><a href="#h3-documentation">Documentation</a></li>
2187
2188          <li><a href="#h3-bug-fixes">Interesting bug-fixes</a></li>
2189
2190          <li>
2191            <a href="#h3-config-config">Configuration changes</a>
2192
2193            <ul>
2194              <li><a href="#h4-config-major">Major changes</a></li>
2195
2196              <li><a href="#h4-config-options">Configuration
2197              options</a></li>
2198            </ul>
2199          </li>
2200
2201          <li><a href="#h3-portability">Portability</a></li>
2202        </ul>
2203      </li>
2204
2205      <li><a href="#h2-features">Features of <span class=
2206      "main-name">ncurses</span></a></li>
2207
2208      <li><a href="#h2-who-uses">Applications using <span class=
2209      "main-name">ncurses</span></a></li>
2210
2211      <li><a href="#h2-development">Development activities</a></li>
2212
2213      <li><a href="#h2-this-stuff">Related resources</a></li>
2214
2215      <li><a href="#h2-other-stuff">Other resources</a></li>
2216    </ul>
2217  </div>
2218</body>
2219</html>
2220