]> ncurses.scripts.mit.edu Git - ncurses.git/blob - doc/html/announce.html
ncurses 6.2 - patch 20201212
[ncurses.git] / doc / html / announce.html
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">
1201 diff --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">
1264 20180224
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>