ncurses 6.3 - patch 20211127
[ncurses.git] / announce.html.in
1 <!--
2   $Id: announce.html.in,v 1.102 2021/10/20 22:41:55 tom Exp $
3   ****************************************************************************
4   * Copyright 2018-2020,2021 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 <html>
33 <head>
34   <meta name="generator" content=
35   "HTML Tidy for HTML5 for Linux version 5.6.0">
36   <title>Announcing ncurses @VERSION@</title>
37   <link rel="author" href="mailto:bug-ncurses@gnu.org">
38   <meta http-equiv="Content-Type" content=
39   "text/html; charset=us-ascii">
40   <style type="text/css">
41   p,li { max-width:700px; }
42   dd { max-width:630px; }
43   *.main-name {
44         font-style: italic;
45         font-variant: small-caps;
46   }
47   *.part-name {
48         font-family: "Andale Mono", "Monotype.com", monospace;
49         font-size: 12pt;
50         font-weight: bold;
51   }
52   *.demo-name {
53         font-family: "Andale Mono", "Monotype.com", monospace;
54         font-size: 10pt;
55   }
56   </style>
57 </head>
58 <body>
59   <h1 class="no-header">Announcing ncurses @VERSION@</h1>
60
61   <h2><a name="h2-overview" id="h2-overview">Overview</a></h2>
62
63   <p>The <span class="main-name">ncurses</span> (new curses)
64   library is a free software emulation of curses in System V
65   Release 4.0 (SVr4), and more. It uses terminfo format, supports
66   pads and color and multiple highlights and forms characters and
67   function-key mapping, and has all the other SVr4-curses
68   enhancements over BSD curses. SVr4 curses became the basis of
69   X/Open Curses.</p>
70
71   <p>In mid-June 1995, the maintainer of 4.4BSD curses declared
72   that he considered 4.4BSD curses obsolete, and encouraged the
73   keepers of <span class="main-name">unix</span> releases such as
74   BSD/OS, FreeBSD and NetBSD to switch over to <span class=
75   "main-name">ncurses</span>.</p>
76
77   <p>Since 1995, <span class="main-name">ncurses</span> has been
78   ported to many systems:</p>
79
80   <ul>
81     <li>It is used in almost every system based on the Linux kernel
82     (aside from some embedded applications).</li>
83
84     <li>It is used as the system curses library on OpenBSD, FreeBSD
85     and MacOS.</li>
86
87     <li>It is used in environments such as Cygwin and MinGW. The
88     first of these was EMX on OS/2 Warp.</li>
89
90     <li>It is used (though usually not as the <em>system</em>
91     curses) on all of the vendor <span class=
92     "main-name">unix</span> systems, e.g., AIX, HP-UX, IRIX64, SCO,
93     Solaris, Tru64.</li>
94
95     <li>It should work readily on any ANSI/POSIX-conforming
96     <span class="main-name">unix</span>.</li>
97   </ul>
98
99   <p>The distribution includes the library and support utilities,
100   including</p>
101
102   <ul>
103     <li><a href="@HOMEPAGE@/man/captoinfo.1m.html"><span class=
104     "part-name">captoinfo</span></a>, a termcap conversion
105     tool</li>
106
107     <li><a href="@HOMEPAGE@/man/clear.1.html"><span class=
108     "part-name">clear</span></a>, utility for clearing the
109     screen</li>
110
111     <li><a href="@HOMEPAGE@/man/infocmp.1m.html"><span class=
112     "part-name">infocmp</span></a>, the terminfo decompiler</li>
113
114     <li><a href="@HOMEPAGE@/man/tabs.1.html"><span class=
115     "part-name">tabs</span></a>, set tabs on a terminal</li>
116
117     <li><a href="@HOMEPAGE@/man/tic.1m.html"><span class=
118     "part-name">tic</span></a>, the terminfo compiler</li>
119
120     <li><a href="@HOMEPAGE@/man/toe.1m.html"><span class=
121     "part-name">toe</span></a>, list (table of) terminfo
122     entries</li>
123
124     <li><a href="@HOMEPAGE@/man/tput.1.html"><span class=
125     "part-name">tput</span></a>, utility for retrieving terminal
126     capabilities in shell scripts</li>
127
128     <li><a href="@HOMEPAGE@/man/tset.1.html"><span class=
129     "part-name">tset</span></a>, to initialize the terminal</li>
130   </ul>
131
132   <p>Full manual pages are provided for the library and tools.</p>
133
134   <p>The <span class="main-name">ncurses</span> distribution is
135   available at <span class="main-name">ncurses</span>' <a href=
136   "@HOMEPAGE@/">homepage</a>:</p>
137
138   <blockquote>
139     <p><a href=
140     "ftp://ftp.invisible-island.net/ncurses/">ftp://ftp.invisible-island.net/ncurses/</a>
141     or<br>
142     <a href=
143     "https://invisible-mirror.net/archives/ncurses/">https://invisible-mirror.net/archives/ncurses/</a>&nbsp;.</p>
144   </blockquote>
145
146   <p>It is also available via anonymous FTP at the GNU distribution
147   site</p>
148
149   <blockquote>
150     <p><a href=
151     "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a>&nbsp;.</p>
152   </blockquote>
153
154   <h2><a name="h2-release-notes" id="h2-release-notes">Release
155   Notes</a></h2>
156
157   <p>These notes are for <span class="main-name">ncurses</span>
158   @VERSION@, released <strong>October 21, 2021</strong>.</p>
159
160   <p>This release is designed to be source-compatible with
161   <span class="main-name">ncurses</span> 5.0 through 6.2; providing
162   extensions to the application binary interface (ABI). Although
163   the source can still be configured to support the <span class=
164   "main-name">ncurses</span> 5 ABI, the reason for the release is
165   to reflect improvements to the <span class=
166   "main-name">ncurses</span> 6 ABI and the supporting utility
167   programs.</p>
168
169   <p>There are, of course, numerous other improvements, listed in
170   this announcement.</p>
171
172   <p>The most <a href="#h3-bug-fixes">important
173   bug-fixes/improvements</a> dealt with portability issues. The
174   release notes also mention some other bug-fixes, but are focused
175   on new features and improvements to existing features since
176   <span class="main-name">ncurses</span> 6.2 release.</p>
177
178   <h3><a name="h3-library" id="h3-library">Library improvements</a></h3>
179
180   <h4><a name="h4-new-library" id="h4-new-library">New features</a></h4>
181
182   <p>There are a few new features:</p>
183
184   <ul>
185     <li>
186       <p>A new (experimental) driver, for the Windows Terminal
187       configuration is provided.</p>
188     </li>
189
190     <li>
191       <p>A script is provided which enables <a href=
192       "@HOMEPAGE@/ncurses-openbsd.html">OpenBSD</a> users to
193       upgrade their system to use ncurses 6.3 (OpenBSD developers
194       are also invited to do this).</p>
195     </li>
196   </ul>
197
198   <p>Additionally, to improve performance other changes (and
199   extensions) are provided in this release:</p>
200
201   <ul>
202     <li>
203       <p>modify lib_mouse.c to check for out-of-range button
204       numbers, convert those to position reports.</p>
205     </li>
206
207     <li>
208       <p>add sp-funcs for <a href=
209       "@HOMEPAGE@/man/curs_termattrs.3x.html#h3-erasechar_-erasewchar">
210       erasewchar</a>, <a href=
211       "@HOMEPAGE@/man/curs_termattrs.3x.html#h3-killchar_-killwchar">
212       killwchar</a>.</p>
213     </li>
214   </ul>
215
216   <h4><a name="h4-fixes-library" id="h4-fixes-library">Other
217   improvements</a></h4>
218
219   <p>These are revised features:</p>
220
221   <ul>
222     <li>modify wgetnstr, wgetn_wstr to improve compatibility with
223     SVr4 curses in its treatment of interrupt and quit
224     characters</li>
225   </ul>
226
227   <p>These were done to limit or ultimately deprecate features:</p>
228
229   <ul>
230     <li>
231       <p>mark wgetch-events feature as deprecated.</p>
232
233       <ul>
234         <li>
235           <p>prevent <tt>KEY_EVENT</tt> from appearing in
236           <tt>curses.h</tt> unless the configure option
237           <code>--enable-wgetch-events</code> is used.</p>
238         </li>
239
240         <li>
241           <p>modify <tt>MKkey_defs.sh</tt> to hide ncurses'
242           definition of <tt>KEY_EVENTS</tt> to reduce <em>Visual
243           Studio C++</em> redefinition warnings.</p>
244         </li>
245       </ul>
246     </li>
247
248     <li>
249       <p>reduce build-warnings by excluding ncurses-internals from
250       deprecation warnings.</p>
251     </li>
252   </ul>
253
254   <p>These are improvements to existing features:</p>
255
256   <ul>
257     <li>
258       <p>drop symbols <em>GCC_PRINTF</em> and <em>GCC_SCANF</em>
259       from &lt;curses.h&gt;, to simplify use.</p>
260     </li>
261
262     <li>
263       <p>apply gcc format attribute to prototypes which use a
264       va_list parameter rather than a &ldquo;<tt>...</tt>&rdquo;
265       variable-length parameter list.</p>
266     </li>
267
268     <li>
269       <p>modify &lt;term.h&gt; so that it is not necessary to
270       include &lt;curses.h&gt; before &lt;term.h&gt;.</p>
271     </li>
272
273     <li>
274       <p>provide for wide-characters as background character in
275       wbkgrnd</p>
276     </li>
277
278     <li>
279       <p>improve parameter-checking for tparm, adding function
280       _nc_tiparm() to handle the most-used case, which accepts only
281       numeric parameters.</p>
282     </li>
283
284     <li>
285       <p>use return-value from <em>vsnprintf</em> to reallocate as
286       needed to allow for buffers larger than the screen size.</p>
287     </li>
288
289     <li>
290       <p>add another <em>fflush(stdout)</em> in <em>_nc_flush</em>
291       to handle time-delays in the middle of strings such as flash
292       when the application uses low-level calls rather than
293       curses.</p>
294     </li>
295   </ul>
296
297   <p>These are corrections to existing features:</p>
298
299   <ul>
300     <li>
301       <p>add a check to guard against <em>repeat_char</em> emitting
302       digits which could be interpreted as BSD-style padding when
303       <tt>--enable-bsdpad</tt> is configured.</p>
304     </li>
305
306     <li>
307       <p>check for screen size-change in <a href=
308       "@HOMEPAGE@/man/curs_scr_dump.3x.html">scr_init</a> and
309       <a href=
310       "@HOMEPAGE@/man/curs_scr_dump.3x.html">scr_restore</a>, in
311       case a screen dump does not match the current screen
312       dimensions</p>
313     </li>
314   </ul>
315
316   <h3><a name="h3-programs" id="h3-programs">Program
317   improvements</a></h3>
318
319   <p id="h4-utilities">Several improvements were made to the
320   utility programs:</p>
321
322   <dl>
323     <dt><span class="part-name"><a href=
324     "@HOMEPAGE@/man/tabs.1.html">tabs</a></span>
325     </dt>
326
327     <dd>
328       <ul>
329         <li>
330           <p>implement &ldquo;<tt>+m</tt>&rdquo; option</p>
331         </li>
332       </ul>
333     </dd>
334
335     <dt><span class="part-name"><a href=
336     "@HOMEPAGE@/man/tic.1m.html">tic</a></span>
337     </dt>
338
339     <dd>
340       <ul>
341         <li>
342           <p>add check for duplicate &ldquo;<tt>use=</tt>&rdquo;
343           clauses.</p>
344         </li>
345
346         <li>
347           <p>add check to report instances where <tt>tparm</tt>
348           would detect an error in an expression.</p>
349         </li>
350
351         <li>
352           <p>add user-defined capabilities from <em>mintty</em> to
353           <tt>Caps-ncurses</tt>, for checking consistency.</p>
354         </li>
355
356         <li>
357           <p>improve warning when oc/op do not mention SGR 39/49
358           for <em>xterm</em> compatible <code>XT</code> flag.</p>
359         </li>
360
361         <li>
362           <p>improve checks for number of parameters of
363           <code>smglp</code>, <code>smgrp</code>,
364           <code>smgtp</code>, and <code>smgbp</code>.</p>
365         </li>
366
367         <li>
368           <p>improve &ldquo;<tt>-c</tt>&rdquo; option to validate
369           the number and type of parameters and compare against
370           expected number/type before deciding which set of
371           parameter-lists to use in tparm calls.</p>
372         </li>
373
374         <li>
375           <p>improve check for errors detected in
376           <code>tparm</code>.</p>
377         </li>
378
379         <li>
380           <p>improve format of output, to ensure that the messages
381           contain only printable text.</p>
382         </li>
383
384         <li>
385           <p>modify to eliminate unnecessary
386           &ldquo;<code>\</code>&rdquo; to escape
387           &ldquo;<code>:</code>&rdquo; in terminfo format.</p>
388         </li>
389
390         <li>
391           <p>remove check that assumes that none or both
392           parameterized and non-parameterized margin-setting
393           capabilities are present.</p>
394         </li>
395       </ul>
396     </dd>
397
398     <dt><span class="part-name"><a href=
399     "@HOMEPAGE@/man/toe.1m.html">toe</a></span>
400     </dt>
401
402     <dd>
403       <ul>
404         <li>
405           <p>modify output of &ldquo;<tt>toe -as</tt>&rdquo; to
406           show first description found rather than the last.</p>
407         </li>
408
409         <li>
410           <p>add a check to ensure that a &ldquo;termcap
411           file&rdquo; is text rather than binary.</p>
412         </li>
413       </ul>
414     </dd>
415
416     <dt><span class="part-name"><a href=
417     "@HOMEPAGE@/man/tput.1.html">tput</a></span>
418     </dt>
419
420     <dd>
421       <ul>
422         <li>
423           <p>modify to allow multiple commands per line.</p>
424         </li>
425
426         <li>
427           <p>improve parameter-checking by analyzing all extended
428           string capabilities, e.g., as used in the <code>Cs</code>
429           and <code>Ms</code> capabilities of the <em>tmux</em>
430           description.</p>
431         </li>
432
433         <li>
434           <p>make warning messages consistently using alias names
435           when those are used, rather than the underlying program's
436           name.</p>
437         </li>
438
439         <li>
440           <p>improve usage message for aliases such as
441           <em>clear</em>, by eliminating <em>tput</em>-specific
442           portions.</p>
443         </li>
444
445         <li>
446           <p>modify initialization to avoid opening
447           <tt>/dev/tty</tt> for cases other than
448           <em>reset/init</em>, e.g., for <em>clear</em>.</p>
449         </li>
450       </ul>
451     </dd>
452   </dl>
453
454   <h4><a name="h4-examples" id="h4-examples">Examples</a></h4>
455
456   <p>Along with the library and utilities, improvements were made
457   to the <a href=
458   "@HOMEPAGE@/ncurses-examples.html">ncurses-examples</a>. Most of
459   this activity aimed at improving the test-packages. A few changes
460   are more generally useful, e.g., for the main ncurses
461   test-program, and for analyzing traces using the
462   <em>tracemunch</em> script:</p>
463
464   <ul>
465     <li>
466       <p>add &ldquo;<tt>-r</tt>&rdquo; option to the <em>dots</em>
467       test-programs, to help with scripting a performance
468       comparison.</p>
469     </li>
470
471     <li>
472       <p>build-fix for <em>test_opaque</em>, for configurations
473       without opaque curses structs, e.g., ncurses 5.7.</p>
474     </li>
475
476     <li>
477       <p>improve <em>tracemunch</em> logic for "RUN"
478       compaction.</p>
479     </li>
480
481     <li>
482       <p>improve <em>tracemunch</em>'s coverage of form/menu/panel
483       libraries.</p>
484     </li>
485
486     <li>
487       <p>improve <em>tracemunch</em>'s checking/reporting the type
488       for the first parameter, e.g., "WINDOW*" rather than
489       "#1".</p>
490     </li>
491
492     <li>
493       <p>modify <em>tracemunch</em> and the panel library to show
494       readable traces for panel- and user-pointers.</p>
495     </li>
496   </ul>
497
498   <p>There are other new demo/test programs and reusable
499   examples:</p>
500
501   <dl>
502     <dt><span class="part-name"><em>back_ground</em></span>
503     </dt>
504
505     <dd>to exercise the wide-character background functions.</dd>
506
507     <dt><span class="part-name"><em>move_field</em></span>
508     </dt>
509
510     <dd>to demonstrate <a href=
511     "@HOMEPAGE@/man/form_field.3x.html">move_field</a>, and a stub
512     for a corresponding demo of <a href=
513     "@HOMEPAGE@/man/form_field_new.3x.html">dup_field</a>.</dd>
514
515     <dt><span class="part-name"><em>test_tparm</em></span>
516     </dt>
517
518     <dd>for checking <em>tparm</em> changes.</dd>
519   </dl>
520
521   <h3><a name="h3-database" id="h3-database">Terminal database</a></h3>
522
523   <p>There are several new terminal descriptions:</p>
524
525   <blockquote style="word-break:keep-all">
526     <p><tt><a href=
527     "@HOMEPAGE@/terminfo.src.html#tic-absolute">absolute</a></tt>,
528     <tt><a href=
529     "@HOMEPAGE@/terminfo.src.html#tic-att610_cvis">att610+cvis</a></tt>,
530     <tt><a href=
531     "@HOMEPAGE@/terminfo.src.html#tic-foot">foot</a></tt>,
532     <tt><a href=
533     "@HOMEPAGE@/terminfo.src.html#tic-foot-direct">foot-direct</a></tt>,
534     <tt><a href=
535     "@HOMEPAGE@/terminfo.src.html#tic-hp98550-color">hp98550-color</a></tt>,
536     <tt><a href=
537     "@HOMEPAGE@/terminfo.src.html#tic-hpterm-color2">hpterm-color2</a></tt>,
538     <tt><a href=
539     "@HOMEPAGE@/terminfo.src.html#tic-hterm">hterm</a></tt>,
540     <tt><a href=
541     "@HOMEPAGE@/terminfo.src.html#tic-hterm-256color">hterm-256color</a></tt>,
542     <tt><a href=
543     "@HOMEPAGE@/terminfo.src.html#tic-linux-s">linux-s</a></tt>,
544     <tt><a href=
545     "@HOMEPAGE@/terminfo.src.html#tic-putty_keypad">putty+keypad</a></tt>,
546     <tt><a href=
547     "@HOMEPAGE@/terminfo.src.html#tic-putty_screen">putty+screen</a></tt>,
548     <tt><a href=
549     "@HOMEPAGE@/terminfo.src.html#tic-putty-screen">putty-screen</a></tt>,
550     <tt><a href=
551     "@HOMEPAGE@/terminfo.src.html#tic-screen.linux-s">screen.linux-s</a></tt>,
552     <tt><a href=
553     "@HOMEPAGE@/terminfo.src.html#tic-scrt/securecrt">scrt/securecrt</a></tt>,
554     <tt><a href=
555     "@HOMEPAGE@/terminfo.src.html#tic-tmux-direct">tmux-direct</a></tt>,
556     <tt><a href=
557     "@HOMEPAGE@/terminfo.src.html#tic-vt220_cvis">vt220+cvis</a></tt>,
558     <tt><a href=
559     "@HOMEPAGE@/terminfo.src.html#tic-vt220_cvis8">vt220+cvis8</a></tt>,
560     <tt><a href=
561     "@HOMEPAGE@/terminfo.src.html#tic-vt220_pcedit">vt220+pcedit</a></tt>,
562     <tt><a href=
563     "@HOMEPAGE@/terminfo.src.html#tic-vt220_vtedit">vt220+vtedit</a></tt>,
564     <tt><a href=
565     "@HOMEPAGE@/terminfo.src.html#tic-vt220-base">vt220-base</a></tt>,
566     <tt><a href=
567     "@HOMEPAGE@/terminfo.src.html#tic-vt52_keypad">vt52+keypad</a></tt>,
568     <tt><a href=
569     "@HOMEPAGE@/terminfo.src.html#tic-xterm_256color2">xterm+256color2</a></tt>,
570     <tt><a href=
571     "@HOMEPAGE@/terminfo.src.html#tic-xterm_88color2">xterm+88color2</a></tt>,
572     <tt><a href=
573     "@HOMEPAGE@/terminfo.src.html#tic-xterm-direct16">xterm-direct16</a></tt>,
574     <tt><a href=
575     "@HOMEPAGE@/terminfo.src.html#tic-xterm-direct256">xterm-direct256</a></tt>,
576     <tt><a href=
577     "@HOMEPAGE@/terminfo.src.html#tic-xterm_nofkeys">xterm+nofkeys</a></tt>,
578     and <tt><a href=
579     "@HOMEPAGE@/terminfo.src.html#tic-xterm_nopcfkeys">xterm+nopcfkeys</a></tt>.</p>
580   </blockquote>
581
582   <p>There are many changes to existing terminal descriptions. Some
583   were updates to several descriptions:</p>
584
585   <ul>
586     <li>correct use-ordering in some <a href=
587     "@HOMEPAGE@/terminfo.src.html#tic-xterm-direct">xterm-direct</a>
588     flavors</li>
589
590     <li>fix some sgr inconsistencies in <a href=
591     "@HOMEPAGE@/terminfo.src.html#tic-d230c">d230c</a>, <a href=
592     "@HOMEPAGE@/terminfo.src.html#tic-ibm6153">ibm6153</a>,
593     <a href="@HOMEPAGE@/terminfo.src.html#tic-ibm6154">ibm6154</a>,
594     <a href=
595     "@HOMEPAGE@/terminfo.src.html#tic-ncrvt100an">ncrvt100an</a></li>
596
597     <li>improve <a href=
598     "@HOMEPAGE@/terminfo.src.html#tic-vt50h">vt50h</a> and <a href=
599     "@HOMEPAGE@/terminfo.src.html#tic-vt52">vt52</a> based on
600     DECScope manual</li>
601
602     <li>use <a href=
603     "@HOMEPAGE@/terminfo.src.html#tic-hp_arrows">hp+arrows</a> in a
604     few places</li>
605
606     <li>use <a href=
607     "@HOMEPAGE@/terminfo.src.html#tic-hp_pfk-cr">hp+pfk-cr</a> in a
608     few places</li>
609
610     <li>use <a href=
611     "@HOMEPAGE@/terminfo.src.html#tic-vt220_cvis">vt220+cvis</a> in
612     <tt>st</tt>, <tt>terminology</tt>, <tt>termite</tt> since they
613     ignore blinking-cursor detail in <a href=
614     "@HOMEPAGE@/terminfo.src.html#tic-att610_cvis">att610+cvis</a></li>
615   </ul>
616
617   <p>while others affected specific descriptions. These were
618   retested, to take into account changes by their developers:</p>
619
620   <blockquote>
621     <p><tt><a href=
622     "@HOMEPAGE@/terminfo.src.html#tic-kitty_common">kitty+common</a></tt>,
623     <tt><a href=
624     "@HOMEPAGE@/terminfo.src.html#tic-mlterm3">mlterm3</a></tt>,
625     <tt><a href=
626     "@HOMEPAGE@/terminfo.src.html#tic-ms-terminal">ms-terminal</a></tt></p>
627   </blockquote>
628
629   <p>while these are specific fixes based on reviewing
630   documentation, user reports, or warnings from <span class=
631   "part-name">tic</span>:</p>
632
633   <dl>
634     <dt><a href=
635     "@HOMEPAGE@/terminfo.src.html#tic-aaa_dec">aaa+dec</a>,
636     aaa+rv</dt>
637
638     <dd>correct rmacs/smacs</dd>
639
640     <dt><a href=
641     "@HOMEPAGE@/terminfo.src.html#tic-aaa_rv">aaa+rv</a>
642     </dt>
643
644     <dd>correct sgr</dd>
645
646     <dt><a href=
647     "@HOMEPAGE@/terminfo.src.html#tic-icl6404">icl6404</a>
648     </dt>
649
650     <dd>correct csr</dd>
651
652     <dt><a href="@HOMEPAGE@/terminfo.src.html#tic-kitty">kitty</a>
653     </dt>
654
655     <dd>use att610+cvis, xterm+tmux and ansi+enq</dd>
656
657     <dt><a href=
658     "@HOMEPAGE@/terminfo.src.html#tic-konsole-base">konsole-base</a>
659     </dt>
660
661     <dd>re-enable "bel"</dd>
662
663     <dt><a href=
664     "@HOMEPAGE@/terminfo.src.html#tic-linux2.6">linux2.6</a>
665     </dt>
666
667     <dd>fix pound-sign mapping in acsc</dd>
668
669     <dt><a href=
670     "@HOMEPAGE@/terminfo.src.html#tic-linux3.0">linux3.0</a>
671     </dt>
672
673     <dd>modify to reflect default mapping of shift-tab by kbd
674     1.14</dd>
675
676     <dt><a href=
677     "@HOMEPAGE@/terminfo.src.html#tic-pccons">pccons</a>
678     </dt>
679
680     <dd>fill in some missing pieces, to make it comparable to the
681     vt220 entry</dd>
682
683     <dt><a href="@HOMEPAGE@/terminfo.src.html#tic-putty">putty</a>
684     </dt>
685
686     <dd>use vt100+fnkeys, add rep</dd>
687
688     <dt><a href=
689     "@HOMEPAGE@/terminfo.src.html#tic-screen">screen</a>
690     </dt>
691
692     <dd>use vt100+enq</dd>
693
694     <dt><a href=
695     "@HOMEPAGE@/terminfo.src.html#tic-terminator">terminator</a>
696     </dt>
697
698     <dd>corrected tsl capability</dd>
699
700     <dt><a href="@HOMEPAGE@/terminfo.src.html#tic-ti916">ti916</a>
701     </dt>
702
703     <dd>correct cup</dd>
704
705     <dt><a href="@HOMEPAGE@/terminfo.src.html#tic-tmux">tmux</a>
706     </dt>
707
708     <dd>change kbs to ^?</dd>
709
710     <dt><a href="@HOMEPAGE@/terminfo.src.html#tic-vt220">vt220</a>
711     </dt>
712
713     <dd>use vt220+cvis</dd>
714
715     <dt><a href=
716     "@HOMEPAGE@/terminfo.src.html#tic-vt420_lrmm">vt420+lrmm</a>
717     </dt>
718
719     <dd>add smglp and smgrp</dd>
720
721     <dt><a href="@HOMEPAGE@/terminfo.src.html#tic-vt420">vt420</a>
722     </dt>
723
724     <dd>use vt420+lrmm</dd>
725
726     <dt><a href=
727     "@HOMEPAGE@/terminfo.src.html#tic-xterm-new">xterm-new</a>
728     </dt>
729
730     <dd>add nel</dd>
731
732     <dt><a href=
733     "@HOMEPAGE@/terminfo.src.html#tic-xterm-vt52">xterm-vt52</a>
734     </dt>
735
736     <dd>use vt52+keypad</dd>
737   </dl>
738
739   <p>A few entries use extensions (user-defined terminal
740   capabilities):</p>
741
742   <ul>
743     <li>add shifted Linux console keys in <a href=
744     "@HOMEPAGE@/terminfo.src.html#tic-linux_sfkeys">linux+sfkeys</a>
745     entry for <a href=
746     "@HOMEPAGE@/terminfo.src.html#tic-screen.linux">screen.linux</a></li>
747
748     <li>add Smulx to <a href=
749     "@HOMEPAGE@/terminfo.src.html#tic-alacritty">alacritty</a></li>
750
751     <li>add kbeg to <a href=
752     "@HOMEPAGE@/terminfo.src.html#tic-xterm_keypad">xterm+keypad</a>
753     to accommodate termcap applications</li>
754
755     <li>add extensions in <a href=
756     "@HOMEPAGE@/terminfo.src.html#tic-xterm_tmux">xterm+tmux</a>
757     and <a href=
758     "@HOMEPAGE@/terminfo.src.html#tic-ecma_strikeout">ecma+strikeout</a>
759     to <a href=
760     "@HOMEPAGE@/terminfo.src.html#tic-ms-terminal">ms-terminal</a>,
761     but cancel the non-working Cr and Ms capabilities</li>
762   </ul>
763
764   <h3><a name="h3-documentation" id=
765   "h3-documentation">Documentation</a></h3>
766
767   <p>As usual, this release</p>
768
769   <ul>
770     <li>
771       <p>improves documentation by describing new features,</p>
772     </li>
773
774     <li>
775       <p>attempts to improve the description of features which
776       users have found confusing</p>
777     </li>
778
779     <li>
780       <p>fills in overlooked descriptions of features which were
781       described in the <a href="@HOMEPAGE@/NEWS.html">NEWS</a> file
782       but treated sketchily in manual pages.</p>
783     </li>
784   </ul>
785
786   <p>In addition to providing background information to explain
787   these features and show how they evolved, there are corrections,
788   clarifications, etc.:</p>
789
790   <ul>
791     <li>
792       <p>Corrections:</p>
793
794       <ul>
795         <li>
796           <p>make <em>opts</em> extension for <a href=
797           "@HOMEPAGE@/man/curs_getcchar.3x.html#h3-getcchar"><tt>getcchar</tt></a>
798           work as documented for <a href=
799           "@HOMEPAGE@/announce-6.1.htmll#h4-new-library">ncurses
800           6.1</a>, adding &ldquo;<tt>-g</tt>&rdquo; flag to
801           <em>demo_new_pair</em> to illustrate.</p>
802         </li>
803
804         <li>
805           <p>modify <a href="@HOMEPAGE@/man/tset.1.html">tset</a>
806           &ldquo;-q&rdquo; option to refrain from modifying
807           terminal modes, to match the documentation.</p>
808         </li>
809       </ul>
810     </li>
811
812     <li>
813       <p>New/improved history and portability sections:</p>
814
815       <ul>
816         <li>
817           <p>improve documentation for <a href=
818           "@HOMEPAGE@/man/terminfo.5.html#h3-Parameterized-Strings">
819           tparm</a> and static/dynamic variables.</p>
820         </li>
821
822         <li>
823           <p>add history note to <a href=
824           "@HOMEPAGE@/man/curs_scanw.3x.html#h2-HISTORY">curs_scanw.3x</a>
825           for &lt;stdarg.h&gt; and &lt;varargs.h&gt;</p>
826         </li>
827
828         <li>
829           <p>add history note to <a href=
830           "@HOMEPAGE@/man/curs_printw.3x.html#h2-HISTORY">curs_printw.3x</a>
831           for &lt;stdarg.h&gt; and &lt;varargs.h&gt;</p>
832         </li>
833
834         <li>
835           <p>add portability note to <a href=
836           "@HOMEPAGE@/man/ncurses.3x.html#h3-Header-files">ncurses.3x</a>
837           regarding &lt;stdarg.h&gt;</p>
838         </li>
839
840         <li>
841           <p>add historical notes to <a href=
842           "@HOMEPAGE@/man/tput.1.html#h2-HISTORY">tput</a>,
843           <a href="@HOMEPAGE@/man/curs_terminfo.3x.html#h2-HISTORY">
844           curses-terminfo</a> and <a href=
845           "@HOMEPAGE@/man/curs_color.3x.html#h2-HISTORY">curses-color</a>
846           manpages based on source-code for SVr2, SVr3 and
847           SVr4.</p>
848         </li>
849
850         <li>
851           <p>improve history section for <a href=
852           "@HOMEPAGE@/man/tset.1.html#h2-HISTORY">tset</a> manpage
853           based on the 1BSD tarball, which preceded BSD's SCCS
854           checkins by more than three years.</p>
855         </li>
856       </ul>
857     </li>
858
859     <li>
860       <p>Other improvements:</p>
861
862       <ul>
863         <li>
864           <p>explain in <a href=
865           "@HOMEPAGE@/man/ncurses.3x.html#h2-ALTERNATE-CONFIGURATIONS">
866           ncurses.3x</a> that functions in the tinfo library do not
867           rely upon wide-characters.</p>
868         </li>
869
870         <li>
871           <p>improve manual page for <a href=
872           "@HOMEPAGE@/man/panel.3x.html#h2-PORTABILITY">panel</a>
873           library, extending the portability section as well as
874           documenting error-returns.</p>
875         </li>
876
877         <li>
878           <p>add section on margins to <a href=
879           "@HOMEPAGE@/man/terminfo.5.html#h3-Margins">terminfo.5</a>,
880           adapted from X/Open Curses.</p>
881         </li>
882
883         <li>
884           <p>improve <a href=
885           "@HOMEPAGE@/man/term.5.html#h3-LEGACY-STORAGE-FORMAT">man/term.5</a>
886           section on legacy storage format.</p>
887         </li>
888
889         <li>
890           <p>add a note in <a href=
891           "@HOMEPAGE@/man/terminfo.5.html#h3-Predefined-Capabilities">
892           terminfo.5</a> explaining that no-parameter strings such
893           as <em><tt>sgr0</tt></em> or <em><tt>cnorm</tt></em>
894           should not be used with tparm.</p>
895         </li>
896
897         <li>
898           <p>improve description of BSD-style padding in <a href=
899           "@HOMEPAGE@/man/curs_termcap.3x.html#h2-BUGS">curs_termcap.3x</a></p>
900         </li>
901
902         <li>
903           <p>improve discussion of padding versus <tt>tparm</tt>
904           and <tt>tputs</tt> in <a href=
905           "@HOMEPAGE@/man/curs_terminfo.3x.html#h3-Formatting-Output">
906           man/curs_terminfo.3x</a></p>
907         </li>
908
909         <li>
910           <p>add a note in manual page to explain <a href=
911           "@HOMEPAGE@/man/curs_getch.3x.html#h3-Ungetting-characters">
912           ungetch</a> vs <a href=
913           "@HOMEPAGE@/man/curs_get_wch.3x.html#h3-unget_wch">unget_wch</a>.</p>
914         </li>
915
916         <li>
917           <p>improve description of error-returns in <a href=
918           "@HOMEPAGE@/man/curs_addch.3x.html#h2-RETURN-VALUE">waddch</a>
919           and <a href=
920           "@HOMEPAGE@/man/curs_addstr.3x.html#h2-RETURN-VALUE">waddnstr</a>
921           manual pages.</p>
922         </li>
923       </ul>
924     </li>
925   </ul>
926
927   <p>There are no new manual pages (all of the manual page updates
928   are to existing pages).</p>
929
930   <p>Some of the improvements are more subtle, relating to the way
931   the information is presented. For instance, hyphenation is
932   suppressed in the HTML files generated from manual pages because
933   an upgrade to <em>groff</em> gave noticeably poorer results,
934   interfering with the process of creating links between the
935   resulting webpages.</p>
936
937   <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
938   bug-fixes</a></h3>
939
940   <p>While there were many bugs fixed during development of ncurses
941   6.3, only a few (the reason for this release) were both important
942   and interesting. Most of the bug-fixes were for local issues
943   which did not affect compatibility across releases. Since those
944   are detailed in the <a href=
945   "@HOMEPAGE@/NEWS.html#t20211018">NEWS</a> file no elaboration is
946   needed here.</p>
947
948   <p>The interesting bugs were:</p>
949
950   <ul>
951     <li>
952       <p>modify <a href=
953       "@HOMEPAGE@/man/curs_bkgd.3x.html#h3-bkgd">wbkgd</a> and
954       <a href=
955       "@HOMEPAGE@/man/curs_bkgrnd.3x.html#h3-bkgrnd">wbkgrnd</a> to
956       avoid storing a null in the background character, because it
957       may be used in cases where the corresponding 0x80 is not
958       treated as a null.</p>
959
960       <p>This was a regression introduced in ncurses 6.2 (<a href=
961       "https://lists.gnu.org/archive/html/bug-ncurses/2020-03/msg00000.html">reported</a>
962       on the mailing list), for which the workaround was to specify
963       a blank for the background character.</p>
964     </li>
965
966     <li>
967       <p>remove output-related checks for <a href=
968       "@HOMEPAGE@/man/curs_outopts.3x.html">nl/nonl</a> (also
969       <a href=
970       "https://lists.gnu.org/archive/html/bug-ncurses/2020-09/msg00018.html">
971       reported</a> on the mailing list).</p>
972     </li>
973
974     <li>
975       <p>improve tparm implementation of <tt>%P</tt> and
976       <tt>%g</tt>, more closely matching SVr4 terminfo. Those
977       denote <em>static</em> and <em>dynamic</em> variables in
978       terminfo expressions.</p>
979
980       <p>Exactly what those terms meant was never documented before
981       in any implementation of curses, aside from source code.
982       Unlike the other two fixes, the problem was discovered while
983       studying OpenBSD's version of <a href=
984       "@HOMEPAGE@/ncurses-openbsd.html#issue_tput">tset</a>.</p>
985     </li>
986   </ul>
987
988   <h3><a name="h3-config-config" id=
989   "h3-config-config">Configuration changes</a></h3>
990
991   <h4><a name="h4-config-major" id="h4-config-major">Major
992   changes</a></h4>
993
994   <p>There are no major changes. Several new options were added to
995   ease integration of packages with systems using different
996   versions of <em>GNAT</em> and <em>ncurses</em>. Also,
997   improvements were made to configure checks.</p>
998
999   <h4><a name="h4-config-options" id=
1000   "h4-config-options">Configuration options</a></h4>
1001
1002   <p>There are a few new/modified configure options:</p>
1003
1004   <dl>
1005     <dt><tt>--enable-fvisibility</tt>
1006     </dt>
1007
1008     <dd>
1009       <p>new configure option and check for <em>gcc</em>
1010       <tt>-fvisibility=hidden</tt> feature</p>
1011     </dd>
1012
1013     <dt><tt>--enable-leaks</tt>
1014     </dt>
1015
1016     <dd>
1017       <p>corrected to allow turning leak-checking off later in a
1018       set of options.</p>
1019     </dd>
1020
1021     <dt><tt>--enable-stdnoreturn</tt>
1022     </dt>
1023
1024     <dd>
1025       <p>new configure option makes the <code>_Noreturn</code>
1026       keyword optional to ease transition.</p>
1027     </dd>
1028
1029     <dt><tt>--disable-pkg-ldflags</tt>
1030     </dt>
1031
1032     <dd>
1033       <p>revised option also controls whether <code>$LDFLAGS</code>
1034       from the build is provided in &ldquo;<tt>-config</tt>&rdquo;
1035       and &ldquo;<tt>.pc</tt>&rdquo; files.</p>
1036     </dd>
1037
1038     <dt><tt>--disable-root-access</tt>
1039     </dt>
1040
1041     <dd>
1042       <p>add configure option which tells ncurses to disallow most
1043       file-opens by setuid processes.</p>
1044     </dd>
1045
1046     <dt><tt>--disable-wattr-macros</tt>
1047     </dt>
1048
1049     <dd>
1050       <p>changed default to help packagers who reuse wide ncursesw
1051       header file with non-wide ncurses library.</p>
1052     </dd>
1053
1054     <dt><tt>--with-pkg-config-libdir</tt>
1055     </dt>
1056
1057     <dd>
1058       <p>revised option uses the actual search path from
1059       <em>pkg-config</em> or <em>pkgconf</em> using the output from
1060       <tt>--debug</tt>.</p>
1061     </dd>
1062
1063     <dt><tt>--with-ada-libname</tt><br>
1064     <tt>--with-form-libname</tt><br>
1065     <tt>--with-menu-libname</tt><br>
1066     <tt>--with-panel-libname</tt>
1067     </dt>
1068
1069     <dd>
1070       <p>new several <tt>--with-<em>xxx</em>-libname</tt> options,
1071       to help with pkgsrc</p>
1072     </dd>
1073   </dl>
1074
1075   <h3><a name="h3-portability" id="h3-portability">Portability</a></h3>
1076
1077   <p>Many of the portability changes are implemented via the
1078   configure script:</p>
1079
1080   <ul>
1081     <li>
1082       <p>add a special case in the configure script to work around
1083       one of the build-time breakages reported for <a href=
1084       "@HOMEPAGE@/ncurses-openbsd.html">OpenBSD 6</a> here:</p>
1085
1086       <blockquote>
1087         <p><a href=
1088         "https://www.mail-archive.com/bugs@openbsd.org/msg13200.html">
1089         https://www.mail-archive.com/bugs@openbsd.org/msg13200.html</a></p>
1090       </blockquote>
1091     </li>
1092
1093     <li>
1094       <p>modify configure check for <em>libtool</em> to prevent
1095       accidental use of an OpenBSD program which uses the same
1096       name.</p>
1097     </li>
1098
1099     <li>
1100       <p>modify configuration checks for build-time tic/infocmp to
1101       use <em>AC_CHECK_TOOL</em>. That can still be overridden by
1102       <tt>--with-tic-path</tt> and <tt>--with-infocmp-path</tt>
1103       when fallbacks are used, but even if not using fallbacks, the
1104       improved check may help with cross-compiling.</p>
1105     </li>
1106
1107     <li>
1108       <p>relax modification-time comparison in
1109       <em>CF_LINK_FUNCS</em> to allow it to accept link() function
1110       with NFS filesystems which change the mtime on the link
1111       target, e.g., several BSD systems.</p>
1112     </li>
1113
1114     <li>
1115       <p>modify configure check for c89/c99 aliases of
1116       <em>clang</em> to use its <tt>-std</tt> option instead,
1117       because some platforms, in particular macOS, do not provide
1118       workable c89/c99 aliases.</p>
1119     </li>
1120
1121     <li>
1122       <p>modify <em>CF_NCURSES_CONFIG</em> to work around
1123       <em>Xcode</em>'s c99 "-W" option, which conflicts with
1124       conventional use for passing linker options.</p>
1125     </li>
1126
1127     <li>
1128       <p>modify configure scripts to filter out redefinitions of
1129       _XOPEN_SOURCE, e.g., for NetBSD which generally supports 500,
1130       but 600 is needed for ncursesw.</p>
1131     </li>
1132   </ul>
1133
1134   <p>Here are some of the other portability fixes:</p>
1135
1136   <ul>
1137     <li>
1138       <p>change configure-check and source-code for gcc's noreturn
1139       attribute to assume it is a prefix rather than suffix,
1140       matching c11's _Noreturn convention.</p>
1141     </li>
1142
1143     <li>
1144       <p>modify mk-1st.awk to account for extra-suffix configure
1145       option.</p>
1146     </li>
1147
1148     <li>
1149       <p>build-fix for termsort module when configured with
1150       termcap.</p>
1151     </li>
1152
1153     <li>
1154       <p>modify configure script and makefiles to support ".PHONY"
1155       make program feature.</p>
1156     </li>
1157
1158     <li>
1159       <p>amend <em>libtool</em> configuration to add dependency for
1160       install.tic, etc., in ncurses/Makefile on the lower-level
1161       libraries.</p>
1162     </li>
1163
1164     <li>
1165       <p>modify Ada95 source-generation utility to write to a file
1166       given as parameter rather than to the standard output,
1167       allowing builds with MinGW.</p>
1168     </li>
1169
1170     <li>
1171       <p>amend tic/infocmp check to allow for the respective tool's
1172       absence.</p>
1173     </li>
1174
1175     <li>
1176       <p>build-fixes for gnat 10.1.1, whose gnatmake drops
1177       integration with gprbuild.</p>
1178     </li>
1179
1180     <li>
1181       <p>correct configure version-check/warning for g++ to allow
1182       for 10.x</p>
1183     </li>
1184   </ul>
1185
1186   <hr>
1187
1188   <h2><a name="h2-features" id="h2-features">Features of
1189   <span class="main-name">ncurses</span></a></h2>
1190
1191   <p>The <span class="main-name">ncurses</span> package is fully
1192   upward-compatible with SVr4 (System V Release 4) curses:</p>
1193
1194   <ul>
1195     <li>
1196       <p>All of the SVr4 calls have been implemented (and are
1197       documented).</p>
1198     </li>
1199
1200     <li>
1201       <p><span class="main-name">ncurses</span> supports all of the
1202       for SVr4 curses features including keyboard mapping, color,
1203       forms-drawing with ACS characters, and automatic recognition
1204       of keypad and function keys.</p>
1205     </li>
1206
1207     <li>
1208       <p><span class="main-name">ncurses</span> provides these SVr4
1209       add-on libraries (not part of X/Open Curses):</p>
1210
1211       <ul>
1212         <li>
1213           <p>the panels library, supporting a stack of windows with
1214           backing store.</p>
1215         </li>
1216
1217         <li>
1218           <p>the menus library, supporting a uniform but flexible
1219           interface for menu programming.</p>
1220         </li>
1221
1222         <li>
1223           <p>the form library, supporting data collection through
1224           on-screen forms.</p>
1225         </li>
1226       </ul>
1227     </li>
1228
1229     <li>
1230       <p><span class="main-name">ncurses</span>'s terminal database
1231       is fully compatible with that used by SVr4 curses.</p>
1232
1233       <ul>
1234         <li>
1235           <p><span class="main-name">ncurses</span> supports
1236           user-defined capabilities which it can see, but which are
1237           hidden from SVr4 curses applications using the
1238           <em>same</em> terminal database.</p>
1239         </li>
1240
1241         <li>
1242           <p>It can be optionally configured to match the format
1243           used in related systems such as AIX and Tru64.</p>
1244         </li>
1245
1246         <li>
1247           <p>Alternatively, <span class="main-name">ncurses</span>
1248           can be configured to use hashed databases rather than the
1249           directory of files used by SVr4 curses.</p>
1250         </li>
1251       </ul>
1252     </li>
1253
1254     <li>
1255       <p>The <span class="main-name">ncurses</span> utilities have
1256       options to allow you to filter terminfo entries for use with
1257       less capable <em>curses</em>/<em>terminfo</em> versions such
1258       as the HP-UX and AIX ports.</p>
1259     </li>
1260   </ul>
1261
1262   <p>The <span class="main-name">ncurses</span> package also has
1263   many useful extensions over SVr4:</p>
1264
1265   <ul>
1266     <li>
1267       <p>The API is 8-bit clean and base-level conformant with the
1268       X/OPEN curses specification, XSI curses (that is, it
1269       implements all <em>BASE</em> level features, and most
1270       <em>EXTENDED</em> features). It includes many function calls
1271       not supported under SVr4 curses (but portability of all calls
1272       is documented so you can use the SVr4 subset only).</p>
1273     </li>
1274
1275     <li>
1276       <p>Unlike SVr3 curses, <span class="main-name">ncurses</span>
1277       can write to the rightmost-bottommost corner of the screen if
1278       your terminal has an insert-character capability.</p>
1279     </li>
1280
1281     <li>
1282       <p>Ada95 and C++ bindings.</p>
1283     </li>
1284
1285     <li>
1286       <p>Support for mouse event reporting with X Window xterm and
1287       FreeBSD and OS/2 console windows.</p>
1288     </li>
1289
1290     <li>
1291       <p>Extended mouse support via Alessandro Rubini's gpm
1292       package.</p>
1293     </li>
1294
1295     <li>
1296       <p>The function <code>wresize</code> allows you to resize
1297       windows, preserving their data.</p>
1298     </li>
1299
1300     <li>
1301       <p>The function <code>use_default_colors</code> allows you to
1302       use the terminal's default colors for the default color pair,
1303       achieving the effect of transparent colors.</p>
1304     </li>
1305
1306     <li>
1307       <p>The functions <code>keyok</code> and
1308       <code>define_key</code> allow you to better control the use
1309       of function keys, e.g., disabling the <span class=
1310       "main-name">ncurses</span> KEY_MOUSE, or by defining more
1311       than one control sequence to map to a given key code.</p>
1312     </li>
1313
1314     <li>
1315       <p>Support for direct-color terminals, such as modern
1316       xterm.</p>
1317     </li>
1318
1319     <li>
1320       <p>Support for 256-color terminals, such as modern xterm.</p>
1321     </li>
1322
1323     <li>
1324       <p>Support for 16-color terminals, such as <em>aixterm</em>
1325       and <em>modern xterm</em>.</p>
1326     </li>
1327
1328     <li>
1329       <p>Better cursor-movement optimization. The package now
1330       features a cursor-local-movement computation more efficient
1331       than either BSD's or System V's.</p>
1332     </li>
1333
1334     <li>
1335       <p>Super hardware scrolling support. The screen-update code
1336       incorporates a novel, simple, and cheap algorithm that
1337       enables it to make optimal use of hardware scrolling,
1338       line-insertion, and line-deletion for screen-line movements.
1339       This algorithm is more powerful than the 4.4BSD curses
1340       <code>quickch</code> routine.</p>
1341     </li>
1342
1343     <li>
1344       <p>Real support for terminals with the magic-cookie glitch.
1345       The screen-update code will refrain from drawing a highlight
1346       if the magic- cookie unattributed spaces required just before
1347       the beginning and after the end would step on a non-space
1348       character. It will automatically shift highlight boundaries
1349       when doing so would make it possible to draw the highlight
1350       without changing the visual appearance of the screen.</p>
1351     </li>
1352
1353     <li>
1354       <p>It is possible to generate the library with a list of
1355       pre-loaded fallback entries linked to it so that it can serve
1356       those terminal types even when no terminfo tree or termcap
1357       file is accessible (this may be useful for support of
1358       screen-oriented programs that must run in single-user
1359       mode).</p>
1360     </li>
1361
1362     <li>
1363       <p>The <a href="@HOMEPAGE@/man/tic.1m.html"><span class=
1364       "part-name">tic</span></a>/<a href=
1365       "@HOMEPAGE@/man/captoinfo.1m.html">captoinfo</a> utility
1366       provided with <span class="main-name">ncurses</span> has the
1367       ability to translate many termcaps from the XENIX, IBM and
1368       AT&amp;T extension sets.</p>
1369     </li>
1370
1371     <li>
1372       <p>A BSD-like <a href=
1373       "@HOMEPAGE@/man/tset.1.html"><span class=
1374       "part-name">tset</span></a> utility is provided.</p>
1375     </li>
1376
1377     <li>
1378       <p>The <span class="main-name">ncurses</span> library and
1379       utilities will automatically read terminfo entries from
1380       $HOME/.terminfo if it exists, and compile to that directory
1381       if it exists and the user has no write access to the system
1382       directory. This feature makes it easier for users to have
1383       personal terminfo entries without giving up access to the
1384       system terminfo directory.</p>
1385     </li>
1386
1387     <li>
1388       <p>You may specify a path of directories to search for
1389       compiled descriptions with the environment variable
1390       TERMINFO_DIRS (this generalizes the feature provided by
1391       TERMINFO under stock System V.)</p>
1392     </li>
1393
1394     <li>
1395       <p>In terminfo source files, use capabilities may refer not
1396       just to other entries in the same source file (as in System
1397       V) but also to compiled entries in either the system terminfo
1398       directory or the user's $HOME/.terminfo directory.</p>
1399     </li>
1400
1401     <li>
1402       <p>The table-of-entries utility <a href=
1403       "@HOMEPAGE@/man/toe.1m.html"><span class=
1404       "part-name">toe</span></a> makes it easy for users to see
1405       exactly what terminal types are available on the system.</p>
1406     </li>
1407
1408     <li>
1409       <p>The library meets the XSI requirement that every macro
1410       entry point has a corresponding function which may be linked
1411       (and will be prototype-checked) if the macro definition is
1412       disabled with <code>#undef</code>.</p>
1413     </li>
1414
1415     <li>
1416       <p>Extensive documentation is provided (see the <em><a href=
1417       "@HOMEPAGE@/ncurses.faq.html#additional_reading">Additional
1418       Reading</a></em> section of the <em><a href=
1419       "@HOMEPAGE@/ncurses.faq.html"><span class=
1420       "main-name">ncurses</span> FAQ</a></em> for online
1421       documentation).</p>
1422     </li>
1423   </ul>
1424
1425   <h2><a name="h2-who-uses" id="h2-who-uses">Applications using
1426   <span class="main-name">ncurses</span></a></h2>
1427
1428   <p>The <span class="main-name">ncurses</span> distribution
1429   includes a selection of test programs (including a few games).
1430   These are available separately as <a href=
1431   "@HOMEPAGE@/ncurses-examples.html">ncurses-examples</a></p>
1432
1433   <p>The ncurses library has been tested with a wide variety of
1434   applications including:</p>
1435
1436   <blockquote>
1437     <dl>
1438       <dt><span class="part-name">aptitude</span>
1439       </dt>
1440
1441       <dd>
1442         <p>FrontEnd to Apt, the debian package manager</p>
1443
1444         <p><a href=
1445         "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude</a></p>
1446       </dd>
1447
1448       <dt><span class="part-name">cdk</span>
1449       </dt>
1450
1451       <dd>
1452         <p>Curses Development Kit</p>
1453
1454         <p><a href="@WEBSITE@/cdk/">@WEBSITE@/cdk/</a><br>
1455         </p>
1456       </dd>
1457
1458       <dt><span class="part-name">ded</span>
1459       </dt>
1460
1461       <dd>
1462         <p>directory-editor</p>
1463
1464         <p><a href="@WEBSITE@/ded/">@WEBSITE@/ded/</a></p>
1465       </dd>
1466
1467       <dt><span class="part-name">dialog</span>
1468       </dt>
1469
1470       <dd>
1471         <p>the underlying application used in Slackware's setup,
1472         and the basis for similar install/configure applications on
1473         many systems.</p>
1474
1475         <p><a href="@WEBSITE@/dialog/">@WEBSITE@/dialog/</a></p>
1476       </dd>
1477
1478       <dt><span class="part-name">lynx</span>
1479       </dt>
1480
1481       <dd>
1482         <p>the text WWW browser</p>
1483
1484         <p><a href=
1485         "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/</a></p>
1486       </dd>
1487
1488       <dt><span class="part-name">mutt</span>
1489       </dt>
1490
1491       <dd>
1492         <p>mail utility</p>
1493
1494         <p><a href="http://www.mutt.org/">http://www.mutt.org/</a></p>
1495       </dd>
1496
1497       <dt><span class="part-name">ncftp</span>
1498       </dt>
1499
1500       <dd>
1501         <p>file-transfer utility</p>
1502
1503         <p><a href=
1504         "https://www.ncftp.com/">https://www.ncftp.com/</a></p>
1505       </dd>
1506
1507       <dt><span class="part-name">nvi</span>
1508       </dt>
1509
1510       <dd>
1511         <p>New vi uses ncurses.</p>
1512
1513         <p><a href=
1514         "https://sites.google.com/a/bostic.com/keithbostic/vi">https://sites.google.com/a/bostic.com/keithbostic/vi</a><br>
1515
1516         </p>
1517       </dd>
1518
1519       <dt><span class="part-name">ranger</span>
1520       </dt>
1521
1522       <dd>
1523         <p>A console file manager with VI key bindings in
1524         <em>Python</em>.</p>
1525
1526         <p><a href=
1527         "https://ranger.github.io/">https://ranger.github.io/</a></p>
1528       </dd>
1529
1530       <dt><span class="part-name">tin</span>
1531       </dt>
1532
1533       <dd>
1534         <p>newsreader, supporting color, MIME</p>
1535
1536         <p><a href="http://www.tin.org/">http://www.tin.org/</a></p>
1537       </dd>
1538
1539       <dt><span class="part-name">vifm</span>
1540       </dt>
1541
1542       <dd>
1543         <p>File manager with vi like keybindings</p>
1544
1545         <p><a href="https://vifm.info/">https://vifm.info/</a></p>
1546       </dd>
1547     </dl>
1548   </blockquote>
1549
1550   <p>as well as some that use <span class=
1551   "main-name">ncurses</span> for the terminfo support alone:</p>
1552
1553   <blockquote>
1554     <dl>
1555       <dt><span class="part-name">minicom</span>
1556       </dt>
1557
1558       <dd>
1559         <p>terminal emulator for serial modem connections</p>
1560
1561         <p><a href=
1562         "https://alioth.debian.org/projects/minicom/">https://alioth.debian.org/projects/minicom/</a></p>
1563       </dd>
1564
1565       <dt><span class="part-name">mosh</span>
1566       </dt>
1567
1568       <dd>
1569         <p>a replacement for <code>ssh</code>.</p>
1570
1571         <p><a href="https://mosh.org/">https://mosh.org/</a></p>
1572       </dd>
1573
1574       <dt><span class="part-name">tack</span>
1575       </dt>
1576
1577       <dd>
1578         <p>terminfo action checker</p>
1579
1580         <p><a href="@HOMEPAGE@/tack.html">@HOMEPAGE@/tack.html</a></p>
1581       </dd>
1582
1583       <dt><span class="part-name">tmux</span>
1584       </dt>
1585
1586       <dd>
1587         <p>terminal multiplexor</p>
1588
1589         <p><a href=
1590         "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki</a></p>
1591       </dd>
1592
1593       <dt><span class="part-name">vile</span>
1594       </dt>
1595
1596       <dd>
1597         <p><em>vi-like-emacs</em> may be built to use the terminfo,
1598         termcap or curses interfaces.</p>
1599
1600         <p><a href="@WEBSITE@/vile/">@WEBSITE@/vile/</a></p>
1601       </dd>
1602     </dl>
1603   </blockquote>
1604
1605   <p>and finally, those which use only the termcap interface:</p>
1606
1607   <blockquote>
1608     <dl>
1609       <dt><span class="part-name">emacs</span>
1610       </dt>
1611
1612       <dd>
1613         <p>text editor</p>
1614
1615         <p><a href=
1616         "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/</a></p>
1617       </dd>
1618
1619       <dt><span class="part-name">less</span>
1620       </dt>
1621
1622       <dd>
1623         <p>The most commonly used <em>pager</em> (a program that
1624         displays text files).</p>
1625
1626         <p><a href=
1627         "http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/</a></p>
1628       </dd>
1629
1630       <dt><span class="part-name">screen</span>
1631       </dt>
1632
1633       <dd>
1634         <p>terminal multiplexor</p>
1635
1636         <p><a href=
1637         "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/</a></p>
1638       </dd>
1639
1640       <dt><span class="part-name">vim</span>
1641       </dt>
1642
1643       <dd>
1644         <p>text editor</p>
1645
1646         <p><a href="https://www.vim.org/">https://www.vim.org/</a></p>
1647       </dd>
1648     </dl>
1649   </blockquote>
1650
1651   <h2><a name="h2-development" id="h2-development">Development
1652   activities</a></h2>
1653
1654   <p>Zeyd Ben-Halim started <span class="main-name">ncurses</span>
1655   from a previous package pcurses, written by Pavel Curtis. Eric S.
1656   Raymond continued development. J&uuml;rgen Pfeifer wrote most of
1657   the form and menu libraries.</p>
1658
1659   <p>Ongoing development work is done by <a href=
1660   "mailto:dickey@invisible-island.net">Thomas E. Dickey</a>. Thomas
1661   E. Dickey has acted as the maintainer for the Free Software
1662   Foundation, which held a <a href=
1663   "@HOMEPAGE@/ncurses-license.html">copyright on ncurses</a> for
1664   releases 4.2 through 6.1. Following the release of ncurses 6.1,
1665   effective as of release 6.2, copyright for ncurses reverted to
1666   Thomas E. Dickey (see the <a href=
1667   "@HOMEPAGE@/ncurses.faq.html#relicensed">ncurses FAQ</a> for
1668   additional information).</p>
1669
1670   <p>Contact the current maintainers at</p>
1671
1672   <blockquote>
1673     <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>
1674   </blockquote>
1675
1676   <p>To join the ncurses mailing list, please write email to</p>
1677
1678   <blockquote>
1679     <a href=
1680     "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a>
1681   </blockquote>
1682   containing the line:
1683   <blockquote>
1684     <p><code>subscribe</code>
1685     <em>&lt;name&gt;@&lt;host.domain&gt;</em></p>
1686   </blockquote>
1687
1688   <p>This list is open to anyone interested in helping with the
1689   development and testing of this package.</p>
1690
1691   <p>Beta versions of <span class="main-name">ncurses</span> are
1692   made available at</p>
1693
1694   <blockquote>
1695     <p><a href=
1696     "ftp://ftp.invisible-island.net/ncurses/current/">ftp://ftp.invisible-island.net/ncurses/current/</a>
1697     and<br>
1698     <a href=
1699     "https://invisible-mirror.net/archives/ncurses/current/">https://invisible-mirror.net/archives/ncurses/current/</a>&nbsp;.</p>
1700   </blockquote>
1701
1702   <p>Patches to the current release are made available at</p>
1703
1704   <blockquote>
1705     <p><a href=
1706     "ftp://ftp.invisible-island.net/ncurses/6.2/">ftp://ftp.invisible-island.net/ncurses/6.2/</a>
1707     and<br>
1708     <a href=
1709     "https://invisible-mirror.net/archives/ncurses/6.2/">https://invisible-mirror.net/archives/ncurses/6.2/</a>&nbsp;.</p>
1710   </blockquote>
1711
1712   <p>There is an archive of the mailing list here:</p>
1713
1714   <blockquote>
1715     <p><a href=
1716     "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a>
1717     (also <a href=
1718     "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p>
1719   </blockquote>
1720
1721   <h2><a name="h2-this-stuff" id="h2-this-stuff">Related
1722   resources</a></h2>
1723
1724   <p>The release notes make scattered references to these pages,
1725   which may be interesting by themselves:</p>
1726
1727   <ul>
1728     <li><a href="@HOMEPAGE@/ncurses-license.html"><span class=
1729     "main-name">ncurses</span> licensing</a></li>
1730
1731     <li><a href="@HOMEPAGE@/ncurses-mapsyms.html">Symbol versioning
1732     in <span class="main-name">ncurses</span></a></li>
1733
1734     <li><a href="@HOMEPAGE@/ncurses-slang.html">Comments on
1735     <span class="main-name">ncurses</span> versus <span class=
1736     "main-name">slang</span> (S-Lang)</a></li>
1737
1738     <li><a href="@HOMEPAGE@/ncurses-openbsd.html">Comments on
1739     <span class="main-name">OpenBSD</span></a></li>
1740
1741     <li><a href="@HOMEPAGE@/tack.html">tack &ndash; terminfo action
1742     checker</a></li>
1743
1744     <li><a href="@HOMEPAGE@/tctest.html">tctest &ndash; termcap
1745     library checker</a></li>
1746
1747     <li><a href=
1748     "@HOMEPAGE@/ncurses.html#download_database">Terminal
1749     Database</a></li>
1750   </ul>
1751
1752   <h2><a name="h2-other-stuff" id="h2-other-stuff">Other
1753   resources</a></h2>
1754
1755   <p>The distribution provides a newer version of the
1756   terminfo-format terminal description file once maintained by
1757   <a href="http://www.catb.org/~esr/terminfo/">Eric
1758   Raymond</a>&nbsp;. Unlike the older version, the termcap and
1759   terminfo data are provided in the same file, which also provides
1760   several user-definable extensions beyond the X/Open
1761   specification.</p>
1762
1763   <p>You can find lots of information on terminal-related topics
1764   not covered in the terminfo file at <a href=
1765   "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">
1766   Richard Shuford's archive</a>&nbsp;. The collection of computer
1767   manuals at <a href=
1768   "http://www.bitsavers.org/pdf/">bitsavers.org</a> has also been
1769   useful.</p>
1770
1771   <div class="nav">
1772     <ul>
1773       <li><a href="#h2-overview">Overview</a></li>
1774
1775       <li>
1776         <a href="#h2-release-notes">Release Notes</a>
1777         <ul>
1778           <li>
1779             <a href="#h3-library">Library improvements</a>
1780             <ul>
1781               <li><a href="#h4-new-library">New features</a></li>
1782
1783               <li><a href="#h4-fixes-library">Other
1784               improvements</a></li>
1785             </ul>
1786           </li>
1787
1788           <li>
1789             <a href="#h3-programs">Program improvements</a>
1790             <ul>
1791               <li><a href="#h4-utilities">Utilities</a></li>
1792
1793               <li><a href="#h4-examples">Examples</a></li>
1794             </ul>
1795           </li>
1796
1797           <li><a href="#h3-database">Terminal database</a></li>
1798
1799           <li><a href="#h3-documentation">Documentation</a></li>
1800
1801           <li><a href="#h3-bug-fixes">Interesting bug-fixes</a></li>
1802
1803           <li>
1804             <a href="#h3-config-config">Configuration changes</a>
1805             <ul>
1806               <li><a href="#h4-config-major">Major changes</a></li>
1807
1808               <li><a href="#h4-config-options">Configuration
1809               options</a></li>
1810             </ul>
1811           </li>
1812
1813           <li><a href="#h3-portability">Portability</a></li>
1814         </ul>
1815       </li>
1816
1817       <li><a href="#h2-features">Features of <span class=
1818       "main-name">ncurses</span></a></li>
1819
1820       <li><a href="#h2-who-uses">Applications using <span class=
1821       "main-name">ncurses</span></a></li>
1822
1823       <li><a href="#h2-development">Development activities</a></li>
1824
1825       <li><a href="#h2-this-stuff">Related resources</a></li>
1826
1827       <li><a href="#h2-other-stuff">Other resources</a></li>
1828     </ul>
1829   </div>
1830 </body>
1831 </html>