xref: /freebsd/contrib/ncurses/doc/html/announce.html (revision 81ad6265)
1<!--
2  $Id: announce.html,v 1.64 2020/10/19 08:18:48 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#h2-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 id="h4-utilities">Several improvements were made to the
524  utility programs:</p>
525
526  <dl>
527    <dt><span class="part-name">clear</span>
528    </dt>
529
530    <dd>
531      <ul>
532        <li>improved logic for clearing with the <em>E3</em>
533        extension, in case the terminal scrolls content onto its
534        saved-lines before actually clearing the display, by
535        clearing the saved-lines after clearing the display</li>
536      </ul>
537    </dd>
538
539    <dt><span class="part-name">infocmp</span>
540    </dt>
541
542    <dd>
543      <ul>
544        <li>omit filtering of &ldquo;<tt>OTxx</tt>&rdquo; names
545        which are used for obsolete capabilities, when the output
546        is sorted by long-names. This change helps when making a
547        table of the short/long capability names.</li>
548      </ul>
549    </dd>
550
551    <dt><span class="part-name">tic</span>
552    </dt>
553
554    <dd>
555      <ul>
556        <li>added check for consistent alternate character set
557        capabilities.</li>
558
559        <li>added check for paired <tt>indn</tt>/<tt>rin</tt>.</li>
560
561        <li>added check for terminals with <tt>parm_dch</tt> vs
562        <tt>parm_ich</tt>.</li>
563
564        <li>added check for the case where
565        <tt>setf</tt>/<tt>setb</tt> are given using different
566        strings, but provide identical results to
567        <tt>setaf</tt>/<tt>setab</tt>.</li>
568
569        <li>corrected check for <tt>ich1</tt>.</li>
570
571        <li>changed a too-large terminal entry from a fatal error
572        to a warning.</li>
573      </ul>
574    </dd>
575
576    <dt><span class="part-name">toe</span>
577    </dt>
578
579    <dd>
580      <ul>
581        <li>ignores any hex/b64 <tt>$TERMINFO</tt> value in the
582        list of terminfo databases.</li>
583      </ul>
584    </dd>
585
586    <dt><span class="part-name">tset</span>
587    </dt>
588
589    <dd>
590      <ul>
591        <li>replace check in <span class="part-name">reset</span>
592        command for obsolete &ldquo;<tt>pt</tt>&rdquo; capability
593        using <tt>tbc</tt> and <tt>hts</tt> capabilities as
594        clues</li>
595
596        <li>modify <span class="part-name">reset</span> to allow
597        for tabstops at intervals other than 8.</li>
598
599        <li>change <span class="part-name">reset</span>'s behavior
600        for margins to simply clear soft-margins if possible,
601        rather than clearing and then setting them according to the
602        terminal's width.</li>
603      </ul>
604    </dd>
605
606    <dt><span class="part-name">tput</span>
607    </dt>
608
609    <dd>
610      <ul>
611        <li>add &ldquo;<tt>x</tt>&rdquo; to <tt>getopt</tt> string
612        so that &ldquo;<tt>tput&nbsp;-x&nbsp;clear</tt>&rdquo;
613        works.</li>
614      </ul>
615    </dd>
616  </dl>
617
618  <p>Several changes were made to the generated ncurses*config
619  scripts and the analogous &ldquo;<tt>.pc</tt>&rdquo; files to
620  reduce differences between the configurations they report:</p>
621
622  <ul>
623    <li>
624      <p>modified the ncurse*-config and pc-files to more closely
625      match for the <tt>-I</tt> and <tt>-l</tt> options.</p>
626    </li>
627
628    <li>
629      <p>filtered out linker-specs from the <tt>--libs</tt>
630      report.</p>
631    </li>
632
633    <li>
634      <p>amended the ncurses*-config and pc-files to take into
635      account the rpath hack which differed between those
636      files.</p>
637    </li>
638
639    <li>
640      <p>modified generated ncurses*config and ncurses.pc,
641      ncursesw.pc, etc., to list helper libraries such as gpm for
642      static linking.</p>
643    </li>
644  </ul>
645
646  <h4><a name="h4-examples" id="h4-examples">Examples</a></h4>
647
648  <p>Along with the library and utilities, improvements were made
649  to the <a href=
650  "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>.
651  Most of this activity aimed at improving the test-packages. A few
652  changes are more generally useful, e.g., for the main ncurses
653  test-program, and for analyzing traces using the
654  <em>tracemunch</em> script:</p>
655
656  <ul>
657    <li>
658      <p>improve recovery from error when reading command-character
659      in <tt>test/ncurses.c</tt>, showing the relevant error
660      message and not exiting on EINTR.</p>
661    </li>
662
663    <li>
664      <p>improve <em>tracemunch</em>, by keeping track of
665      <tt>TERMINAL*</tt> values, and if tracing was first turned on
666      after initialization, attempt to show distinct screen, window
667      and terminal names anyway.</p>
668    </li>
669
670    <li>
671      <p>modify <em>tracemunch</em> to accept filename parameters
672      in addition to use as a pipe/filter.</p>
673    </li>
674
675    <li>
676      <p>update <em>tracemunch</em> to work with <em>perl
677      5.26.2</em>, which changed the rules for escaping regular
678      expressions.</p>
679    </li>
680
681    <li>
682      <p>add some checks in <em>tracemunch</em> for undefined
683      variables.</p>
684    </li>
685
686    <li>
687      <p>modify <tt>TurnOn</tt>/<tt>TurnOff</tt> macros (in
688      lib_vidattr.c and lib_vid_attr.c) to avoid expansion of
689      &ldquo;<tt>CUR</tt>&rdquo; in trace.</p>
690    </li>
691  </ul>
692
693  <p>There are other new demo/test programs and reusable
694  examples:</p>
695
696  <dl>
697    <dt><span class="part-name">color_content</span>
698    </dt>
699
700    <dd>Demonstrate the <tt>color_content</tt> and
701    <tt>extended_color_content</tt> functions.</dd>
702
703    <dt><span class="part-name">demo_tabs</span>
704    </dt>
705
706    <dd>A simple demo of tabs in curses.</dd>
707
708    <dt><span class="part-name">dump_window</span>
709    </dt>
710
711    <dd>A portable curses screen-dump, used to compare ncurses
712    screen contents with Solaris.</dd>
713
714    <dt><span class="part-name">pair_content</span>
715    </dt>
716
717    <dd>Demonstrate the <tt>pair_content</tt> and
718    <tt>extended_pair_content</tt> functions.</dd>
719
720    <dt><span class="part-name">report_hashing</span>
721    </dt>
722
723    <dd>Check hash-tables used for terminfo and termcap names.</dd>
724
725    <dt><span class="part-name">parse_rgb</span>
726    </dt>
727
728    <dd>Sample implementation of the ncurses RGB extension from
729    <a href=
730    "https://invisible-island.net/ncurses/man/user_caps.5.html">user_caps.5</a>,
731    used in <em>picsmap</em> and <em>savescreen</em> programs.</dd>
732  </dl>
733
734  <p>A variety of improvements were made to existing programs, both
735  new features as well as options added to make the set of programs
736  more consistent.</p>
737
738  <ul>
739    <li>
740      <p>add &ldquo;<tt>-l</tt>&rdquo; option to test/background,
741      to dump screen contents in a form that lets different curses
742      implementations be compared.</p>
743    </li>
744
745    <li>
746      <p>add &ldquo;<tt>@</tt>&rdquo; command to test/ncurses
747      F-test, to allow rapid jump to different character pages.</p>
748    </li>
749
750    <li>
751      <p>added enum, regex examples to test/demo_forms</p>
752    </li>
753
754    <li>
755      <p>amend Scaled256() macro in test/picsmap.c to cover the
756      full range 0..1000</p>
757    </li>
758
759    <li>
760      <p>corrected pathname used in Ada95 sample programs for
761      <tt>explain.txt</tt>, to work with test-packages, and used an
762      awk script to split the resulting pathname when it would be
763      too long for a single line.</p>
764    </li>
765
766    <li>
767      <p>ignore interrupted system-call in test/ncurses's
768      command-line, e.g., if the terminal were resized.</p>
769    </li>
770
771    <li>
772      <p>improved ifdef's for <tt>TABSIZE</tt> variable, to help
773      with AIX/HPUX ports.</p>
774    </li>
775  </ul>
776
777  <h3><a name="h3-database" id="h3-database">Terminal database</a></h3>
778
779  <p>There are several new terminal descriptions:</p>
780
781  <blockquote style="word-break:keep-all">
782    <p><tt>alacritty</tt>, <tt>domterm</tt>, <tt>kitty</tt>,
783    <tt>mintty</tt>, <tt>mintty-direct</tt>, <tt>ms-terminal</tt>,
784    <tt>n7900</tt>, <tt>nsterm-build309</tt>,
785    <tt>nsterm-direct</tt>, <tt>screen5</tt>, <tt>ti703</tt>,
786    <tt>ti707</tt>, <tt>ti703-w</tt>, <tt>ti707-w</tt>
787    <tt>vscode</tt>, <tt>vscode-direct</tt>, <tt>xterm-mono</tt>,
788    <tt>xterm.js</tt></p>
789  </blockquote>
790
791  <p>There are many changes to existing terminal descriptions. Some
792  were updates to several descriptions:</p>
793
794  <ul>
795    <li>use <a href=
796    "/ncurses/terminfo.src.html#tic-ansi_rep"><tt>ansi+rep</tt></a>
797    in a dozen places</li>
798
799    <li>add rs1 to konsole, mlterm</li>
800
801    <li>improve several flash capabilities with trailing mandatory
802    delays</li>
803
804    <li>drop <tt>ich1</tt> from <tt>rxvt-basic</tt>, <tt>Eterm</tt>
805    and <tt>mlterm</tt> to improve compatibility with old
806    non-curses programs</li>
807
808    <li>add/use <a href=
809    "/ncurses/terminfo.src.html#tic-xterm_keypad"><tt>xterm+keypad</tt></a>
810    in <tt>xterm-new</tt></li>
811
812    <li>use <a href=
813    "/ncurses/terminfo.src.html#tic-xterm_sl-twm"><tt>xterm+sl-twm</tt></a>
814    for consistency, nine places</li>
815
816    <li>improve <em>xm</em> example in <a href=
817    "/ncurses/terminfo.src.html#tic-xterm_x11mouse">xterm+x11mouse</a>
818    and <a href=
819    "/ncurses/terminfo.src.html#tic-xterm_sm_1006">xterm+sm_1006</a>.</li>
820  </ul>
821
822  <p>while others affected specific descriptions. These were
823  retested, to take into account changes by their developers:</p>
824
825  <blockquote>
826    <p><tt>terminator</tt>, <tt>st</tt></p>
827  </blockquote>
828
829  <p>while these are specific fixes based on reviewing
830  documentation, user reports, or warnings from <span class=
831  "part-name">tic</span>:</p>
832
833  <dl>
834    <dt><a href=
835    "/ncurses/terminfo.src.html#tic-adds200">adds200</a>:</dt>
836
837    <dd>
838      <ul>
839        <li>fix typo</li>
840      </ul>
841    </dd>
842
843    <dt><a href=
844    "/ncurses/terminfo.src.html#tic-gnome-256color">gnome-256color</a>
845    </dt>
846
847    <dd>
848      <ul>
849        <li>base entry on "gnome", not "vte", for consistency</li>
850      </ul>
851    </dd>
852
853    <dt><a href=
854    "/ncurses/terminfo.src.html#tic-interix">interix</a>
855    </dt>
856
857    <dd>
858      <ul>
859        <li>trim unnecessary setf/setb</li>
860      </ul>
861    </dd>
862
863    <dt><a href=
864    "/ncurses/terminfo.src.html#tic-linux-16color">linux-16color</a>
865    </dt>
866
867    <dd>
868      <ul>
869        <li>accommodate <a href=
870        "https://lists.gnu.org/archive/html/bug-ncurses/2019-10/msg00061.html">
871        Linux console driver</a> incompatibility introduced in
872        early 2018</li>
873      </ul>
874    </dd>
875
876    <dt><a href=
877    "/ncurses/terminfo.src.html#tic-nsterm-256color">nsterm-256color</a>:</dt>
878
879    <dd>
880      <ul>
881        <li>add nsterm-build309 to replace nsterm-256color,
882        assigning the latter as an alias of nsterm, to make mouse
883        work with nsterm-256color</li>
884      </ul>
885    </dd>
886
887    <dt><a href=
888    "/ncurses/terminfo.src.html#tic-regent40">regent40</a>:</dt>
889
890    <dd>
891      <ul>
892        <li>renumber function-keys to match manual</li>
893      </ul>
894    </dd>
895
896    <dt><a href=
897    "/ncurses/terminfo.src.html#tic-regent60">regent60</a>:</dt>
898
899    <dd>
900      <ul>
901        <li>add cd (clr_eos)</li>
902
903        <li>corrected acsc</li>
904
905        <li>add shifted function-keys</li>
906      </ul>
907    </dd>
908
909    <dt><a href=
910    "/ncurses/terminfo.src.html#tic-tvi950">tvi950</a>:</dt>
911
912    <dd>
913      <ul>
914        <li>added function-key definitions to agree with Televideo
915        950 manual</li>
916
917        <li>corrected acsc</li>
918
919        <li>remove bogus kf0</li>
920
921        <li>add bel</li>
922      </ul>
923    </dd>
924
925    <dt><a href=
926    "/ncurses/terminfo.src.html#tic-tvi955">tvi955</a>:</dt>
927
928    <dd>
929      <ul>
930        <li>fix typo</li>
931      </ul>
932    </dd>
933
934    <dt><a href=
935    "/ncurses/terminfo.src.html#tic-vi200">vi200</a>:</dt>
936
937    <dd>
938      <ul>
939        <li>add acsc string, including right/down-arrow</li>
940      </ul>
941    </dd>
942
943    <dt><a href=
944    "/ncurses/terminfo.src.html#tic-wy50">wy50</a>:</dt>
945
946    <dd>
947      <ul>
948        <li>corrected acsc</li>
949      </ul>
950    </dd>
951
952    <dt><a href="/ncurses/terminfo.src.html#tic-wy50">wy50</a> and
953    <a href="/ncurses/terminfo.src.html#tic-wy60">wy60</a>:</dt>
954
955    <dd>
956      <ul>
957        <li>add shifted function-keys as kF1 to kF16</li>
958      </ul>
959    </dd>
960
961    <dt><a href=
962    "/ncurses/terminfo.src.html#tic-xterm_x11hilite">xterm+x11hilite</a>:</dt>
963
964    <dd>
965      <ul>
966        <li>eliminate unused <em>p5</em> parameter.</li>
967      </ul>
968    </dd>
969  </dl>
970
971  <p>A few entries use extensions (user-defined terminal
972  capabilities):</p>
973
974  <ul>
975    <li>use <a href=
976    "/ncurses/terminfo.src.html#tic-xterm_sm_1006"><tt>xterm+sm+1006</tt></a>
977    (aka &ldquo;SGR 1006 mouse&rdquo;) for konsole-base and
978    putty</li>
979
980    <li>add <em><tt>Smol/Rmol</tt></em> user-defined capability to
981    <tt>tmux</tt> and <tt>vte-2018</tt></li>
982
983    <li>add <em><tt>Smulx</tt></em> user-defined capability to
984    <tt>tmux</tt>, <tt>vte-2018</tt></li>
985  </ul>
986
987  <h3><a name="h3-documentation" id=
988  "h3-documentation">Documentation</a></h3>
989
990  <p>As usual, this release</p>
991
992  <ul>
993    <li>
994      <p>improves documentation by describing new features,</p>
995    </li>
996
997    <li>
998      <p>attempts to improve the description of features which
999      users have found confusing</p>
1000    </li>
1001
1002    <li>
1003      <p>fills in overlooked descriptions of features which were
1004      described in the <a href=
1005      "https://invisible-island.net/ncurses/NEWS.html">NEWS</a>
1006      file but treated sketchily in manual pages.</p>
1007    </li>
1008  </ul>
1009
1010  <p>In addition to providing background information to explain
1011  these features and show how they evolved, there are corrections,
1012  clarifications, etc.:</p>
1013
1014  <ul>
1015    <li>
1016      <p>Corrections:</p>
1017
1018      <ul>
1019        <li>correct error-returns listed in manual pages for a few
1020        form functions</li>
1021
1022        <li>corrected prototypes in several manpages using script
1023        to extract those in compilable form.</li>
1024
1025        <li>fix typo in <a href=
1026        "https://invisible-island.net/ncurses/man/term.5.html#h3-EXTENDED-NUMBER-FORMAT">
1027        term.5</a>, improve explanation of format</li>
1028      </ul>
1029    </li>
1030
1031    <li>
1032      <p>Clarify in manual pages that <a href=
1033      "https://invisible-island.net/ncurses/man/curs_printw.3x.html#h2-PORTABILITY">
1034      vwprintw</a> and <a href=
1035      "https://invisible-island.net/ncurses/man/curs_scanw.3x.html#h2-PORTABILITY">
1036      vwscanw</a> are obsolete.<br>
1037      They have not been part of X/Open Curses since 2007.</p>
1038    </li>
1039
1040    <li>
1041      <p>New/improved history and portability sections:</p>
1042
1043      <ul>
1044        <li><a href=
1045        "https://invisible-island.net/ncurses/man/curs_addch.3x.html#h3-ACS-Symbols">
1046        curs_addch.3x</a> gives some background for ACS
1047        symbols.</li>
1048
1049        <li><a href=
1050        "https://invisible-island.net/ncurses/man/curs_getcchar.3x.html#h2-PORTABILITY">
1051        curs_getcchar.3x</a> explains a difference between ncurses
1052        and X/Open Curses.</li>
1053
1054        <li><a href=
1055        "https://invisible-island.net/ncurses/man/curs_getstr.3x.html#h2-PORTABILITY">
1056        curs_getstr.3x</a> gives historical/portability background
1057        for the length parameter of <tt>wgetnstr</tt>.</li>
1058
1059        <li><a href=
1060        "https://invisible-island.net/ncurses/man/curs_slk.3x.html">
1061        curs_slk.3x</a> lists a few differences between SVr4 curses
1062        and X/Open Curses for soft-keys.</li>
1063
1064        <li><a href=
1065        "https://invisible-island.net/ncurses/man/curs_terminfo.3x.html">
1066        curs_terminfo.3x</a> explains that the initial
1067        implementation of terminfo in SVr2 was mostly replaced by
1068        other developers in SVr3.</li>
1069
1070        <li><a href=
1071        "https://invisible-island.net/ncurses/man/infocmp.1m.html">infocmp.1</a>
1072        explains that the initial version of terminfo had no tool
1073        for decompiling descriptions. That came later, with SVr3,
1074        with a different developer.</li>
1075
1076        <li><a href=
1077        "https://invisible-island.net/ncurses/man/tabs.1.html">tabs.1</a>
1078        tells more than you wanted to know about the tool.</li>
1079
1080        <li><a href=
1081        "https://invisible-island.net/ncurses/man/tic.1m.html">tic.1</a>
1082        explains that the initial version of terminfo had a
1083        rudimentary tool (based on termcap) for compiling entries.
1084        The tool used with Unix was developed by others for
1085        SVr3.</li>
1086
1087        <li><a href=
1088        "https://invisible-island.net/ncurses/man/toe.1m.html">toe.1</a>
1089        explains the origin of this tool.</li>
1090      </ul>
1091    </li>
1092
1093    <li>
1094      <p>Improvements for <a href=
1095      "https://invisible-island.net/ncurses/man/user_caps.5.html">user_caps.5</a>:</p>
1096
1097      <ul>
1098        <li>mention <tt>meml</tt>, <tt>memu</tt> and
1099        <tt>box1</tt></li>
1100
1101        <li>expanded description of <tt>XM</tt></li>
1102
1103        <li>add a clarification regarding the <tt>RGB</tt>
1104        capability.</li>
1105
1106        <li>mention user_caps.5 in the tic and infocmp manual
1107        pages.</li>
1108      </ul>
1109    </li>
1110
1111    <li>
1112      <p>Other improvements:</p>
1113
1114      <ul>
1115        <li><a href=
1116        "https://invisible-island.net/ncurses/man/curs_add_wch.3x.html#h3-Line-Graphics">
1117        curs_add_wch.3x</a> adds note about Unicode terminology for
1118        the line-drawing characters.</li>
1119
1120        <li><a href=
1121        "https://invisible-island.net/ncurses/man/curs_color.3x.html#h2-RETURN-VALUE">
1122        curs_color.3x</a> improves discussion of error returns and
1123        extensions.</li>
1124
1125        <li><a href=
1126        "https://invisible-island.net/ncurses/man/curs_mouse.3x.html">
1127        curs_mouse.3x</a> explains how the <tt>kmous</tt> and
1128        <tt>XM</tt> capabilities are used for xterm-mouse
1129        input.</li>
1130
1131        <li><a href=
1132        "https://invisible-island.net/ncurses/man/curs_refresh.3x.html#h3-wnoutrefresh_doupdate">
1133        curs_refresh.3x</a> improves documentation regarding the
1134        virtual and physical screens.</li>
1135
1136        <li><a href=
1137        "https://invisible-island.net/ncurses/man/curs_util.3x.html">
1138        curs_util.3x</a> mentions a difference between SVr4 and
1139        X/Open Curses for <tt>unctrl.h</tt></li>
1140
1141        <li><a href=
1142        "https://invisible-island.net/ncurses/man/curs_variables.3x.html#h2-PORTABILITY">
1143        curs_variables.3x</a> improves description of the
1144        <em>init_tabs</em> capability and <tt>TABSIZE</tt>
1145        variable.</li>
1146
1147        <li><a href=
1148        "https://invisible-island.net/ncurses/man/ncurses.3x.html#h2-ALTERNATE-CONFIGURATIONS">
1149        ncurses.3x</a> improves documentation regarding
1150        feature-test macros in curses.h</li>
1151
1152        <li><a href=
1153        "https://invisible-island.net/ncurses/man/resizeterm.3x.html#h3-resize_term">
1154        resizeterm.3x</a> about top-level windows which touch the
1155        screen's borders.</li>
1156
1157        <li><a href=
1158        "https://invisible-island.net/ncurses/man/tput.1.html#h3-Terminal-Size">
1159        tput.1</a> clarifies how <em>tput</em> determines the
1160        terminal size.</li>
1161      </ul>
1162    </li>
1163  </ul>
1164
1165  <p>There are no new manual pages (all of the manual page updates
1166  are to existing pages).</p>
1167
1168  <p>Some of the improvements are more subtle, relating to the way
1169  the information is presented. For instance, the generated
1170  terminfo.5 file uses a different table layout, allowing it to use
1171  space on wide terminals more effectively.</p>
1172
1173  <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
1174  bug-fixes</a></h3>
1175
1176  <p>While there were many bugs fixed during development of ncurses
1177  6.2, only a few (the reason for this release) were both important
1178  and interesting. Most of the bug-fixes were for local issues
1179  which did not affect compatibility across releases. Since those
1180  are detailed in the NEWS file no elaboration is needed here.</p>
1181
1182  <p>The interesting bugs were in tic/infocmp's handling of
1183  user-defined capabilities. These were not recent bugs. Initially
1184  it was a simple problem:</p>
1185
1186  <ul>
1187    <li>The user-defined capabilities can be any type (boolean,
1188    number or string), but once given a type all uses of the name
1189    must conform to that type&mdash;unless some special support for
1190    a particular multi-typed name is built into ncurses.</li>
1191
1192    <li>
1193      <p>One of simpleterm's contributors copied some definitions
1194      for using <em>tmux</em>'s user-defined capabilities in
1195      <a href=
1196      "https://git.suckless.org/st/commit/06f8cf8ca87a81db15816658c40b2afcd1ad5332.html">
1197      late in 2016</a>.</p>
1198
1199      <blockquote>
1200        <pre class="demo-name">
1201diff --git a/st.info b/st.info
1202@@ -185,7 +185,10 @@ st| simpleterm,
1203  tsl=\E]0;,
1204  xenl,
1205  vpa=\E[%i%p1%dd,
1206-
1207+# Tmux unofficial extensions, see TERMINFO EXTENSIONS in tmux(1)
1208+ Se,
1209+ Ss,
1210+ Tc,
1211
1212 st-256color| simpleterm with 256 colors,
1213  use=st,
1214</pre>
1215      </blockquote>
1216    </li>
1217
1218    <li>
1219      <p>Later, in (referring to a version from <a href=
1220      "https://git.suckless.org/st/commit/c0882f2ed1d7a2dd0fa2efa52157e6fc6fde3652.html">
1221      mid-2017</a>), a user asked to have it updated in
1222      ncurses.</p>
1223    </li>
1224
1225    <li>
1226      <p>However, it had an error from the change in late 2016. The
1227      terminal description made what <em>tmux</em> expected to be
1228      <strong>string</strong> actually a
1229      <strong>boolean</strong>.</p>
1230
1231      <p>Over the years, there were problems with each of
1232      simpleterm's terminal descriptions. I repaired those, and
1233      usually dealt with the problem.</p>
1234    </li>
1235
1236    <li>
1237      <p>The difference in this case was that when compiling the
1238      terminal database, <em>tic</em> may have in memory the
1239      definitions for more than one terminal description (so that
1240      it can resolve &ldquo;<tt>use=</tt>&rdquo; clauses). Seeing
1241      two different types for the same name, in certain situations
1242      it would incorrectly merge the symbol tables for the two
1243      terminal descriptions.</p>
1244    </li>
1245
1246    <li>
1247      <p>On simpleterm's side, their bug was finally fixed in
1248      <a href=
1249      "https://git.suckless.org/st/commit/83866428de031300eab03fbb116bcf7d2b1d4f60.html">
1250      late 2019</a>, three years after the bug was created.</p>
1251    </li>
1252  </ul>
1253
1254  <p>For ncurses, the elapsed time to fix this bug was less than
1255  three years. Someone reported a problem with the terminal
1256  description a few weeks after releasing ncurses 6.1 (in <a href=
1257  "https://github.com/tmux/tmux/issues/1264">tmux #1264</a>), and
1258  the terminal description was updated that week (ncurses patch
1259  <a href=
1260  "https://invisible-island.net/ncurses/NEWS.html#t20180224">20180224</a>):</p>
1261
1262  <blockquote>
1263    <pre class="demo-name">
126420180224
1265        + modify _nc_resolve_uses2() to detect incompatible types when merging
1266          a "use=" clause of extended capabilities.  The problem was seen in a
1267          defective terminfo integrated from simpleterm sources in 20171111,
1268          compounded by repair in 20180121.
1269        + correct Ss/Ms interchange in st-0.7 entry (tmux #1264) -TD
1270</pre>
1271  </blockquote>
1272
1273  <p>The larger part of that change added a check to prevent a
1274  simple merge of terminal descriptions where the same user-defined
1275  name was used with different types. But it raised some
1276  questions:</p>
1277
1278  <ul>
1279    <li>
1280      <p>Was there a reliable way to manage terminal descriptions
1281      which used the same extended name in different ways?</p>
1282    </li>
1283
1284    <li>
1285      <p>Should ncurses provide a registry of well-known extended
1286      names, with their types?</p>
1287    </li>
1288  </ul>
1289
1290  <p>Since the correction to <a href=
1291  "https://invisible-island.net/ncurses/ncurses.html#download_database">
1292  <tt>terminfo.src</tt></a> could have been readily adopted by
1293  packagers, there was nothing more to be done from ncurses'
1294  standpoint on that part. But improving ncurses to prevent issues
1295  like that is the reason for making a release.</p>
1296
1297  <p>Nothing more (constructive) was mentioned with regard to
1298  simpleterm. But a few problems were found in the handling of
1299  user-defined capabilities:</p>
1300
1301  <ul>
1302    <li>
1303      <p>Forward-references to user-defined capabilities in a
1304      &ldquo;<tt>use=</tt>&rdquo; clause did not allocate new data
1305      for each use. In <em>tic</em>, successive compilation of
1306      terminal entries could add user-defined capabilities to the
1307      wrong terminal entry.</p>
1308
1309      <p>This was not noticed before, since xterm's terminal
1310      descriptions were the main users of the feature, and almost
1311      all of the uses of the building-blocks which contained
1312      user-defined capabilities were backward-references.</p>
1313    </li>
1314
1315    <li>
1316      <p>There is one (documented) case where ncurses 6.1 supports
1317      a user-defined capability that could be any type (i.e.,
1318      &ldquo;RGB&rdquo;). The check added in February 2018 to guard
1319      against mismatches did not handle all of the combinations
1320      needed.</p>
1321    </li>
1322  </ul>
1323
1324  <p>Both of these issues dated from the original implementation of
1325  user-defined capabilities. Fixing them does not change the
1326  terminal database, but a older <em>tic</em> without the fixes
1327  will not be able to handle terminfo sources which rely upon those
1328  fixes. Starting in June 2019, the download link for the terminfo
1329  source file was capped at that date. The development sources have
1330  an up-to-date copy of the file, for people with a legitimate need
1331  for it.</p>
1332
1333  <p>The &ldquo;<tt>-c</tt>&rdquo; (check) option of <em>tic</em>
1334  is not very useful if it cannot offer advice on parameters needed
1335  for user-defined capabilities. The various <em>Caps</em> files
1336  were reorganized to reduce redundancy, and in the common portion
1337  (<a href=
1338  "https://github.com/ThomasDickey/ncurses-snapshots/blob/master/include/Caps-ncurses">Caps-ncurses</a>),
1339  a registry of user-defined capabilities is provided for use by
1340  <em>tic</em>. While users can still define their own custom
1341  capabilities, <em>tic</em> will not offer any advice when their
1342  parameters do not match.</p>
1343
1344  <p>In ncurses 6.2, <em>tic</em> makes a special check to allow
1345  any type for <em>RGB</em>, but its being able to do this relies
1346  upon fixes made in the ncurses library in mid-2019.</p>
1347
1348  <h3><a name="h3-config-config" id=
1349  "h3-config-config">Configuration changes</a></h3>
1350
1351  <h4><a name="h4-config-major" id="h4-config-major">Major
1352  changes</a></h4>
1353
1354  <p>There are no major changes. Several new options were added to
1355  ease integration of packages with systems using different
1356  versions of <em>GNAT</em> and <em>ncurses</em>. Also,
1357  improvements were made to configure checks.</p>
1358
1359  <h4><a name="h4-config-options" id=
1360  "h4-config-options">Configuration options</a></h4>
1361
1362  <p>There are a few new/modified configure options:</p>
1363
1364  <dl>
1365    <dt><tt>--with-config-suffix</tt>
1366    </dt>
1367
1368    <dd>
1369      <p>helps work around a filename conflict with Debian packages
1370      versus test-packages.</p>
1371    </dd>
1372
1373    <dt><tt>--with-ada-libname</tt>
1374    </dt>
1375
1376    <dd>
1377      <p>allows one to rename the &ldquo;AdaCurses&rdquo; library
1378      (at least one packager prefers a lowercase name).</p>
1379    </dd>
1380
1381    <dt><tt>--with-fallbacks</tt>
1382    </dt>
1383
1384    <dd>
1385      <p>now ensures there is a value, and adds the fallback
1386      information to top-level Makefile summary.</p>
1387    </dd>
1388
1389    <dt><tt>--with-pcre2</tt>
1390    </dt>
1391
1392    <dd>
1393      <p>check for pcre-posix library to help with MinGW port.</p>
1394    </dd>
1395
1396    <dt><tt>--with-tic-path</tt> and<br></dt>
1397
1398    <dt><tt>--with-infocmp-path</tt>
1399    </dt>
1400
1401    <dd>
1402      <p>help work around problems building fallback source using
1403      pre-6.0 tic/infocmp.</p>
1404    </dd>
1405
1406    <dt><tt>--with-versioned-syms</tt>
1407    </dt>
1408
1409    <dd>
1410      <p>option value can now be a relative pathname.</p>
1411    </dd>
1412  </dl>
1413
1414  <h3><a name="h3-portability" id="h3-portability">Portability</a></h3>
1415
1416  <p>Many of the portability changes are implemented via the
1417  configure script:</p>
1418
1419  <ul>
1420    <li>
1421      <p>ignore <a href=
1422      "/ncurses/man/ncurses.3x.html#h3-TERMINFO"><tt>$TERMINFO</tt></a>
1423      as a default value in configure script if it came from the
1424      <tt>infocmp</tt> <strong><tt>-Q</tt></strong> option.</p>
1425    </li>
1426
1427    <li>
1428      <p>distinguish gcc from icc and clang when the
1429      <tt>--enable-warnings</tt> option is not used, to avoid
1430      unnecessary warnings about unrecognized inline options</p>
1431    </li>
1432
1433    <li>
1434      <p>consistently prepend new libraries as they are found
1435      during configuration, rather than relying upon the linker to
1436      resolve order dependencies of libraries.</p>
1437    </li>
1438
1439    <li>
1440      <p>modified configure scripts to reduce relinking/ranlib
1441      during library install :</p>
1442
1443      <ul>
1444        <li>use &ldquo;<tt>install -p</tt>&rdquo; when available,
1445        to avoid need for ranlib of static libraries.</li>
1446
1447        <li>scripts which use
1448        &ldquo;<tt>--disable-relink</tt>;&rdquo; add a 1-second
1449        sleep to work around tools which use whole-second
1450        timestamps, e.g., in <tt>utime</tt> rather than the actual
1451        file system resolution.</li>
1452      </ul>
1453    </li>
1454
1455    <li>
1456      <p id="getenv-check">add configure check for <a href=
1457      "#getenv-fixes"><tt>getenv</tt></a> to work around
1458      implementation shown in Emscripten which overwrites the
1459      previous return value on each call.</p>
1460
1461      <p>Use that to optionally suppress <tt>START_TRACE</tt>
1462      macro, whose call to <tt>getenv</tt> may not work
1463      properly</p>
1464    </li>
1465
1466    <li>
1467      <p>change target configure level for <tt>_XOPEN_SOURCE</tt>
1468      to 600 to address use of <tt>vsscanf</tt> and
1469      <tt>setenv</tt>.</p>
1470    </li>
1471
1472    <li>
1473      <p>reduce use of <tt>_GNU_SOURCE</tt> for current glibc where
1474      <tt>_DEFAULT_SOURCE</tt> combines with
1475      <tt>_XOPEN_SOURCE</tt></p>
1476
1477      <p>Allow for Cygwin's newlib when checking for the
1478      _DEFAULT_SOURCE symbol.</p>
1479
1480      <p>MidnightBSD is now checked for the
1481      <tt>_XOPEN_SOURCE</tt>-related definitions.</p>
1482    </li>
1483
1484    <li>
1485      <p>If the check for <tt>va_copy</tt> or <tt>__va_copy</tt>
1486      fails,</p>
1487
1488      <ul>
1489        <li>configure now tries copying the pointers for
1490        <tt>va_list</tt>, or as an array.</li>
1491
1492        <li>alternatively, it checks for
1493        <tt>__builtin_va_copy</tt>(), which could be used with AIX
1494        <tt>xlc</tt> in <em>c89</em> mode.</li>
1495      </ul>
1496    </li>
1497
1498    <li>
1499      <p>several changes to support a port to Ultrix 3.1:</p>
1500
1501      <ul>
1502        <li>check if "b" binary feature of fopen works</li>
1503
1504        <li>check for missing feature of locale.h</li>
1505
1506        <li>add fallback for strstr() in test-programs</li>
1507
1508        <li>add fallback for STDOUT_FILENO in test-programs</li>
1509      </ul>
1510    </li>
1511
1512    <li>
1513      <p>The <em>test/configure</em> script (used for <a href=
1514      "/ncurses/ncurses-examples.html"><em>ncurses-examples</em></a>)
1515      is improved:</p>
1516
1517      <ul>
1518        <li>work around non-ncurses termcap.h file, e.g., in
1519        Slackware.</li>
1520
1521        <li>check for <a href=
1522        "/ncurses/man/curs_variables.3x.html#h3-TABSIZE"><tt>TABSIZE</tt></a>
1523        variable.</li>
1524
1525        <li>checks for the X11/Intrinsic.h header, accommodate
1526        recent MacOS changes which largely emptied
1527        <tt>/usr/include</tt>.</li>
1528      </ul>
1529    </li>
1530  </ul>
1531
1532  <p>Here are some of the other portability fixes:</p>
1533
1534  <ul>
1535    <li>
1536      <p>added dummy "check" rule in top-level and test-Makefile to
1537      simplify building test-packages for ArchLinux.</p>
1538    </li>
1539
1540    <li>
1541      <p>dropped library-dependency on psapi for MinGW port, since
1542      win_driver.c defines <tt>PSAPI_VERSION</tt> to 2, making it
1543      use <tt>GetProcessImageFileName</tt> from kernel32.dll</p>
1544    </li>
1545
1546    <li>
1547      <p>made build-fixes for configuration using --program-suffix
1548      with Ada95, noticed with MacOS but applicable to other
1549      platforms without libpanelw, etc.</p>
1550    </li>
1551
1552    <li>
1553      <p>modified ncurses/Makefile.in to fix a case where
1554      Debian/testing changes to the ld --as-needed configuration
1555      broke ncurses-examples test packages.</p>
1556    </li>
1557
1558    <li>
1559      <p>used <tt>_WIN32</tt>/<tt>_WIN64</tt> in preference to
1560      <tt>__MINGW32__</tt>/<tt>__MINGW64__</tt> symbols to simplify
1561      building with Microsoft Visual C++, since the former are
1562      defined in both compiler configurations.</p>
1563    </li>
1564  </ul>
1565
1566  <hr>
1567
1568  <h2><a name="h2-features" id="h2-features">Features of
1569  <span class="main-name">ncurses</span></a></h2>
1570
1571  <p>The <span class="main-name">ncurses</span> package is fully
1572  upward-compatible with SVr4 (System V Release 4) curses:</p>
1573
1574  <ul>
1575    <li>
1576      <p>All of the SVr4 calls have been implemented (and are
1577      documented).</p>
1578    </li>
1579
1580    <li>
1581      <p><span class="main-name">ncurses</span> supports all of the
1582      for SVr4 curses features including keyboard mapping, color,
1583      forms-drawing with ACS characters, and automatic recognition
1584      of keypad and function keys.</p>
1585    </li>
1586
1587    <li>
1588      <p><span class="main-name">ncurses</span> provides these SVr4
1589      add-on libraries (not part of X/Open Curses):</p>
1590
1591      <ul>
1592        <li>
1593          <p>the panels library, supporting a stack of windows with
1594          backing store.</p>
1595        </li>
1596
1597        <li>
1598          <p>the menus library, supporting a uniform but flexible
1599          interface for menu programming.</p>
1600        </li>
1601
1602        <li>
1603          <p>the form library, supporting data collection through
1604          on-screen forms.</p>
1605        </li>
1606      </ul>
1607    </li>
1608
1609    <li>
1610      <p><span class="main-name">ncurses</span>'s terminal database
1611      is fully compatible with that used by SVr4 curses.</p>
1612
1613      <ul>
1614        <li>
1615          <p><span class="main-name">ncurses</span> supports
1616          user-defined capabilities which it can see, but which are
1617          hidden from SVr4 curses applications using the
1618          <em>same</em> terminal database.</p>
1619        </li>
1620
1621        <li>
1622          <p>It can be optionally configured to match the format
1623          used in related systems such as AIX and Tru64.</p>
1624        </li>
1625
1626        <li>
1627          <p>Alternatively, <span class="main-name">ncurses</span>
1628          can be configured to use hashed databases rather than the
1629          directory of files used by SVr4 curses.</p>
1630        </li>
1631      </ul>
1632    </li>
1633
1634    <li>
1635      <p>The <span class="main-name">ncurses</span> utilities have
1636      options to allow you to filter terminfo entries for use with
1637      less capable <em>curses</em>/<em>terminfo</em> versions such
1638      as the HP/UX and AIX ports.</p>
1639    </li>
1640  </ul>
1641
1642  <p>The <span class="main-name">ncurses</span> package also has
1643  many useful extensions over SVr4:</p>
1644
1645  <ul>
1646    <li>
1647      <p>The API is 8-bit clean and base-level conformant with the
1648      X/OPEN curses specification, XSI curses (that is, it
1649      implements all BASE level features, and most EXTENDED
1650      features). It includes many function calls not supported
1651      under SVr4 curses (but portability of all calls is documented
1652      so you can use the SVr4 subset only).</p>
1653    </li>
1654
1655    <li>
1656      <p>Unlike SVr3 curses, <span class="main-name">ncurses</span>
1657      can write to the rightmost-bottommost corner of the screen if
1658      your terminal has an insert-character capability.</p>
1659    </li>
1660
1661    <li>
1662      <p>Ada95 and C++ bindings.</p>
1663    </li>
1664
1665    <li>
1666      <p>Support for mouse event reporting with X Window xterm and
1667      FreeBSD and OS/2 console windows.</p>
1668    </li>
1669
1670    <li>
1671      <p>Extended mouse support via Alessandro Rubini's gpm
1672      package.</p>
1673    </li>
1674
1675    <li>
1676      <p>The function <code>wresize</code> allows you to resize
1677      windows, preserving their data.</p>
1678    </li>
1679
1680    <li>
1681      <p>The function <code>use_default_colors</code> allows you to
1682      use the terminal's default colors for the default color pair,
1683      achieving the effect of transparent colors.</p>
1684    </li>
1685
1686    <li>
1687      <p>The functions <code>keyok</code> and
1688      <code>define_key</code> allow you to better control the use
1689      of function keys, e.g., disabling the <span class=
1690      "main-name">ncurses</span> KEY_MOUSE, or by defining more
1691      than one control sequence to map to a given key code.</p>
1692    </li>
1693
1694    <li>
1695      <p>Support for 256-color terminals, such as modern xterm.</p>
1696    </li>
1697
1698    <li>
1699      <p>Support for 16-color terminals, such as <em>aixterm</em>
1700      and <em>modern xterm</em>.</p>
1701    </li>
1702
1703    <li>
1704      <p>Better cursor-movement optimization. The package now
1705      features a cursor-local-movement computation more efficient
1706      than either BSD's or System V's.</p>
1707    </li>
1708
1709    <li>
1710      <p>Super hardware scrolling support. The screen-update code
1711      incorporates a novel, simple, and cheap algorithm that
1712      enables it to make optimal use of hardware scrolling,
1713      line-insertion, and line-deletion for screen-line movements.
1714      This algorithm is more powerful than the 4.4BSD curses
1715      <code>quickch</code> routine.</p>
1716    </li>
1717
1718    <li>
1719      <p>Real support for terminals with the magic-cookie glitch.
1720      The screen-update code will refrain from drawing a highlight
1721      if the magic- cookie unattributed spaces required just before
1722      the beginning and after the end would step on a non-space
1723      character. It will automatically shift highlight boundaries
1724      when doing so would make it possible to draw the highlight
1725      without changing the visual appearance of the screen.</p>
1726    </li>
1727
1728    <li>
1729      <p>It is possible to generate the library with a list of
1730      pre-loaded fallback entries linked to it so that it can serve
1731      those terminal types even when no terminfo tree or termcap
1732      file is accessible (this may be useful for support of
1733      screen-oriented programs that must run in single-user
1734      mode).</p>
1735    </li>
1736
1737    <li>
1738      <p>The <a href=
1739      "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name">
1740      tic</span></a>/<a href=
1741      "https://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a>
1742      utility provided with <span class="main-name">ncurses</span>
1743      has the ability to translate many termcaps from the XENIX,
1744      IBM and AT&amp;T extension sets.</p>
1745    </li>
1746
1747    <li>
1748      <p>A BSD-like <a href=
1749      "https://invisible-island.net/ncurses/man/tset.1.html"><span class="part-name">
1750      tset</span></a> utility is provided.</p>
1751    </li>
1752
1753    <li>
1754      <p>The <span class="main-name">ncurses</span> library and
1755      utilities will automatically read terminfo entries from
1756      $HOME/.terminfo if it exists, and compile to that directory
1757      if it exists and the user has no write access to the system
1758      directory. This feature makes it easier for users to have
1759      personal terminfo entries without giving up access to the
1760      system terminfo directory.</p>
1761    </li>
1762
1763    <li>
1764      <p>You may specify a path of directories to search for
1765      compiled descriptions with the environment variable
1766      TERMINFO_DIRS (this generalizes the feature provided by
1767      TERMINFO under stock System V.)</p>
1768    </li>
1769
1770    <li>
1771      <p>In terminfo source files, use capabilities may refer not
1772      just to other entries in the same source file (as in System
1773      V) but also to compiled entries in either the system terminfo
1774      directory or the user's $HOME/.terminfo directory.</p>
1775    </li>
1776
1777    <li>
1778      <p>The table-of-entries utility <a href=
1779      "https://invisible-island.net/ncurses/man/toe.1m.html"><span class="part-name">
1780      toe</span></a> makes it easy for users to see exactly what
1781      terminal types are available on the system.</p>
1782    </li>
1783
1784    <li>
1785      <p>The library meets the XSI requirement that every macro
1786      entry point have a corresponding function which may be linked
1787      (and will be prototype-checked) if the macro definition is
1788      disabled with <code>#undef</code>.</p>
1789    </li>
1790
1791    <li>
1792      <p>Extensive documentation is provided (see the <em><a href=
1793      "https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading">
1794      Additional Reading</a></em> section of the <em><a href=
1795      "https://invisible-island.net/ncurses/ncurses.faq.html"><span class="main-name">
1796      ncurses</span> FAQ</a></em> for online documentation).</p>
1797    </li>
1798  </ul>
1799
1800  <h2><a name="h2-who-uses" id="h2-who-uses">Applications using
1801  <span class="main-name">ncurses</span></a></h2>
1802
1803  <p>The <span class="main-name">ncurses</span> distribution
1804  includes a selection of test programs (including a few games).
1805  These are available separately as <a href=
1806  "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a></p>
1807
1808  <p>The ncurses library has been tested with a wide variety of
1809  applications including:</p>
1810
1811  <blockquote>
1812    <dl>
1813      <dt><span class="part-name">aptitude</span>
1814      </dt>
1815
1816      <dd>
1817        <p>FrontEnd to Apt, the debian package manager</p>
1818
1819        <p><a href=
1820        "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude</a></p>
1821      </dd>
1822
1823      <dt><span class="part-name">cdk</span>
1824      </dt>
1825
1826      <dd>
1827        <p>Curses Development Kit</p>
1828
1829        <p><a href=
1830        "https://invisible-island.net/cdk/">https://invisible-island.net/cdk/</a><br>
1831
1832        </p>
1833      </dd>
1834
1835      <dt><span class="part-name">ded</span>
1836      </dt>
1837
1838      <dd>
1839        <p>directory-editor</p>
1840
1841        <p><a href=
1842        "https://invisible-island.net/ded/">https://invisible-island.net/ded/</a></p>
1843      </dd>
1844
1845      <dt><span class="part-name">dialog</span>
1846      </dt>
1847
1848      <dd>
1849        <p>the underlying application used in Slackware's setup,
1850        and the basis for similar install/configure applications on
1851        many systems.</p>
1852
1853        <p><a href=
1854        "https://invisible-island.net/dialog/">https://invisible-island.net/dialog/</a></p>
1855      </dd>
1856
1857      <dt><span class="part-name">lynx</span>
1858      </dt>
1859
1860      <dd>
1861        <p>the text WWW browser</p>
1862
1863        <p><a href=
1864        "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/</a></p>
1865      </dd>
1866
1867      <dt><span class="part-name">mutt</span>
1868      </dt>
1869
1870      <dd>
1871        <p>mail utility</p>
1872
1873        <p><a href="http://www.mutt.org/">http://www.mutt.org/</a></p>
1874      </dd>
1875
1876      <dt><span class="part-name">ncftp</span>
1877      </dt>
1878
1879      <dd>
1880        <p>file-transfer utility</p>
1881
1882        <p><a href=
1883        "https://www.ncftp.com/">https://www.ncftp.com/</a></p>
1884      </dd>
1885
1886      <dt><span class="part-name">nvi</span>
1887      </dt>
1888
1889      <dd>
1890        <p>New vi uses ncurses.</p>
1891
1892        <p><a href=
1893        "https://sites.google.com/a/bostic.com/keithbostic/vi">https://sites.google.com/a/bostic.com/keithbostic/vi</a><br>
1894
1895        </p>
1896      </dd>
1897
1898      <dt><span class="part-name">ranger</span>
1899      </dt>
1900
1901      <dd>
1902        <p>A console file manager with VI key bindings in
1903        <em>Python</em>.</p>
1904
1905        <p><a href=
1906        "https://ranger.github.io/">https://ranger.github.io/</a></p>
1907      </dd>
1908
1909      <dt><span class="part-name">tin</span>
1910      </dt>
1911
1912      <dd>
1913        <p>newsreader, supporting color, MIME</p>
1914
1915        <p><a href="http://www.tin.org/">http://www.tin.org/</a></p>
1916      </dd>
1917
1918      <dt><span class="part-name">vifm</span>
1919      </dt>
1920
1921      <dd>
1922        <p>File manager with vi like keybindings</p>
1923
1924        <p><a href="https://vifm.info/">https://vifm.info/</a></p>
1925      </dd>
1926    </dl>
1927  </blockquote>
1928
1929  <p>as well as some that use <span class=
1930  "main-name">ncurses</span> for the terminfo support alone:</p>
1931
1932  <blockquote>
1933    <dl>
1934      <dt><span class="part-name">minicom</span>
1935      </dt>
1936
1937      <dd>
1938        <p>terminal emulator for serial modem connections</p>
1939
1940        <p><a href=
1941        "https://alioth.debian.org/projects/minicom/">https://alioth.debian.org/projects/minicom/</a></p>
1942      </dd>
1943
1944      <dt><span class="part-name">mosh</span>
1945      </dt>
1946
1947      <dd>
1948        <p>a replacement for <code>ssh</code>.</p>
1949
1950        <p><a href=
1951        "https://mosh.mit.edu/">https://mosh.mit.edu/</a></p>
1952      </dd>
1953
1954      <dt><span class="part-name">tack</span>
1955      </dt>
1956
1957      <dd>
1958        <p>terminfo action checker</p>
1959
1960        <p><a href=
1961        "https://invisible-island.net/ncurses/tack.html">https://invisible-island.net/ncurses/tack.html</a></p>
1962      </dd>
1963
1964      <dt><span class="part-name">tmux</span>
1965      </dt>
1966
1967      <dd>
1968        <p>terminal multiplexor</p>
1969
1970        <p><a href=
1971        "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki</a></p>
1972      </dd>
1973
1974      <dt><span class="part-name">vile</span>
1975      </dt>
1976
1977      <dd>
1978        <p><em>vi-like-emacs</em> may be built to use the terminfo,
1979        termcap or curses interfaces.</p>
1980
1981        <p><a href=
1982        "https://invisible-island.net/vile/">https://invisible-island.net/vile/</a></p>
1983      </dd>
1984    </dl>
1985  </blockquote>
1986
1987  <p>and finally, those which use only the termcap interface:</p>
1988
1989  <blockquote>
1990    <dl>
1991      <dt><span class="part-name">emacs</span>
1992      </dt>
1993
1994      <dd>
1995        <p>text editor</p>
1996
1997        <p><a href=
1998        "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/</a></p>
1999      </dd>
2000
2001      <dt><span class="part-name">less</span>
2002      </dt>
2003
2004      <dd>
2005        <p>The most commonly used <em>pager</em> (a program that
2006        displays text files).</p>
2007
2008        <p><a href=
2009        "http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/</a></p>
2010      </dd>
2011
2012      <dt><span class="part-name">screen</span>
2013      </dt>
2014
2015      <dd>
2016        <p>terminal multiplexor</p>
2017
2018        <p><a href=
2019        "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/</a></p>
2020      </dd>
2021
2022      <dt><span class="part-name">vim</span>
2023      </dt>
2024
2025      <dd>
2026        <p>text editor</p>
2027
2028        <p><a href="https://www.vim.org/">https://www.vim.org/</a></p>
2029      </dd>
2030    </dl>
2031  </blockquote>
2032
2033  <h2><a name="h2-development" id="h2-development">Development
2034  activities</a></h2>
2035
2036  <p>Zeyd Ben-Halim started <span class="main-name">ncurses</span>
2037  from a previous package pcurses, written by Pavel Curtis. Eric S.
2038  Raymond continued development. J&uuml;rgen Pfeifer wrote most of
2039  the form and menu libraries.</p>
2040
2041  <p>Ongoing development work is done by <a href=
2042  "mailto:dickey@invisible-island.net">Thomas E. Dickey</a>. Thomas
2043  E. Dickey has acted as the maintainer for the Free Software
2044  Foundation, which holds a <a href=
2045  "https://invisible-island.net/ncurses/ncurses-license.html">copyright
2046  on ncurses</a> for releases 4.2 through 6.1. Following the
2047  release of ncurses 6.1, effective as of release 6.2, copyright
2048  for ncurses reverted to Thomas E. Dickey (see the <a href=
2049  "https://invisible-island.net/ncurses/ncurses.faq.html#relicensed">
2050  ncurses FAQ</a> for additional information).</p>
2051
2052  <p>Contact the current maintainers at</p>
2053
2054  <blockquote>
2055    <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>
2056  </blockquote>
2057
2058  <p>To join the ncurses mailing list, please write email to</p>
2059
2060  <blockquote>
2061    <a href=
2062    "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a>
2063  </blockquote>
2064  containing the line:
2065
2066  <blockquote>
2067    <p><code>subscribe</code>
2068    <em>&lt;name&gt;@&lt;host.domain&gt;</em></p>
2069  </blockquote>
2070
2071  <p>This list is open to anyone interested in helping with the
2072  development and testing of this package.</p>
2073
2074  <p>Beta versions of <span class="main-name">ncurses</span> are
2075  made available at</p>
2076
2077  <blockquote>
2078    <p><a href=
2079    "ftp://ftp.invisible-island.net/ncurses/current/">ftp://ftp.invisible-island.net/ncurses/current/</a>
2080    and<br>
2081    <a href=
2082    "https://invisible-mirror.net/archives/ncurses/current/">https://invisible-mirror.net/archives/ncurses/current/</a>&nbsp;.</p>
2083  </blockquote>
2084
2085  <p>Patches to the current release are made available at</p>
2086
2087  <blockquote>
2088    <p><a href=
2089    "ftp://ftp.invisible-island.net/ncurses/6.1/">ftp://ftp.invisible-island.net/ncurses/6.1/</a>
2090    and<br>
2091    <a href=
2092    "https://invisible-mirror.net/archives/ncurses/6.1/">https://invisible-mirror.net/archives/ncurses/6.1/</a>&nbsp;.</p>
2093  </blockquote>
2094
2095  <p>There is an archive of the mailing list here:</p>
2096
2097  <blockquote>
2098    <p><a href=
2099    "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a>
2100    (also <a href=
2101    "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p>
2102  </blockquote>
2103
2104  <h2><a name="h2-this-stuff" id="h2-this-stuff">Related
2105  resources</a></h2>
2106
2107  <p>The release notes make scattered references to these pages,
2108  which may be interesting by themselves:</p>
2109
2110  <ul>
2111    <li><a href=
2112    "https://invisible-island.net/ncurses/ncurses-license.html"><span class="main-name">
2113    ncurses</span> licensing</a></li>
2114
2115    <li><a href=
2116    "https://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol
2117    versioning in <span class="main-name">ncurses</span></a></li>
2118
2119    <li><a href=
2120    "https://invisible-island.net/ncurses/ncurses-slang.html">Comments
2121    on <span class="main-name">ncurses</span> versus <span class=
2122    "main-name">slang</span> (S-Lang)</a></li>
2123
2124    <li><a href=
2125    "https://invisible-island.net/ncurses/tack.html">tack &ndash;
2126    terminfo action checker</a></li>
2127
2128    <li><a href=
2129    "https://invisible-island.net/ncurses/tctest.html">tctest
2130    &ndash; termcap library checker</a></li>
2131
2132    <li><a href=
2133    "https://invisible-island.net/ncurses/ncurses.html#download_database">
2134    Terminal Database</a></li>
2135  </ul>
2136
2137  <h2><a name="h2-other-stuff" id="h2-other-stuff">Other
2138  resources</a></h2>
2139
2140  <p>The distribution provides a newer version of the
2141  terminfo-format terminal description file once maintained by
2142  <a href="http://www.catb.org/~esr/terminfo/">Eric
2143  Raymond</a>&nbsp;. Unlike the older version, the termcap and
2144  terminfo data are provided in the same file, which also provides
2145  several user-definable extensions beyond the X/Open
2146  specification.</p>
2147
2148  <p>You can find lots of information on terminal-related topics
2149  not covered in the terminfo file at <a href=
2150  "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">
2151  Richard Shuford's archive</a>&nbsp;. The collection of computer
2152  manuals at <a href=
2153  "http://www.bitsavers.org/pdf/">bitsavers.org</a> has also been
2154  useful.</p>
2155
2156  <div class="nav">
2157    <ul>
2158      <li><a href="#h2-overview">Overview</a></li>
2159
2160      <li>
2161        <a href="#h2-release-notes">Release Notes</a>
2162
2163        <ul>
2164          <li>
2165            <a href="#h3-library">Library improvements</a>
2166
2167            <ul>
2168              <li><a href="#h4-new-library">New features</a></li>
2169
2170              <li><a href="#h4-fixes-library">Other
2171              improvements</a></li>
2172            </ul>
2173          </li>
2174
2175          <li>
2176            <a href="#h3-programs">Program improvements</a>
2177
2178            <ul>
2179              <li><a href="#h4-utilities">Utilities</a></li>
2180
2181              <li><a href="#h4-examples">Examples</a></li>
2182            </ul>
2183          </li>
2184
2185          <li><a href="#h3-database">Terminal database</a></li>
2186
2187          <li><a href="#h3-documentation">Documentation</a></li>
2188
2189          <li><a href="#h3-bug-fixes">Interesting bug-fixes</a></li>
2190
2191          <li>
2192            <a href="#h3-config-config">Configuration changes</a>
2193
2194            <ul>
2195              <li><a href="#h4-config-major">Major changes</a></li>
2196
2197              <li><a href="#h4-config-options">Configuration
2198              options</a></li>
2199            </ul>
2200          </li>
2201
2202          <li><a href="#h3-portability">Portability</a></li>
2203        </ul>
2204      </li>
2205
2206      <li><a href="#h2-features">Features of <span class=
2207      "main-name">ncurses</span></a></li>
2208
2209      <li><a href="#h2-who-uses">Applications using <span class=
2210      "main-name">ncurses</span></a></li>
2211
2212      <li><a href="#h2-development">Development activities</a></li>
2213
2214      <li><a href="#h2-this-stuff">Related resources</a></li>
2215
2216      <li><a href="#h2-other-stuff">Other resources</a></li>
2217    </ul>
2218  </div>
2219</body>
2220</html>
2221