]> ncurses.scripts.mit.edu Git - ncurses.git/blob - announce.html.in
ncurses 6.5 - patch 20240427
[ncurses.git] / announce.html.in
1 <!--
2   $Id: announce.html.in,v 1.107 2024/04/27 16:45:27 tom Exp $
3   ****************************************************************************
4   * Copyright 2018-2023,2024 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     "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>April 27, 2024</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.4; 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, of course, numerous other improvements, listed in
169   this 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.4 release.</p>
176
177   <h3><a name="h3-library" id="h3-library">Library improvements</a></h3>
178
179   <h4><a name="h4-new-library" id="h4-new-library">New features</a></h4>
180
181   <p>These are new features:</p>
182
183   <ul>
184     <li>
185       <p>The low-level terminfo and termcap interfaces are used
186       both by the higher-level curses library, as well as by many
187       applications.</p>
188
189       <p>The functions which convert parameterized terminal
190       capability strings for output to the terminal
191       (<code>tiparm</code> and <code>tparm</code>) analyze the
192       capability string to determine which parameters are strings
193       (i.e., addresses), versus numbers (not addresses).</p>
194
195       <p>The library's analysis of a capability string may differ
196       from the calling application's design if environment
197       variables are used to point to an invalid terminal database.
198       This is a longstanding problem with <em>all</em>
199       implementations of terminfo, dating from the early 1980s.</p>
200
201       <p>Two new functions address this problem: by providing a
202       function which allows the calling application to tell ncurses
203       how many string-parameters to expect:</p>
204
205       <ul>
206         <li><code>tiscan_s</code> helps applications check
207         formatting capabilities that would be passed to
208         <code>tiparm_s</code>.</li>
209
210         <li><code>tiparm_s</code> provides applications a way to
211         tell ncurses what the expected parameters are for a
212         capability.</li>
213       </ul>
214     </li>
215
216     <li>
217       <p>The ncurses library supports a compile-time feature
218       (enabled with the configure <code>--enable-check-size</code>
219       option) which simplifies initialization with terminals which
220       do not negotiate window (screen) size. This is done in
221       <code>setupterm</code>, by providing for using ANSI
222       cursor-position report (in user6/user7 terminfo capabilities)
223       to obtain the screen size if neither environment variables or
224       ioctl is used.</p>
225
226       <p>The ncurses test-program with options
227       &ldquo;<code>-E&nbsp;-T</code>&rdquo; demonstrates this
228       feature.</p>
229     </li>
230
231     <li>add functions to query tty-flags in
232     <code>SCREEN</code></li>
233   </ul>
234
235   <p>This release drops compatibility with obsolete versions of
236   <a href="@HOMEPAGE@/tack/">tack</a>, e.g., pre-1.08</p>
237
238   <h4><a name="h4-fixes-library" id="h4-fixes-library">Other
239   improvements</a></h4>
240
241   <p>These are improvements to existing features:</p>
242
243   <ul>
244     <li>
245       <p>In addition to the new, safer function
246       <code>tiparm_s</code>, ncurses adds checks to make the older
247       <code>tiparm</code>, <code>tparm</code> and
248       <code>tgoto</code> functions safer:</p>
249
250       <ul>
251         <li>
252           <p>the terminfo functions <code>tiparm</code> and
253           <code>tparm</code> ensure that the capability string
254           comes from the terminal description which ncurses loads,
255           rather than from random data which the application
256           happens to have.</p>
257         </li>
258
259         <li>
260           <p>the <code>tgoto</code> function disallows capabilities
261           which its analysis shows will attempt to use string
262           parameters.</p>
263         </li>
264
265         <li>
266           <p>ncurses uses internal functions which correspond to
267           <code>tiparm</code>, and <code>tgoto</code> which ensure
268           that the capability strings which are passed to these
269           functions come from the loaded terminal description.</p>
270         </li>
271       </ul>
272     </li>
273
274     <li>
275       <p>improve check in <code>lib_tparm.c</code>, ensuring that a
276       char* fits into a <code>TPARM_ARG</code></p>
277     </li>
278
279     <li>
280       <p>modify <code>_nc_syserr_abort</code> to use
281       <code>_nc_env_access</code>, rather than only checking root
282       uid</p>
283     </li>
284
285     <li>
286       <p>improve thread lock in <code>lib_trace.c</code></p>
287     </li>
288
289     <li>
290       <p>modify <code>flushinp</code> to use file descriptors in
291       <code>SCREEN</code>, rather than from <code>TERMINAL</code>,
292       and check if they are for a terminal, like SVr4</p>
293     </li>
294
295     <li>
296       <p>modify <code>mcprint</code> to use file descriptor in
297       <code>SCREEN</code>, for consistency</p>
298     </li>
299
300     <li>
301       <p>modify internal function <code>_nc_read_file_entry</code>
302       to show relevant filename in warnings</p>
303     </li>
304
305     <li>
306       <p>improve checks in internal function
307       <code>convert_string</code> for corrupt terminfo entry</p>
308     </li>
309
310     <li>
311       <p>review/improve handling of out-of-memory conditions</p>
312     </li>
313
314     <li>
315       <p>limit delays to 30 seconds, i.e., padding delays in
316       terminfo, as well as <code>napms</code> and
317       <code>delay_output</code> functions</p>
318     </li>
319
320     <li>
321       <p>fix reallocation loop for <code>vsnprintf</code> in
322       <code>_nc_sprintf_string</code> by copying the va_list
323       variable</p>
324     </li>
325
326     <li>
327       <p>modify <code>delscreen</code> to limit the windows which
328       it creates to just those associated with the screen</p>
329     </li>
330
331     <li>
332       <p>modify <code>endwin</code> to return an error if it is
333       called again without an intervening screen update</p>
334     </li>
335
336     <li>
337       <p>modify <code>wenclose</code> to handle pads</p>
338     </li>
339
340     <li>
341       <p>eliminate use of <code>PATH_MAX</code> in
342       <code>lib_trace.c</code></p>
343     </li>
344
345     <li>
346       <p>provide for any <code>CCHARW_MAX</code> greater than 1</p>
347     </li>
348   </ul>
349
350   <p>These are corrections to existing features:</p>
351
352   <ul>
353     <li>
354       <p>correct loop termination condition in
355       <code>waddnstr</code> and <code>waddnwstr</code></p>
356     </li>
357
358     <li>
359       <p>improve parsing in internal function
360       <code>_nc_msec_cost</code>, allowing a single decimal
361       point</p>
362     </li>
363
364     <li>
365       <p>amend parameter check for entire string versus specific
366       length in <code>winsnstr</code> and <code>wins_nwstr</code>
367       to match Solaris; make similar correction to
368       <code>wins_nwstr</code></p>
369     </li>
370
371     <li>
372       <p>correct internal function <code>wadd_wch_literal</code>
373       when adding a non-spacing character to a double-width
374       character</p>
375     </li>
376
377     <li>
378       <p>correct definition of <code>Charable</code> macro for
379       non-wide ncurses library .</p>
380     </li>
381   </ul>
382
383   <h3><a name="h3-programs" id="h3-programs">Program
384   improvements</a></h3>
385
386   <p id="h4-utilities">Several improvements were made to the
387   utility programs. Some were done to make the <code>infocmp</code>
388   option &ldquo;<tt>-u</tt>&rdquo; option help refactor the
389   terminal database.</p>
390
391   <dl>
392     <dt><span class="part-name"><a href=
393     "@HOMEPAGE@/man/infocmp.1m.html">infocmp</a></span>
394     </dt>
395
396     <dd>
397       <ul>
398         <li>
399           <p>add limit checks for processing extended capabilities
400           with the &ldquo;<code>-u</code>&rdquo; option</p>
401         </li>
402
403         <li>
404           <p>correct initial alignment of extended capabilities, so
405           that the &ldquo;<code>-u</code>&rdquo; option can be used
406           for more than two terminal types</p>
407         </li>
408
409         <li>
410           <p>modify &ldquo;<code>-u</code>&rdquo; option to not
411           report cancels for strings which were already cancelled
412           in a use'd chunk.</p>
413         </li>
414
415         <li>
416           <p>correct an assignment &ldquo;<code>-u</code>&rdquo;
417           for detecting if a boolean is unset in a base entry and
418           set in a use'd chunk, i.e., if it was cancelled.</p>
419         </li>
420       </ul>
421     </dd>
422
423     <dt><span class="part-name"><a href=
424     "@HOMEPAGE@/man/tic.1m.html">tic</a></span>
425     </dt>
426
427     <dd>
428       <ul>
429         <li>
430           <p>correct limit-check when dumping tc/use clause via
431           &ldquo;<code>-I</code>&rdquo;</p>
432         </li>
433
434         <li>
435           <p>check return value of <code>_nc_save_str</code>, in
436           special case where extended capabilities are processed
437           but the terminal description was not initialized</p>
438         </li>
439
440         <li>
441           <p>modify check for multiply defined aliases to report
442           problems within the current runtime rather than for
443           conflicts with pre-existing terminal descriptions.</p>
444         </li>
445
446         <li>
447           <p>disallow using <code>$TERMINFO</code> or
448           <code>$HOME/.terminfo</code> when
449           &ldquo;<code>-o</code>&rdquo; option is used</p>
450         </li>
451       </ul>
452     </dd>
453
454     <dt><span class="part-name"><a href=
455     "@HOMEPAGE@/man/tput.1.html">tput</a></span> and <span class=
456     "part-name"><a href=
457     "@HOMEPAGE@/man/tset.1.html">tset</a></span></dt>
458
459     <dd>
460       <ul>
461         <li>
462           <p>add &ldquo;<code>-v</code>&rdquo; option to tput, to
463           show warnings</p>
464         </li>
465
466         <li>
467           <p>modify <em>reset</em> command to avoid altering clocal
468           if the terminal uses a modem</p>
469         </li>
470
471         <li>
472           <p>modify <em>reset</em> feature to avoid 1-second sleep
473           if running in a pseudo-terminal</p>
474         </li>
475       </ul>
476     </dd>
477   </dl>
478
479   <h4><a name="h4-examples" id="h4-examples">Examples</a></h4>
480
481   <p>Along with the library and utilities, improvements were made
482   to the <a href=
483   "@HOMEPAGE@/ncurses-examples.html">ncurses-examples</a>:</p>
484
485   <ul>
486     <li>
487       <p>modify <code>test_tparm</code> to account for extended
488       capabilities</p>
489     </li>
490
491     <li>
492       <p>corrected mouse mask in <code>test/testcurs.c</code></p>
493     </li>
494
495     <li>
496       <p>modify <code>test/clip_printw.c</code> to optionally test
497       non-wrapped updates</p>
498     </li>
499
500     <li>
501       <p>modify <code>test/test_mouse.c</code> to use curses api
502       for raw/noraw</p>
503     </li>
504
505     <li>
506       <p>modify <code>test/clip_printw.c</code> to optionally test
507       non-wrapped updates</p>
508     </li>
509   </ul>
510
511   <p>There is one new demo/test programs:</p>
512
513   <dl>
514     <dt><span class="part-name"><em>test/test_endwin.c</em></span>
515     </dt>
516
517     <dd>
518       <p>This program shows the return-status from
519       <code>endwin</code> with different combinations of
520       <code>endwin</code> (repeated), <code>initscr</code>,
521       <code>newterm</code>.</p>
522     </dd>
523   </dl>
524
525   <h3><a name="h3-database" id="h3-database">Terminal database</a></h3>
526
527   <p>There are several new terminal descriptions:</p>
528
529   <ul>
530     <li>
531       <p><a href=
532       "@HOMEPAGE@/terminfo.src.html#tic-ansi_apparrows"><tt>ansi+apparrows</tt></a></p>
533     </li>
534
535     <li>
536       <p><a href=
537       "@HOMEPAGE@/terminfo.src.html#tic-contour"><tt>contour</tt></a></p>
538     </li>
539
540     <li>
541       <p><a href=
542       "@HOMEPAGE@/terminfo.src.html#tic-linux_kbs"><tt>linux+kbs</tt></a>
543       for terminals which imitate xterm's behavior with Linux</p>
544     </li>
545
546     <li>
547       <p><a href=
548       "@HOMEPAGE@/terminfo.src.html#tic-rio"><tt>rio</tt></a>,
549       <a href=
550       "@HOMEPAGE@/terminfo.src.html#tic-rio-direct"><tt>rio-direct</tt></a></p>
551     </li>
552
553     <li>
554       <p><a href=
555       "@HOMEPAGE@/terminfo.src.html#tic-mostlike"><tt>mostlike</tt></a></p>
556     </li>
557
558     <li>
559       <p><a href=
560       "@HOMEPAGE@/terminfo.src.html#tic-ms-vt100-16color"><tt>ms-vt100-16color</tt></a>,
561       <a href=
562       "@HOMEPAGE@/terminfo.src.html#tic-winconsole"><tt>winconsole</tt></a></p>
563     </li>
564
565     <li>
566       <p><a href=
567       "@HOMEPAGE@/terminfo.src.html#tic-vt100_noapp"><tt>vt100+noapp</tt></a>,
568       <a href=
569       "@HOMEPAGE@/terminfo.src.html#tic-vt100_noapp_pc"><tt>vt100+noapp+pc</tt></a>,
570       <a href=
571       "@HOMEPAGE@/terminfo.src.html#tic-xterm_app_pc"><tt>xterm+app+pc</tt></a>,
572       <a href=
573       "@HOMEPAGE@/terminfo.src.html#tic-xterm_decedit"><tt>xterm+decedit</tt></a>
574       from <a href="@WEBSITE@/xterm/xterm.log.html#xterm_389">xterm
575       #389</a></p>
576     </li>
577
578     <li>
579       <p><a href=
580       "@HOMEPAGE@/terminfo.src.html#tic-putty_cursor"><tt>putty+cursor</tt></a>
581       to reflect amending of modified cursor-keys in 2021</p>
582     </li>
583
584     <li>
585       <p><a href=
586       "@HOMEPAGE@/terminfo.src.html#tic-wezterm"><tt>wezterm</tt></a></p>
587     </li>
588   </ul>
589
590   <p>There are many changes to existing terminal descriptions. Some
591   were updates to several descriptions, using the
592   <code>infocmp</code> &ldquo;<code>-u</code>&rdquo; option in a
593   script to determine which <em>building-block</em> entries could
594   be used to replace multiple capability settings (and trim
595   redundant information).</p>
596
597   <p>Other changes include:</p>
598
599   <ul>
600     <li>
601       <p><a href=
602       "@HOMEPAGE@/terminfo.src.html#toc-_X_T_E_R_M__Extensions_">document</a>
603       XF, kxIN and kxOUT</p>
604     </li>
605
606     <li>
607       <p>add note on <a href=
608       "@HOMEPAGE@/terminfo.src.html#tic-sun"><tt>sun</tt></a>
609       regarding wscons/cmdtool/shelltool</p>
610     </li>
611
612     <li>
613       <p>remove DECCOLM+DECSCLM from <a href=
614       "@HOMEPAGE@/terminfo.src.html#tic-foot"><tt>foot</tt></a></p>
615     </li>
616
617     <li>
618       <p>add xterm+focus to <a href=
619       "@HOMEPAGE@/terminfo.src.html#tic-foot_base"><tt>foot+base</tt></a></p>
620     </li>
621
622     <li>
623       <p>add ecma+strikeout to <a href=
624       "@HOMEPAGE@/terminfo.src.html#tic-putty"><tt>putty</tt></a></p>
625     </li>
626
627     <li>
628       <p>use CSI 3J in <a href=
629       "@HOMEPAGE@/terminfo.src.html#tic-vte-2017"><tt>vte-2017</tt></a></p>
630     </li>
631
632     <li>
633       <p>use oldxterm+sm+1006 in <a href=
634       "@HOMEPAGE@/terminfo.src.html#tic-vte-2014"><tt>vte-2014</tt></a></p>
635     </li>
636
637     <li>
638       <p>modify <a href=
639       "@HOMEPAGE@/terminfo.src.html#tic-xgterm"><tt>xgterm</tt></a>
640       to work around line-drawing bug</p>
641     </li>
642
643     <li>
644       <p>add xterm focus mode 1004 to <a href=
645       "@HOMEPAGE@/terminfo.src.html#tic-xterm_focus"><tt>xterm+focus</tt></a>
646       as fe/fd capabilities, like vim.</p>
647     </li>
648
649     <li>
650       <p>add xterm+focus to <a href=
651       "@HOMEPAGE@/terminfo.src.html#tic-alacritty_common"><tt>alacritty+common</tt></a></p>
652     </li>
653
654     <li>
655       <p>add XR/xr, to work with vim, and use RV/rv to denote DA2
656       and its response</p>
657     </li>
658
659     <li>
660       <p>add XF flag to <a href=
661       "@HOMEPAGE@/terminfo.src.html#tic-xterm_focus"><tt>xterm+focus</tt></a>
662       so that termcap applications can be aware of terminals which
663       may support focus in/out</p>
664     </li>
665
666     <li>
667       <p>use xterm+focus in <a href=
668       "@HOMEPAGE@/terminfo.src.html#tic-xterm-p370"><tt>xterm-p370</tt></a>
669       and <a href=
670       "@HOMEPAGE@/terminfo.src.html#tic-tmux"><tt>tmux</tt></a></p>
671     </li>
672
673     <li>
674       <p>remove xterm+sm+1006 from <a href=
675       "@HOMEPAGE@/terminfo.src.html#tic-tmux"><tt>tmux</tt></a></p>
676     </li>
677
678     <li>
679       <p>NetBSD-related fixes for <a href=
680       "@HOMEPAGE@/terminfo.src.html#tic-x68k"><tt>x68k</tt></a> and
681       <a href=
682       "@HOMEPAGE@/terminfo.src.html#tic-wsvt25"><tt>wsvt25</tt></a></p>
683     </li>
684   </ul>
685
686   <h3><a name="h3-documentation" id=
687   "h3-documentation">Documentation</a></h3>
688
689   <p>As usual, this release</p>
690
691   <ul>
692     <li>
693       <p>improves documentation by describing new features,</p>
694     </li>
695
696     <li>
697       <p>attempts to improve the description of features which
698       users have found confusing</p>
699     </li>
700
701     <li>
702       <p>fills in overlooked descriptions of features which were
703       described in the <a href="@HOMEPAGE@/NEWS.html">NEWS</a> file
704       but treated sketchily in manual pages.</p>
705     </li>
706   </ul>
707
708   <p>In addition to providing background information to explain
709   these features and show how they evolved, there are corrections,
710   clarifications, etc.:</p>
711
712   <ul>
713     <li>
714       <p>Corrections:</p>
715
716       <ul>
717         <li>
718           <p>add assignment in <code>CF_MAN_PAGES</code> to fill in
719           value for <code>TERMINFO_DIRS</code> in ncurses, terminfo
720           and tic manpages.</p>
721         </li>
722
723         <li>
724           <p>clarify interaction of <code>-R</code> option versus
725           <code>-C</code>, <code>-I</code> and <code>-r</code> in
726           <code>infocmp</code> manpage.</p>
727         </li>
728
729         <li>
730           <p>correct manpage description of panel_hidden.</p>
731         </li>
732
733         <li>
734           <p>improve manpage description for addch versus unctrl
735           format used for non-printable characters.</p>
736         </li>
737
738         <li>
739           <p>improve manpages discussing file descriptors in
740           low-level functions.</p>
741         </li>
742
743         <li>
744           <p>improve description of search rules for terminal
745           descriptions in terminfo manpage.</p>
746         </li>
747
748         <li>
749           <p>modify dist.mk to avoid passing developer's comments
750           in manpages into the generated html documentation.</p>
751         </li>
752
753         <li>
754           <p>modify test-package "ncurses6-doc" to use
755           manpage-aliases, which in turn required a change to the
756           configure script to factor in the extra-suffix option
757           when deriving alias names.</p>
758         </li>
759       </ul>
760     </li>
761
762     <li>
763       <p>New/improved history and portability sections:</p>
764
765       <ul>
766         <li>
767           <p>add information about "ttycap", termcap's forerunner,
768           to tset.1</p>
769         </li>
770
771         <li>
772           <p>document limitations of tparm, and error-returns in
773           curs_terminfo.3x</p>
774         </li>
775
776         <li>
777           <p>document limitations of tgoto, and error-returns in
778           curs_termcap.3x</p>
779         </li>
780       </ul>
781     </li>
782
783     <li>
784       <p>Other improvements:</p>
785
786       <ul>
787         <li>
788           <p>This release has many changes to improve the
789           formatting and style of the manpages.</p>
790         </li>
791
792         <li>
793           <p>Manpages now use consistent section-naming, page
794           headers and footers (including the modification date for
795           each page).</p>
796         </li>
797
798         <li>
799           <p>Table layout has been revised.</p>
800         </li>
801       </ul>
802     </li>
803   </ul>
804
805   <p>There are no new manual pages (all of the manual page updates
806   are to existing pages).</p>
807
808   <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
809   bug-fixes</a></h3>
810
811   <p>The changes to <tt>tparm</tt>, <tt>tgoto</tt> which improve
812   the design of the low-level interfaces are <em>interesting</em>,
813   but are not bug-fixes <em>per se</em>.</p>
814
815   <h3><a name="h3-config-config" id=
816   "h3-config-config">Configuration changes</a></h3>
817
818   <h4><a name="h4-config-major" id="h4-config-major">Major
819   changes</a></h4>
820
821   <p>These are the major changes (aside from introducing <a href=
822   "#h4-new-library"><tt>tiparm_s</tt></a>):</p>
823
824   <ul>
825     <li>
826       <p>use wide-character (ncursesw) by default</p>
827     </li>
828
829     <li>
830       <p>use opaque typedefs by default</p>
831     </li>
832   </ul>
833
834   <p>However, most of the work on configure scripts was done to
835   reduce warnings within the configure script:</p>
836
837   <ul>
838     <li>
839       <p>intrusive warnings from GNU grep regarding fgrep and
840       egrep</p>
841     </li>
842
843     <li>
844       <p>fatal errors in compile-checks, arising from recent
845       &ldquo;Modern&nbsp;C&rdquo; efforts by some developers which
846       caused longstanding configure checks to fail.</p>
847
848       <p>After repairing the configure script, none of that
849       activity affected ncurses because stricter warnings are used
850       routinely in development.</p>
851     </li>
852   </ul>
853
854   <p>Other improvements made to configure checks include</p>
855
856   <ul>
857     <li>
858       <p>use <a href=
859       "@HOMEPAGE@/INSTALL.html#option:enable-string-hacks">string-hacks</a>
860       in alloc_entry.c, alloc_type.c and hardscroll.c, overlooked
861       due to compiler changes in recent OpenBSD releases</p>
862     </li>
863
864     <li>
865       <p>revise progs.priv.h to provide for NC_ISATTY reuse</p>
866     </li>
867
868     <li>
869       <p>configure check for MB_LEN_MAX provides warning as
870       needed</p>
871     </li>
872
873     <li>
874       <p>trim a space after some "-R" options, fixing builds for
875       applications built using clang and ncurses on Solaris</p>
876     </li>
877
878     <li>
879       <p>work around misconfiguration of MacPorts gcc13, which
880       exposes invalid definition of <tt>MB_LEN_MAX</tt> in gcc's
881       fallback copy of <tt>limits.h</tt></p>
882     </li>
883
884     <li>
885       <p>modified experimental Windows driver works with xterm
886       mouse protocol</p>
887     </li>
888   </ul>
889
890   <h4><a name="h4-config-options" id=
891   "h4-config-options">Configuration options</a></h4>
892
893   <p>There are a few new configure options:</p>
894
895   <dl>
896     <dt><a href=
897     "@HOMEPAGE@/INSTALL.html#option:disable-setuid-environ"><tt>--disable-setuid-environ</tt></a>
898     </dt>
899
900     <dd>
901       <p>Compile with environment restriction, so certain
902       environment variables are not available when running via a
903       setuid/setgid application. These are (for example
904       <tt>$TERMINFO</tt>) those that allow the search path for the
905       terminfo or termcap entry to be customized.</p>
906
907       <p>A setuid/setgid application inherits its environment
908       variables from the current user, in contrast to sudo which
909       may limit the environment variables that ncurses uses.</p>
910     </dd>
911
912     <dt><a href=
913     "@HOMEPAGE@/INSTALL.html#option:enable-check-size"><tt>--enable-check-size</tt></a>
914     </dt>
915
916     <dd>
917       <p>Compile-in feature to detect screensize for terminals
918       which do not advertise their screensize, e.g., serial
919       terminals.</p>
920     </dd>
921
922     <dt><a href=
923     "@HOMEPAGE@/INSTALL.html#option:with-abi-altered"><tt>--with-abi-altered=<em>NUM</em></tt></a>
924     </dt>
925
926     <dd>
927       <p>Override the displayed (rather than compiled-in) ABI. Only
928       packagers who have created configurations where the ABI
929       differs from ncurses should be interested in this option.</p>
930     </dd>
931
932     <dt><a href=
933     "@HOMEPAGE@/INSTALL.html#option:with-strip-program"><tt>--with-strip-program=<em>XXX</em></tt></a>
934     </dt>
935
936     <dd>
937       <p>When stripping executables during install, use the
938       specified program rather than &ldquo;strip&rdquo; overriding
939       program chosen by the install program for stripping
940       executables.</p>
941     </dd>
942   </dl>
943
944   <p>These configure options are modified:</p>
945
946   <dl>
947     <dt><a href=
948     "@HOMEPAGE@/INSTALL.html#option:with-pkg-config-libdir"><tt>--with-pkg-config-libdir[=<em>DIR</em>]</tt></a>
949     </dt>
950
951     <dd>
952       <p>The optional <em>DIR</em> parameter can now be
953       &ldquo;auto&rdquo; to automatically use pkg-config's library
954       directory.</p>
955
956       <p>The default is <tt>$(libdir)</tt>.</p>
957     </dd>
958
959     <dt><a href=
960     "@HOMEPAGE@/INSTALL.html#option:with-xterm-kbs"><tt>--with-xterm-kbs[=<em>XXX</em>]</tt></a>
961     </dt>
962
963     <dd>
964       <p>The default is &ldquo;auto&rdquo; which tells the
965       configure script to choose BS or DEL according to platform
966       defaults.</p>
967     </dd>
968   </dl>
969
970   <h3><a name="h3-portability" id="h3-portability">Portability</a></h3>
971
972   <p>Many of the portability changes are implemented via the
973   configure script:</p>
974
975   <ul>
976     <li>
977       <p>add/use configure check for <code>clock_gettime</code>, to
978       supersede <code>gettimeofday</code>.</p>
979     </li>
980
981     <li>
982       <p>modify configure script check for pkg-config library
983       directory to take into account an older version 0.15.0 which
984       used PKG_CONFIG_PATH but not PKG_CONFIG_LIBDIR</p>
985     </li>
986
987     <li>
988       <p>allow for MinGW32-/64-bit configurations to use
989       _DEFAULT_SOURCE</p>
990     </li>
991
992     <li>
993       <p>modify CF_XOPEN_SOURCE macro's amend default case to avoid
994       undefining _XOPEN_SOURCE if _POSIX_C_SOURCE is defined</p>
995     </li>
996
997     <li>
998       <p>updated configure script macro CF_XOPEN_SOURCE, for
999       uClibc-ng</p>
1000     </li>
1001
1002     <li>
1003       <p>modify version-check for gcc/g++, now works for msys2</p>
1004     </li>
1005
1006     <li>
1007       <p>build-fixes related to configure-options and/or
1008       platform:</p>
1009
1010       <ul>
1011         <li>fix for <tt>--enable-fvisibility</tt></li>
1012
1013         <li>fix for unusual values of
1014         <tt>--with-rel-version</tt></li>
1015
1016         <li>fix for unusual values of
1017         <tt>--with-abi-version</tt></li>
1018
1019         <li>fix for <tt>--disable-tcap-names</tt></li>
1020
1021         <li>fix for termcap in <tt>nc_access.h</tt></li>
1022       </ul>
1023     </li>
1024
1025     <li>
1026       <p>other configure-script improvements:</p>
1027
1028       <ul>
1029         <li>recent msys2 headers work with
1030         <tt>_DEFAULT_SOURCE</tt>; amend check</li>
1031
1032         <li>use <tt>$ac_includes_default</tt> in most cases where
1033         stdlib.h should work</li>
1034
1035         <li>use <tt>#error</tt> consistently vs "make an
1036         error"</li>
1037
1038         <li>add configure macro for <tt>gettimeofday</tt> vs inline
1039         check</li>
1040       </ul>
1041     </li>
1042   </ul>
1043
1044   <p>Here are some of the other portability fixes:</p>
1045
1046   <ul>
1047     <li>
1048       <p>modify configure scripts/makefiles to omit
1049       <tt>KEY_RESIZE</tt> if the corresponding <tt>SIGWINCH</tt>
1050       feature is disabled</p>
1051     </li>
1052
1053     <li>
1054       <p>increase <tt>MB_CUR_MAX</tt> to 16, matching glibc's
1055       <tt>MB_LEN_MAX</tt></p>
1056     </li>
1057
1058     <li>
1059       <p>add BSD <tt>erase2</tt> to characters handled by
1060       tset/reset</p>
1061     </li>
1062
1063     <li>
1064       <p>use <tt>getauxval</tt> when available, to improve
1065       <tt>setuid</tt>/<tt>setgid</tt> checks</p>
1066     </li>
1067
1068     <li>
1069       <p>set <tt>dwShareMode</tt> in calls to
1070       <tt>CreateConsoleScreenBuffer</tt></p>
1071     </li>
1072
1073     <li>
1074       <p>use <tt>CreateFile</tt> with "<tt>CONIN$</tt>",
1075       "<tt>CONOUT$</tt>" rather than <tt>GetStdHandle</tt> to
1076       obtain a handle on the actual console, avoiding redirection
1077       in the MinGW/Win32 configurations</p>
1078     </li>
1079
1080     <li>
1081       <p>modify MinGW driver to return <tt>KEY_BACKSPACE</tt> when
1082       an unmodified <tt>VK_BACK</tt> virtual key is entered</p>
1083     </li>
1084
1085     <li>
1086       <p>modify MinGW configuration to provide for running in
1087       MSYS/MSYS2 shells, assuming ConPTY support</p>
1088     </li>
1089   </ul>
1090
1091   <hr>
1092
1093   <h2><a name="h2-features" id="h2-features">Features of
1094   <span class="main-name">ncurses</span></a></h2>
1095
1096   <p>The <span class="main-name">ncurses</span> package is fully
1097   upward-compatible with SVr4 (System V Release 4) curses:</p>
1098
1099   <ul>
1100     <li>
1101       <p>All of the SVr4 calls have been implemented (and are
1102       documented).</p>
1103     </li>
1104
1105     <li>
1106       <p><span class="main-name">ncurses</span> supports the
1107       features of SVr4 curses including keyboard mapping, color,
1108       form drawing with ACS characters, and automatic recognition
1109       of keypad and function keys.</p>
1110     </li>
1111
1112     <li>
1113       <p><span class="main-name">ncurses</span> provides work-alike
1114       replacements of SVr4 supplemental libraries based on curses,
1115       but which were not specified by X/Open Curses:</p>
1116
1117       <ul>
1118         <li>
1119           <p>the panel library, supporting a stack of windows with
1120           backing store</p>
1121         </li>
1122
1123         <li>
1124           <p>the menu library, supporting a uniform but flexible
1125           interface for menu programming</p>
1126         </li>
1127
1128         <li>
1129           <p>the form library, supporting data collection through
1130           on-screen forms</p>
1131         </li>
1132       </ul>
1133     </li>
1134
1135     <li>
1136       <p><span class="main-name">ncurses</span>'s terminal database
1137       is fully compatible with that used by SVr4 curses.</p>
1138
1139       <ul>
1140         <li>
1141           <p><span class="main-name">ncurses</span> supports
1142           user-defined capabilities that it can see, but which are
1143           hidden from SVr4 curses applications using the
1144           <em>same</em> terminal database.</p>
1145         </li>
1146
1147         <li>
1148           <p>It can be optionally configured to match the format
1149           used in related systems such as AIX and Tru64.</p>
1150         </li>
1151
1152         <li>
1153           <p>Alternatively, <span class="main-name">ncurses</span>
1154           can be configured to use hashed databases rather than the
1155           directory of files used by SVr4 curses.</p>
1156         </li>
1157       </ul>
1158     </li>
1159
1160     <li>
1161       <p>The <span class="main-name">ncurses</span> utilities have
1162       options to allow you to filter terminfo entries for use with
1163       less capable <em>curses</em>/<em>terminfo</em> versions such
1164       as the HP-UX and AIX ports.</p>
1165     </li>
1166   </ul>
1167
1168   <p>The <span class="main-name">ncurses</span> package also has
1169   many useful extensions over SVr4:</p>
1170
1171   <ul>
1172     <li>
1173       <p>The API is 8-bit clean and base-level conformant with the
1174       X/Open Curses specification, XSI curses (that is, it
1175       implements all <em>BASE</em> level features, and almost all
1176       <em>EXTENDED</em> features). It includes many function calls
1177       not supported under SVr4 curses (but portability of all calls
1178       is documented so you can use the SVr4 subset only).</p>
1179     </li>
1180
1181     <li>
1182       <p>Unlike SVr3 curses, <span class="main-name">ncurses</span>
1183       can write to the rightmost-bottommost corner of the screen if
1184       your terminal has an insert-character capability.</p>
1185     </li>
1186
1187     <li>
1188       <p>Ada95 and C++ bindings.</p>
1189     </li>
1190
1191     <li>
1192       <p>Support for mouse event reporting with X Window xterm and
1193       FreeBSD and OS/2 console windows.</p>
1194     </li>
1195
1196     <li>
1197       <p>Extended mouse support via Alessandro Rubini's gpm
1198       package.</p>
1199     </li>
1200
1201     <li>
1202       <p>The function <code>wresize</code> allows you to resize
1203       windows, preserving their data.</p>
1204     </li>
1205
1206     <li>
1207       <p>The function <code>use_default_colors</code> allows you to
1208       use the terminal's default colors for the default color pair,
1209       achieving the effect of transparent colors.</p>
1210     </li>
1211
1212     <li>
1213       <p>The functions <code>keyok</code> and
1214       <code>define_key</code> allow you to better control the use
1215       of function keys, e.g., disabling the <span class=
1216       "main-name">ncurses</span> KEY_MOUSE, or by defining more
1217       than one control sequence to map to a given key code.</p>
1218     </li>
1219
1220     <li>
1221       <p>Support for direct-color terminals, such as modern
1222       xterm.</p>
1223     </li>
1224
1225     <li>
1226       <p>Support for 256-color terminals, such as modern xterm.</p>
1227     </li>
1228
1229     <li>
1230       <p>Support for 16-color terminals, such as <em>aixterm</em>
1231       and <em>modern xterm</em>.</p>
1232     </li>
1233
1234     <li>
1235       <p>Better cursor-movement optimization. The package now
1236       features a cursor-local-movement computation more efficient
1237       than either BSD's or System V's.</p>
1238     </li>
1239
1240     <li>
1241       <p>Super hardware scrolling support. The screen-update code
1242       incorporates a novel, simple, and cheap algorithm that
1243       enables it to make optimal use of hardware scrolling,
1244       line-insertion, and line-deletion for screen-line movements.
1245       This algorithm is more powerful than the 4.4BSD curses
1246       <code>quickch</code> routine.</p>
1247     </li>
1248
1249     <li>
1250       <p>Real support for terminals with the magic-cookie glitch.
1251       The screen-update code will refrain from drawing a highlight
1252       if the magic- cookie unattributed spaces required just before
1253       the beginning and after the end would step on a non-space
1254       character. It will automatically shift highlight boundaries
1255       when doing so would make it possible to draw the highlight
1256       without changing the visual appearance of the screen.</p>
1257     </li>
1258
1259     <li>
1260       <p>It is possible to generate the library with a list of
1261       pre-loaded fallback entries linked to it so that it can serve
1262       those terminal types even when no terminfo tree or termcap
1263       file is accessible (this may be useful for support of
1264       screen-oriented programs that must run in single-user
1265       mode).</p>
1266     </li>
1267
1268     <li>
1269       <p>The <a href="@HOMEPAGE@/man/tic.1m.html"><span class=
1270       "part-name">tic</span></a>/<a href=
1271       "@HOMEPAGE@/man/captoinfo.1m.html">captoinfo</a> utility
1272       provided with <span class="main-name">ncurses</span> has the
1273       ability to translate many termcaps from the XENIX, IBM and
1274       AT&amp;T extension sets.</p>
1275     </li>
1276
1277     <li>
1278       <p>A BSD-like <a href=
1279       "@HOMEPAGE@/man/tset.1.html"><span class=
1280       "part-name">tset</span></a> utility is provided.</p>
1281     </li>
1282
1283     <li>
1284       <p>The <span class="main-name">ncurses</span> library and
1285       utilities will automatically read terminfo entries from
1286       $HOME/.terminfo if it exists, and compile to that directory
1287       if it exists and the user has no write access to the system
1288       directory. This feature makes it easier for users to have
1289       personal terminfo entries without giving up access to the
1290       system terminfo directory.</p>
1291     </li>
1292
1293     <li>
1294       <p>You may specify a path of directories to search for
1295       compiled descriptions with the environment variable
1296       TERMINFO_DIRS (this generalizes the feature provided by
1297       TERMINFO under stock System V.)</p>
1298     </li>
1299
1300     <li>
1301       <p>In terminfo source files, use capabilities may refer not
1302       just to other entries in the same source file (as in System
1303       V) but also to compiled entries in either the system terminfo
1304       directory or the user's $HOME/.terminfo directory.</p>
1305     </li>
1306
1307     <li>
1308       <p>The table-of-entries utility <a href=
1309       "@HOMEPAGE@/man/toe.1m.html"><span class=
1310       "part-name">toe</span></a> makes it easy for users to see
1311       exactly what terminal types are available on the system.</p>
1312     </li>
1313
1314     <li>
1315       <p>X/Open Curses permits most functions it specifies to be
1316       made available as macros as well. ncurses does this</p>
1317
1318       <ul>
1319         <li>to improve performance, e.g., for operations composed
1320         of simpler functions such as cursor movement following by
1321         adding text to the screen,</li>
1322
1323         <li>to simplify the implementation by reusing functions
1324         which use common parameters, e.g., the standard screen
1325         <code>stdscr</code>, and</li>
1326
1327         <li>to provide functions that return values via their
1328         parameters</li>
1329       </ul>
1330
1331       <p>Except for the last case, ncurses provides a non-macro
1332       implementation of the function. If the macro definition is
1333       disabled with <code>#undef</code>, or by defining
1334       <code>NCURSES_NOMACROS</code> the function may be linked (and
1335       its calls will be checked against the prototype).</p>
1336     </li>
1337
1338     <li>
1339       <p>Extensive documentation is provided (see the <em><a href=
1340       "@HOMEPAGE@/ncurses.faq.html#additional_reading">Additional
1341       Reading</a></em> section of the <em><a href=
1342       "@HOMEPAGE@/ncurses.faq.html"><span class=
1343       "main-name">ncurses</span> FAQ</a></em> for online
1344       documentation).</p>
1345     </li>
1346   </ul>
1347
1348   <h2><a name="h2-who-uses" id="h2-who-uses">Applications using
1349   <span class="main-name">ncurses</span></a></h2>
1350
1351   <p>The <span class="main-name">ncurses</span> distribution
1352   includes a selection of test programs (including a few games).
1353   These are available separately as <a href=
1354   "@HOMEPAGE@/ncurses-examples.html">ncurses-examples</a></p>
1355
1356   <p>The ncurses library has been tested with a wide variety of
1357   applications including:</p>
1358
1359   <blockquote>
1360     <dl>
1361       <dt><span class="part-name">aptitude</span>
1362       </dt>
1363
1364       <dd>
1365         <p>FrontEnd to Apt, the debian package manager</p>
1366
1367         <p><a href=
1368         "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude</a></p>
1369       </dd>
1370
1371       <dt><span class="part-name">cdk</span>
1372       </dt>
1373
1374       <dd>
1375         <p>Curses Development Kit</p>
1376
1377         <p><a href="@WEBSITE@/cdk/">@WEBSITE@/cdk/</a><br>
1378         </p>
1379       </dd>
1380
1381       <dt><span class="part-name">ded</span>
1382       </dt>
1383
1384       <dd>
1385         <p>directory-editor</p>
1386
1387         <p><a href="@WEBSITE@/ded/">@WEBSITE@/ded/</a></p>
1388       </dd>
1389
1390       <dt><span class="part-name">dialog</span>
1391       </dt>
1392
1393       <dd>
1394         <p>the underlying application used in Slackware's setup,
1395         and the basis for similar install/configure applications on
1396         many systems.</p>
1397
1398         <p><a href="@WEBSITE@/dialog/">@WEBSITE@/dialog/</a></p>
1399       </dd>
1400
1401       <dt><span class="part-name">lynx</span>
1402       </dt>
1403
1404       <dd>
1405         <p>the text WWW browser</p>
1406
1407         <p><a href=
1408         "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/</a></p>
1409       </dd>
1410
1411       <dt><span class="part-name">mutt</span>
1412       </dt>
1413
1414       <dd>
1415         <p>mail utility</p>
1416
1417         <p><a href="http://www.mutt.org/">http://www.mutt.org/</a></p>
1418       </dd>
1419
1420       <dt><span class="part-name">ncftp</span>
1421       </dt>
1422
1423       <dd>
1424         <p>file-transfer utility</p>
1425
1426         <p><a href=
1427         "https://www.ncftp.com/">https://www.ncftp.com/</a></p>
1428       </dd>
1429
1430       <dt><span class="part-name">nvi</span>
1431       </dt>
1432
1433       <dd>
1434         <p>New vi uses ncurses.</p>
1435
1436         <p><a href=
1437         "https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page">
1438         https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page</a><br>
1439
1440         </p>
1441       </dd>
1442
1443       <dt><span class="part-name">ranger</span>
1444       </dt>
1445
1446       <dd>
1447         <p>A console file manager with VI key bindings in
1448         <em>Python</em>.</p>
1449
1450         <p><a href=
1451         "https://ranger.github.io/">https://ranger.github.io/</a></p>
1452       </dd>
1453
1454       <dt><span class="part-name">tin</span>
1455       </dt>
1456
1457       <dd>
1458         <p>newsreader, supporting color, MIME</p>
1459
1460         <p><a href="http://www.tin.org/">http://www.tin.org/</a></p>
1461       </dd>
1462
1463       <dt><span class="part-name">vifm</span>
1464       </dt>
1465
1466       <dd>
1467         <p>File manager with vi like keybindings</p>
1468
1469         <p><a href="https://vifm.info/">https://vifm.info/</a></p>
1470       </dd>
1471     </dl>
1472   </blockquote>
1473
1474   <p>as well as some that use <span class=
1475   "main-name">ncurses</span> for the terminfo support alone:</p>
1476
1477   <blockquote>
1478     <dl>
1479       <dt><span class="part-name">minicom</span>
1480       </dt>
1481
1482       <dd>
1483         <p>terminal emulator for serial modem connections</p>
1484
1485         <p><a href=
1486         "https://salsa.debian.org/minicom-team/minicom">https://salsa.debian.org/minicom-team/minicom</a></p>
1487       </dd>
1488
1489       <dt><span class="part-name">mosh</span>
1490       </dt>
1491
1492       <dd>
1493         <p>a replacement for <code>ssh</code>.</p>
1494
1495         <p><a href="https://mosh.org/">https://mosh.org/</a></p>
1496       </dd>
1497
1498       <dt><span class="part-name">tack</span>
1499       </dt>
1500
1501       <dd>
1502         <p>terminfo action checker</p>
1503
1504         <p><a href="@HOMEPAGE@/tack.html">@HOMEPAGE@/tack.html</a></p>
1505       </dd>
1506
1507       <dt><span class="part-name">tmux</span>
1508       </dt>
1509
1510       <dd>
1511         <p>terminal multiplexor</p>
1512
1513         <p><a href=
1514         "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki</a></p>
1515       </dd>
1516
1517       <dt><span class="part-name">vile</span>
1518       </dt>
1519
1520       <dd>
1521         <p><em>vi-like-emacs</em> may be built to use the terminfo,
1522         termcap or curses interfaces.</p>
1523
1524         <p><a href="@WEBSITE@/vile/">@WEBSITE@/vile/</a></p>
1525       </dd>
1526     </dl>
1527   </blockquote>
1528
1529   <p>and finally, those which use only the termcap interface:</p>
1530
1531   <blockquote>
1532     <dl>
1533       <dt><span class="part-name">emacs</span>
1534       </dt>
1535
1536       <dd>
1537         <p>text editor</p>
1538
1539         <p><a href=
1540         "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/</a></p>
1541       </dd>
1542
1543       <dt><span class="part-name">less</span>
1544       </dt>
1545
1546       <dd>
1547         <p>The most commonly used <em>pager</em> (a program that
1548         displays text files).</p>
1549
1550         <p><a href=
1551         "http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/</a></p>
1552       </dd>
1553
1554       <dt><span class="part-name">screen</span>
1555       </dt>
1556
1557       <dd>
1558         <p>terminal multiplexor</p>
1559
1560         <p><a href=
1561         "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/</a></p>
1562       </dd>
1563
1564       <dt><span class="part-name">vim</span>
1565       </dt>
1566
1567       <dd>
1568         <p>text editor</p>
1569
1570         <p><a href="https://www.vim.org/">https://www.vim.org/</a></p>
1571       </dd>
1572     </dl>
1573   </blockquote>
1574
1575   <h2><a name="h2-development" id="h2-development">Development
1576   activities</a></h2>
1577
1578   <p>Zeyd Ben-Halim started <span class="main-name">ncurses</span>
1579   from a previous package pcurses, written by Pavel Curtis. Eric S.
1580   Raymond continued development. J&uuml;rgen Pfeifer wrote most of
1581   the form and menu libraries.</p>
1582
1583   <p>Ongoing development work is done by <a href=
1584   "mailto:dickey@invisible-island.net">Thomas E. Dickey</a>. Thomas
1585   E. Dickey has acted as the maintainer for the Free Software
1586   Foundation, which held a <a href=
1587   "@HOMEPAGE@/ncurses-license.html">copyright on ncurses</a> for
1588   releases 4.2 through 6.1. Following the release of ncurses 6.1,
1589   effective as of release 6.2, copyright for ncurses reverted to
1590   Thomas E. Dickey (see the <a href=
1591   "@HOMEPAGE@/ncurses.faq.html#relicensed">ncurses FAQ</a> for
1592   additional information).</p>
1593
1594   <p>Contact the current maintainers at</p>
1595
1596   <blockquote>
1597     <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>
1598   </blockquote>
1599
1600   <p>To join the ncurses mailing list, please write email to</p>
1601
1602   <blockquote>
1603     <a href=
1604     "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a>
1605   </blockquote>
1606   containing the line:
1607   <blockquote>
1608     <p><code>subscribe</code>
1609     <em>&lt;name&gt;@&lt;host.domain&gt;</em></p>
1610   </blockquote>
1611
1612   <p>This list is open to anyone interested in helping with the
1613   development and testing of this package.</p>
1614
1615   <p>Beta versions of <span class="main-name">ncurses</span> are
1616   made available at</p>
1617
1618   <blockquote>
1619     <p><a href=
1620     "https://invisible-island.net/archives/ncurses/current/">https://invisible-island.net/archives/ncurses/current/</a>
1621     and<br>
1622     <a href=
1623     "https://invisible-mirror.net/archives/ncurses/current/">https://invisible-mirror.net/archives/ncurses/current/</a>&nbsp;.</p>
1624   </blockquote>
1625
1626   <p>Patches to the current release are made available at</p>
1627
1628   <blockquote>
1629     <p><a href=
1630     "https://invisible-island.net/archives/ncurses/6.4/">https://invisible-island.net/archives/ncurses/6.4/</a>
1631     and<br>
1632     <a href=
1633     "https://invisible-mirror.net/archives/ncurses/6.4/">https://invisible-mirror.net/archives/ncurses/6.4/</a>&nbsp;.</p>
1634   </blockquote>
1635
1636   <p>There is an archive of the mailing list here:</p>
1637
1638   <blockquote>
1639     <p><a href=
1640     "https://lists.gnu.org/archive/html/bug-ncurses">https://lists.gnu.org/archive/html/bug-ncurses</a>&nbsp;.</p>
1641   </blockquote>
1642
1643   <h2><a name="h2-this-stuff" id="h2-this-stuff">Related
1644   resources</a></h2>
1645
1646   <p>The release notes make scattered references to these pages,
1647   which may be interesting by themselves:</p>
1648
1649   <ul>
1650     <li><a href="@HOMEPAGE@/ncurses-license.html"><span class=
1651     "main-name">ncurses</span> licensing</a></li>
1652
1653     <li><a href="@HOMEPAGE@/ncurses-mapsyms.html">Symbol versioning
1654     in <span class="main-name">ncurses</span></a></li>
1655
1656     <li><a href="@HOMEPAGE@/ncurses-slang.html">Comments on
1657     <span class="main-name">ncurses</span> versus <span class=
1658     "main-name">slang</span> (S-Lang)</a></li>
1659
1660     <li><a href="@HOMEPAGE@/ncurses-openbsd.html">Comments on
1661     <span class="main-name">OpenBSD</span></a></li>
1662
1663     <li><a href="@HOMEPAGE@/tack.html">tack &ndash; terminfo action
1664     checker</a></li>
1665
1666     <li><a href="@HOMEPAGE@/tctest.html">tctest &ndash; termcap
1667     library checker</a></li>
1668
1669     <li><a href=
1670     "@HOMEPAGE@/ncurses.html#download_database">Terminal
1671     Database</a></li>
1672   </ul>
1673
1674   <h2><a name="h2-other-stuff" id="h2-other-stuff">Other
1675   resources</a></h2>
1676
1677   <p>The distribution provides a newer version of the
1678   terminfo-format terminal description file once maintained by
1679   <a href="http://www.catb.org/~esr/terminfo/">Eric
1680   Raymond</a>&nbsp;. Unlike the older version, the termcap and
1681   terminfo data are provided in the same file, which also provides
1682   several user-definable extensions beyond the X/Open Curses
1683   specification.</p>
1684
1685   <p>You can find lots of information on terminal-related topics
1686   not covered in the terminfo file in <a href=
1687   "https://shuford.invisible-island.net/">Richard Shuford's
1688   archive</a> (<a href=
1689   "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">original</a>).
1690   The collection of computer manuals at <a href=
1691   "http://www.bitsavers.org/pdf/">bitsavers.org</a> has also been
1692   useful.</p>
1693
1694   <div class="nav">
1695     <ul>
1696       <li><a href="#h2-overview">Overview</a></li>
1697
1698       <li>
1699         <a href="#h2-release-notes">Release Notes</a>
1700         <ul>
1701           <li>
1702             <a href="#h3-library">Library improvements</a>
1703             <ul>
1704               <li><a href="#h4-new-library">New features</a></li>
1705
1706               <li><a href="#h4-fixes-library">Other
1707               improvements</a></li>
1708             </ul>
1709           </li>
1710
1711           <li>
1712             <a href="#h3-programs">Program improvements</a>
1713             <ul>
1714               <li><a href="#h4-utilities">Utilities</a></li>
1715
1716               <li><a href="#h4-examples">Examples</a></li>
1717             </ul>
1718           </li>
1719
1720           <li><a href="#h3-database">Terminal database</a></li>
1721
1722           <li><a href="#h3-documentation">Documentation</a></li>
1723
1724           <li><a href="#h3-bug-fixes">Interesting bug-fixes</a></li>
1725
1726           <li>
1727             <a href="#h3-config-config">Configuration changes</a>
1728             <ul>
1729               <li><a href="#h4-config-major">Major changes</a></li>
1730
1731               <li><a href="#h4-config-options">Configuration
1732               options</a></li>
1733             </ul>
1734           </li>
1735
1736           <li><a href="#h3-portability">Portability</a></li>
1737         </ul>
1738       </li>
1739
1740       <li><a href="#h2-features">Features of <span class=
1741       "main-name">ncurses</span></a></li>
1742
1743       <li><a href="#h2-who-uses">Applications using <span class=
1744       "main-name">ncurses</span></a></li>
1745
1746       <li><a href="#h2-development">Development activities</a></li>
1747
1748       <li><a href="#h2-this-stuff">Related resources</a></li>
1749
1750       <li><a href="#h2-other-stuff">Other resources</a></li>
1751     </ul>
1752   </div>
1753 </body>
1754 </html>