xref: /src/contrib/ncurses/announce.html.in (revision 68ad2b0d7af2a3571c4abac9afa712f9b09b721c)
1<!--
2  $Id: announce.html.in,v 1.109 2025/12/30 20:21:46 tom Exp $
3  ****************************************************************************
4  * Copyright 2018-2024,2025 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.8.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    "https://invisible-island.net/archives/ncurses/">https://invisible-island.net/archives/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 at the GNU distribution site</p>
147
148  <blockquote>
149    <p><a href=
150    "https://ftp.gnu.org/gnu/ncurses/">https://ftp.gnu.org/gnu/ncurses/</a>&nbsp;.</p>
151  </blockquote>
152
153  <h2><a name="h2-release-notes" id="h2-release-notes">Release
154  Notes</a></h2>
155
156  <p>These notes are for <span class="main-name">ncurses</span>
157  @VERSION@, released <strong>December 30, 2025</strong>.</p>
158
159  <p>This release is designed to be source-compatible with
160  <span class="main-name">ncurses</span> 5.0 through 6.5; providing
161  extensions to the application binary interface (ABI). Although
162  the source can still be configured to support the <span class=
163  "main-name">ncurses</span> 5 ABI, the reason for the release is
164  to reflect improvements to the <span class=
165  "main-name">ncurses</span> 6 ABI and the supporting utility
166  programs.</p>
167
168  <p>There are numerous other improvements listed in this
169  announcement.</p>
170
171  <p>The most <a href="#h3-bug-fixes">important
172  bug-fixes/improvements</a> dealt with robustness issues. The
173  release notes also mention some other bug-fixes, but are focused
174  on new features and improvements to existing features since
175  <span class="main-name">ncurses</span> 6.5 release.</p>
176
177  <h3><a name="h3-library" id="h3-library">Library improvements</a></h3>
178
179  <h4><a name="h4-term-driver" id="h4-term-driver">Terminal driver
180  improvements</a></h4>
181
182  <p>This release focuses on improvements to the MinGW/Windows
183  terminal driver. The terminal driver for MinGW32 was introduced
184  in <a href="@HOMEPAGE@/NEWS.html#t20090214">2009</a>. A new
185  version of the terminal driver to support Windows Terminal was
186  begun in <a href="@HOMEPAGE@/NEWS.html#t20200829">2020</a>.
187  However, there were some differences:</p>
188
189  <ul>
190    <li>
191      <p>Both drivers use <a href=
192      "https://learn.microsoft.com/en-us/windows/console/console-reference">
193      Console API</a>; the later Windows driver also provides for
194      using character escape sequences.</p>
195    </li>
196
197    <li>
198      <p>The MinGW32 driver was designed to imitate POSIX terminal
199      I/O data types to simplify integration with the existing
200      sources.</p>
201
202      <p>The newer Windows driver did not integrate with the
203      sources in the same way. In particular, the <a href=
204      "@HOMEPAGE@/man/tset.1.html">reset</a> utility was
205      incomplete.</p>
206    </li>
207
208    <li>
209      <p>Windows Terminal support for Console API is incomplete,
210      lacking mouse support. Additionally, its developers took a
211      few years to resolve issues with carriage-return versus
212      line-feed translation.</p>
213
214      <p>Reflecting on these problems, both MinGW and Windows
215      drivers are still provided in ncurses through the current
216      release.</p>
217    </li>
218
219    <li>
220      <p>The two drivers are similar, but in developing the Windows
221      driver some renaming and refactoring was done. That resulted
222      in duplicate source files. This release eliminates the
223      duplication.</p>
224    </li>
225  </ul>
226
227  <p>These improvements have been made to the terminal driver:</p>
228
229  <ul>
230    <li>
231      <p>made <tt>win_driver.c</tt> obsolete in favor of
232      <tt>win32_driver.c</tt></p>
233    </li>
234
235    <li>
236      <p>made <tt>win32_curses.h</tt> obsolete in favor of
237      <tt>nc_win32.h</tt></p>
238    </li>
239
240    <li>
241      <p>added configure check for Win32 named pipes feature, using
242      that to make <tt>nc_mingw.h</tt> obsolete in favor of
243      <tt>nc_win32.h</tt></p>
244    </li>
245
246    <li>separated the <tt>_NC_WINDOWS</tt> platform macro into
247    <tt>_NC_WINDOWS_NATIVE</tt>, for MinGW and other native Win32
248    support, and <tt>_NC_WINDOWS</tt>, to make some Win32 features
249    available under the Cygwin runtime, in this case the
250    term-driver.</li>
251
252    <li>
253      <p>modified MinGW32 configuration to account for its use of
254      Windows-style pathnames in filesystem checks.</p>
255    </li>
256
257    <li>
258      <p>changed <tt>MS_TERMINAL</tt> symbol to
259      <tt>DEFAULT_TERM_VAR</tt></p>
260    </li>
261
262    <li>
263      <p>updated <tt>ncurses/wcwidth.c</tt>, for MinGW ports, from
264      xterm.</p>
265    </li>
266
267    <li>
268      <p>made fixes for reading Unicode characters in MinGW/Windows
269      port</p>
270    </li>
271
272    <li>
273      <p>improved Windows driver by restoring the scroll buffer and
274      console mode, e.g., when <tt>reset_prog_mode</tt> or
275      <tt>endwin</tt> is called</p>
276    </li>
277
278    <li>
279      <p>simplified include for <tt>wchar.h</tt> in Windows port by
280      removing the platform ifdef's</p>
281    </li>
282
283    <li>
284      <p>modified driver for MinGW to handle shift-tab and
285      control-tab as back-tab</p>
286    </li>
287
288    <li>
289      <p>made fixes for port using clang-cl or cl MSVC</p>
290    </li>
291  </ul>
292
293  <h4><a name="h4-fixes-library" id="h4-fixes-library">Other
294  improvements</a></h4>
295
296  <p>These are improvements to existing features:</p>
297
298  <ul>
299    <li>
300      <p>add comments to generated <tt>term.h</tt> to hint the
301      configure options used</p>
302    </li>
303
304    <li>
305      <p>change scope of <tt>TTY</tt>, <tt>GET_TTY</tt> and
306      <tt>SET_TTY</tt> to ncurses-internals</p>
307    </li>
308
309    <li>
310      <p>improved mouse driver</p>
311
312      <ul>
313        <li>
314          <p>modify <tt>handle_wheel</tt> case 2 to ignore the
315          event as in case 1 for mouse version 1, since that
316          corresponds to a button 6 or 7 event which is not
317          supported with ABI 6.</p>
318        </li>
319
320        <li>
321          <p>use separate read/write pointers in the mouse event
322          queue to work with too-close events for the
323          click-detection to work reliably, and further improve
324          that in case <tt>mouseinterval(0)</tt> is used to
325          suppress click-detection.</p>
326        </li>
327      </ul>
328    </li>
329
330    <li>
331      <p>modify treatment of <em>&ldquo;n&rdquo;</em> parameter for
332      <tt>waddnstr</tt>, <tt>waddnwstr</tt>, and
333      <tt>wins_nwstr</tt> to return <em>OK</em> when
334      <em>&ldquo;n&rdquo;</em> is zero, for consistency with other
335      implementations</p>
336    </li>
337
338    <li>
339      <p>modify <tt>wattron</tt>/<tt>wattroff</tt> calls in
340      <tt>form/m_post.c</tt> to call <tt>wattr_on</tt> and
341      <tt>wattr_off</tt> to omit cast used in the former for X/Open
342      compatibility</p>
343    </li>
344
345    <li>
346      <p>change <tt>winwstr</tt> to a generated function, using the
347      macro definition, moving its handling of negative length
348      parameter into <tt>winnwstr</tt>.</p>
349    </li>
350
351    <li>
352      <p>change <tt>winwstr</tt> to return wide character count
353      instead of <em>OK</em>.</p>
354    </li>
355
356    <li>
357      <p>disallow directories and block/character devices in
358      safe-open.</p>
359    </li>
360
361    <li>
362      <p>amend <tt>scr_restore</tt> and <tt>scr_init</tt> to remove
363      the target window only after validating the source window
364      which will replace the target</p>
365    </li>
366
367    <li>
368      <p>modify <tt>_nc_flush</tt> to also flush <em>stderr</em> to
369      help the <em>flash</em> capability to work in
370      <tt>bash</tt></p>
371    </li>
372
373    <li>
374      <p>trim padding from <em>sgr</em> expression used in
375      <tt>trim_sgr0</tt>, to avoid copying the padding into the
376      resulting sgr0</p>
377    </li>
378
379    <li>
380      <p>modify <tt>misc/Makefile.in</tt> and
381      <tt>misc/run_tic.in</tt> so that <tt>$DESTDIR</tt> is set and
382      used only in the makefile.</p>
383    </li>
384
385    <li>
386      <p>modify <tt>MKfallback.sh</tt> to eliminate
387      <tt>TERMINFO</tt> environment variable.</p>
388    </li>
389
390    <li>
391      <p>add <tt>-x</tt> option to <tt>infocmp</tt> in
392      <tt>MKfallback.sh</tt></p>
393    </li>
394
395    <li>
396      <p>limit value from <tt>ESCDELAY</tt> environment variable to
397      30 seconds, like other delay limits.</p>
398    </li>
399
400    <li>
401      <p>limit values from <tt>LINES</tt> and <tt>COLUMNS</tt>
402      environment variables to 512</p>
403    </li>
404
405    <li>
406      <p>added check in <tt>wresize</tt> for out-of-range
407      dimensions</p>
408    </li>
409
410    <li>
411      <p>improved error-handling in c++ binding</p>
412    </li>
413
414    <li>
415      <p>improved error-reporting in <tt>write_entry.c</tt></p>
416    </li>
417
418    <li>
419      <p>amended limit used in <tt>alloc_pair</tt>, by applying an
420      adjustment for default colors only when the maximum number of
421      color pairs is greater than the maximum number of colors</p>
422    </li>
423
424    <li>
425      <p>added limit-checks in <tt>alloc_entry.c</tt> and
426      <tt>alloc_ttype.c</tt> to avoid indexing errors when using
427      <tt>infocmp</tt> to compare all capabilities when processing
428      a malformed terminfo binary which has a valid header</p>
429    </li>
430
431    <li>
432      <p>added a null pointer check in mouse-initialization, for
433      the Windows driver</p>
434    </li>
435
436    <li>
437      <p>added some null-pointer checks after <tt>malloc</tt>s in
438      test-programs.</p>
439    </li>
440  </ul>
441
442  <p>These are corrections to existing features:</p>
443
444  <ul>
445    <li>
446      <p>removed test in <tt>wgetch</tt> which applied
447      <tt>notimeout</tt> to the initial read of a character</p>
448    </li>
449
450    <li>
451      <p>added check for special case of <tt>wcrtomb</tt>
452      converting a single byte code to a different single byte
453      code, which glibc does for code 160 in the KOI8-R
454      encoding</p>
455    </li>
456
457    <li>
458      <p>corrected <tt>_nc_to_char</tt> for the case when
459      <tt>wctob</tt> is not found by configure script</p>
460    </li>
461
462    <li>
463      <p>revised loop in <tt>wins_nwstr</tt>, to ensure that
464      non-spacing characters are combined with the base spacing
465      character</p>
466    </li>
467
468    <li>
469      <p>modified checks in <tt>delwin</tt> to avoid checking if
470      the window is a pad until first checking if it is still on
471      the active window-list</p>
472    </li>
473  </ul>
474
475  <h3><a name="h3-programs" id="h3-programs">Program
476  improvements</a></h3>
477
478  <h4><a name="h4-utilities" id="h4-utilities">Utilities</a></h4>
479
480  <p>Several improvements were made to the utility programs.</p>
481
482  <dl>
483    <dt><span class="part-name"><a href=
484    "@HOMEPAGE@/man/infocmp.1m.html">infocmp</a></span>
485    </dt>
486
487    <dd>
488      <ul>
489        <li>
490          <p>improved <tt>infocmp</tt> <tt>-E</tt>/<tt>-e</tt>
491          fallback feature</p>
492
493          <ul>
494            <li>prefix names with &ldquo;<tt>ti_</tt>&rdquo; if
495            they begin with a digit, e.g., 9term</li>
496
497            <li>escape backslashes and double-quotes in description
498            fields</li>
499          </ul>
500        </li>
501
502        <li>
503          <p>modified <tt>infocmp</tt> <tt>-E</tt>/<tt>-e</tt>
504          fallback feature to reduce stricter compiler warnings for
505          the extended capability data.</p>
506        </li>
507
508        <li>
509          <p>modified <tt>infocmp</tt> and <tt>tabs</tt> to use
510          actual name in usage and header.</p>
511        </li>
512
513        <li>
514          <p>improved error-message from <tt>infocmp</tt> when a
515          terminal entry cannot be opened</p>
516        </li>
517      </ul>
518    </dd>
519
520    <dt><span class="part-name"><a href=
521    "@HOMEPAGE@/man/tic.1m.html">tic</a></span>
522    </dt>
523
524    <dd>
525      <ul>
526        <li>
527          <p>increased limit on use-clauses from 32 to 40, warn but
528          allow entries which exceed the old limit.</p>
529        </li>
530
531        <li>
532          <p>added check for infinite loop in <tt>tic</tt>'s
533          use-resolution.</p>
534        </li>
535
536        <li>
537          <p>added a buffer-limit check in
538          <tt>postprocess_termcap</tt></p>
539        </li>
540      </ul>
541    </dd>
542
543    <dt><span class="part-name"><a href=
544    "@HOMEPAGE@/man/tput.1m.html">tput</a></span>
545    </dt>
546
547    <dd>
548      <ul>
549        <li>
550          <p>Warn about capabilities which expect parameters where
551          none are given. Also, repair the feature where multiple
552          capabilities can be handled on a single line.</p>
553        </li>
554      </ul>
555    </dd>
556  </dl>
557
558  <h4><a name="h4-examples" id="h4-examples">Examples</a></h4>
559
560  <p>Along with the library and utilities, improvements were made
561  to the <a href=
562  "@HOMEPAGE@/ncurses-examples.html">ncurses-examples</a>:</p>
563
564  <ul>
565    <li>
566      <p>add help-popup for <tt>test_instr.c</tt>,
567      <tt>test_inwstr.c</tt></p>
568    </li>
569
570    <li>
571      <p>add options to <tt>test/worm.c</tt> for benchmarking.</p>
572    </li>
573
574    <li>
575      <p>improve <tt>-t</tt> option of <tt>test/gdc.c</tt>,
576      allowing hours only, or hours and minutes only.</p>
577    </li>
578
579    <li>
580      <p>correct dimensions in <tt>test/popup_msg.c</tt>, fixing an
581      overrun.</p>
582    </li>
583
584    <li>
585      <p>modify <tt>test/demo_keyok.c</tt> to accept <tt>^Q</tt>
586      for quit, for consistency.</p>
587    </li>
588
589    <li>
590      <p>add option &ldquo;<tt>-c</tt>&rdquo; to test programs to
591      illustrate a non-blank character in the window background
592      property.</p>
593    </li>
594
595    <li>
596      <p>reserve <tt>-c</tt>/<tt>-l</tt> options in
597      <tt>test/*.c</tt> for command/logging like <a href=
598      "@WEBSITE@/vttest/">vttest</a>.</p>
599    </li>
600  </ul>
601
602  <p>There is one new demo/test program:</p>
603
604  <dl>
605    <dt><span class=
606    "part-name"><em>ncurses/report_ctype.c</em></span>
607    </dt>
608
609    <dd>
610      <p>Shows a chart of the first 256 character codes, which are
611      not as consistent across platforms for ctype versus wctype as
612      some suppose.</p>
613    </dd>
614  </dl>
615
616  <h3><a name="h3-database" id="h3-database">Terminal database</a></h3>
617
618  <p>There are several new terminal descriptions:</p>
619
620  <ul>
621    <li>
622      <p><a href=
623      "@HOMEPAGE@/terminfo.src.html#tic-ghostty"><tt>ghostty</tt></a></p>
624    </li>
625
626    <li>
627      <p><a href=
628      "@HOMEPAGE@/terminfo.src.html#tic-illumos"><tt>illumos</tt></a>,
629      <a href=
630      "@HOMEPAGE@/terminfo.src.html#tic-sun-16color"><tt>sun-16color</tt></a>,
631      <a href=
632      "@HOMEPAGE@/terminfo.src.html#tic-sun-256color"><tt>sun-256color</tt></a>,
633      and <a href=
634      "@HOMEPAGE@/terminfo.src.html#tic-sun-direct"><tt>sun-direct</tt></a></p>
635    </li>
636
637    <li>
638      <p><a href=
639      "@HOMEPAGE@/terminfo.src.html#tic-ms-terminal-direct"><tt>ms-terminal-direct</tt></a></p>
640    </li>
641
642    <li>
643      <p><a href=
644      "@HOMEPAGE@/terminfo.src.html#tic-pangoterm"><tt>pangoterm</tt></a></p>
645    </li>
646
647    <li>
648      <p><a href=
649      "@HOMEPAGE@/terminfo.src.html#tic-rlogin-color"><tt>rlogin-color</tt></a></p>
650    </li>
651
652    <li>
653      <p><a href=
654      "@HOMEPAGE@/terminfo.src.html#tic-sclp"><tt>sclp</tt></a></p>
655    </li>
656
657    <li>
658      <p><a href=
659      "@HOMEPAGE@/terminfo.src.html#tic-vt520-w"><tt>vt520-w</tt></a>
660      and <a href=
661      "@HOMEPAGE@/terminfo.src.html#tic-vt525-w"><tt>vt525-w</tt></a></p>
662    </li>
663  </ul>
664
665  <p>along with building blocks</p>
666
667  <ul>
668    <li>
669      <p><a href=
670      "@HOMEPAGE@/terminfo.src.html#tic-linux_lockeys"><tt>linux+lockeys</tt></a>,
671      <a href=
672      "@HOMEPAGE@/terminfo.src.html#tic-xterm_r5_lockeys"><tt>xterm+r5+lockeys</tt></a>,
673      <a href=
674      "@HOMEPAGE@/terminfo.src.html#tic-xterm_r5_fkeys"><tt>xterm+r5+fkeys</tt></a></p>
675    </li>
676
677    <li>
678      <p><a href=
679      "@HOMEPAGE@/terminfo.src.html#tic-vt100_pf1-pf4"><tt>vt100+pf1-pf4</tt></a></p>
680    </li>
681
682    <li>
683      <p><a href=
684      "@HOMEPAGE@/terminfo.src.html#tic-vt220_ufkeys"><tt>vt220+ufkeys</tt></a>,
685      <a href=
686      "@HOMEPAGE@/terminfo.src.html#tic-vt220_sfkeys"><tt>vt220+sfkeys</tt></a></p>
687    </li>
688
689    <li>
690      <p><a href=
691      "@HOMEPAGE@/terminfo.src.html#tic-ecma_standout"><tt>ecma+standout</tt></a>,
692      <a href=
693      "@HOMEPAGE@/terminfo.src.html#tic-ecma_underline"><tt>ecma+underline</tt></a></p>
694    </li>
695
696    <li>
697      <p><a href=
698      "@HOMEPAGE@/terminfo.src.html#tic-wyse+cvis"><tt>wyse+cvis</tt></a></p>
699    </li>
700  </ul>
701
702  <p>There are many changes to existing terminal descriptions. Some
703  were updates to several descriptions, using the
704  <code>infocmp</code> &ldquo;<code>-u</code>&rdquo; option in a
705  script to determine which <em>building-block</em> entries could
706  be used to replace multiple capability settings (and trim
707  redundant information).</p>
708
709  <p>Other changes include:</p>
710
711  <ul>
712    <li>
713      <p>use <a href=
714      "@HOMEPAGE@/terminfo.src.html#tic-xterm_keypad">xterm+keypad</a>
715      in <a href=
716      "@HOMEPAGE@/terminfo.src.html#tic-pccon_base">pccon+base</a></p>
717    </li>
718
719    <li>
720      <p>use <a href=
721      "@HOMEPAGE@/terminfo.src.html#tic-bracketed_paste">bracketed+paste</a>
722      in <a href=
723      "@HOMEPAGE@/terminfo.src.html#tic-nsterm">nsterm</a>,
724      <a href="@HOMEPAGE@/terminfo.src.html#tic-rlogin-color">rlogin-color</a>,
725      <a href="@HOMEPAGE@/terminfo.src.html#tic-screen">screen</a>,
726      <a href=
727      "@HOMEPAGE@/terminfo.src.html#tic-terminology">terminology</a></p>
728    </li>
729
730    <li>
731      <p>use extended-keys in <a href=
732      "@HOMEPAGE@/terminfo.src.html#tic-djgpp">djgpp</a> 2.05</p>
733    </li>
734
735    <li>
736      <p>update/correct some of the rv/xr strings, checked with</p>
737
738      <p><a href="@HOMEPAGE@/tack.html">tack</a></p>
739
740      <ul>
741        <li>add rv code for <a href=
742        "@HOMEPAGE@/terminfo.src.html#tic-alacritty">alacritty</a></li>
743
744        <li>add xr code for <a href=
745        "@HOMEPAGE@/terminfo.src.html#tic-putty">putty</a></li>
746
747        <li>add rv/xr codes for <a href=
748        "@HOMEPAGE@/terminfo.src.html#tic-domterm">domterm</a>,
749        <a href=
750        "@HOMEPAGE@/terminfo.src.html#tic-mintty">mintty</a>,
751        <a href=
752        "@HOMEPAGE@/terminfo.src.html#tic-mlterm">mlterm</a>,
753        <a href=
754        "@HOMEPAGE@/terminfo.src.html#tic-contour">contour</a>,
755        <a href=
756        "@HOMEPAGE@/terminfo.src.html#tic-ghostty">ghostty</a>,
757        <a href=
758        "@HOMEPAGE@/terminfo.src.html#tic-iterm2">iterm2</a>,
759        <a href="@HOMEPAGE@/terminfo.src.html#tic-kitty">kitty</a>,
760        <a href=
761        "@HOMEPAGE@/terminfo.src.html#tic-konsole">konsole</a>,
762        <a href=
763        "@HOMEPAGE@/terminfo.src.html#tic-vscode">vscode</a>,
764        <a href="@HOMEPAGE@/terminfo.src.html#tic-vte">vte</a>,
765        <a href=
766        "@HOMEPAGE@/terminfo.src.html#tic-wezterm">wezterm</a></li>
767      </ul>
768    </li>
769
770    <li>
771      <p>improve use-clauses: <a href=
772      "@HOMEPAGE@/terminfo.src.html#tic-ansi_cup">ansi+cup</a>,
773      <a href=
774      "@HOMEPAGE@/terminfo.src.html#tic-ansi_idl1">ansi+idl1</a>,
775      <a href=
776      "@HOMEPAGE@/terminfo.src.html#tic-ansi_rca">ansi+rca</a>,
777      <a href=
778      "@HOMEPAGE@/terminfo.src.html#tic-ansi_rca2">ansi+rca2</a>,
779      <a href=
780      "@HOMEPAGE@/terminfo.src.html#tic-ansi_sgrso">ansi+sgrso</a>,
781      <a href=
782      "@HOMEPAGE@/terminfo.src.html#tic-ansi_sgrul">ansi+sgrul</a></p>
783    </li>
784
785    <li>
786      <p><a href=
787      "@HOMEPAGE@/terminfo.src.html#tic-sclp">sclp</a>:</p>
788
789      <ul>
790        <li>add kf1 to kf5</li>
791
792        <li>use <a href=
793        "@HOMEPAGE@/terminfo.src.html#tic-ansi_rca">ansi+rca</a></li>
794
795        <li>use <a href=
796        "@HOMEPAGE@/terminfo.src.html#tic-vt220_pcedit">vt220+pcedit</a></li>
797      </ul>
798    </li>
799
800    <li>
801      <p><a href="@HOMEPAGE@/terminfo.src.html#tic-vt525">vt525</a></p>
802
803      <ul>
804        <li>add color</li>
805
806        <li>add op</li>
807      </ul>
808    </li>
809
810    <li>
811      <p><a href=
812      "@HOMEPAGE@/terminfo.src.html#tic-wezterm">wezterm</a>:</p>
813
814      <ul>
815        <li>use <a href=
816        "@HOMEPAGE@/terminfo.src.html#tic-xterm_alt_title">xterm+alt+title</a></li>
817
818        <li>omit its broken left/right margin feature</li>
819      </ul>
820    </li>
821
822    <li>update <a href=
823    "@HOMEPAGE@/terminfo.src.html#tic-contour">contour</a></li>
824
825    <li>
826      <p>update <a href=
827      "@HOMEPAGE@/terminfo.src.html#tic-ms-terminal">ms-terminal</a></p>
828
829      <ul>
830        <li>add XM/xm to ms-terminal, to enable mouse with
831        experimental Windows driver</li>
832      </ul>
833    </li>
834
835    <li>
836      <p>update <a href=
837      "@HOMEPAGE@/terminfo.src.html#tic-st">st</a> to 0.8.5</p>
838    </li>
839
840    <li>
841      <p>update <a href=
842      "@HOMEPAGE@/terminfo.src.html#tic-teraterm">teraterm</a> to
843      5.0</p>
844    </li>
845
846    <li>
847      <p>update <a href=
848      "@HOMEPAGE@/terminfo.src.html#tic-foot">foot</a> to
849      1.18.1</p>
850    </li>
851
852    <li>
853      <p>update <a href=
854      "@HOMEPAGE@/terminfo.src.html#tic-iterm2">iTerm2</a> to
855      3.5.0</p>
856    </li>
857  </ul>
858
859  <h3><a name="h3-documentation" id=
860  "h3-documentation">Documentation</a></h3>
861
862  <p>As usual, this release</p>
863
864  <ul>
865    <li>
866      <p>improves documentation by describing new features,</p>
867    </li>
868
869    <li>
870      <p>attempts to improve the description of features which
871      users have found confusing</p>
872    </li>
873
874    <li>
875      <p>fills in overlooked descriptions of features which were
876      described in the <a href="@HOMEPAGE@/NEWS.html">NEWS</a> file
877      but treated sketchily in manual pages.</p>
878    </li>
879  </ul>
880
881  <p>In addition to providing background information to explain
882  these features and show how they evolved, there are corrections,
883  clarifications, etc.:</p>
884
885  <ul>
886    <li>
887      <p>Corrections:</p>
888
889      <ul>
890        <li>
891          <p>corrected note about box() in curs_border.3x</p>
892        </li>
893
894        <li>
895          <p>added note on scrolling and lower-right corner to
896          waddch and wadd_wch manual pages.</p>
897        </li>
898      </ul>
899    </li>
900
901    <li>
902      <p>Other improvements:</p>
903
904      <ul>
905        <li>
906          <p>This release has many changes to improve the
907          formatting and style of the man pages.</p>
908        </li>
909
910        <li>
911          <p>Table layout in the man pages has been revised.</p>
912        </li>
913
914        <li>
915          <p>The <a href=
916          "@HOMEPAGE@/howto/NCURSES-Programming-HOWTO.html">ncurses
917          HOWTO</a> and its sample programs has been updated.</p>
918        </li>
919      </ul>
920    </li>
921  </ul>
922
923  <p>There are no new manual pages (all of the manual page updates
924  are to existing pages).</p>
925
926  <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
927  bug-fixes</a></h3>
928
929  <h3><a name="h3-config-config" id=
930  "h3-config-config">Configuration changes</a></h3>
931
932  <h4><a name="h4-config-major" id="h4-config-major">Major
933  changes</a></h4>
934
935  <p>Improvements made to configure checks include</p>
936
937  <ul>
938    <li>
939      <p>improve configure check for &ldquo;install&rdquo;.</p>
940    </li>
941
942    <li>
943      <p>add check for build-time utilities, in case
944      cross-compiling is setup with an invalid
945      <tt>$BUILD_CC</tt></p>
946    </li>
947
948    <li>
949      <p>add configure check for <tt>&lt;sys/fsuid.h&gt;</tt>,
950      which may be needed for flatpacks</p>
951    </li>
952
953    <li>
954      <p>add a consistency-check for termio(s)/tty headers, to help
955      with cross-compiles</p>
956    </li>
957
958    <li>
959      <p>modify configure check for
960      <tt>MAKEFLAGS</tt>/<tt>MFLAGS</tt> to ignore existing value
961      of these environment variables</p>
962    </li>
963
964    <li>
965      <p>improve configurability of <tt>alloca</tt> as used in
966      Windows ports.</p>
967    </li>
968
969    <li>
970      <p>modify configure script checks for <tt>stdbool.h</tt> to
971      fix build with older gcc version.</p>
972    </li>
973
974    <li>
975      <p>add &lt;new&gt; to the possible headers declaring the C++
976      <tt>std::bad_alloc</tt>.</p>
977    </li>
978
979    <li>
980      <p>modify check for <tt>stdbool.h</tt> to be more
981      conservative in case the headers are used with a compiler
982      other than that which was used to configure</p>
983    </li>
984
985    <li>
986      <p>remove dependency on <tt>stdbool.h</tt> from configure
987      script check for type of <em>bool</em> when C++ binding is
988      omitted.</p>
989    </li>
990  </ul>
991
992  <h4><a name="h4-config-options" id=
993  "h4-config-options">Configuration options</a></h4>
994
995  <p>There are a few new configure options:</p>
996
997  <dl>
998    <dt><a href=
999    "@HOMEPAGE@/INSTALL.html#option:enable-install-prefix"><tt>--enable-install-prefix</tt></a>
1000    </dt>
1001
1002    <dd>
1003      <p>Modify behavior of <tt>$DESTDIR</tt> to merge or replace
1004      the value set by <tt>--prefix</tt>.</p>
1005    </dd>
1006
1007    <dt><a href=
1008    "@HOMEPAGE@/INSTALL.html#option:enable-named-pipes"><tt>--enable-named-pipes</tt></a>
1009    </dt>
1010
1011    <dd>
1012      <p>The Windows driver uses named pipes for communicating with
1013      a pseudo console, allowing it to use escape sequences rather
1014      than Console API. This works well with mintty. On the
1015      downside, this feature may not work well with the Windows
1016      Terminal due to a longstanding bug in <tt>conhost.exe</tt>
1017      (<a href=
1018      "https://github.com/microsoft/terminal/issues/9461">#9461</a>).</p>
1019    </dd>
1020  </dl>
1021
1022  <p>These configure options are modified:</p>
1023
1024  <dl>
1025    <dt><a href=
1026    "@HOMEPAGE@/INSTALL.html#option:enable-exp-win32"><tt>--enable-exp-win32</tt></a>
1027    </dt>
1028
1029    <dd>
1030      <p>This option is obsolete, replaced by
1031      <tt>--enable-named-pipes</tt>.</p>
1032    </dd>
1033
1034    <dt><a href=
1035    "@HOMEPAGE@/INSTALL.html#option:enable-term-driver"><tt>--enable-term-driver</tt></a>
1036    </dt>
1037
1038    <dd>
1039      <p>This is enabled by default on platforms where the Windows
1040      driver can be compiled, e.g., Cygwin, MinGW32 and MSYS2.</p>
1041    </dd>
1042  </dl>
1043
1044  <h4><a name="h4-config-package" id="h4-config-package">Package
1045  configuration scripts</a></h4>
1046
1047  <p>The configure script and makefiles optionally generate a
1048  script which reports the compiler and linker options needed to
1049  build a program with ncurses, as well as a data file which is
1050  used via pkg-config for the same purpose. Several improvements
1051  were made for these scripts:</p>
1052
1053  <ul>
1054    <li>
1055      <p>improved filtering of <tt>-L</tt> options in
1056      <tt>misc/gen-pkgconfig.in</tt> and in
1057      <tt>misc/ncurses-config.in</tt></p>
1058    </li>
1059
1060    <li>
1061      <p>modified <tt>ncurses*-config</tt> to add <tt>-I</tt>
1062      option in <tt>--cflag</tt> where needed for
1063      <tt>--disable-overwrite</tt> to match ".pc" files.</p>
1064    </li>
1065
1066    <li>
1067      <p>suppressed <tt>-g</tt> and <tt>-fXXX</tt> flags from
1068      <tt>CFLAGS</tt> in <tt>misc/ncurses-config.in</tt></p>
1069    </li>
1070
1071    <li>
1072      <p>modified configure script to allow for <tt>pkg-config</tt>
1073      using DOS/Windows pathname syntax</p>
1074    </li>
1075
1076    <li>
1077      <p>modified <tt>misc/ncurses-config.in</tt>, improved match
1078      with <tt>pkg-config output</tt>.</p>
1079    </li>
1080
1081    <li>
1082      <p>adjusted naming of test packages for MinGW
1083      <tt>*-config</tt> scripts to match the <tt>pkg-config</tt>
1084      names</p>
1085    </li>
1086
1087    <li>
1088      <p>added <tt>--cflags-only-I</tt> and
1089      <tt>--cflags-only-other</tt> options to
1090      <tt>misc/ncurses-config.in</tt></p>
1091    </li>
1092  </ul>
1093
1094  <h3><a name="h3-portability" id="h3-portability">Portability</a></h3>
1095
1096  <p>Many of the portability changes are implemented via the
1097  configure script:</p>
1098
1099  <ul>
1100    <li>
1101      <p>disallow configure options which apply only to multiuser
1102      systems, to improve ports to single-user systems such as
1103      Haiku</p>
1104    </li>
1105
1106    <li>
1107      <p>add warning to configure script to address conflict
1108      between the <tt>--enable-lp64</tt> option and the options for
1109      overriding the types used for <tt>chtype</tt> and
1110      <tt>mmask_t</tt>.</p>
1111    </li>
1112
1113    <li>
1114      <p>modify configure script cases for $host_os, to accommodate
1115      64-bit big-endian POWER Linux with glibc</p>
1116    </li>
1117
1118    <li>
1119      <p>modify configure script and misc/Makefile to accept glob
1120      expressions that include Windows/DOS drive-letters</p>
1121    </li>
1122
1123    <li>
1124      <p>change <tt>Ada95/configure</tt> to use
1125      <tt>--with-screen</tt> option rather than
1126      <tt>--enable-widec</tt>, to provide more choices of
1127      underlying curses library.</p>
1128    </li>
1129
1130    <li>
1131      <p>modify configure script to work around broken gnatgcc
1132      script found in gcc-13 builds.</p>
1133    </li>
1134  </ul>
1135
1136  <p>Other portability fixes include:</p>
1137
1138  <ul>
1139    <li>
1140      <p>improve pattern used for configure
1141      <tt>--with-xterm-kbs</tt> option.</p>
1142    </li>
1143
1144    <li>
1145      <p>modify recursive make rules to avoid interference with GNU
1146      make's "-j" option</p>
1147    </li>
1148
1149    <li>
1150      <p>when installing the terminfo database, check if symbolic
1151      links are supported before attemping to link lib/terminfo
1152      from share/terminfo</p>
1153    </li>
1154
1155    <li>
1156      <p>improve logic in misc/run_tic.in for constructing symbolic
1157      link when <tt>$DESTDIR</tt> is set.</p>
1158    </li>
1159
1160    <li>
1161      <p>build-fix for ncurses-examples with newer PDCurses, which
1162      no longer has stubs for unimplemented features.</p>
1163    </li>
1164
1165    <li>
1166      <p>change <tt>etip.h.in</tt> to include either/both of
1167      <tt>&lt;new&gt;</tt> and <tt>&lt;exception&gt;</tt>, needed
1168      for another old BSD.</p>
1169    </li>
1170
1171    <li>
1172      <p>correct conditional-compile for a case when the C compiler
1173      does not have a bool type.</p>
1174    </li>
1175
1176    <li>
1177      <p>improve <tt>MKlib_gen.sh</tt> handling of
1178      &ldquo;bool&rdquo; type, for building link_test.</p>
1179    </li>
1180
1181    <li>
1182      <p>modify <tt>ncurses/tinfo/MKfallback.sh</tt> to work with
1183      MacOS <tt>sed</tt>, which lacks BSD-style <tt>\&lt;</tt> and
1184      <tt>\&gt;</tt>.</p>
1185    </li>
1186
1187    <li>
1188      <p>modify <tt>MKlib_gen.c</tt> to allow for Solaris's
1189      definition of <tt>NULL</tt> as <tt>0L</tt>.</p>
1190    </li>
1191
1192    <li>
1193      <p>widen pattern in pc/*-config scripts to disallow more
1194      linker options.</p>
1195    </li>
1196
1197    <li>
1198      <p>avoid redefining bool in <tt>curses.h</tt> if the platform
1199      already supports that type.</p>
1200    </li>
1201
1202    <li>
1203      <p>move include <tt>&lt;curses.h&gt;</tt> from
1204      <tt>etip.h.in</tt> to <tt>cursesw.h</tt>, to work around
1205      breakage in Apple's port of ncurses.</p>
1206    </li>
1207  </ul>
1208
1209  <hr>
1210
1211  <h2><a name="h2-features" id="h2-features">Features of
1212  <span class="main-name">ncurses</span></a></h2>
1213
1214  <p>The <span class="main-name">ncurses</span> package is fully
1215  upward-compatible with SVr4 (System V Release 4) curses:</p>
1216
1217  <ul>
1218    <li>
1219      <p>All of the SVr4 calls have been implemented (and are
1220      documented).</p>
1221    </li>
1222
1223    <li>
1224      <p><span class="main-name">ncurses</span> supports the
1225      features of SVr4 curses including keyboard mapping, color,
1226      form drawing with ACS characters, and automatic recognition
1227      of keypad and function keys.</p>
1228    </li>
1229
1230    <li>
1231      <p><span class="main-name">ncurses</span> provides work-alike
1232      replacements of SVr4 supplemental libraries based on curses,
1233      but which were not specified by X/Open Curses:</p>
1234
1235      <ul>
1236        <li>
1237          <p>the panel library, permitting windows to stack and
1238          overlap</p>
1239        </li>
1240
1241        <li>
1242          <p>the menu library, supporting a uniform but flexible
1243          interface for menu programming</p>
1244        </li>
1245
1246        <li>
1247          <p>the form library, supporting data collection through
1248          on-screen forms</p>
1249        </li>
1250      </ul>
1251    </li>
1252
1253    <li>
1254      <p><span class="main-name">ncurses</span>'s terminal database
1255      is fully compatible with that used by SVr4 curses.</p>
1256
1257      <ul>
1258        <li>
1259          <p><span class="main-name">ncurses</span> supports
1260          user-defined capabilities that it can see, but which are
1261          hidden from SVr4 curses applications using the
1262          <em>same</em> terminal database.</p>
1263        </li>
1264
1265        <li>
1266          <p>It can be optionally configured to match the format
1267          used in related systems such as AIX and Tru64.</p>
1268        </li>
1269
1270        <li>
1271          <p>Alternatively, <span class="main-name">ncurses</span>
1272          can be configured to use hashed databases rather than the
1273          directory of files used by SVr4 curses.</p>
1274        </li>
1275      </ul>
1276    </li>
1277
1278    <li>
1279      <p>The <span class="main-name">ncurses</span> utilities have
1280      options to allow you to filter terminfo entries for use with
1281      less capable <em>curses</em>/<em>terminfo</em> versions such
1282      as the HP-UX and AIX ports.</p>
1283    </li>
1284  </ul>
1285
1286  <p>The <span class="main-name">ncurses</span> package also has
1287  many useful extensions over SVr4:</p>
1288
1289  <ul>
1290    <li>
1291      <p>The API is 8-bit clean and base-level conformant with the
1292      X/Open Curses specification, XSI curses (that is, it
1293      implements all <em>BASE</em> level features, and almost all
1294      <em>EXTENDED</em> features). It includes many function calls
1295      not supported under SVr4 curses (but portability of all calls
1296      is documented so you can use the SVr4 subset only).</p>
1297    </li>
1298
1299    <li>
1300      <p>Unlike SVr3 curses, <span class="main-name">ncurses</span>
1301      can write to the rightmost-bottommost corner of the screen if
1302      your terminal has an insert-character capability.</p>
1303    </li>
1304
1305    <li>
1306      <p>Ada95 and C++ bindings.</p>
1307    </li>
1308
1309    <li>
1310      <p>Support for mouse event reporting with X Window xterm and
1311      FreeBSD and OS/2 console windows.</p>
1312    </li>
1313
1314    <li>
1315      <p>Extended mouse support via Alessandro Rubini's gpm
1316      package.</p>
1317    </li>
1318
1319    <li>
1320      <p>The function <code>wresize</code> allows you to resize
1321      windows, preserving their data.</p>
1322    </li>
1323
1324    <li>
1325      <p>The function <code>use_default_colors</code> allows you to
1326      use the terminal's default colors for the default color pair,
1327      achieving the effect of transparent colors.</p>
1328    </li>
1329
1330    <li>
1331      <p>The functions <code>keyok</code> and
1332      <code>define_key</code> allow you to better control the use
1333      of function keys, e.g., disabling the <span class=
1334      "main-name">ncurses</span> KEY_MOUSE, or by defining more
1335      than one control sequence to map to a given key code.</p>
1336    </li>
1337
1338    <li>
1339      <p>Support for direct-color terminals, such as modern
1340      xterm.</p>
1341    </li>
1342
1343    <li>
1344      <p>Support for 256-color terminals, such as modern xterm.</p>
1345    </li>
1346
1347    <li>
1348      <p>Support for 16-color terminals, such as <em>aixterm</em>
1349      and <em>modern xterm</em>.</p>
1350    </li>
1351
1352    <li>
1353      <p>Better cursor-movement optimization. The package now
1354      features a cursor-local-movement computation more efficient
1355      than either BSD's or System V's.</p>
1356    </li>
1357
1358    <li>
1359      <p>Super hardware scrolling support. The screen-update code
1360      incorporates a novel, simple, and cheap algorithm that
1361      enables it to make optimal use of hardware scrolling,
1362      line-insertion, and line-deletion for screen-line movements.
1363      This algorithm is more powerful than the 4.4BSD curses
1364      <code>quickch</code> routine.</p>
1365    </li>
1366
1367    <li>
1368      <p>Real support for terminals with the magic-cookie glitch.
1369      The screen-update code will refrain from drawing a highlight
1370      if the magic- cookie unattributed spaces required just before
1371      the beginning and after the end would step on a non-space
1372      character. It will automatically shift highlight boundaries
1373      when doing so would make it possible to draw the highlight
1374      without changing the visual appearance of the screen.</p>
1375    </li>
1376
1377    <li>
1378      <p>It is possible to generate the library with a list of
1379      pre-loaded fallback entries linked to it so that it can serve
1380      those terminal types even when no terminfo tree or termcap
1381      file is accessible (this may be useful for support of
1382      screen-oriented programs that must run in single-user
1383      mode).</p>
1384    </li>
1385
1386    <li>
1387      <p>The <a href="@HOMEPAGE@/man/tic.1m.html"><span class=
1388      "part-name">tic</span></a>/<a href=
1389      "@HOMEPAGE@/man/captoinfo.1m.html">captoinfo</a> utility
1390      provided with <span class="main-name">ncurses</span> has the
1391      ability to translate many termcaps from the XENIX, IBM and
1392      AT&amp;T extension sets.</p>
1393    </li>
1394
1395    <li>
1396      <p>A BSD-like <a href=
1397      "@HOMEPAGE@/man/tset.1.html"><span class=
1398      "part-name">tset</span></a> utility is provided.</p>
1399    </li>
1400
1401    <li>
1402      <p>The <span class="main-name">ncurses</span> library and
1403      utilities will automatically read terminfo entries from
1404      $HOME/.terminfo if it exists, and compile to that directory
1405      if it exists and the user has no write access to the system
1406      directory. This feature makes it easier for users to have
1407      personal terminfo entries without giving up access to the
1408      system terminfo directory.</p>
1409    </li>
1410
1411    <li>
1412      <p>You may specify a path of directories to search for
1413      compiled descriptions with the environment variable
1414      TERMINFO_DIRS (this generalizes the feature provided by
1415      TERMINFO under stock System V.)</p>
1416    </li>
1417
1418    <li>
1419      <p>In terminfo source files, use capabilities may refer not
1420      just to other entries in the same source file (as in System
1421      V) but also to compiled entries in either the system terminfo
1422      directory or the user's $HOME/.terminfo directory.</p>
1423    </li>
1424
1425    <li>
1426      <p>The table-of-entries utility <a href=
1427      "@HOMEPAGE@/man/toe.1m.html"><span class=
1428      "part-name">toe</span></a> makes it easy for users to see
1429      exactly what terminal types are available on the system.</p>
1430    </li>
1431
1432    <li>
1433      <p>X/Open Curses permits most functions it specifies to be
1434      made available as macros as well. ncurses does this</p>
1435
1436      <ul>
1437        <li>to improve performance, e.g., for operations composed
1438        of simpler functions such as cursor movement following by
1439        adding text to the screen,</li>
1440
1441        <li>to simplify the implementation by reusing functions
1442        which use common parameters, e.g., the standard screen
1443        <code>stdscr</code>, and</li>
1444
1445        <li>to provide functions that return values via their
1446        parameters</li>
1447      </ul>
1448
1449      <p>Except for the last case, ncurses provides a non-macro
1450      implementation of the function. If the macro definition is
1451      disabled with <code>#undef</code>, or by defining
1452      <code>NCURSES_NOMACROS</code> the function may be linked (and
1453      its calls will be checked against the prototype).</p>
1454    </li>
1455
1456    <li>
1457      <p>Extensive documentation is provided (see the <em><a href=
1458      "@HOMEPAGE@/ncurses.faq.html#additional_reading">Additional
1459      Reading</a></em> section of the <em><a href=
1460      "@HOMEPAGE@/ncurses.faq.html"><span class=
1461      "main-name">ncurses</span> FAQ</a></em> for online
1462      documentation).</p>
1463    </li>
1464  </ul>
1465
1466  <h2><a name="h2-who-uses" id="h2-who-uses">Applications using
1467  <span class="main-name">ncurses</span></a></h2>
1468
1469  <p>The <span class="main-name">ncurses</span> distribution
1470  includes a selection of test programs (including a few games).
1471  These are available separately as <a href=
1472  "@HOMEPAGE@/ncurses-examples.html">ncurses-examples</a></p>
1473
1474  <p>The ncurses library has been tested with a wide variety of
1475  applications including:</p>
1476
1477  <blockquote>
1478    <dl>
1479      <dt><span class="part-name">aptitude</span>
1480      </dt>
1481
1482      <dd>
1483        <p>FrontEnd to Apt, the debian package manager</p>
1484
1485        <p><a href=
1486        "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude</a></p>
1487      </dd>
1488
1489      <dt><span class="part-name">cdk</span>
1490      </dt>
1491
1492      <dd>
1493        <p>Curses Development Kit</p>
1494
1495        <p><a href="@WEBSITE@/cdk/">@WEBSITE@/cdk/</a><br>
1496        </p>
1497      </dd>
1498
1499      <dt><span class="part-name">ded</span>
1500      </dt>
1501
1502      <dd>
1503        <p>directory-editor</p>
1504
1505        <p><a href="@WEBSITE@/ded/">@WEBSITE@/ded/</a></p>
1506      </dd>
1507
1508      <dt><span class="part-name">dialog</span>
1509      </dt>
1510
1511      <dd>
1512        <p>the underlying application used in Slackware's setup,
1513        and the basis for similar install/configure applications on
1514        many systems.</p>
1515
1516        <p><a href="@WEBSITE@/dialog/">@WEBSITE@/dialog/</a></p>
1517      </dd>
1518
1519      <dt><span class="part-name">lynx</span>
1520      </dt>
1521
1522      <dd>
1523        <p>the text WWW browser</p>
1524
1525        <p><a href=
1526        "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/</a></p>
1527      </dd>
1528
1529      <dt><span class="part-name">mutt</span>
1530      </dt>
1531
1532      <dd>
1533        <p>mail utility</p>
1534
1535        <p><a href="http://www.mutt.org/">http://www.mutt.org/</a></p>
1536      </dd>
1537
1538      <dt><span class="part-name">ncftp</span>
1539      </dt>
1540
1541      <dd>
1542        <p>file-transfer utility</p>
1543
1544        <p><a href=
1545        "https://www.ncftp.com/">https://www.ncftp.com/</a></p>
1546      </dd>
1547
1548      <dt><span class="part-name">nvi</span>
1549      </dt>
1550
1551      <dd>
1552        <p>New vi uses ncurses.</p>
1553
1554        <p><a href=
1555        "https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page">
1556        https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page</a><br>
1557
1558        </p>
1559      </dd>
1560
1561      <dt><span class="part-name">ranger</span>
1562      </dt>
1563
1564      <dd>
1565        <p>A console file manager with VI key bindings in
1566        <em>Python</em>.</p>
1567
1568        <p><a href=
1569        "https://ranger.github.io/">https://ranger.github.io/</a></p>
1570      </dd>
1571
1572      <dt><span class="part-name">tin</span>
1573      </dt>
1574
1575      <dd>
1576        <p>newsreader, supporting color, MIME</p>
1577
1578        <p><a href="http://www.tin.org/">http://www.tin.org/</a></p>
1579      </dd>
1580
1581      <dt><span class="part-name">vifm</span>
1582      </dt>
1583
1584      <dd>
1585        <p>File manager with vi like keybindings</p>
1586
1587        <p><a href="https://vifm.info/">https://vifm.info/</a></p>
1588      </dd>
1589    </dl>
1590  </blockquote>
1591
1592  <p>as well as some that use <span class=
1593  "main-name">ncurses</span> for the terminfo support alone:</p>
1594
1595  <blockquote>
1596    <dl>
1597      <dt><span class="part-name">minicom</span>
1598      </dt>
1599
1600      <dd>
1601        <p>terminal emulator for serial modem connections</p>
1602
1603        <p><a href=
1604        "https://salsa.debian.org/minicom-team/minicom">https://salsa.debian.org/minicom-team/minicom</a></p>
1605      </dd>
1606
1607      <dt><span class="part-name">mosh</span>
1608      </dt>
1609
1610      <dd>
1611        <p>a replacement for <code>ssh</code>.</p>
1612
1613        <p><a href="https://mosh.org/">https://mosh.org/</a></p>
1614      </dd>
1615
1616      <dt><span class="part-name">tack</span>
1617      </dt>
1618
1619      <dd>
1620        <p>terminfo action checker</p>
1621
1622        <p><a href="@HOMEPAGE@/tack.html">@HOMEPAGE@/tack.html</a></p>
1623      </dd>
1624
1625      <dt><span class="part-name">tmux</span>
1626      </dt>
1627
1628      <dd>
1629        <p>terminal multiplexor</p>
1630
1631        <p><a href=
1632        "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki</a></p>
1633      </dd>
1634
1635      <dt><span class="part-name">vile</span>
1636      </dt>
1637
1638      <dd>
1639        <p><em>vi-like-emacs</em> may be built to use the terminfo,
1640        termcap or curses interfaces.</p>
1641
1642        <p><a href="@WEBSITE@/vile/">@WEBSITE@/vile/</a></p>
1643      </dd>
1644    </dl>
1645  </blockquote>
1646
1647  <p>and finally, those which use only the termcap interface:</p>
1648
1649  <blockquote>
1650    <dl>
1651      <dt><span class="part-name">emacs</span>
1652      </dt>
1653
1654      <dd>
1655        <p>text editor</p>
1656
1657        <p><a href=
1658        "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/</a></p>
1659      </dd>
1660
1661      <dt><span class="part-name">less</span>
1662      </dt>
1663
1664      <dd>
1665        <p>The most commonly used <em>pager</em> (a program that
1666        displays text files).</p>
1667
1668        <p><a href=
1669        "http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/</a></p>
1670      </dd>
1671
1672      <dt><span class="part-name">screen</span>
1673      </dt>
1674
1675      <dd>
1676        <p>terminal multiplexor</p>
1677
1678        <p><a href=
1679        "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/</a></p>
1680      </dd>
1681
1682      <dt><span class="part-name">vim</span>
1683      </dt>
1684
1685      <dd>
1686        <p>text editor</p>
1687
1688        <p><a href="https://www.vim.org/">https://www.vim.org/</a></p>
1689      </dd>
1690    </dl>
1691  </blockquote>
1692
1693  <h2><a name="h2-development" id="h2-development">Development
1694  activities</a></h2>
1695
1696  <p>Zeyd Ben-Halim started <span class="main-name">ncurses</span>
1697  from a previous package pcurses, written by Pavel Curtis. Eric S.
1698  Raymond continued development. J&uuml;rgen Pfeifer wrote most of
1699  the form and menu libraries.</p>
1700
1701  <p>Ongoing development work is done by <a href=
1702  "mailto:dickey@invisible-island.net">Thomas E. Dickey</a>. Thomas
1703  E. Dickey has acted as the maintainer for the Free Software
1704  Foundation, which held a <a href=
1705  "@HOMEPAGE@/ncurses-license.html">copyright on ncurses</a> for
1706  releases 4.2 through 6.1. Following the release of ncurses 6.1,
1707  effective as of release 6.2, copyright for ncurses reverted to
1708  Thomas E. Dickey (see the <a href=
1709  "@HOMEPAGE@/ncurses.faq.html#relicensed">ncurses FAQ</a> for
1710  additional information).</p>
1711
1712  <p>Contact the current maintainers at</p>
1713
1714  <blockquote>
1715    <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>
1716  </blockquote>
1717
1718  <p>To join the ncurses mailing list, please write email to</p>
1719
1720  <blockquote>
1721    <a href=
1722    "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a>
1723  </blockquote>
1724  containing the line:
1725  <blockquote>
1726    <p><code>subscribe</code>
1727    <em>&lt;name&gt;@&lt;host.domain&gt;</em></p>
1728  </blockquote>
1729
1730  <p>This list is open to anyone interested in helping with the
1731  development and testing of this package.</p>
1732
1733  <p>Beta versions of <span class="main-name">ncurses</span> are
1734  made available at</p>
1735
1736  <blockquote>
1737    <p><a href=
1738    "https://invisible-island.net/archives/ncurses/current/">https://invisible-island.net/archives/ncurses/current/</a>
1739    and<br>
1740    <a href=
1741    "https://invisible-mirror.net/archives/ncurses/current/">https://invisible-mirror.net/archives/ncurses/current/</a>&nbsp;.</p>
1742  </blockquote>
1743
1744  <p>Patches to the current release are made available at</p>
1745
1746  <blockquote>
1747    <p><a href=
1748    "https://invisible-island.net/archives/ncurses/6.5/">https://invisible-island.net/archives/ncurses/6.5/</a>
1749    and<br>
1750    <a href=
1751    "https://invisible-mirror.net/archives/ncurses/6.5/">https://invisible-mirror.net/archives/ncurses/6.5/</a>&nbsp;.</p>
1752  </blockquote>
1753
1754  <p>There is an archive of the mailing list here:</p>
1755
1756  <blockquote>
1757    <p><a href=
1758    "https://lists.gnu.org/archive/html/bug-ncurses">https://lists.gnu.org/archive/html/bug-ncurses</a>&nbsp;.</p>
1759  </blockquote>
1760
1761  <h2><a name="h2-this-stuff" id="h2-this-stuff">Related
1762  resources</a></h2>
1763
1764  <p>The release notes make scattered references to these pages,
1765  which may be interesting by themselves:</p>
1766
1767  <ul>
1768    <li><a href="@HOMEPAGE@/ncurses-license.html"><span class=
1769    "main-name">ncurses</span> licensing</a></li>
1770
1771    <li><a href="@HOMEPAGE@/ncurses-mapsyms.html">Symbol versioning
1772    in <span class="main-name">ncurses</span></a></li>
1773
1774    <li><a href="@HOMEPAGE@/ncurses-slang.html">Comments on
1775    <span class="main-name">ncurses</span> versus <span class=
1776    "main-name">slang</span> (S-Lang)</a></li>
1777
1778    <li><a href="@HOMEPAGE@/ncurses-openbsd.html">Comments on
1779    <span class="main-name">OpenBSD</span></a></li>
1780
1781    <li><a href="@HOMEPAGE@/tack.html">tack &ndash; terminfo action
1782    checker</a></li>
1783
1784    <li><a href="@HOMEPAGE@/tctest.html">tctest &ndash; termcap
1785    library checker</a></li>
1786
1787    <li><a href=
1788    "@HOMEPAGE@/ncurses.html#download_database">Terminal
1789    Database</a></li>
1790  </ul>
1791
1792  <h2><a name="h2-other-stuff" id="h2-other-stuff">Other
1793  resources</a></h2>
1794
1795  <p>The distribution provides a newer version of the
1796  terminfo-format terminal description file once maintained by
1797  <a href="http://www.catb.org/~esr/terminfo/">Eric
1798  Raymond</a>&nbsp;. Unlike the older version, the termcap and
1799  terminfo data are provided in the same file, which also provides
1800  several user-definable extensions beyond the X/Open Curses
1801  specification.</p>
1802
1803  <p>You can find lots of information on terminal-related topics
1804  not covered in the terminfo file in <a href=
1805  "https://shuford.invisible-island.net/">Richard Shuford's
1806  archive</a> (<a href=
1807  "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">original</a>).
1808  The collection of computer manuals at <a href=
1809  "http://www.bitsavers.org/pdf/">bitsavers.org</a> has also been
1810  useful.</p>
1811
1812  <div class="nav">
1813    <ul>
1814      <li><a href="#h2-overview">Overview</a></li>
1815
1816      <li>
1817        <a href="#h2-release-notes">Release Notes</a>
1818        <ul>
1819          <li>
1820            <a href="#h3-library">Library improvements</a>
1821            <ul>
1822              <li><a href="#h4-term-driver">Terminal driver</a></li>
1823
1824              <li><a href="#h4-fixes-library">Other
1825              improvements</a></li>
1826            </ul>
1827          </li>
1828
1829          <li>
1830            <a href="#h3-programs">Program improvements</a>
1831            <ul>
1832              <li><a href="#h4-utilities">Utilities</a></li>
1833
1834              <li><a href="#h4-examples">Examples</a></li>
1835            </ul>
1836          </li>
1837
1838          <li><a href="#h3-database">Terminal database</a></li>
1839
1840          <li><a href="#h3-documentation">Documentation</a></li>
1841
1842          <li><a href="#h3-bug-fixes">Interesting bug-fixes</a></li>
1843
1844          <li>
1845            <a href="#h3-config-config">Configuration changes</a>
1846            <ul>
1847              <li><a href="#h4-config-major">Major changes</a></li>
1848
1849              <li><a href="#h4-config-options">Configuration
1850              options</a></li>
1851
1852              <li><a href="#h4-config-package">Package
1853              configuration scripts</a></li>
1854            </ul>
1855          </li>
1856
1857          <li><a href="#h3-portability">Portability</a></li>
1858        </ul>
1859      </li>
1860
1861      <li><a href="#h2-features">Features of <span class=
1862      "main-name">ncurses</span></a></li>
1863
1864      <li><a href="#h2-who-uses">Applications using <span class=
1865      "main-name">ncurses</span></a></li>
1866
1867      <li><a href="#h2-development">Development activities</a></li>
1868
1869      <li><a href="#h2-this-stuff">Related resources</a></li>
1870
1871      <li><a href="#h2-other-stuff">Other resources</a></li>
1872    </ul>
1873  </div>
1874</body>
1875</html>
1876