ncurses 5.8 - patch 20110226
[ncurses.git] / doc / html / announce.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <!--
3   $Id: announce.html,v 1.54 2011/02/25 23:24:46 tom Exp $
4   ****************************************************************************
5   * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc.              *
6   *                                                                          *
7   * Permission is hereby granted, free of charge, to any person obtaining a  *
8   * copy of this software and associated documentation files (the            *
9   * "Software"), to deal in the Software without restriction, including      *
10   * without limitation the rights to use, copy, modify, merge, publish,      *
11   * distribute, distribute with modifications, sublicense, and/or sell       *
12   * copies of the Software, and to permit persons to whom the Software is    *
13   * furnished to do so, subject to the following conditions:                 *
14   *                                                                          *
15   * The above copyright notice and this permission notice shall be included  *
16   * in all copies or substantial portions of the Software.                   *
17   *                                                                          *
18   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
19   * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
20   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
21   * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
22   * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
23   * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
24   * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
25   *                                                                          *
26   * Except as contained in this notice, the name(s) of the above copyright   *
27   * holders shall not be used in advertising or otherwise to promote the     *
28   * sale, use or other dealings in this Software without prior written       *
29   * authorization.                                                           *
30   ****************************************************************************
31 -->
32
33 <html>
34 <head>
35   <meta name="generator" content=
36   "HTML Tidy for Linux/x86 (vers 6 November 2007), see www.w3.org">
37
38   <title>Announcing ncurses 5.8</title>
39   <link rev="made" href="mailto:bug-ncurses@gnu.org">
40   <meta http-equiv="Content-Type" content=
41   "text/html; charset=us-ascii">
42 </head>
43
44 <body>
45   <h1>Announcing ncurses 5.8</h1>The ncurses (new curses)
46   library is a free software emulation of curses in System V
47   Release 4.0, and more. It uses terminfo format, supports pads and
48   color and multiple highlights and forms characters and
49   function-key mapping, and has all the other SYSV-curses
50   enhancements over BSD curses.
51
52   <p>In mid-June 1995, the maintainer of 4.4BSD curses declared
53   that he considered 4.4BSD curses obsolete, and encouraged the
54   keepers of Unix releases such as BSD/OS, FreeBSD and NetBSD to
55   switch over to ncurses.</p>
56
57   <p>The ncurses code was developed under GNU/Linux. It has been in
58   use for some time with OpenBSD as the system curses library, and
59   on FreeBSD and NetBSD as an external package. It should port
60   easily to any ANSI/POSIX-conforming UNIX. It has even been ported
61   to OS/2 Warp!</p>
62
63   <p>The distribution includes the library and support utilities,
64   including a terminfo compiler tic(1), a decompiler infocmp(1),
65   clear(1), tput(1), tset(1), and a termcap conversion tool
66   captoinfo(1). Full manual pages are provided for the library and
67   tools.</p>
68
69   <p>The ncurses distribution is available via anonymous FTP at the
70   GNU distribution site <a href=
71   "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a>&nbsp;.<br>
72
73   It is also available at <a href=
74   "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a>&nbsp;.</p>
75
76   <h1>Release Notes</h1>This release is designed to be upward
77   compatible from ncurses 5.0 through 5.7; very few applications
78   will require recompilation, depending on the platform. These are
79   the highlights from the change-log since ncurses 5.7 release.
80
81   <h2>Interface changes</h2>
82
83   <ul>
84     <li>turn on <code>_XOPEN_CURSES</code> definition in
85     <code>curses.h</code>.</li>
86
87     <li>change <code>_nc_has_mouse</code> to
88     <code>has_mouse</code>, reflect its use in C++ and Ada95.</li>
89
90     <li>add <code>is_pad</code> and <code>is_subwin</code>
91     functions for opaque access to the WINDOW structure.</li>
92
93     <li>add <code>tiparm</code>, based on review of X/Open Curses
94     Issue 7.</li>
95   </ul>
96
97   <h2>New features and improvements</h2>
98
99   <h3>Library Improvements</h3>
100
101   <ul>
102     <li>add a terminal driver for Windows console, which supports a
103     MinGW port to Windows.</li>
104
105     <li>add extended functions which specify the
106     <code>SCREEN</code> pointer for several curses functions which
107     use the global <code>SP</code>.</li>
108
109     <li>improve the <code>NCURSES_NO_UTF8_ACS</code> feature by
110     adding a check for an extended terminfo capability
111     <code>U8</code>.</li>
112
113     <li>improve performance of <code>tigetstr</code>, etc., by
114     using hashing code from tic.</li>
115
116     <li>add WACS_<em>xxx</em> definitions to wide-character
117     configuration for thick- and double-lines.</li>
118
119     <li>modify init_pair to allow caller to create extra color
120     pairs beyond the color_pairs limit, which use default
121     colors.</li>
122   </ul>
123
124   <h3>Improvements to Programs</h3>
125
126   <ul>
127     <li>add <code>tabs</code> program.</li>
128
129     <li>modify tic's -I/-C dump to reformat acsc strings into
130     canonical form (sorted, unique mapping).</li>
131
132     <li>add checks in tic for inconsistent cursor-movement
133     controls, and for inconsistent printer-controls.</li>
134
135     <li>add special case to <code>_nc_infotocap</code> (used by tic
136     and infocmp) to recognize the
137     <code>setaf</code>/<code>setab</code> strings from
138     <code>xterm+256color</code> and <code>xterm+88color,</code> and
139     provide a reduced version which works with termcap.</li>
140   </ul>
141
142   <h3>Terminal Database</h3>
143
144   <ul>
145     <li>added entries:
146
147       <ul>
148         <li><code>bterm</code> terminfo entry, based on bogl
149         0.1.18</li>
150
151         <li><code>cons25-debian</code> entry</li>
152
153         <li><code>eterm-color</code> entry</li>
154
155         <li><code>linux-16color</code></li>
156
157         <li><code>mlterm+256color</code> entry, for mlterm
158         3.0.0</li>
159
160         <li>several screen-bce.<em>xxx</em> entries</li>
161
162         <li><code>screen.Eterm</code> terminfo entry</li>
163
164         <li><code>vwmterm</code> entry</li>
165
166         <li><code>xterm-utf8</code> entry as a demo of the
167         <code>U8</code> feature</li>
168       </ul>
169     </li>
170
171     <li>updated/improved entries:
172
173       <ul>
174         <li>use extended capabilities:
175
176           <ul>
177             <li>add <code>U8</code> feature to denote entries for
178             terminal emulators which do not support VT100 SI/SO
179             when processing UTF-8 encoding</li>
180
181             <li>add <code>XT</code> capability to entries for
182             terminals that support both xterm-style mouse- and
183             title-controls, for <code>screen</code> which
184             special-cases TERM beginning with <code>xterm</code> or
185             <code>rxvt</code></li>
186           </ul>
187         </li>
188
189         <li>improvements based on new checks in tic:</li>
190
191         <li style="list-style: none; display: inline">
192           <ul>
193             <li>fill in no-parameter forms of cursor-movement where
194             a parameterized form is available</li>
195
196             <li>fill in missing cursor controls where the form of
197             the controls is ANSI</li>
198
199             <li>add parameterized cursor-controls to
200             linux-basic</li>
201
202             <li>modify <code>nsterm,</code> <code>xnuppc</code> and
203             <code>tek4115</code> to make
204             <code>sgr</code>/<code>sgr0</code> consistent</li>
205
206             <li>change several terminfo entries to make consistent
207             use of ANSI clear-all-tabs</li>
208           </ul>
209         </li>
210
211         <li>extend <code>ansi.sys</code> <code>pfkey</code>
212         capability from kf1-kf10 to kf1-kf48, moving function key
213         definitions from <code>emx-base</code> for
214         consistency.</li>
215
216         <li>correct missing final 'p' in <code>pfkey</code>
217         capability of <code>ansi.sys-old</code>.</li>
218
219         <li>rename <code>atari</code> and <code>st52</code>
220         terminfo entries to atari-old, st52-old, use newer entries
221         from FreeMiNT.</li>
222
223         <li>repurpose <code>gnome</code> terminfo entries as
224         <code>vte</code>, retaining <code>gnome</code> variants for
225         compatibility, but generally deprecating those since the
226         VTE library is what actually defines the behavior of
227         "gnome", etc., since 2003.</li>
228
229         <li>improve <code>interix</code> <code>smso</code> terminfo
230         capability by using reverse rather than bold.</li>
231
232         <li>correct <code>initc</code> capability of
233         <code>linux-c-nc</code> end-of-range, make similar change
234         for <code>dg+ccc</code> and <code>dgunix+ccc</code>.</li>
235
236         <li>update <code>minix</code> terminfo entry.</li>
237
238         <li>updated <code>nsterm*</code> entries.</li>
239
240         <li>remove unnecessary <code>kcan</code> assignment to
241         <code>^C</code> from <code>putty</code>.</li>
242
243         <li>suppress <code>ncv</code> in <code>screen</code> and
244         <code>konsole-base</code> entries, allowing underline.</li>
245
246         <li>change ncv and op capabilities in
247         <code>sun-color</code> terminfo entry to match Sun's entry
248         for this.</li>
249
250         <li>fix typo in <code>rmso</code> for <code>tek4106</code>
251         entry.</li>
252
253         <li>improve <code>acsc</code> string for <code>vt52</code>,
254         show arrow keys.</li>
255
256         <li>add hard-reset for <code>rs2</code> to
257         <code>wsvt25</code> to help ensure that reset ends the
258         alternate character set.</li>
259
260         <li>add <code>ccc</code> and <code>initc</code>
261         capabilities to <code>xterm-16color</code>.</li>
262       </ul>
263     </li>
264   </ul>
265
266   <h2>Major bug fixes</h2>
267
268   <ul>
269     <li>ncurses library
270
271       <ul>
272         <li>wide character support
273
274           <ul>
275             <li>modify length returned by <code>getcchar</code> to
276             count the trailing null which is documented in
277             X/Open.</li>
278
279             <li>fix an infinite recursion when adding a
280             legacy-coding 8-bit value using
281             <code>insch</code>.</li>
282
283             <li>improve a workaround in adding wide-characters,
284             when a control character is found. The library uses
285             <code>unctrl</code> to obtain a printable version of
286             the control character, but was not passing color or
287             video attributes.</li>
288
289             <li>modify <code>waddch_literal</code>, updating
290             line-pointer after a multicolumn character is found to
291             not fit on the current row, and wrapping is done. Since
292             the line-pointer was not updated, the wrapped
293             multicolumn character was written to the beginning of
294             the current row.</li>
295
296             <li>fixes in <code>wins_nwstr</code> and related
297             functions to ensure that special characters, i.e.,
298             control characters are handled properly with the
299             wide-character configuration.</li>
300
301             <li>correct internal <code>_nc_insert_ch</code> to use
302             <code>_nc_insert_wch</code> when inserting wide
303             characters, since the <code>wins_wch</code> function
304             that it used did not update the cursor position.</li>
305           </ul>
306         </li>
307
308         <li>mouse
309
310           <ul>
311             <li>add check if <code>Gpm_Open</code> returns a -2,
312             e.g., for "xterm". This is normally suppressed but can
313             be overridden using <code>$NCURSES_GPM_TERMS</code>.
314             Ensure that <code>Gpm_Close</code> is called in this
315             case.</li>
316
317             <li>add check in mouse-driver to disable connection if
318             GPM returns a zero, indicating that the connection is
319             closed.</li>
320
321             <li>modify <code>getmouse</code> to act as its
322             documentation implied, returning on each call the
323             preceding event until none are left. When no more
324             events remain, it will return <code>ERR</code>.</li>
325           </ul>
326         </li>
327
328         <li>miscellaneous
329
330           <ul>
331             <li>improve handling of color-pairs embedded in
332             attributes for the extended-colors configuration.</li>
333
334             <li>add check for failure to open hashed-database
335             needed for db4.6.</li>
336
337             <li>modify use of <code>$CC</code> environment variable
338             which is defined by X/Open as a curses feature, to
339             ignore it if it is not a single character.</li>
340
341             <li>modify declaration of <code>cur_term</code> when
342             broken-linker is used, but enable-reentrant is not, to
343             match pre-5.7.</li>
344
345             <li>correct limit-checks in <code>derwin</code>.</li>
346
347             <li>remove old check in <code>mvderwin</code> which
348             prevented moving a derived window whose origin happened
349             to coincide with its parent's origin.</li>
350
351             <li>correct limit-checks in <code>newwin</code>, to
352             ensure that windows have nonzero size.</li>
353
354             <li>modify <code>set_curterm</code> to make
355             broken-linker configuration work with changes from
356             20090228.</li>
357
358             <li>modify <code>wgetch</code> to ensure it checks
359             <code>SIGWINCH</code> when it gets an error in
360             non-blocking mode.</li>
361
362             <li>correct limit-check in <code>wredrawln</code>,
363             accounting for <code>begy</code>/<code>begx</code>
364             values.</li>
365
366             <li>fix a null-pointer check in
367             <code>_nc_format_slks</code> in lib_slk.c, from
368             20070704 changes.</li>
369
370             <li>correct translation of "^" in
371             <code>_nc_infotocap</code>, used to transform terminfo
372             to termcap strings.</li>
373
374             <li>modify <code>_nc_wgetch</code> to check for a -1 in
375             the fifo, e.g., after a <code>SIGWINCH</code>, and
376             discard that value, to avoid confusing
377             application.</li>
378           </ul>
379         </li>
380       </ul>
381     </li>
382
383     <li>other libraries
384
385       <ul>
386         <li>correct transfer of multicolumn characters in multirow
387         <code>field_buffer</code>, which stopped at the end of the
388         first row due to filling of unused entries in a cchar_t
389         array with nulls.</li>
390
391         <li>correct buffer-size after internal resizing of
392         wide-character <code>set_field_buffer</code>, broken in
393         20081018 changes.</li>
394
395         <li>correct layout of working window used to extract data
396         in wide-character configured by
397         <code>set_field_buffer</code></li>
398       </ul>
399     </li>
400   </ul>
401
402   <h2>Portability</h2>
403
404   <ul>
405     <li>configure script:
406
407       <ul>
408         <li>new options:
409
410           <dl>
411             <dt>--disable-libtool-version</dt>
412
413             <dd>use the "-version-number" feature which was added
414             in libtool 1.5. The default value for the option uses
415             the newer feature, which makes libraries generated
416             using libtool compatible with the standard builds of
417             ncurses.</dd>
418
419             <dt>--disable-rpath-hack</dt>
420
421             <dd>disable a feature which adds rpath options for
422             libraries in unusual places.</dd>
423
424             <dt>--enable-interop</dt>
425
426             <dd>integrate changes for generic/interop support to
427             form-library.</dd>
428
429             <dt>--enable-pc-files</dt>
430
431             <dd>generate ".pc" files for each of the libraries, and
432             install them in <code>pkg-config</code>'s library
433             directory.</dd>
434
435             <dt>--enable-pthreads-eintr</dt>
436
437             <dd>control whether to allow <code>EINTR</code> to
438             interrupt a read operation in <code>wgetch</code>. This
439             applies only to the pthread configuration</dd>
440
441             <dt>--enable-sp-funcs</dt>
442
443             <dd>compile-in support for extended functions which
444             accept a <code>SCREEN</code> pointer, reducing the need
445             for juggling the global <code>SP</code> value with
446             <code>set_term</code> and <code>delscreen</code>.</dd>
447
448             <dt>--enable-term-driver</dt>
449
450             <dd>compile with terminal-driver. That is used in the
451             MinGW port, and (being somewhat more complicated) is an
452             experimental alternative to the conventional termlib
453             internals. Currently, it requires the sp-funcs feature
454             to be enabled.</dd>
455
456             <dt>--with-ncurses-wrap-prefix</dt>
457
458             <dd>allows setting the prefix for functions used to
459             wrap global variables to something other than
460             "<code>_nc_</code>".</dd>
461
462             <dt>--with-pkg-config=[DIR]</dt>
463
464             <dd>check for <code>pkg-config</code>, optionally
465             specifying its path.</dd>
466
467             <dt>--without-manpages</dt>
468
469             <dd>tells the configure script to suppress the install
470             of ncurses' manpages.</dd>
471
472             <dt>--without-tests</dt>
473
474             <dd>suppress building test programs.</dd>
475           </dl>
476         </li>
477
478         <li>improved options:
479
480           <ul>
481             <li>correct logic for <code>--with-database</code>,
482             which was coded as an enable-type switch.</li>
483
484             <li>omit the opaque-functions from
485             <code>lib_gen.o</code> when
486             <code>--disable-ext-funcs</code> is used.</li>
487           </ul>
488         </li>
489       </ul>
490     </li>
491
492     <li>packaging:
493
494       <ul>
495         <li>*-config scripts:
496
497           <ul>
498             <li>modify <code>adacurses-config</code> to look for
499             ".ali" files in the adalib directory.</li>
500
501             <li>correct install for the Ada95 tree, which omitted
502             <code>libAdaCurses.a</code> used in
503             <code>adacurses-config</code>.</li>
504
505             <li>change install for <code>adacurses-config</code> to
506             provide additional flavors such as
507             <code>adacursesw-config</code>, for ncursesw.</li>
508
509             <li>modify scripts to generate
510             <code>ncurses*-config</code> and pc-files to add
511             dependency for tinfo library.</li>
512
513             <li>use <code>ncurses*-config</code> scripts if
514             available for test/configure.</li>
515
516             <li>correct name for termlib in
517             <code>ncurses*-config</code>, e.g., if it is renamed to
518             provide a single file for ncurses/ncursesw
519             libraries.</li>
520
521             <li>generate manpages for the *-config scripts, adapted
522             from <code>help2man</code>.</li>
523
524             <li>modify install-rule for manpages so that *-config
525             manpages will install when building with
526             <code>--srcdir</code>.</li>
527
528             <li>build-fixes for OpenSolaris aka Solaris 11, for
529             wide-character configuration as well as for rpath
530             feature in *-config scripts.</li>
531
532             <li>use <code>$includedir</code> symbol in
533             <code>misc/ncurses-config.in</code>, add
534             <code>--includedir</code> option.</li>
535
536             <li>improve install-rules for pc-files.</li>
537
538             <li>create the <code>pkg-config</code> library
539             directory if needed.</li>
540
541             <li>fix typo "<code>==</code>" where "<code>=</code>"
542             is needed in <code>ncurses-config.in</code> and
543             <code>gen-pkgconfig.in</code> files.</li>
544
545             <li>modify <code>gen-pkgconfig.in</code> to eliminate a
546             dependency on rpath when deciding whether to add
547             <code>$LIBS</code> to <code>--libs</code> output; that
548             should be shown for the ncurses and tinfo libraries
549             without taking rpath into account.</li>
550
551             <li>modify handling of <code>$PKG_CONFIG_LIBDIR</code>
552             to use only the first item in a possibly
553             colon-separated list.</li>
554           </ul>
555         </li>
556
557         <li>other packaging issues
558
559           <ul>
560             <li>add <code>make-tar.sh</code> scripts to Ada95 and
561             test subdirectories to help with making those
562             separately distributable.</li>
563
564             <li>add <code>Ada95/configure</code> script, to use in
565             tar-file created by
566             <code>Ada95/make-tar.sh</code>.</li>
567
568             <li>remove <code>tar-copy.sh</code> and related
569             <code>configure/Makefile</code> chunks, since the Ada95
570             binding is now installed using rules in
571             <code>Ada95/src</code>.</li>
572           </ul>
573         </li>
574       </ul>
575     </li>
576
577     <li>cross-compiling:
578
579       <ul>
580         <li>improve configure checks for location of tic and
581         infocmp programs used for installing database and for
582         generating fallback data, e.g., for cross-compiling.</li>
583
584         <li>modify #define's for build-compiler to suppress cchar_t
585         symbol from compile of <code>make_hash</code> and
586         <code>make_keys</code>, improving cross-compilation of
587         ncursesw.</li>
588
589         <li>simplify include-dependencies of <code>make_hash</code>
590         and <code>make_keys</code>, to reduce the need for setting
591         BUILD_CPPFLAGS in cross-compiling when the build- and
592         target-machines differ.</li>
593
594         <li>correct cross-compiling configure check for
595         <code>CF_MKSTEMP</code> macro, by adding a check cache
596         variable set by <code>AC_CHECK_FUNC</code>.</li>
597       </ul>
598     </li>
599
600     <li>library dependencies:
601
602       <ul>
603         <li>revise <code>wadd_wch</code> and
604         <code>wecho_wchar</code> to eliminate dependency on
605         <code>unctrl</code>.</li>
606
607         <li>adjust configure script so that "t" is not added to
608         library suffix when weak-symbols are used, allowing the
609         pthread configuration to more closely match the non-thread
610         naming.</li>
611       </ul>
612     </li>
613
614     <li>building the Ada95 tree:
615
616       <ul>
617         <li>changes to use gnatmake project files in the Ada95
618         tree.</li>
619
620         <li>add/use configure check to turn on project rules for
621         <code>Ada95/src</code>.</li>
622
623         <li>old gnatmake (3.15) does not produce libraries using
624         project-file; work around by adding script to generate
625         alternate makefile.</li>
626
627         <li>add configure --with-ada-sharedlib option, for the
628         test_make rule.</li>
629
630         <li>move Ada95-related logic into aclocal.m4, since
631         additional checks will be needed to distinguish old/new
632         implementations of gnat.</li>
633
634         <li>add test_make / test_clean / test_install rules in
635         Ada95/src</li>
636
637         <li>change install-path for adainclude directory to
638         /usr/share/ada (was /usr/lib/ada).</li>
639       </ul>
640     </li>
641
642     <li>other configure/build issues:
643
644       <ul>
645         <li>make <code>CCHARW_MAX</code> value configurable, noting
646         that changing this would change the size of
647         <code>cchar_t</code>, and would be ABI-incompatible.</li>
648
649         <li>improve comparison of program-names when checking for
650         linked flavors such as "reset" by ignoring the executable
651         suffix.</li>
652
653         <li>drop <code>mkdirs.sh</code>, use
654         "<code>mkdir&nbsp;-p</code>".</li>
655
656         <li>drop <code>misc/ncu-indent</code> and
657         <code>misc/jpf-indent</code>; they are provided by an
658         external package <a href=
659         "http://invisible-island.net/cindent/cindent.html">cindent</a>.</li>
660
661         <li>change makefiles to use <code>$ARFLAGS</code> rather
662         than <code>$AR_OPTS</code>, provide a configure check to
663         detect whether a "-" is needed before "ar" options.</li>
664
665         <li>modify <code>CF_DISABLE_LEAKS</code> configure macro so
666         that the --enable-leaks option is not the same as
667         --disable-leaks.</li>
668
669         <li>improve configure script macros
670         <code>CF_HEADER_PATH</code> and
671         <code>CF_LIBRARY_PATH</code> by adding <code>CFLAGS</code>,
672         <code>CPPFLAGS</code> and <code>LDFLAGS</code>,
673         <code>LIBS</code> values to the search-lists.</li>
674
675         <li>improve configure macros <code>CF_GCC_VERSION</code>
676         and <code>CF_GCC_WARNINGS</code> to work with gcc 4.x's c89
677         alias, which gives warning messages for cases where older
678         versions would produce an error.</li>
679
680         <li>modify <code>CF_WITH_LIBTOOL</code> configure check to
681         allow unreleased libtool version numbers (e.g. which
682         include alphabetic chars, as well as digits, after the
683         final '.').</li>
684
685         <li>improve use of symbolic links in makefiles by using
686         "<code>-f</code>" option if it is supported, to eliminate
687         temporary removal of the target</li>
688
689         <li>add a configure-time check to pick a suitable value for
690         <code>CC_SHARED_OPTS</code> for Solaris.</li>
691
692         <li>add -shared option to <code>MK_SHARED_LIB</code> when
693         -Bsharable is used, for *BSD's, without which "main" might
694         be one of the shared library's dependencies.</li>
695
696         <li>modify configure script to allow building shared
697         libraries with gcc on AIX 5 or 6.</li>
698
699         <li>suppress configure check for static/dynamic linker
700         flags for gcc on Solaris 10, since gcc is confused by
701         absence of static libc, and does not switch back to dynamic
702         mode before finishing the libraries.</li>
703
704         <li>suppress configure check for static/dynamic linker
705         flags for gcc on Darwin.</li>
706
707         <li>modify <code>misc/run_tic.in</code> to create parent
708         directory, in case this is a new install of hashed
709         database.</li>
710
711         <li>modify configure check for tic program, used for
712         fallbacks, to a warning if not found. This makes it simpler
713         to use additonal scripts to bootstrap the fallbacks code
714         using tic from the build tree.</li>
715       </ul>
716     </li>
717
718     <li>test programs:
719
720       <ul>
721         <li>add test/demo_terminfo, for comparison with
722         demo_termcap.</li>
723
724         <li>improve test/ncurses.c 'F' test, show combining
725         characters in color.</li>
726
727         <li>fix logic for 'V' in test/ncurses.c tests f/F.</li>
728
729         <li>improve test/ncurses.c 'a test to put mouse droppings
730         in the proper window.</li>
731
732         <li>modify ncurses 'F' test to demo wborder_set with
733         colored lines.</li>
734
735         <li>modify ncurses 'f' test to demo wborder with colored
736         lines.</li>
737
738         <li>improve test/ncurses.c 'a' test, using unctrl more
739         consistently to display meta-characters.</li>
740
741         <li>correct use of <code>key_name</code> in test/ncurses.c
742         'A' test, which only displays wide-characters, not
743         key-codes since 20070612.</li>
744
745         <li>add test/clip_printw.c to illustrate how to use printw
746         without wrapping.</li>
747
748         <li>modify test-programs, e.g,. test/view.c, to address
749         subtle differences between Tru64/Solaris and HPUX/AIX
750         getcchar return values.</li>
751
752         <li>add some test programs (and make these use the same
753         special keys by sharing <code>linedata.h</code> functions):
754         test/test_addstr.c test/test_addwstr.c test/test_addchstr.c
755         test/test_add_wchstr.c</li>
756
757         <li>add test/xterm-256color.dat</li>
758
759         <li>modify test programs to allow them to be built with
760         NetBSD curses.</li>
761
762         <li>fixes for test programs to build/work on HPUX and AIX,
763         etc.</li>
764       </ul>
765     </li>
766   </ul>
767
768   <h1>Features of Ncurses</h1>The ncurses package is fully
769   compatible with SVr4 (System V Release 4) curses:
770
771   <ul>
772     <li>All 257 of the SVr4 calls have been implemented (and are
773     documented).</li>
774
775     <li>Full support for SVr4 curses features including keyboard
776     mapping, color, forms-drawing with ACS characters, and
777     automatic recognition of keypad and function keys.</li>
778
779     <li>An emulation of the SVr4 panels library, supporting a stack
780     of windows with backing store, is included.</li>
781
782     <li>An emulation of the SVr4 menus library, supporting a
783     uniform but flexible interface for menu programming, is
784     included.</li>
785
786     <li>An emulation of the SVr4 form library, supporting data
787     collection through on-screen forms, is included.</li>
788
789     <li>Binary terminfo entries generated by the ncurses tic(1)
790     implementation are bit-for-bit-compatible with the entry format
791     SVr4 curses uses.</li>
792
793     <li>The utilities have options to allow you to filter terminfo
794     entries for use with less capable
795     <strong>curses</strong>/<strong>terminfo</strong> versions such
796     as the HP/UX and AIX ports.</li>
797   </ul>The ncurses package also has many useful extensions over
798   SVr4:
799
800   <ul>
801     <li>The API is 8-bit clean and base-level conformant with the
802     X/OPEN curses specification, XSI curses (that is, it implements
803     all BASE level features, and most EXTENDED features). It
804     includes many function calls not supported under SVr4 curses
805     (but portability of all calls is documented so you can use the
806     SVr4 subset only).</li>
807
808     <li>Unlike SVr3 curses, ncurses can write to the
809     rightmost-bottommost corner of the screen if your terminal has
810     an insert-character capability.</li>
811
812     <li>Ada95 and C++ bindings.</li>
813
814     <li>Support for mouse event reporting with X Window xterm and
815     FreeBSD and OS/2 console windows.</li>
816
817     <li>Extended mouse support via Alessandro Rubini's gpm
818     package.</li>
819
820     <li>The function <code>wresize</code> allows you to resize
821     windows, preserving their data.</li>
822
823     <li>The function <code>use_default_colors</code> allows you to
824     use the terminal's default colors for the default color pair,
825     achieving the effect of transparent colors.</li>
826
827     <li>The functions <code>keyok</code> and
828     <code>define_key</code> allow you to better control the use of
829     function keys, e.g., disabling the ncurses KEY_MOUSE, or by
830     defining more than one control sequence to map to a given key
831     code.</li>
832
833     <li>Support for 256-color terminals, such as modern xterm, when
834     configured using the <code>--enable-ext-colors</code>
835     option.</li>
836
837     <li>Support for 16-color terminals, such as <em>aixterm</em>
838     and <em>modern xterm</em>.</li>
839
840     <li>Better cursor-movement optimization. The package now
841     features a cursor-local-movement computation more efficient
842     than either BSD's or System V's.</li>
843
844     <li>Super hardware scrolling support. The screen-update code
845     incorporates a novel, simple, and cheap algorithm that enables
846     it to make optimal use of hardware scrolling, line-insertion,
847     and line-deletion for screen-line movements. This algorithm is
848     more powerful than the 4.4BSD curses <code>quickch</code>
849     routine.</li>
850
851     <li>Real support for terminals with the magic-cookie glitch.
852     The screen-update code will refrain from drawing a highlight if
853     the magic- cookie unattributed spaces required just before the
854     beginning and after the end would step on a non-space
855     character. It will automatically shift highlight boundaries
856     when doing so would make it possible to draw the highlight
857     without changing the visual appearance of the screen.</li>
858
859     <li>It is possible to generate the library with a list of
860     pre-loaded fallback entries linked to it so that it can serve
861     those terminal types even when no terminfo tree or termcap file
862     is accessible (this may be useful for support of
863     screen-oriented programs that must run in single-user
864     mode).</li>
865
866     <li>The tic(1)/captoinfo utility provided with ncurses has the
867     ability to translate many termcaps from the XENIX, IBM and
868     AT&amp;T extension sets.</li>
869
870     <li>A BSD-like tset(1) utility is provided.</li>
871
872     <li>The ncurses library and utilities will automatically read
873     terminfo entries from $HOME/.terminfo if it exists, and compile
874     to that directory if it exists and the user has no write access
875     to the system directory. This feature makes it easier for users
876     to have personal terminfo entries without giving up access to
877     the system terminfo directory.</li>
878
879     <li>You may specify a path of directories to search for
880     compiled descriptions with the environment variable
881     TERMINFO_DIRS (this generalizes the feature provided by
882     TERMINFO under stock System V.)</li>
883
884     <li>In terminfo source files, use capabilities may refer not
885     just to other entries in the same source file (as in System V)
886     but also to compiled entries in either the system terminfo
887     directory or the user's $HOME/.terminfo directory.</li>
888
889     <li>A script (<strong>capconvert</strong>) is provided to help
890     BSD users transition from termcap to terminfo. It gathers the
891     information in a TERMCAP environment variable and/or a
892     ~/.termcap local entries file and converts it to an equivalent
893     local terminfo tree under $HOME/.terminfo.</li>
894
895     <li>Automatic fallback to the /etc/termcap file can be compiled
896     in when it is not possible to build a terminfo tree. This
897     feature is neither fast nor cheap, you don't want to use it
898     unless you have to, but it's there.</li>
899
900     <li>The table-of-entries utility <strong>toe</strong> makes it
901     easy for users to see exactly what terminal types are available
902     on the system.</li>
903
904     <li>The library meets the XSI requirement that every macro
905     entry point have a corresponding function which may be linked
906     (and will be prototype-checked) if the macro definition is
907     disabled with <code>#undef</code>.</li>
908
909     <li>An HTML "Introduction to Programming with NCURSES" document
910     provides a narrative introduction to the curses programming
911     interface.</li>
912   </ul>
913
914   <h1>State of the Package</h1>Numerous bugs present in earlier
915   versions have been fixed; the library is far more reliable than
916   it used to be. Bounds checking in many `dangerous' entry points
917   has been improved. The code is now type-safe according to gcc
918   -Wall. The library has been checked for malloc leaks and arena
919   corruption by the Purify memory-allocation tester.
920
921   <p>The ncurses code has been tested with a wide variety of
922   applications including (versions starting with those noted):</p>
923
924   <dl>
925     <dt>cdk</dt>
926
927     <dd>Curses Development Kit<br>
928     <a href=
929     "http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</a><br>
930
931     <a href=
932     "http://www.vexus.ca/products/CDK/">http://www.vexus.ca/products/CDK/</a></dd>
933
934     <dt>ded</dt>
935
936     <dd>directory-editor<br>
937     <a href=
938     "http://invisible-island.net/ded/">http://invisible-island.net/ded/</a></dd>
939
940     <dt>dialog</dt>
941
942     <dd>the underlying application used in Slackware's setup, and
943     the basis for similar applications on GNU/Linux.<br>
944     <a href=
945     "http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</a></dd>
946
947     <dt>lynx</dt>
948
949     <dd>the character-screen WWW browser<br>
950     <a href=
951     "http://lynx.isc.org/release/">http://lynx.isc.org/release/</a></dd>
952
953     <dt>Midnight Commander</dt>
954
955     <dd>file manager<br>
956     <a href=
957     "http://www.midnight-commander.org/">http://www.midnight-commander.org/</a></dd>
958
959     <dt>mutt</dt>
960
961     <dd>mail utility<br>
962     <a href="http://www.mutt.org/">http://www.mutt.org/</a></dd>
963
964     <dt>ncftp</dt>
965
966     <dd>file-transfer utility<br>
967     <a href="http://www.ncftp.com/">http://www.ncftp.com/</a></dd>
968
969     <dt>nvi</dt>
970
971     <dd>New vi versions 1.50 are able to use ncurses versions 1.9.7
972     and later.<br>
973     <a href=
974     "https://sites.google.com/a/bostic.com/keithbostic/nvi">https://sites.google.com/a/bostic.com/keithbostic/nvi</a><br>
975     </dd>
976
977     <dt>pinfo</dt>
978
979     <dd>Lynx-like info browser. <a href=
980     "https://alioth.debian.org/projects/pinfo/">https://alioth.debian.org/projects/pinfo/</a></dd>
981
982     <dt>tin</dt>
983
984     <dd>newsreader, supporting color, MIME <a href=
985     "http://www.tin.org/">http://www.tin.org/</a></dd>
986   </dl>as well as some that use ncurses for the terminfo support
987   alone:
988
989   <dl>
990     <dt>minicom</dt>
991
992     <dd>terminal emulator<br>
993     <a href=
994     "http://alioth.debian.org/projects/minicom/">http://alioth.debian.org/projects/minicom/</a></dd>
995
996     <dt>vile</dt>
997
998     <dd>vi-like-emacs<br>
999     <a href=
1000     "http://invisible-island.net/vile/">http://invisible-island.net/vile/</a></dd>
1001   </dl>
1002
1003   <p>The ncurses distribution includes a selection of test programs
1004   (including a few games).</p>
1005
1006   <h2>Who's Who and What's What</h2>Zeyd Ben-Halim started it from
1007   a previous package pcurses, written by Pavel Curtis. Eric S.
1008   Raymond continued development. J&uuml;rgen Pfeifer wrote most of
1009   the form and menu libraries. Ongoing work is being done by
1010   <a href="mailto:dickey@invisible-island.net">Thomas Dickey</a>.
1011   Thomas Dickey acts as the maintainer for the Free Software
1012   Foundation, which holds the copyright on ncurses. Contact the
1013   current maintainers at <a href=
1014   "mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>.
1015
1016   <p>To join the ncurses mailing list, please write email to
1017   <code>bug-ncurses-request@gnu.org</code> containing the line:</p>
1018   <pre>
1019              subscribe &lt;name&gt;@&lt;host.domain&gt;
1020 </pre>
1021
1022   <p>This list is open to anyone interested in helping with the
1023   development and testing of this package.</p>
1024
1025   <p>Beta versions of ncurses and patches to the current release
1026   are made available at <a href=
1027   "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a>&nbsp;.</p>
1028
1029   <h2>Future Plans</h2>
1030
1031   <ul>
1032     <li>Extended-level XPG4 conformance, with internationalization
1033     support.</li>
1034
1035     <li>Ports to more systems, including DOS and Windows.</li>
1036   </ul>We need people to help with these projects. If you are
1037   interested in working on them, please join the ncurses list.
1038
1039   <h2>Other Related Resources</h2>The distribution provides a newer
1040   version of the terminfo-format terminal description file once
1041   maintained by <a href="http://www.catb.org/~esr/terminfo/">Eric
1042   Raymond</a>&nbsp;. Unlike the older version, the termcap and
1043   terminfo data are provided in the same file, and provides several
1044   user-definable extensions beyond the X/Open specification.
1045
1046   <p>You can find lots of information on terminal-related topics
1047   not covered in the terminfo file at <a href=
1048   "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">
1049   Richard Shuford's archive</a>&nbsp;.</p>
1050 </body>
1051 </html>