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