1<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN"> 2<!-- 3 $Id: announce.html.in,v 1.70 2008/11/02 01:03:05 tom Exp $ 4 **************************************************************************** 5 * Copyright (c) 1998-2006,2008 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<HTML> 33<HEAD> 34<TITLE>Announcing ncurses @VERSION@</TITLE> 35<link rev=made href="mailto:bug-ncurses@gnu.org"> 36<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 37</HEAD> 38<BODY> 39 40<H1>Announcing ncurses @VERSION@</H1> 41 42The ncurses (new curses) library is a free software emulation of 43curses in System V Release 4.0, and more. It uses terminfo format, 44supports pads and color 45and multiple highlights and forms characters and function-key mapping, 46and has all the other SYSV-curses enhancements over BSD curses.<P> 47 48In mid-June 1995, the maintainer of 4.4BSD curses declared that he 49considered 4.4BSD curses obsolete, and encouraged the keepers of 50Unix releases such as BSD/OS, FreeBSD and NetBSD to switch over to 51ncurses.<P> 52 53The ncurses code was developed under GNU/Linux. 54It has been in use for some time with OpenBSD as the system curses library, 55and on FreeBSD and NetBSD as an external package. 56It should port easily to any ANSI/POSIX-conforming UNIX. 57It has even been ported to OS/2 Warp!<P> 58 59The distribution includes the library and support utilities, including a 60terminfo compiler tic(1), a decompiler infocmp(1), clear(1), tput(1), tset(1), 61and a termcap conversion tool captoinfo(1). Full manual pages are provided for 62the library and tools.<P> 63 64The ncurses distribution is available via anonymous FTP at 65the 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> . 69 70<H1>Release Notes</H1> 71 72This release is designed to be upward compatible from ncurses 5.0 through 5.6; 73very few applications will require recompilation, depending on the platform. 74These are the highlights from the change-log since ncurses 5.6 release. 75<p> 76Interface changes: 77<ul> 78 <li>generate linkable stubs for some macros: 79 <br> 80 getattrs 81 82</ul> 83New features and improvements: 84<ul> 85 <li>library 86 <ul> 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). 93 94 <li>add <code>NCURSES_OPAQUE</code> symbol to curses.h, will 95 use to make structs opaque in selected configurations. 96 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 100 are declared. 101 102 <li>add wresize() to C++ binding 103 104 <li>eliminate fixed-buffer vsprintf() calls in C++ binding. 105 106 <li>add several functions to C++ binding which wrap C functions 107 that pass a WINDOW* parameter. 108 109 <li>adapt mouse-handling code from menu library in form-library 110 111 <li>improve tracing for form library, showing created forms, 112 fields, etc. 113 114 <li>make $NCURSES_NO_PADDING feature work for termcap interface . 115 116 <li>add check to trace-file open, if the given name is a 117 directory, add ".log" to the name and try again. 118 119 <li>several new manpages: curs_legacy.3x, curs_memleaks.3x, 120 curs_opaque.3x and curs_threads.3x 121 </ul> 122 123 <li>programs: 124 <ul> 125 <li>modified three test-programs to demonstrate the threading 126 support in this version: ditto, rain, worm. 127 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. 132 133 <li>add <code>adacurses-config</code> to the Ada95 install. 134 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. 138 139 <li>The <code>tack</code> program is now distributed separately 140 from ncurses. 141 </ul> 142 143 <li>terminal database 144 <ul> 145 <li>added entries: 146 <ul> 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 160 </ul> 161 <li>updated/improved entries: 162 <ul> 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>. 169 </ul> 170 </ul> 171</ul> 172Major bug fixes: 173<ul> 174 <li>add logic to tic for cancelling strings in user-defined 175 capabilities 176 (this is <em>needed</em> for 177 current <code>konsole</code> terminfo entry). 178 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>. 183 184 <li>correct check for notimeout() in wgetch(). 185 186 <li>fix a sign-extension bug in infocmp's repair_acsc() function. 187 188 <li>change winnstr() to stop at the end of the line. 189 190 <li>make Ada95 demo_panels() example work. 191 192 <li>fix for adding a non-spacing character at the beginning of a line. 193 194 <li>fill in extended-color pair to make colors work 195 for wide-characters using extended-colors. 196 197 <li>improve refresh of window on top of multi-column characters, 198 taking into account split characters on left/right window 199 boundaries. 200 201 <li>modify <code>win_wchnstr()</code> to ensure that only a base cell 202 is returned for each multi-column character. 203 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. 208 209 <li>restore <code>curs_set()</code> state after 210 <code>endwin()</code>/<code>refresh()</code> 211 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>. 216 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 "~" 220 sequence. 221 222 <li>improve <code>resizeterm()</code> by moving ripped-off lines, and 223 repainting the soft-keys. 224 225 <li>modify form library to accept control characters such as newline 226 in set_field_buffer(), which is compatible with Solaris. 227 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 231 232 <li>correct some functions in Ada95 binding which were using return 233 value from C where none was returned. 234 235 <li>reviewed/fixed issues reported by Coverity and Klocwork tools. 236</ul> 237 238Portability: 239<ul> 240 <li>configure script: 241 <ul> 242 <li>new options: 243 <dl> 244 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. 249 250 <dt>--disable-relink 251 <dd>control whether shared libraries are relinked (during install) 252 when rpath is enabled. 253 254 <dt>--disable-tic-depends 255 <dd>make explicit whether tic library depends on ncurses/ncursesw 256 library. 257 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 266 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). 272 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). 278 279 <dt>--with-pthread 280 <dd>build with the POSIX thread library (tested with AIX, 281 Linux, FreeBSD, OpenBSD, HPUX, IRIX64, Solaris, Tru64). 282 283 <dt>--with-ticlib 284 <dd>build/install the tic-support functions in a separate library 285 286 </dl> 287 288 <li>improved options: 289 <dl> 290 291 <dt>--enable-ext-colors 292 <dd>requires the wide-character configuration. 293 294 <dt>--with-chtype 295 <dd>ignore option value "unsigned" is always added to 296 the type in curses.h; do the same for --with-mmask-t. 297 298 <dt>--with-dmalloc 299 <dd>build-fix for redefinition of <code>strndup</code>. 300 301 <dt>--with-hashed-db 302 <dd>accepts a parameter which is the install-prefix of a given 303 Berkeley Database. 304 305 <dt>--with-hashed-db 306 <dd>the $LIBS environment variable overrides the search for the db 307 library. 308 309 <dt>--without-hashed-db 310 <dd>assumed when "--disable-database" is used. 311 312 </dl> 313 314 </ul> 315 316 <li>other configure/build issues: 317 <ul> 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 325 and IRIX64. 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 333 digraphs. 334 </ul> 335 336 <li>library: 337 <ul> 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. 348 </ul> 349 350 <li>test programs: 351 <ul> 352 <li>update test programs to build/work with various UNIX curses for 353 comparisons. 354 </ul> 355</ul> 356 357<H1>Features of Ncurses</H1> 358 359The ncurses package is fully compatible with SVr4 (System V Release 4) curses: 360 361<UL> 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, 364forms-drawing with ACS characters, and automatic recognition of keypad 365and function keys. 366<LI>An emulation of the SVr4 panels library, supporting 367a stack of windows with backing store, is included. 368<LI>An emulation of the SVr4 menus library, supporting 369a uniform but flexible interface for menu programming, is included. 370<LI>An emulation of the SVr4 form library, supporting 371data collection through on-screen forms, is included. 372<LI>Binary terminfo entries generated by the ncurses tic(1) implementation 373are bit-for-bit-compatible with the entry format SVr4 curses uses. 374<LI>The utilities have options to allow you to filter terminfo 375entries for use with less capable <STRONG>curses</STRONG>/<STRONG>terminfo</STRONG> 376versions such as the HP/UX and AIX ports.</UL> 377 378The ncurses package also has many useful extensions over SVr4: 379 380<UL> 381<LI>The API is 8-bit clean and base-level conformant with the X/OPEN curses 382specification, XSI curses (that is, it implements all BASE level features, 383and most EXTENDED features). 384It includes many function calls not supported under SVr4 curses 385(but portability of all 386calls is documented so you can use the SVr4 subset only). 387<LI>Unlike SVr3 curses, ncurses can write to the rightmost-bottommost corner 388of 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 391and 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 394their data. 395<LI>The function <CODE>use_default_colors()</CODE> allows you to 396use the terminal's default colors for the default color pair, 397achieving the effect of transparent colors. 398<LI>The functions <CODE>keyok()</CODE> 399and <CODE>define_key()</CODE> allow 400you to better control the use of function keys, 401e.g., disabling the ncurses KEY_MOUSE, 402or 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 404using 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 407cursor-local-movement computation more efficient than either BSD's 408or System V's. 409<LI>Super hardware scrolling support. The screen-update code incorporates 410a novel, simple, and cheap algorithm that enables it to make optimal 411use of hardware scrolling, line-insertion, and line-deletion 412for screen-line movements. This algorithm is more powerful than 413the 4.4BSD curses quickch() routine. 414<LI>Real support for terminals with the magic-cookie glitch. The 415screen-update code will refrain from drawing a highlight if the magic- 416cookie unattributed spaces required just before the beginning and 417after the end would step on a non-space character. It will 418automatically shift highlight boundaries when doing so would make it 419possible to draw the highlight without changing the visual appearance 420of the screen. 421<LI>It is possible to generate the library with a list of pre-loaded 422fallback entries linked to it so that it can serve those terminal types even 423when no terminfo tree or termcap file is accessible (this may be useful 424for support of screen-oriented programs that must run in single-user mode). 425<LI>The tic(1)/captoinfo utility provided with ncurses has the 426ability to translate many termcaps from the XENIX, IBM and 427AT&T extension sets. 428<LI>A BSD-like tset(1) utility is provided. 429<LI>The ncurses library and utilities will automatically read terminfo 430entries from $HOME/.terminfo if it exists, and compile to that directory 431if it exists and the user has no write access to the system directory. 432This feature makes it easier for users to have personal terminfo entries 433without giving up access to the system terminfo directory. 434<LI>You may specify a path of directories to search for compiled 435descriptions with the environment variable TERMINFO_DIRS (this 436generalizes the feature provided by TERMINFO under stock System V.) 437<LI>In terminfo source files, use capabilities may refer not just to 438other entries in the same source file (as in System V) but also to 439compiled 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 442transition from termcap to terminfo. It gathers the information in a 443TERMCAP environment variable and/or a ~/.termcap local entries file 444and converts it to an equivalent local terminfo tree under $HOME/.terminfo. 445<LI>Automatic fallback to the /etc/termcap file can be compiled in 446when it is not possible to build a terminfo tree. This feature is neither 447fast nor cheap, you don't want to use it unless you have to, 448but it's there. 449<LI>The table-of-entries utility <STRONG>toe</STRONG> makes it easy for users to 450see exactly what terminal types are available on the system. 451<LI>The library meets the XSI requirement that every macro entry 452point have a corresponding function which may be linked (and will be 453prototype-checked) if the macro definition is disabled with 454<CODE>#undef</CODE>. 455<LI>An HTML "Introduction to Programming with NCURSES" document provides 456a narrative introduction to the curses programming interface. 457</UL> 458 459<H1>State of the Package</H1> 460 461Numerous bugs present in earlier versions have been fixed; the 462library 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 464according to gcc -Wall. The library has been checked for malloc leaks and 465arena corruption by the Purify memory-allocation tester.<P> 466 467The ncurses code has been tested with a wide variety of applications 468including (versions starting with those noted): 469<DL> 470<DT> cdk 471<DD> Curses Development Kit 472<br> 473<A HREF="http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</A> 474<br> 475<A HREF="http://www.vexus.ca/products/CDK/">http://www.vexus.ca/products/CDK/</a> 476<DT> ded 477<DD> directory-editor 478<br> 479<A HREF="http://invisible-island.net/ded/">http://invisible-island.net/ded/</A> 480<DT> dialog 481<DD> the underlying application used in Slackware's setup, and the basis 482for similar applications on GNU/Linux. 483<br> 484<A HREF="http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</A> 485<DT> lynx 486<DD> the character-screen WWW browser 487<br> 488<A HREF="http://lynx.isc.org/release/">http://lynx.isc.org/release/</A> 489<DT> Midnight Commander 490<DD> file manager 491<br> 492<A HREF="http://www.ibiblio.org/mc/">http://www.ibiblio.org/mc/</A> 493<DT> mutt 494<DD> mail utility 495<br> 496<A HREF="http://www.mutt.org/">http://www.mutt.org/</A> 497<DT> ncftp 498<DD> file-transfer utility 499<br> 500<A HREF="http://www.ncftp.com/">http://www.ncftp.com/</A> 501<DT> nvi 502<DD> New vi versions 1.50 are able to use ncurses versions 1.9.7 and later. 503<br> 504<A HREF="http://www.bostic.com/vi/">http://www.bostic.com/vi/</A> 505<br> 506<DT> pinfo 507<DD> Lynx-like info browser. 508<A HREF="https://alioth.debian.org/projects/pinfo/">https://alioth.debian.org/projects/pinfo/</A> 509<DT> tin 510<DD> newsreader, supporting color, MIME 511<A HREF="http://www.tin.org/">http://www.tin.org/</A> 512</DL> 513as well as some that use ncurses for the terminfo support alone: 514<DL> 515<DT> minicom 516<DD> terminal emulator 517<br> 518<A HREF="http://alioth.debian.org/projects/minicom/"> 519http://alioth.debian.org/projects/minicom/</A> 520<DT> vile 521<DD> vi-like-emacs 522<br> 523<A HREF="http://invisible-island.net/vile/">http://invisible-island.net/vile/</A> 524</DL> 525<P> 526 527The ncurses distribution includes a selection of test programs (including 528a few games). 529 530<H2>Who's Who and What's What</H2> 531 532Zeyd Ben-Halim 533started it from a previous package pcurses, written by Pavel Curtis. 534Eric S. Raymond 535continued development. 536Jürgen Pfeifer wrote most of the form and menu libraries. 537Ongoing work is being done by 538<A HREF="mailto:dickey@invisible-island.net">Thomas Dickey</A>. 539Thomas Dickey 540acts as the maintainer for the Free Software Foundation, 541which holds the copyright on ncurses. 542Contact the current maintainers at 543<A HREF="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</A>. 544<P> 545 546To join the ncurses mailing list, please write email to 547<CODE>bug-ncurses-request@gnu.org</CODE> containing the line: 548<PRE> 549 subscribe <name>@<host.domain> 550</PRE> 551 552This list is open to anyone interested in helping with the development and 553testing of this package.<P> 554 555Beta 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> . 557 558<H2>Future Plans</H2> 559<UL> 560<LI>Extended-level XPG4 conformance, with internationalization support. 561<LI>Ports to more systems, including DOS and Windows. 562</UL> 563We need people to help with these projects. If you are interested in working 564on them, please join the ncurses list. 565 566<H2>Other Related Resources</H2> 567 568The distribution provides a newer version of the terminfo-format 569terminal description file once maintained by 570<A HREF="http://www.catb.org/~esr/terminfo/">Eric Raymond</A> . 571Unlike the older version, the termcap and terminfo data are provided 572in the same file, and provides several user-definable extensions 573beyond the X/Open specification.<P> 574 575You can find lots of information on terminal-related topics 576not covered in the terminfo file at 577<A HREF="http://www.cs.utk.edu/~shuford/terminal_index.html">Richard Shuford's 578archive</A> . 579</BODY> 580</HTML> 581<!-- 582# The following sets edit modes for GNU EMACS 583# Local Variables: 584# mode:html 585# case-fold-search:nil 586# fill-column:70 587# End: 588--> 589