xref: /freebsd/contrib/ncurses/announce.html.in (revision 55a2a91c5e1bb39dd625ba56597608883fbcb318)
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>
1755