ANNOUNCE revision 50276
1227825Stheraven 2227825Stheraven Announcing ncurses 5.0 3227825Stheraven 4227825Stheraven The ncurses (new curses) library is a free software emulation of 5227825Stheraven curses in System V Release 4.0, and more. It uses terminfo format, 6227825Stheraven supports pads and color and multiple highlights and forms characters 7227825Stheraven and function-key mapping, and has all the other SYSV-curses 8227825Stheraven enhancements over BSD curses. 9227825Stheraven 10227825Stheraven In mid-June 1995, the maintainer of 4.4BSD curses declared that he 11227825Stheraven considered 4.4BSD curses obsolete, and is encouraging the keepers of 12227825Stheraven Unix releases such as BSD/OS, freeBSD and netBSD to switch over to 13227825Stheraven ncurses. 14227825Stheraven 15227825Stheraven The ncurses code was developed under GNU/Linux. It should port easily 16227825Stheraven to any ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 17227825Stheraven Warp! 18227825Stheraven 19227825Stheraven The distribution includes the library and support utilities, including 20227825Stheraven a terminfo compiler tic(1), a decompiler infocmp(1), clear(1), 21227825Stheraven tput(1), tset(1), and a termcap conversion tool captoinfo(1). Full 22227825Stheraven manual pages are provided for the library and tools. 23227825Stheraven 24227825Stheraven The ncurses distribution is available via anonymous FTP at the GNU 25227825Stheraven distribution site [1]ftp://ftp.gnu.org/pub/gnu. It is also available 26227825Stheraven at [2]ftp://ftp.clark.net/pub/dickey/ncurses. 27227825Stheraven 28227825Stheraven Release Notes 29227825Stheraven 30227825Stheraven We decided to release ncurses as a new whole number release (5.0) 31227825Stheraven because it incorporates several interface changes, including some that 32227825Stheraven would invalidate existing shared libraries. These are the highlights 33227825Stheraven from the change-log since ncurses 4.2 release. 34227825Stheraven 35227825Stheraven Interface changes: 36227825Stheraven * The principal source of changes to the interface comes from the 37227825Stheraven release of X/Open Curses in 1997. Earlier versions of ncurses (4.0 38227825Stheraven and before) were based on a draft version of the specification. 39227825Stheraven The release version adds parameters to some functions to support 40227825Stheraven the evolving internationalization of curses. These summarize the 41227825Stheraven impact: 42227825Stheraven + modified several prototypes to correspond with 1997 version 43227825Stheraven of X/Open Curses (affects ABI since developers have used 44227825Stheraven attr_get). 45227825Stheraven + corrected prototypes for slk_* functions, using chtype rather 46227825Stheraven than attr_t. 47227825Stheraven + the slk_attr_{set,off,on} functions need an additional void* 48227825Stheraven parameter according to XSI. 49227825Stheraven + correct macros for wattr_set, wattr_get, separate wattrset 50227825Stheraven macro from these to preserve behavior that allows attributes 51227825Stheraven to be combined with color pair numbers. 52227825Stheraven + reviewed/updated curses.h, term.h against X/Open Curses Issue 53227825Stheraven 4 Version 2. This includes making some parameters 54227825Stheraven NCURSES_CONST rather than const, e.g., in termcap.h. 55227825Stheraven + reviewed/corrected macros in curses.h as per XSI document. 56227825Stheraven + add set_a_attributes and set_pglen_inch to terminfo 57227825Stheraven structure, as per XSI and Solaris 2.5. 58227825Stheraven * The newest version of the X/Open Curses is implemented on Solaris 59227825Stheraven and other vendor's systems. It adds new features to the terminfo 60227825Stheraven descriptions: 61227825Stheraven + implement tparm %l format. 62227825Stheraven + implement tparm printf-style width and precision for %s, %d, 63227825Stheraven %x, %o as per XSI. 64227825Stheraven * We made additional changes to reduce impact by future interface 65227825Stheraven changes: 66227825Stheraven + change key_names[] array to static since it is not part of 67227825Stheraven the curses interface. 68227825Stheraven + move macro winch to a function, to hide details of struct 69227825Stheraven ldat 70227825Stheraven * modify configure script to embed ABI in shared libraries for HP-UX 71227825Stheraven 10.x (detailed request by Tim Mooney). 72227825Stheraven * modify configuration of shared libraries on Digital Unix so that 73227825Stheraven versioning is embedded in the library, rather than implied by 74227825Stheraven links (patch by Tim Mooney). 75227825Stheraven 76227825Stheraven New features: 77227825Stheraven * enable sigwinch handler by default. 78227825Stheraven * turn on hashmap scrolling code by default 79227825Stheraven * improved support for termcap applications 80227825Stheraven + modify tput to accept termcap names as an alternative to 81227825Stheraven terminfo names. 82227825Stheraven + provide support for termcap PC variable by copying it from 83227825Stheraven terminfo data and using it as the padding character in tputs. 84227825Stheraven + provide support for termcap ospeed variable by copying it 85227825Stheraven from the internal cur_term member, and using ospeed as the 86227825Stheraven baudrate reference for the delay_output and tputs functions. 87227825Stheraven + change name-comparisons in lib_termcap to compare no more 88227825Stheraven than 2 characters. 89227825Stheraven + add configure option --enable-tcap-names, which essentially 90227825Stheraven allows users to define new capabilities as in termcap. 91227825Stheraven * add mouse support to ncurses menus. 92227825Stheraven * add mouse and dll support for OS/2 EMX 93227825Stheraven * modify terminfo parsing to accept octal and hexadecimal constants 94227825Stheraven * add configure option --enable-no-padding, to allow environment 95227825Stheraven variable $NCURSES_NO_PADDING to eliminate non-mandatory padding, 96227825Stheraven thereby making terminal emulators (e.g., for vt100) a little more 97227825Stheraven efficient. 98227825Stheraven * modify lib_color.c to eliminate dependency on orig_colors and 99227825Stheraven orig_pair, since SVr4 curses does not require these either, but 100227825Stheraven uses them when they are available. 101227825Stheraven * add -f option to infocmp and tic, which formats the terminfo 102227825Stheraven if/then/else/endif so that they are readable (with newlines and 103227825Stheraven tabs). 104227825Stheraven * modify tic to compile into %'char' form in preference to 105227825Stheraven %{number}, since that is a little more efficient. 106227825Stheraven 107227825Stheraven Major bug fixes: 108227825Stheraven * modify lib_tstp.c to block SIGTTOU when handling SIGTSTP, fixes a 109227825Stheraven problem where ncurses applications which were run via a shell 110227825Stheraven script would hang when given a ^Z. Also, check if the terminal's 111227825Stheraven process group is consistent, i.e., a shell has not taken ownership 112227825Stheraven of it, before deciding to save the current terminal settings in 113227825Stheraven the SIGTSTP handler. 114227825Stheraven * suppress sc/rc capabilities from terminal description if they 115227825Stheraven appear in smcup/rmcup. This affects only scrolling optimization, 116227825Stheraven to fix a problem reported by several people with xterm's alternate 117227825Stheraven screen, though the problem is more general. 118227825Stheraven * modify relative_move and tputs to avoid an interaction with the 119227825Stheraven BSD-style padding. The relative_move function could produce a 120227825Stheraven string to replace on the screen which began with a numeric 121227825Stheraven character, which was then interpreted by tputs as padding. 122227825Stheraven * modify setupterm so that cancelled strings are treated the same as 123227825Stheraven absent strings, cancelled and absent booleans false (does not 124227825Stheraven affect tic, infocmp). 125227825Stheraven * modify lib_vidattr.c to allow for terminal types (e.g., 126227825Stheraven xterm-color) which may reset all attributes in the 'op' 127227825Stheraven capability, so that colors are set before turning on bold and 128227825Stheraven other attributes, but still after turning attributes off. 129227825Stheraven * use 'access()' to check if ncurses library should be permitted to 130227825Stheraven open or modify files with fopen/open/link/unlink/remove calls, in 131227825Stheraven case the calling application is running in setuid mode. 132227825Stheraven * correction to doupdate, for case where terminal does not support 133227825Stheraven insert/delete character. The logic did not check that there was a 134227825Stheraven difference in alignment of changes to old/new screens before 135227825Stheraven repainting the whole non-blank portion of the line. Modified to 136227825Stheraven fall through into logic that reduces by the portion which does not 137227825Stheraven differ. 138227825Stheraven 139227825Stheraven Features of Ncurses 140227825Stheraven 141227825Stheraven The ncurses package is fully compatible with SVr4 (System V Release 4) 142227825Stheraven curses: 143227825Stheraven 144227825Stheraven * All 257 of the SVr4 calls have been implemented (and are 145227825Stheraven documented). 146227825Stheraven * Full support for SVr4 curses features including keyboard mapping, 147227825Stheraven color, forms-drawing with ACS characters, and automatic 148227825Stheraven recognition of keypad and function keys. 149227825Stheraven * An emulation of the SVr4 panels library, supporting a stack of 150227825Stheraven windows with backing store, is included. 151227825Stheraven * An emulation of the SVr4 menus library, supporting a uniform but 152227825Stheraven flexible interface for menu programming, is included. 153227825Stheraven * An emulation of the SVr4 form library, supporting data collection 154227825Stheraven through on-screen forms, is included. 155227825Stheraven * Binary terminfo entries generated by the ncurses tic(1) 156227825Stheraven implementation are bit-for-bit-compatible with the entry format 157227825Stheraven SVr4 curses uses. 158227825Stheraven * The utilities have options to allow you to filter terminfo entries 159227825Stheraven for use with less capable curses/terminfo versions such as the 160227825Stheraven HP/UX and AIX ports. 161227825Stheraven 162227825Stheraven The ncurses package also has many useful extensions over SVr4: 163227825Stheraven 164227825Stheraven * The API is 8-bit clean and base-level conformant with the X/OPEN 165227825Stheraven curses specification, XSI curses (that is, it implements all BASE 166227825Stheraven level features, but not all EXTENDED features). Most 167227825Stheraven EXTENDED-level features not directly concerned with wide-character 168227825Stheraven support are implemented, including many function calls not 169227825Stheraven supported under SVr4 curses (but portability of all calls is 170227825Stheraven documented so you can use the SVr4 subset only). 171227825Stheraven * Unlike SVr4 curses, ncurses can write to the rightmost-bottommost 172227825Stheraven corner of the screen if your terminal has an insert-character 173227825Stheraven capability. 174227825Stheraven * Ada95 and C++ bindings. 175227825Stheraven * Support for mouse event reporting with X Window xterm and OS/2 176227825Stheraven console windows. 177227825Stheraven * Extended mouse support via Alessandro Rubini's gpm package. 178227825Stheraven * The function wresize() allows you to resize windows, preserving 179227825Stheraven their data. 180227825Stheraven * The function use_default_colors() allows you to use the terminal's 181227825Stheraven default colors for the default color pair, achieving the effect of 182227825Stheraven transparent colors. 183227825Stheraven * The functions keyok() and define_key() allow you to better control 184227825Stheraven the use of function keys, e.g., disabling the ncurses KEY_MOUSE, 185227825Stheraven or by defining more than one control sequence to map to a given 186227825Stheraven key code. 187227825Stheraven * Support for 16-color terminals, such as aixterm and XFree86 xterm. 188227825Stheraven * Better cursor-movement optimization. The package now features a 189227825Stheraven cursor-local-movement computation more efficient than either BSD's 190227825Stheraven or System V's. 191227825Stheraven * Super hardware scrolling support. The screen-update code 192227825Stheraven incorporates a novel, simple, and cheap algorithm that enables it 193227825Stheraven to make optimal use of hardware scrolling, line-insertion, and 194227825Stheraven line-deletion for screen-line movements. This algorithm is more 195227825Stheraven powerful than the 4.4BSD curses quickch() routine. 196227825Stheraven * Real support for terminals with the magic-cookie glitch. The 197227825Stheraven screen-update code will refrain from drawing a highlight if the 198227825Stheraven magic- cookie unattributed spaces required just before the 199227825Stheraven beginning and after the end would step on a non-space character. 200227825Stheraven It will automatically shift highlight boundaries when doing so 201227825Stheraven would make it possible to draw the highlight without changing the 202227825Stheraven visual appearance of the screen. 203227825Stheraven * It is possible to generate the library with a list of pre-loaded 204227825Stheraven fallback entries linked to it so that it can serve those terminal 205227825Stheraven types even when no terminfo tree or termcap file is accessible 206227825Stheraven (this may be useful for support of screen-oriented programs that 207227825Stheraven must run in single-user mode). 208227825Stheraven * The tic(1)/captoinfo utility provided with ncurses has the ability 209227825Stheraven to translate many termcaps from the XENIX, IBM and AT&T extension 210227825Stheraven sets. 211227825Stheraven * A BSD-like tset(1) utility is provided. 212227825Stheraven * The ncurses library and utilities will automatically read terminfo 213227825Stheraven entries from $HOME/.terminfo if it exists, and compile to that 214227825Stheraven directory if it exists and the user has no write access to the 215227825Stheraven system directory. This feature makes it easier for users to have 216227825Stheraven personal terminfo entries without giving up access to the system 217227825Stheraven terminfo directory. 218227825Stheraven * You may specify a path of directories to search for compiled 219227825Stheraven descriptions with the environment variable TERMINFO_DIRS (this 220227825Stheraven generalizes the feature provided by TERMINFO under stock System 221227825Stheraven V.) 222227825Stheraven * In terminfo source files, use capabilities may refer not just to 223227825Stheraven other entries in the same source file (as in System V) but also to 224227825Stheraven compiled entries in either the system terminfo directory or the 225227825Stheraven user's $HOME/.terminfo directory. 226227825Stheraven * A script (capconvert) is provided to help BSD users transition 227227825Stheraven from termcap to terminfo. It gathers the information in a TERMCAP 228227825Stheraven environment variable and/or a ~/.termcap local entries file and 229227825Stheraven converts it to an equivalent local terminfo tree under 230227825Stheraven $HOME/.terminfo. 231227825Stheraven * Automatic fallback to the /etc/termcap file can be compiled in 232227825Stheraven when it is not possible to build a terminfo tree. This feature is 233227825Stheraven neither fast nor cheap, you don't want to use it unless you have 234227825Stheraven to, but it's there. 235227825Stheraven * The table-of-entries utility toe makes it easy for users to see 236227825Stheraven exactly what terminal types are available on the system. 237227825Stheraven * The library meets the XSI requirement that every macro entry point 238227825Stheraven have a corresponding function which may be linked (and will be 239227825Stheraven prototype-checked) if the macro definition is disabled with 240227825Stheraven #undef. 241227825Stheraven * An HTML "Introduction to Programming with NCURSES" document 242227825Stheraven provides a narrative introduction to the curses programming 243227825Stheraven interface. 244227825Stheraven 245227825Stheraven State of the Package 246227825Stheraven 247227825Stheraven Numerous bugs present in earlier versions have been fixed; the library 248227825Stheraven is far more reliable than it used to be. Bounds checking in many 249227825Stheraven `dangerous' entry points has been improved. The code is now type-safe 250227825Stheraven according to gcc -Wall. The library has been checked for malloc leaks 251227825Stheraven and arena corruption by the Purify memory-allocation tester. 252227825Stheraven 253227825Stheraven The ncurses code has been tested with a wide variety of applications 254227825Stheraven including (versions starting with those noted): 255227825Stheraven 256227825Stheraven ded 257227825Stheraven directory-editor [3]ftp://ftp.clark.net/pub/dickey/ded. 258227825Stheraven 259227825Stheraven dialog 260227825Stheraven the underlying application used in Slackware's setup, and the 261227825Stheraven basis for similar applications on GNU/Linux. 262227825Stheraven 263227825Stheraven lynx-2.7 264227825Stheraven the character-screen WWW browser 265227825Stheraven 266227825Stheraven Midnight Commander 4.1 267227825Stheraven file manager 268227825Stheraven 269227825Stheraven mutt 0.88 270227825Stheraven mail utility 271227825Stheraven 272227825Stheraven ncftp 2.0 273227825Stheraven file-transfer utility 274227825Stheraven 275227825Stheraven nvi 276227825Stheraven New vi versions 1.50 are able to use ncurses versions 1.9.7 and 277227825Stheraven later. 278227825Stheraven 279227825Stheraven taper 280227825Stheraven tape archive utility 281227825Stheraven 282227825Stheraven vh-1.6 283227825Stheraven Volks-Hypertext browser for the Jargon File 284227825Stheraven 285227825Stheraven as well as some that use ncurses for the terminfo support alone: 286227825Stheraven 287227825Stheraven minicom-1.75 288227825Stheraven terminal emulator 289227825Stheraven 290227825Stheraven tin-unoff 291227825Stheraven tin 1.4 newsreader, supporting color, MIME 292227825Stheraven [4]ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff. 293227825Stheraven 294227825Stheraven vile 295227825Stheraven vi-like-emacs [5]ftp://ftp.clark.net/pub/dickey/vile. 296227825Stheraven 297227825Stheraven The ncurses distribution includes a selection of test programs 298227825Stheraven (including a few games). 299227825Stheraven 300227825StheravenWho's Who and What's What 301227825Stheraven 302227825Stheraven The original developers of ncurses are [6]Zeyd Ben-Halim and [7]Eric 303227825Stheraven S. Raymond. Ongoing work is being done by [8]Thomas Dickey and 304227825Stheraven [9]J�rgen Pfeifer. [10]Florian La Roche acts as the maintainer for the 305227825Stheraven Free Software Foundation, which holds the copyright on ncurses. 306227825Stheraven Contact the current maintainers at [11]bug-ncurses@gnu.org. 307227825Stheraven 308227825Stheraven To join the ncurses mailing list, please write email to 309227825Stheraven bug-ncurses-request@gnu.org containing the line: 310227825Stheraven subscribe <name>@<host.domain> 311227825Stheraven 312227825Stheraven This list is open to anyone interested in helping with the development 313227825Stheraven and testing of this package. 314227825Stheraven 315227825Stheraven Beta versions of ncurses and patches to the current release are made 316227825Stheraven available at [12]ftp://ftp.clark.net/pub/dickey/ncurses. 317227825Stheraven 318227825StheravenFuture Plans 319227825Stheraven 320227825Stheraven * Extended-level XPG4 conformance, with internationalization 321227825Stheraven support. 322227825Stheraven * Ports to more systems, including DOS and Windows. 323227825Stheraven 324227825Stheraven We need people to help with these projects. If you are interested in 325227825Stheraven working on them, please join the ncurses list. 326227825Stheraven 327227825StheravenOther Related Resources 328227825Stheraven 329227825Stheraven The distribution includes and uses a version of the terminfo-format 330227825Stheraven terminal description file maintained by Eric Raymond. 331227825Stheraven [13]http://earthspace.net/~esr/terminfo. 332227825Stheraven 333227825Stheraven You can find lots of information on terminal-related topics not 334227825Stheraven covered in the terminfo file at [14]Richard Shuford's archive. 335227825Stheraven 336227825StheravenReferences 337227825Stheraven 338227825Stheraven 1. ftp://ftp.gnu.org/pub/gnu 339227825Stheraven 2. ftp://ftp.clark.net/pub/dickey/ncurses 340227825Stheraven 3. ftp://ftp.clark.net/pub/dickey/ded 341227825Stheraven 4. ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff 342227825Stheraven 5. ftp://ftp.clark.net/pub/dickey/vile 343227825Stheraven 6. mailto:zmbenhal@netcom.com 344227825Stheraven 7. http://www.ccil.org/~esr/home.html 345227825Stheraven 8. mailto:dickey@clark.net 346227825Stheraven 9. mailto:juergen.pfeifer@gmx.net 347227825Stheraven 10. mailto:florian@gnu.org 348227825Stheraven 11. mailto:bug-ncurses@gnu.org 349227825Stheraven 12. ftp://ftp.clark.net/pub/dickey/ncurses 350227825Stheraven 13. http://earthspace.net/~esr/terminfo 351227825Stheraven 14. http://www.cs.utk.edu/~shuford/terminal_index.html 352227825Stheraven