1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
3 $Id: announce.html,v 1.52 2008/11/02 01:05:08 tom Exp $
4 ****************************************************************************
5 * Copyright (c) 1998-2006,2008 Free Software Foundation, Inc. *
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: *
15 * The above copyright notice and this permission notice shall be included *
16 * in all copies or substantial portions of the Software. *
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. *
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 *
30 ****************************************************************************
34 <TITLE>Announcing ncurses 5.7</TITLE>
35 <link rev=made href="mailto:bug-ncurses@gnu.org">
36 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
40 <H1>Announcing ncurses 5.7</H1>
42 The ncurses (new curses) library is a free software emulation of
43 curses in System V Release 4.0, and more. It uses terminfo format,
44 supports pads and color
45 and multiple highlights and forms characters and function-key mapping,
46 and has all the other SYSV-curses enhancements over BSD curses.<P>
48 In mid-June 1995, the maintainer of 4.4BSD curses declared that he
49 considered 4.4BSD curses obsolete, and encouraged the keepers of
50 Unix releases such as BSD/OS, FreeBSD and NetBSD to switch over to
53 The ncurses code was developed under GNU/Linux.
54 It has been in use for some time with OpenBSD as the system curses library,
55 and on FreeBSD and NetBSD as an external package.
56 It should port easily to any ANSI/POSIX-conforming UNIX.
57 It has even been ported to OS/2 Warp!<P>
59 The distribution includes the library and support utilities, including a
60 terminfo compiler tic(1), a decompiler infocmp(1), clear(1), tput(1), tset(1),
61 and a termcap conversion tool captoinfo(1). Full manual pages are provided for
62 the library and tools.<P>
64 The ncurses distribution is available via anonymous FTP at
65 the GNU distribution site
66 <A HREF="ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</A> .
67 <br>It is also available at
68 <A HREF="ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</A> .
70 <H1>Release Notes</H1>
72 This release is designed to be upward compatible from ncurses 5.0 through 5.6;
73 very few applications will require recompilation, depending on the platform.
74 These are the highlights from the change-log since ncurses 5.6 release.
78 <li>generate linkable stubs for some macros:
83 New features and improvements:
87 <li>new flavor of the ncurses library provides rudimentary
88 support for POSIX threads. Several functions are
89 reentrant, but most require either a window-level or
90 screen-level mutex.<br>
91 (This is <em>API</em>-compatible,
92 but not <em>ABI</em>-compatible with the normal library).
94 <li>add <code>NCURSES_OPAQUE</code> symbol to curses.h, will
95 use to make structs opaque in selected configurations.
97 <li>add <code>NCURSES_EXT_FUNCS</code> and
98 <code>NCURSES_EXT_COLORS</code> symbols to curses.h to make
99 it simpler to tell if the extended functions and/or colors
102 <li>add wresize() to C++ binding
104 <li>eliminate fixed-buffer vsprintf() calls in C++ binding.
106 <li>add several functions to C++ binding which wrap C functions
107 that pass a WINDOW* parameter.
109 <li>adapt mouse-handling code from menu library in form-library
111 <li>improve tracing for form library, showing created forms,
114 <li>make $NCURSES_NO_PADDING feature work for termcap interface .
116 <li>add check to trace-file open, if the given name is a
117 directory, add ".log" to the name and try again.
119 <li>several new manpages: curs_legacy.3x, curs_memleaks.3x,
120 curs_opaque.3x and curs_threads.3x
125 <li>modified three test-programs to demonstrate the threading
126 support in this version: ditto, rain, worm.
128 <li>several new test-programs: demo_panels, dots_mvcur,
129 inch_wide, inchs, key_name, key_names, savescreen,
130 savescreen.sh test_arrays, test_get_wstr, test_getstr,
131 test_instr, test_inwstr and test_opaque.
133 <li>add <code>adacurses-config</code> to the Ada95 install.
135 <li>modify tic <code>-f</code> option to format spaces as
136 <code>\s</code> to prevent them from being lost when that
137 is read back in unformatted strings.
139 <li>The <code>tack</code> program is now distributed separately
143 <li>terminal database
147 <li><code>Eterm-256color</code>,
148 <code>Eterm-88color</code> and
149 <code>rxvt-88color</code>
150 <li><code>aterm</code>
151 <li><code>konsole-256color</code>
152 <li><code>mrxvt</code>
153 <li><code>screen.mlterm</code>
154 <li><code>screen.rxvt</code>
155 <li><code>teraterm4.59</code> is now the primary primary
156 teraterm entry, renamed original to
157 <code>teraterm2.3</code>
158 <li><code>9term</code> terminal
159 <li>Newbury Data entries
161 <li>updated/improved entries:
163 <li><code>gnome</code> to version 2.22.3
164 <li><code>h19</code>, <code>z100</code>
165 <li><code>konsole</code> to version 1.6.6
166 <li><code>mlterm</code>, <code>mlterm+pcfkeys</code>
167 <li><code>xterm</code>, and building-blocks for function-keys
168 to <a href="http://invisible-island.net/xterm/xterm.log.html#xterm_230">xterm patch #230</a>.
174 <li>add logic to tic for cancelling strings in user-defined
176 (this is <em>needed</em> for
177 current <code>konsole</code> terminfo entry).
179 <li>modify <code>mk-1st.awk</code> so the generated makefile rules for
180 linking or installing shared libraries do not first remove the
181 library, in case it is in use, e.g., <code>libncurses.so</code> by
182 <code>/bin/sh</code>.
184 <li>correct check for notimeout() in wgetch().
186 <li>fix a sign-extension bug in infocmp's repair_acsc() function.
188 <li>change winnstr() to stop at the end of the line.
190 <li>make Ada95 demo_panels() example work.
192 <li>fix for adding a non-spacing character at the beginning of a line.
194 <li>fill in extended-color pair to make colors work
195 for wide-characters using extended-colors.
197 <li>improve refresh of window on top of multi-column characters,
198 taking into account split characters on left/right window
201 <li>modify <code>win_wchnstr()</code> to ensure that only a base cell
202 is returned for each multi-column character.
204 <li>improve <code>waddch()</code> and <code>winsch()</code> handling of
205 EILSEQ from <code>mbrtowc()</code> by using <code>unctrl()</code>
206 to display illegal bytes rather than trying to append further bytes
207 to make up a valid sequence.
209 <li>restore <code>curs_set()</code> state after
210 <code>endwin()</code>/<code>refresh()</code>
212 <li>modify <code>keyname()</code> to use "^X" form only if
213 <code>meta()</code> has been called, or if <code>keyname()</code>
214 is called without initializing curses, e.g., via
215 <code>initscr()</code> or <code>newterm()</code>.
217 <li>modify <code>unctrl()</code> to check codes in 128-255 range versus
218 <code>isprint()</code>.
219 If they are not printable, and locale was set, use a "M-" or "~"
222 <li>improve <code>resizeterm()</code> by moving ripped-off lines, and
223 repainting the soft-keys.
225 <li>modify form library to accept control characters such as newline
226 in set_field_buffer(), which is compatible with Solaris.
228 <li>use <code>NCURSES_MOUSE_MASK()</code> in definition of
229 <code>BUTTON_RELEASE()</code>, etc., to make those work properly
230 with the <code>--enable-ext-mouse</code> configuration
232 <li>correct some functions in Ada95 binding which were using return
233 value from C where none was returned.
235 <li>reviewed/fixed issues reported by Coverity and Klocwork tools.
240 <li>configure script:
245 <dt>--disable-big-strings
246 <dd>control whether static string tables are generated as single
247 large strings (to improve startup performance), or as array
248 of individual strings.
251 <dd>control whether shared libraries are relinked (during install)
252 when rpath is enabled.
254 <dt>--disable-tic-depends
255 <dd>make explicit whether tic library depends on ncurses/ncursesw
258 <dt>--enable-mixed-case
259 <dd>override the configure script's check if the filesystem
260 supports mixed-case filenames.
261 This allows one to control how the terminal database
262 maps to the filesystem.
263 For filesystems that do not support mixed-case, the library
264 uses generate 2-character (hexadecimal) codes for the
265 lower-level of the filesystem terminfo database
267 <dt>--enable-reentrant
268 <dd>builds a different flavor of the ncurses library (ncursest)
269 which improves reentrant use of the
270 library by reducing global and static variables
271 (see the "--with-pthread" option for the threaded support).
273 <dt>--enable-weak-symbols
274 <dd>use weak-symbols for linking to the POSIX thread library,
275 and use the same soname for the ncurses shared library
276 as the normal library (caveat: the ABI is for the threaded
277 library, which makes global data accessed via functions).
280 <dd>build with the POSIX thread library (tested with AIX,
281 Linux, FreeBSD, OpenBSD, HPUX, IRIX64, Solaris, Tru64).
284 <dd>build/install the tic-support functions in a separate library
288 <li>improved options:
291 <dt>--enable-ext-colors
292 <dd>requires the wide-character configuration.
295 <dd>ignore option value "unsigned" is always added to
296 the type in curses.h; do the same for --with-mmask-t.
299 <dd>build-fix for redefinition of <code>strndup</code>.
302 <dd>accepts a parameter which is the install-prefix of a given
306 <dd>the $LIBS environment variable overrides the search for the db
309 <dt>--without-hashed-db
310 <dd>assumed when "--disable-database" is used.
316 <li>other configure/build issues:
318 <li>build-fixes for LynxOS
319 <li>modify shared-library rules to allow FreeBSD 3.x to use rpath.
320 <li>build-fix for FreeBSD "contemporary" TTY interface.
321 <li>build-fixes for AIX with libtool.
322 <li>build-fixes for Darwin and libtool.
323 <li>modify BeOS-specific ifdef's to build on Haiku.
324 <li>corrected gcc options for building shared libraries on Solaris
326 <li>change shared-library configuration for OpenBSD, make rpath work.
327 <li>build-fixes for using libutf8, e.g., on OpenBSD 3.7
328 <li>add "-e" option in ncurses/Makefile.in when generating source-files
329 to force earlier exit if the build environment fails unexpectedly.
330 <li>add support for shared libraries for QNX.
331 <li>change delimiter in <code>MKlib_gen.sh</code> from '%' to '@', to
332 avoid substitution by IBM xlc to '#' as part of its extensions to
338 <li>rewrite wrapper for <code>wcrtomb()</code>, making it work on
339 Solaris. This is used in the form library to determine the length
340 of the buffer needed by <code>field_buffer</code>.
341 <li>add/use configure script macro CF_SIG_ATOMIC_T, use the corresponding
342 type for data manipulated by signal handlers.
343 <li>set locale in misc/ncurses-config.in since it uses a range
344 <li>disable GPM mouse support when $TERM does not happen to contain
345 "linux", since Gpm_Open() no longer limits its assertion to terminals
346 that it might handle, e.g., within "screen" in xterm.
347 <li>reset mouse file-descriptor when unloading GPM library.
352 <li>update test programs to build/work with various UNIX curses for
357 <H1>Features of Ncurses</H1>
359 The ncurses package is fully compatible with SVr4 (System V Release 4) curses:
362 <LI>All 257 of the SVr4 calls have been implemented (and are documented).
363 <LI>Full support for SVr4 curses features including keyboard mapping, color,
364 forms-drawing with ACS characters, and automatic recognition of keypad
366 <LI>An emulation of the SVr4 panels library, supporting
367 a stack of windows with backing store, is included.
368 <LI>An emulation of the SVr4 menus library, supporting
369 a uniform but flexible interface for menu programming, is included.
370 <LI>An emulation of the SVr4 form library, supporting
371 data collection through on-screen forms, is included.
372 <LI>Binary terminfo entries generated by the ncurses tic(1) implementation
373 are bit-for-bit-compatible with the entry format SVr4 curses uses.
374 <LI>The utilities have options to allow you to filter terminfo
375 entries for use with less capable <STRONG>curses</STRONG>/<STRONG>terminfo</STRONG>
376 versions such as the HP/UX and AIX ports.</UL>
378 The ncurses package also has many useful extensions over SVr4:
381 <LI>The API is 8-bit clean and base-level conformant with the X/OPEN curses
382 specification, XSI curses (that is, it implements all BASE level features,
383 and most EXTENDED features).
384 It includes many function calls not supported under SVr4 curses
385 (but portability of all
386 calls is documented so you can use the SVr4 subset only).
387 <LI>Unlike SVr3 curses, ncurses can write to the rightmost-bottommost corner
388 of the screen if your terminal has an insert-character capability.
389 <LI>Ada95 and C++ bindings.
390 <LI>Support for mouse event reporting with X Window xterm
391 and FreeBSD and OS/2 console windows.
392 <LI>Extended mouse support via Alessandro Rubini's gpm package.
393 <LI>The function <CODE>wresize()</CODE> allows you to resize windows, preserving
395 <LI>The function <CODE>use_default_colors()</CODE> allows you to
396 use the terminal's default colors for the default color pair,
397 achieving the effect of transparent colors.
398 <LI>The functions <CODE>keyok()</CODE>
399 and <CODE>define_key()</CODE> allow
400 you to better control the use of function keys,
401 e.g., disabling the ncurses KEY_MOUSE,
402 or by defining more than one control sequence to map to a given key code.
403 <LI>Support for 256-color terminals, such as modern xterm, when configured
404 using the <code>--enable-ext-colors</code> option.
405 <LI>Support for 16-color terminals, such as aixterm and modern xterm.
406 <LI>Better cursor-movement optimization. The package now features a
407 cursor-local-movement computation more efficient than either BSD's
409 <LI>Super hardware scrolling support. The screen-update code incorporates
410 a novel, simple, and cheap algorithm that enables it to make optimal
411 use of hardware scrolling, line-insertion, and line-deletion
412 for screen-line movements. This algorithm is more powerful than
413 the 4.4BSD curses quickch() routine.
414 <LI>Real support for terminals with the magic-cookie glitch. The
415 screen-update code will refrain from drawing a highlight if the magic-
416 cookie unattributed spaces required just before the beginning and
417 after the end would step on a non-space character. It will
418 automatically shift highlight boundaries when doing so would make it
419 possible to draw the highlight without changing the visual appearance
421 <LI>It is possible to generate the library with a list of pre-loaded
422 fallback entries linked to it so that it can serve those terminal types even
423 when no terminfo tree or termcap file is accessible (this may be useful
424 for support of screen-oriented programs that must run in single-user mode).
425 <LI>The tic(1)/captoinfo utility provided with ncurses has the
426 ability to translate many termcaps from the XENIX, IBM and
427 AT&T extension sets.
428 <LI>A BSD-like tset(1) utility is provided.
429 <LI>The ncurses library and utilities will automatically read terminfo
430 entries from $HOME/.terminfo if it exists, and compile to that directory
431 if it exists and the user has no write access to the system directory.
432 This feature makes it easier for users to have personal terminfo entries
433 without giving up access to the system terminfo directory.
434 <LI>You may specify a path of directories to search for compiled
435 descriptions with the environment variable TERMINFO_DIRS (this
436 generalizes the feature provided by TERMINFO under stock System V.)
437 <LI>In terminfo source files, use capabilities may refer not just to
438 other entries in the same source file (as in System V) but also to
439 compiled entries in either the system terminfo directory or the user's
440 $HOME/.terminfo directory.
441 <LI>A script (<STRONG>capconvert</STRONG>) is provided to help BSD users
442 transition from termcap to terminfo. It gathers the information in a
443 TERMCAP environment variable and/or a ~/.termcap local entries file
444 and converts it to an equivalent local terminfo tree under $HOME/.terminfo.
445 <LI>Automatic fallback to the /etc/termcap file can be compiled in
446 when it is not possible to build a terminfo tree. This feature is neither
447 fast nor cheap, you don't want to use it unless you have to,
449 <LI>The table-of-entries utility <STRONG>toe</STRONG> makes it easy for users to
450 see exactly what terminal types are available on the system.
451 <LI>The library meets the XSI requirement that every macro entry
452 point have a corresponding function which may be linked (and will be
453 prototype-checked) if the macro definition is disabled with
455 <LI>An HTML "Introduction to Programming with NCURSES" document provides
456 a narrative introduction to the curses programming interface.
459 <H1>State of the Package</H1>
461 Numerous bugs present in earlier versions have been fixed; the
462 library is far more reliable than it used to be. Bounds checking in many
463 `dangerous' entry points has been improved. The code is now type-safe
464 according to gcc -Wall. The library has been checked for malloc leaks and
465 arena corruption by the Purify memory-allocation tester.<P>
467 The ncurses code has been tested with a wide variety of applications
468 including (versions starting with those noted):
471 <DD> Curses Development Kit
473 <A HREF="http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</A>
475 <A HREF="http://www.vexus.ca/products/CDK/">http://www.vexus.ca/products/CDK/</a>
477 <DD> directory-editor
479 <A HREF="http://invisible-island.net/ded/">http://invisible-island.net/ded/</A>
481 <DD> the underlying application used in Slackware's setup, and the basis
482 for similar applications on GNU/Linux.
484 <A HREF="http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</A>
486 <DD> the character-screen WWW browser
488 <A HREF="http://lynx.isc.org/release/">http://lynx.isc.org/release/</A>
489 <DT> Midnight Commander
492 <A HREF="http://www.ibiblio.org/mc/">http://www.ibiblio.org/mc/</A>
496 <A HREF="http://www.mutt.org/">http://www.mutt.org/</A>
498 <DD> file-transfer utility
500 <A HREF="http://www.ncftp.com/">http://www.ncftp.com/</A>
502 <DD> New vi versions 1.50 are able to use ncurses versions 1.9.7 and later.
504 <A HREF="http://www.bostic.com/vi/">http://www.bostic.com/vi/</A>
507 <DD> Lynx-like info browser.
508 <A HREF="https://alioth.debian.org/projects/pinfo/">https://alioth.debian.org/projects/pinfo/</A>
510 <DD> newsreader, supporting color, MIME
511 <A HREF="http://www.tin.org/">http://www.tin.org/</A>
513 as well as some that use ncurses for the terminfo support alone:
516 <DD> terminal emulator
518 <A HREF="http://alioth.debian.org/projects/minicom/">
519 http://alioth.debian.org/projects/minicom/</A>
523 <A HREF="http://invisible-island.net/vile/">http://invisible-island.net/vile/</A>
527 The ncurses distribution includes a selection of test programs (including
530 <H2>Who's Who and What's What</H2>
533 started it from a previous package pcurses, written by Pavel Curtis.
535 continued development.
536 Jürgen Pfeifer wrote most of the form and menu libraries.
537 Ongoing work is being done by
538 <A HREF="mailto:dickey@invisible-island.net">Thomas Dickey</A>.
540 acts as the maintainer for the Free Software Foundation,
541 which holds the copyright on ncurses.
542 Contact the current maintainers at
543 <A HREF="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</A>.
546 To join the ncurses mailing list, please write email to
547 <CODE>bug-ncurses-request@gnu.org</CODE> containing the line:
549 subscribe <name>@<host.domain>
552 This list is open to anyone interested in helping with the development and
553 testing of this package.<P>
555 Beta versions of ncurses and patches to the current release are made available at
556 <A HREF="ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</A> .
558 <H2>Future Plans</H2>
560 <LI>Extended-level XPG4 conformance, with internationalization support.
561 <LI>Ports to more systems, including DOS and Windows.
563 We need people to help with these projects. If you are interested in working
564 on them, please join the ncurses list.
566 <H2>Other Related Resources</H2>
568 The distribution provides a newer version of the terminfo-format
569 terminal description file once maintained by
570 <A HREF="http://www.catb.org/~esr/terminfo/">Eric Raymond</A> .
571 Unlike the older version, the termcap and terminfo data are provided
572 in the same file, and provides several user-definable extensions
573 beyond the X/Open specification.<P>
575 You can find lots of information on terminal-related topics
576 not covered in the terminfo file at
577 <A HREF="http://www.cs.utk.edu/~shuford/terminal_index.html">Richard Shuford's
582 # The following sets edit modes for GNU EMACS
585 # case-fold-search:nil