1<!-- 2 $Id: announce.html,v 1.61 2020/02/09 21:26:51 tom Exp $ 3 **************************************************************************** 4 * Copyright 2018-2019,2020 Thomas E. Dickey * 5 * * 6 * Permission is hereby granted, free of charge, to any person obtaining a * 7 * copy of this software and associated documentation files (the * 8 * "Software"), to deal in the Software without restriction, including * 9 * without limitation the rights to use, copy, modify, merge, publish, * 10 * distribute, distribute with modifications, sublicense, and/or sell * 11 * copies of the Software, and to permit persons to whom the Software is * 12 * furnished to do so, subject to the following conditions: * 13 * * 14 * The above copyright notice and this permission notice shall be included * 15 * in all copies or substantial portions of the Software. * 16 * * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * 18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * 19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * 20 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * 21 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * 22 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * 23 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * 24 * * 25 * Except as contained in this notice, the name(s) of the above copyright * 26 * holders shall not be used in advertising or otherwise to promote the * 27 * sale, use or other dealings in this Software without prior written * 28 * authorization. * 29 **************************************************************************** 30--> 31<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> 32 33<html> 34<head> 35 <meta name="generator" content= 36 "HTML Tidy for HTML5 for Linux version 5.2.0"> 37 38 <title>Announcing ncurses 6.2</title> 39 <link rel="author" href="mailto:bug-ncurses@gnu.org"> 40 <meta http-equiv="Content-Type" content= 41 "text/html; charset=us-ascii"> 42 <style type="text/css"> 43 p,li { max-width:700px; } 44 dd { max-width:630px; } 45 *.main-name { 46 font-style: italic; 47 font-variant: small-caps; 48 } 49 *.part-name { 50 font-family: "Andale Mono", "Monotype.com", monospace; 51 font-size: 12pt; 52 font-weight: bold; 53 } 54 *.demo-name { 55 font-family: "Andale Mono", "Monotype.com", monospace; 56 font-size: 10pt; 57 } 58 </style> 59</head> 60 61<body> 62 <h1 class="no-header">Announcing ncurses 6.2</h1> 63 64 <h2><a name="h2-overview" id="h2-overview">Overview</a></h2> 65 66 <p>The <span class="main-name">ncurses</span> (new curses) 67 library is a free software emulation of curses in System V 68 Release 4.0 (SVr4), and more. It uses terminfo format, supports 69 pads and color and multiple highlights and forms characters and 70 function-key mapping, and has all the other SVr4-curses 71 enhancements over BSD curses. SVr4 curses became the basis of 72 X/Open Curses.</p> 73 74 <p>In mid-June 1995, the maintainer of 4.4BSD curses declared 75 that he considered 4.4BSD curses obsolete, and encouraged the 76 keepers of <span class="main-name">unix</span> releases such as 77 BSD/OS, FreeBSD and NetBSD to switch over to <span class= 78 "main-name">ncurses</span>.</p> 79 80 <p>Since 1995, <span class="main-name">ncurses</span> has been 81 ported to many systems:</p> 82 83 <ul> 84 <li>It is used in almost every system based on the Linux kernel 85 (aside from some embedded applications).</li> 86 87 <li>It is used as the system curses library on OpenBSD, FreeBSD 88 and MacOS.</li> 89 90 <li>It is used in environments such as Cygwin and MinGW. The 91 first of these was EMX on OS/2 Warp.</li> 92 93 <li>It is used (though usually not as the <em>system</em> 94 curses) on all of the vendor <span class= 95 "main-name">unix</span> systems, e.g., AIX, HP-UX, IRIX64, SCO, 96 Solaris, Tru64.</li> 97 98 <li>It should work readily on any ANSI/POSIX-conforming 99 <span class="main-name">unix</span>.</li> 100 </ul> 101 102 <p>The distribution includes the library and support utilities, 103 including</p> 104 105 <ul> 106 <li><a href= 107 "https://invisible-island.net/ncurses/man/captoinfo.1m.html"><span class="part-name"> 108 captoinfo</span></a>, a termcap conversion tool</li> 109 110 <li><a href= 111 "https://invisible-island.net/ncurses/man/clear.1.html"><span class="part-name"> 112 clear</span></a>, utility for clearing the screen</li> 113 114 <li><a href= 115 "https://invisible-island.net/ncurses/man/infocmp.1m.html"><span class="part-name"> 116 infocmp</span></a>, the terminfo decompiler</li> 117 118 <li><a href= 119 "https://invisible-island.net/ncurses/man/tabs.1.html"><span class="part-name"> 120 tabs</span></a>, set tabs on a terminal</li> 121 122 <li><a href= 123 "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name"> 124 tic</span></a>, the terminfo compiler</li> 125 126 <li><a href= 127 "https://invisible-island.net/ncurses/man/toe.1m.html"><span class="part-name"> 128 toe</span></a>, list (table of) terminfo entries</li> 129 130 <li><a href= 131 "https://invisible-island.net/ncurses/man/tput.1.html"><span class="part-name"> 132 tput</span></a>, utility for retrieving terminal capabilities 133 in shell scripts</li> 134 135 <li><a href= 136 "https://invisible-island.net/ncurses/man/tset.1.html"><span class="part-name"> 137 tset</span></a>, to initialize the terminal</li> 138 </ul> 139 140 <p>Full manual pages are provided for the library and tools.</p> 141 142 <p>The <span class="main-name">ncurses</span> distribution is 143 available at <span class="main-name">ncurses</span>' <a href= 144 "https://invisible-island.net/ncurses/">homepage</a>:</p> 145 146 <blockquote> 147 <p><a href= 148 "ftp://ftp.invisible-island.net/ncurses/">ftp://ftp.invisible-island.net/ncurses/</a> 149 or<br> 150 <a href= 151 "https://invisible-mirror.net/archives/ncurses/">https://invisible-mirror.net/archives/ncurses/</a> .</p> 152 </blockquote> 153 154 <p>It is also available via anonymous FTP at the GNU distribution 155 site</p> 156 157 <blockquote> 158 <p><a href= 159 "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a> .</p> 160 </blockquote> 161 162 <h2><a name="h2-release-notes" id="h2-release-notes">Release 163 Notes</a></h2> 164 165 <p>These notes are for <span class="main-name">ncurses</span> 166 6.2, released <strong>February 12, 2020</strong>.</p> 167 168 <p>This release is designed to be source-compatible with 169 <span class="main-name">ncurses</span> 5.0 through 6.1; providing 170 extensions to the application binary interface (ABI). Although 171 the source can still be configured to support the <span class= 172 "main-name">ncurses</span> 5 ABI, the reason for the release is 173 to reflect improvements to the <span class= 174 "main-name">ncurses</span> 6 ABI and the supporting utility 175 programs.</p> 176 177 <p>There are, of course, numerous other improvements, listed in 178 this announcement.</p> 179 180 <p>The most <a href="#h3-bug-fixes">important 181 bug-fixes/improvements</a> dealt with user-defined capabilities 182 in terminal descriptions. The release notes also mention some 183 other bug-fixes, but are focused on new features and improvements 184 to existing features since <span class="main-name">ncurses</span> 185 6.1 release.</p> 186 187 <h3><a name="h3-library" id="h3-library">Library improvements</a></h3> 188 189 <h4><a name="h4-new-library" id="h4-new-library">New features</a></h4> 190 191 <p>There are several new features:</p> 192 193 <ul> 194 <li> 195 <p><a href= 196 "https://invisible-island.net/ncurses/man/form_field_opts.3x.html"> 197 O_EDGE_INSERT_STAY</a> tells the form library to optionally 198 delay cursor movement on a field edge/boundary</p> 199 </li> 200 201 <li> 202 <p><a href= 203 "https://invisible-island.net/ncurses/man/form_field_opts.3x.html"> 204 O_INPUT_FIELD</a> extension to form library allows a dynamic 205 field to shrink if the new limit is smaller than the current 206 field size.</p> 207 </li> 208 209 <li> 210 <p>added <a href= 211 "https://invisible-island.net/ncurses/man/curs_memleaks.3x.html"> 212 exit_curses</a> and <a href= 213 "https://invisible-island.net/ncurses/man/curs_memleaks.3x.html"> 214 exit_terminfo</a> to replace internal symbols for 215 leak-checking.</p> 216 </li> 217 218 <li> 219 <p>added <a href= 220 "https://invisible-island.net/ncurses/man/curs_trace.3x.html#h3-Functions"> 221 curses_trace</a>, to replace trace().</p> 222 </li> 223 </ul> 224 225 <p>Additionally, to improve performance other changes (and 226 extensions) are provided in this release:</p> 227 228 <ul> 229 <li> 230 <p>mouse decoding now handles shift/control/alt logic when 231 decoding xterm's 1006 mode</p> 232 </li> 233 234 <li> 235 <p>ncurses now defines a limit for <a href= 236 "https://invisible-island.net/ncurses/man/curs_getstr.3x.html"> 237 wgetnstr</a>, <a href= 238 "https://invisible-island.net/ncurses/man/curs_get_wstr.3x.html"> 239 wgetn_wstr</a> when length is negative or “too 240 large”.</p> 241 </li> 242 243 <li>reordered loop-limit checks in <a href= 244 "https://invisible-island.net/ncurses/man/curs_insstr.3x.html">winsnstr</a> 245 in case the string has no terminating null and only the number 246 of characters is used.</li> 247 248 <li> 249 <p>there is now no buffer-size limit when reading the 250 <a href="https://invisible-island.net/ncurses/man/ncurses.3x.html#h3-TERMCAP"> 251 <tt>$TERMCAP</tt></a> variable.</p> 252 </li> 253 254 <li> 255 <p>the <a href= 256 "https://invisible-island.net/ncurses/man/ncurses.3x.html#h3-TERMCAP"> 257 <tt>$TERMCAP</tt></a> variable may be interpreted as a 258 fallback to a terminfo entry</p> 259 </li> 260 261 <li> 262 <p><a href= 263 "https://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Output-Functions"> 264 <tt>mvcur</tt></a> now decides whether to use hard-tabs, 265 using <strong><tt>xt</tt></strong>, 266 <strong><tt>tbc</tt></strong> and 267 <strong><tt>hts</tt></strong> as clues.</p> 268 </li> 269 270 <li> 271 <p>extended colors are improved by modifying an internal call 272 to <a href= 273 "https://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Output-Functions"> 274 <tt>vid_puts</tt></a> to pass extended color pairs e.g., from 275 <tt>tty_update.c</tt> and <tt>lib_mvcur.c</tt></p> 276 </li> 277 278 <li> 279 <p id="getenv-fixes">the initialization functions now avoid 280 relying upon persistent data for the result from <a href= 281 "#getenv-check"><tt>getenv</tt></a></p> 282 </li> 283 284 <li> 285 <p>scrolling is improved:</p> 286 287 <ul> 288 <li>a limit check in <tt>newline_forces_scroll</tt> handles 289 the case where the row is inside scroll-margins, but not at 290 the end.</li> 291 292 <li> 293 <p>improved loop limits in <tt>_nc_scroll_window</tt> 294 handle a case where the scrolled data is a pad which is 295 taller than the window.</p> 296 </li> 297 </ul> 298 </li> 299 </ul> 300 301 <h4><a name="h4-fixes-library" id="h4-fixes-library">Other 302 improvements</a></h4> 303 304 <p>These are revised features:</p> 305 306 <ul> 307 <li> 308 <p>used “<tt>const</tt>” in some prototypes 309 rather than <tt>NCURSES_CONST</tt> where X/Open Curses was 310 updated to do this, e.g., <tt>wscanw</tt>, <tt>newterm</tt>, 311 the terminfo interface. Also use “<tt>const</tt>” 312 for consistency in the termcap interface, which was withdrawn 313 by X/Open Curses in Issue 5 (2007). As of Issue 7, X/Open 314 Curses still lacks “<tt>const</tt>” for certain 315 return values, e.g., <a href= 316 "https://invisible-island.net/ncurses/man/curs_util.3x.html#h3-keyname_key_name"> 317 keyname</a>.</p> 318 </li> 319 320 <li> 321 <p>modified <a href= 322 "https://invisible-island.net/ncurses/man/curs_bkgd.3x.html#h3-bkgd"> 323 <tt>wbkgd</tt></a> and <a href= 324 "https://invisible-island.net/ncurses/man/curs_bkgrnd.3x.html#h3-bkgrnd"> 325 <tt>wbkgrnd</tt></a> to improve compatibility with SVr4 326 curses, changing the way the window rendition is updated when 327 the background character is modified</p> 328 </li> 329 330 <li> 331 <p>improved terminfo write/read by modifying the fourth item 332 of the extended header to denote the number of valid strings 333 in the extended string table (see <a href= 334 "https://invisible-island.net/ncurses/man/term.5.html#h3-EXTENDED-STORAGE-FORMAT"> 335 term(5)</a>).</p> 336 </li> 337 338 <li> 339 <p>modified the initialization checks for mouse so that the 340 <a href= 341 "/ncurses/terminfo.src.html#tic-xterm_sm_1006"><tt>xterm+sm+1006</tt></a> 342 block will work with terminal descriptions not mentioning 343 <em>xterm</em>.</p> 344 </li> 345 </ul> 346 347 <p>These were done to limit or ultimately deprecate features:</p> 348 349 <ul> 350 <li> 351 <p>deprecated <a href= 352 "https://invisible-island.net/ncurses/NEWS.html#t970831">safe-sprintf</a>, 353 since the <tt>vsnprintf</tt> function, which does what was 354 needed, was standardized long ago.</p> 355 </li> 356 357 <li> 358 <p>marked <a href= 359 "https://invisible-island.net/ncurses/man/curs_printw.3x.html#h3-PORTABILITY"> 360 <tt>vwprintw</tt></a> and <tt>vwscanw</tt> as deprecated; 361 recommend using <a href= 362 "https://invisible-island.net/ncurses/man/curs_printw.3x.html"> 363 <tt>vw_printw</tt></a> and <tt>vw_scanw</tt>, 364 respectively.</p> 365 </li> 366 367 <li> 368 <p>added deprecation warnings for internal functions called 369 by older versions of <a href= 370 "https://invisible-island.net/ncurses/tack.html">tack</a>.</p> 371 </li> 372 373 <li> 374 <p>removed unused <tt>_nc_import_termtype2</tt> function.</p> 375 </li> 376 </ul> 377 378 <p>These are improvements to existing features:</p> 379 380 <ul> 381 <li> 382 <p>check parameter of <a href= 383 "https://invisible-island.net/ncurses/man/curs_threads.3x.html"> 384 set_escdelay</a>, return ERR if negative.</p> 385 </li> 386 387 <li> 388 <p>check parameter of <a href= 389 "https://invisible-island.net/ncurses/man/curs_threads.3x.html"> 390 set_tabsize</a>, return ERR if not greater than zero</p> 391 </li> 392 393 <li> 394 <p>correct a status-check in _nc_read_tic_entry() so that if 395 reading a hex/b64 <a href= 396 "https://invisible-island.net/ncurses/man/ncurses.3x.html#h3-TERMINFO"> 397 <tt>$TERMINFO</tt></a>, and the <a href= 398 "https://invisible-island.net/ncurses/man/ncurses.3x.html#h3-TERM"> 399 <tt>$TERM</tt></a> does not match, fall-through to the 400 compiled-in search list.</p> 401 </li> 402 403 <li> 404 <p>amend check for <a href= 405 "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Predefined-Capabilities"> 406 <tt>repeat_char</tt></a> to handle a case where setlocale() 407 was called after <a href= 408 "https://invisible-island.net/ncurses/man/curs_initscr.3x.html"> 409 <tt>initscr</tt></a></p> 410 </li> 411 412 <li> 413 <p>move macro for <a href= 414 "https://invisible-island.net/ncurses/man/curs_touch.3x.html"> 415 <tt>is_linetouched</tt></a> inside 416 <strong><tt>NCURSES_NOMACROS</tt></strong> 417 <em><tt>ifndef</tt></em>.</p> 418 </li> 419 420 <li> 421 <p>use <tt>_nc_copy_termtype2</tt> rather than direct 422 assignment in <a href= 423 "https://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Initialization"> 424 setupterm</a>, in case it is called repeatedly using fallback 425 terminfo descriptions</p> 426 </li> 427 428 <li> 429 <p>improve workaround for Solaris wcwidth versus line-drawing 430 characters</p> 431 </li> 432 433 <li> 434 <p>add checks in <a href= 435 "https://invisible-island.net/ncurses/man/resizeterm.3x.html"> 436 <tt>repair_subwindows</tt></a> to keep the current position 437 and scroll-margins inside the resized subwindow.</p> 438 </li> 439 440 <li> 441 <p>correct a buffer-limit in <tt>write_entry.c</tt> for 442 systems that use caseless filenames.</p> 443 </li> 444 445 <li> 446 <p>improved build-time utility <em>report_offsets</em>:</p> 447 448 <ul> 449 <li> 450 <p>add categories, e.g., "w" for wide-character, "t" for 451 threads to make the report more readable. Reorganized the 452 structures reported to make the categories more 453 apparent.</p> 454 </li> 455 456 <li> 457 <p>add <tt>NCURSES_GLOBALS</tt> and 458 <tt>NCURSES_PRESCREEN</tt> to report to show how similar 459 the different <em>libtinfo</em> configurations are.</p> 460 </li> 461 </ul> 462 </li> 463 464 <li> 465 <p>modified some header files to ensure that those include 466 necessary files except for the previously-documented 467 cases</p> 468 </li> 469 470 <li> 471 <p>added some traces in initialization to show whether a 472 fallback entry is used.</p> 473 </li> 474 475 <li> 476 <p>made minor optimization to reduce calls to 477 _nc_reserve_pairs</p> 478 </li> 479 </ul> 480 481 <p>These are corrections to existing features:</p> 482 483 <ul> 484 <li> 485 <p>fix a special case in <tt>PutAttrChar</tt> where a cell is 486 marked as alternate-character set, but the terminal does not 487 actually support the given graphic character. This would 488 happen in an older terminal such as <em>vt52</em>, which 489 lacks most line-drawing capability.</p> 490 </li> 491 492 <li> 493 <p>corrected flag for "seq" method of db 1.8.5 interface, 494 needed by toe on some of the BSDs.</p> 495 </li> 496 497 <li> 498 <p>modify comparison in make_hash.c to correct a special case 499 in collision handling for Caps-hpux11</p> 500 </li> 501 502 <li> 503 <p>add extended_slk_color{,_sp} symbols to the appropriate 504 package/*.{map,sym} files</p> 505 </li> 506 507 <li> 508 <p>modify lib_setup to avoid calling pthread_self() without 509 first verifying that the address is valid, i.e., for weak 510 symbols</p> 511 </li> 512 513 <li> 514 <p>add a couple of broken-linker symbols to the list of 515 versioned symbols to help with link-time optimization versus 516 weak symbols.</p> 517 </li> 518 </ul> 519 520 <h3><a name="h3-programs" id="h3-programs">Program 521 improvements</a></h3> 522 523 <p>Several improvements were made to the utility programs:</p> 524 525 <dl> 526 <dt><span class="part-name">clear</span> 527 </dt> 528 529 <dd> 530 <ul> 531 <li>improved logic for clearing with the <em>E3</em> 532 extension, in case the terminal scrolls content onto its 533 saved-lines before actually clearing the display, by 534 clearing the saved-lines after clearing the display</li> 535 </ul> 536 </dd> 537 538 <dt><span class="part-name">infocmp</span> 539 </dt> 540 541 <dd> 542 <ul> 543 <li>omit filtering of “<tt>OTxx</tt>” names 544 which are used for obsolete capabilities, when the output 545 is sorted by long-names. This change helps when making a 546 table of the short/long capability names.</li> 547 </ul> 548 </dd> 549 550 <dt><span class="part-name">tic</span> 551 </dt> 552 553 <dd> 554 <ul> 555 <li>added check for consistent alternate character set 556 capabilities.</li> 557 558 <li>added check for paired <tt>indn</tt>/<tt>rin</tt>.</li> 559 560 <li>added check for terminals with <tt>parm_dch</tt> vs 561 <tt>parm_ich</tt>.</li> 562 563 <li>added check for the case where 564 <tt>setf</tt>/<tt>setb</tt> are given using different 565 strings, but provide identical results to 566 <tt>setaf</tt>/<tt>setab</tt>.</li> 567 568 <li>corrected check for <tt>ich1</tt>.</li> 569 570 <li>changed a too-large terminal entry from a fatal error 571 to a warning.</li> 572 </ul> 573 </dd> 574 575 <dt><span class="part-name">toe</span> 576 </dt> 577 578 <dd> 579 <ul> 580 <li>ignores any hex/b64 <tt>$TERMINFO</tt> value in the 581 list of terminfo databases.</li> 582 </ul> 583 </dd> 584 585 <dt><span class="part-name">tset</span> 586 </dt> 587 588 <dd> 589 <ul> 590 <li>replace check in <span class="part-name">reset</span> 591 command for obsolete “<tt>pt</tt>” capability 592 using <tt>tbc</tt> and <tt>hts</tt> capabilities as 593 clues</li> 594 595 <li>modify <span class="part-name">reset</span> to allow 596 for tabstops at intervals other than 8.</li> 597 598 <li>change <span class="part-name">reset</span>'s behavior 599 for margins to simply clear soft-margins if possible, 600 rather than clearing and then setting them according to the 601 terminal's width.</li> 602 </ul> 603 </dd> 604 605 <dt><span class="part-name">tput</span> 606 </dt> 607 608 <dd> 609 <ul> 610 <li>add “<tt>x</tt>” to <tt>getopt</tt> string 611 so that “<tt>tput -x clear</tt>” 612 works.</li> 613 </ul> 614 </dd> 615 </dl> 616 617 <p>Several changes were made to the generated ncurses*config 618 scripts and the analogous “<tt>.pc</tt>” files to 619 reduce differences between the configurations they report:</p> 620 621 <ul> 622 <li> 623 <p>modified the ncurse*-config and pc-files to more closely 624 match for the <tt>-I</tt> and <tt>-l</tt> options.</p> 625 </li> 626 627 <li> 628 <p>filtered out linker-specs from the <tt>--libs</tt> 629 report.</p> 630 </li> 631 632 <li> 633 <p>amended the ncurses*-config and pc-files to take into 634 account the rpath hack which differed between those 635 files.</p> 636 </li> 637 638 <li> 639 <p>modified generated ncurses*config and ncurses.pc, 640 ncursesw.pc, etc., to list helper libraries such as gpm for 641 static linking.</p> 642 </li> 643 </ul> 644 645 <h4><a name="h4-examples" id="h4-examples">Examples</a></h4> 646 647 <p>Along with the library and utilities, improvements were made 648 to the <a href= 649 "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>. 650 Most of this activity aimed at improving the test-packages. A few 651 changes are more generally useful, e.g., for the main ncurses 652 test-program, and for analyzing traces using the 653 <em>tracemunch</em> script:</p> 654 655 <ul> 656 <li> 657 <p>improve recovery from error when reading command-character 658 in <tt>test/ncurses.c</tt>, showing the relevant error 659 message and not exiting on EINTR.</p> 660 </li> 661 662 <li> 663 <p>improve <em>tracemunch</em>, by keeping track of 664 <tt>TERMINAL*</tt> values, and if tracing was first turned on 665 after initialization, attempt to show distinct screen, window 666 and terminal names anyway.</p> 667 </li> 668 669 <li> 670 <p>modify <em>tracemunch</em> to accept filename parameters 671 in addition to use as a pipe/filter.</p> 672 </li> 673 674 <li> 675 <p>update <em>tracemunch</em> to work with <em>perl 676 5.26.2</em>, which changed the rules for escaping regular 677 expressions.</p> 678 </li> 679 680 <li> 681 <p>add some checks in <em>tracemunch</em> for undefined 682 variables.</p> 683 </li> 684 685 <li> 686 <p>modify <tt>TurnOn</tt>/<tt>TurnOff</tt> macros (in 687 lib_vidattr.c and lib_vid_attr.c) to avoid expansion of 688 “<tt>CUR</tt>” in trace.</p> 689 </li> 690 </ul> 691 692 <p>There are other new demo/test programs and reusable 693 examples:</p> 694 695 <dl> 696 <dt><span class="part-name">color_content</span> 697 </dt> 698 699 <dd>Demonstrate the <tt>color_content</tt> and 700 <tt>extended_color_content</tt> functions.</dd> 701 702 <dt><span class="part-name">demo_tabs</span> 703 </dt> 704 705 <dd>A simple demo of tabs in curses.</dd> 706 707 <dt><span class="part-name">dump_window</span> 708 </dt> 709 710 <dd>A portable curses screen-dump, used to compare ncurses 711 screen contents with Solaris.</dd> 712 713 <dt><span class="part-name">pair_content</span> 714 </dt> 715 716 <dd>Demonstrate the <tt>pair_content</tt> and 717 <tt>extended_pair_content</tt> functions.</dd> 718 719 <dt><span class="part-name">report_hashing</span> 720 </dt> 721 722 <dd>Check hash-tables used for terminfo and termcap names.</dd> 723 724 <dt><span class="part-name">parse_rgb</span> 725 </dt> 726 727 <dd>Sample implementation of the ncurses RGB extension from 728 <a href= 729 "https://invisible-island.net/ncurses/man/user_caps.5.html">user_caps.5</a>, 730 used in <em>picsmap</em> and <em>savescreen</em> programs.</dd> 731 </dl> 732 733 <p>A variety of improvements were made to existing programs, both 734 new features as well as options added to make the set of programs 735 more consistent.</p> 736 737 <ul> 738 <li> 739 <p>add “<tt>-l</tt>” option to test/background, 740 to dump screen contents in a form that lets different curses 741 implementations be compared.</p> 742 </li> 743 744 <li> 745 <p>add “<tt>@</tt>” command to test/ncurses 746 F-test, to allow rapid jump to different character pages.</p> 747 </li> 748 749 <li> 750 <p>added enum, regex examples to test/demo_forms</p> 751 </li> 752 753 <li> 754 <p>amend Scaled256() macro in test/picsmap.c to cover the 755 full range 0..1000</p> 756 </li> 757 758 <li> 759 <p>corrected pathname used in Ada95 sample programs for 760 <tt>explain.txt</tt>, to work with test-packages, and used an 761 awk script to split the resulting pathname when it would be 762 too long for a single line.</p> 763 </li> 764 765 <li> 766 <p>ignore interrupted system-call in test/ncurses's 767 command-line, e.g., if the terminal were resized.</p> 768 </li> 769 770 <li> 771 <p>improved ifdef's for <tt>TABSIZE</tt> variable, to help 772 with AIX/HPUX ports.</p> 773 </li> 774 </ul> 775 776 <h3><a name="h3-database" id="h3-database">Terminal database</a></h3> 777 778 <p>There are several new terminal descriptions:</p> 779 780 <blockquote style="word-break:keep-all"> 781 <p><tt>alacritty</tt>, <tt>domterm</tt>, <tt>kitty</tt>, 782 <tt>mintty</tt>, <tt>mintty-direct</tt>, <tt>ms-terminal</tt>, 783 <tt>n7900</tt>, <tt>nsterm-build309</tt>, 784 <tt>nsterm-direct</tt>, <tt>screen5</tt>, <tt>ti703</tt>, 785 <tt>ti707</tt>, <tt>ti703-w</tt>, <tt>ti707-w</tt> 786 <tt>vscode</tt>, <tt>vscode-direct</tt>, <tt>xterm-mono</tt>, 787 <tt>xterm.js</tt></p> 788 </blockquote> 789 790 <p>There are many changes to existing terminal descriptions. Some 791 were updates to several descriptions:</p> 792 793 <ul> 794 <li>use <a href= 795 "/ncurses/terminfo.src.html#tic-ansi_rep"><tt>ansi+rep</tt></a> 796 in a dozen places</li> 797 798 <li>add rs1 to konsole, mlterm</li> 799 800 <li>improve several flash capabilities with trailing mandatory 801 delays</li> 802 803 <li>drop <tt>ich1</tt> from <tt>rxvt-basic</tt>, <tt>Eterm</tt> 804 and <tt>mlterm</tt> to improve compatibility with old 805 non-curses programs</li> 806 807 <li>add/use <a href= 808 "/ncurses/terminfo.src.html#tic-xterm_keypad"><tt>xterm+keypad</tt></a> 809 in <tt>xterm-new</tt></li> 810 811 <li>use <a href= 812 "/ncurses/terminfo.src.html#tic-xterm_sl-twm"><tt>xterm+sl-twm</tt></a> 813 for consistency, nine places</li> 814 815 <li>improve <em>xm</em> example in <a href= 816 "/ncurses/terminfo.src.html#tic-xterm_x11mouse">xterm+x11mouse</a> 817 and <a href= 818 "/ncurses/terminfo.src.html#tic-xterm_sm_1006">xterm+sm_1006</a>.</li> 819 </ul> 820 821 <p>while others affected specific descriptions. These were 822 retested, to take into account changes by their developers:</p> 823 824 <blockquote> 825 <p><tt>terminator</tt>, <tt>st</tt></p> 826 </blockquote> 827 828 <p>while these are specific fixes based on reviewing 829 documentation, user reports, or warnings from <span class= 830 "part-name">tic</span>:</p> 831 832 <dl> 833 <dt><a href= 834 "/ncurses/terminfo.src.html#tic-adds200">adds200</a>:</dt> 835 836 <dd> 837 <ul> 838 <li>fix typo</li> 839 </ul> 840 </dd> 841 842 <dt><a href= 843 "/ncurses/terminfo.src.html#tic-gnome-256color">gnome-256color</a> 844 </dt> 845 846 <dd> 847 <ul> 848 <li>base entry on "gnome", not "vte", for consistency</li> 849 </ul> 850 </dd> 851 852 <dt><a href= 853 "/ncurses/terminfo.src.html#tic-interix">interix</a> 854 </dt> 855 856 <dd> 857 <ul> 858 <li>trim unnecessary setf/setb</li> 859 </ul> 860 </dd> 861 862 <dt><a href= 863 "/ncurses/terminfo.src.html#tic-linux-16color">linux-16color</a> 864 </dt> 865 866 <dd> 867 <ul> 868 <li>accommodate <a href= 869 "https://lists.gnu.org/archive/html/bug-ncurses/2019-10/msg00061.html"> 870 Linux console driver</a> incompatibility introduced in 871 early 2018</li> 872 </ul> 873 </dd> 874 875 <dt><a href= 876 "/ncurses/terminfo.src.html#tic-nsterm-256color">nsterm-256color</a>:</dt> 877 878 <dd> 879 <ul> 880 <li>add nsterm-build309 to replace nsterm-256color, 881 assigning the latter as an alias of nsterm, to make mouse 882 work with nsterm-256color</li> 883 </ul> 884 </dd> 885 886 <dt><a href= 887 "/ncurses/terminfo.src.html#tic-regent40">regent40</a>:</dt> 888 889 <dd> 890 <ul> 891 <li>renumber function-keys to match manual</li> 892 </ul> 893 </dd> 894 895 <dt><a href= 896 "/ncurses/terminfo.src.html#tic-regent60">regent60</a>:</dt> 897 898 <dd> 899 <ul> 900 <li>add cd (clr_eos)</li> 901 902 <li>corrected acsc</li> 903 904 <li>add shifted function-keys</li> 905 </ul> 906 </dd> 907 908 <dt><a href= 909 "/ncurses/terminfo.src.html#tic-tvi950">tvi950</a>:</dt> 910 911 <dd> 912 <ul> 913 <li>added function-key definitions to agree with Televideo 914 950 manual</li> 915 916 <li>corrected acsc</li> 917 918 <li>remove bogus kf0</li> 919 920 <li>add bel</li> 921 </ul> 922 </dd> 923 924 <dt><a href= 925 "/ncurses/terminfo.src.html#tic-tvi955">tvi955</a>:</dt> 926 927 <dd> 928 <ul> 929 <li>fix typo</li> 930 </ul> 931 </dd> 932 933 <dt><a href= 934 "/ncurses/terminfo.src.html#tic-vi200">vi200</a>:</dt> 935 936 <dd> 937 <ul> 938 <li>add acsc string, including right/down-arrow</li> 939 </ul> 940 </dd> 941 942 <dt><a href= 943 "/ncurses/terminfo.src.html#tic-wy50">wy50</a>:</dt> 944 945 <dd> 946 <ul> 947 <li>corrected acsc</li> 948 </ul> 949 </dd> 950 951 <dt><a href="/ncurses/terminfo.src.html#tic-wy50">wy50</a> and 952 <a href="/ncurses/terminfo.src.html#tic-wy60">wy60</a>:</dt> 953 954 <dd> 955 <ul> 956 <li>add shifted function-keys as kF1 to kF16</li> 957 </ul> 958 </dd> 959 960 <dt><a href= 961 "/ncurses/terminfo.src.html#tic-xterm_x11hilite">xterm+x11hilite</a>:</dt> 962 963 <dd> 964 <ul> 965 <li>eliminate unused <em>p5</em> parameter.</li> 966 </ul> 967 </dd> 968 </dl> 969 970 <p>A few entries use extensions (user-defined terminal 971 capabilities):</p> 972 973 <ul> 974 <li>use <a href= 975 "/ncurses/terminfo.src.html#tic-xterm_sm_1006"><tt>xterm+sm+1006</tt></a> 976 (aka “SGR 1006 mouse”) for konsole-base and 977 putty</li> 978 979 <li>add <em><tt>Smol/Rmol</tt></em> user-defined capability to 980 <tt>tmux</tt> and <tt>vte-2018</tt></li> 981 982 <li>add <em><tt>Smulx</tt></em> user-defined capability to 983 <tt>tmux</tt>, <tt>vte-2018</tt></li> 984 </ul> 985 986 <h3><a name="h3-documentation" id= 987 "h3-documentation">Documentation</a></h3> 988 989 <p>As usual, this release</p> 990 991 <ul> 992 <li> 993 <p>improves documentation by describing new features,</p> 994 </li> 995 996 <li> 997 <p>attempts to improve the description of features which 998 users have found confusing</p> 999 </li> 1000 1001 <li> 1002 <p>fills in overlooked descriptions of features which were 1003 described in the <a href= 1004 "https://invisible-island.net/ncurses/NEWS.html">NEWS</a> 1005 file but treated sketchily in manual pages.</p> 1006 </li> 1007 </ul> 1008 1009 <p>In addition to providing background information to explain 1010 these features and show how they evolved, there are corrections, 1011 clarifications, etc.:</p> 1012 1013 <ul> 1014 <li> 1015 <p>Corrections:</p> 1016 1017 <ul> 1018 <li>correct error-returns listed in manual pages for a few 1019 form functions</li> 1020 1021 <li>corrected prototypes in several manpages using script 1022 to extract those in compilable form.</li> 1023 1024 <li>fix typo in <a href= 1025 "https://invisible-island.net/ncurses/man/term.5.html#h3-EXTENDED-NUMBER-FORMAT"> 1026 term.5</a>, improve explanation of format</li> 1027 </ul> 1028 </li> 1029 1030 <li> 1031 <p>Clarify in manual pages that <a href= 1032 "https://invisible-island.net/ncurses/man/curs_printw.3x.html#h2-PORTABILITY"> 1033 vwprintw</a> and <a href= 1034 "https://invisible-island.net/ncurses/man/curs_scanw.3x.html#h2-PORTABILITY"> 1035 vwscanw</a> are obsolete.<br> 1036 They have not been part of X/Open Curses since 2007.</p> 1037 </li> 1038 1039 <li> 1040 <p>New/improved history and portability sections:</p> 1041 1042 <ul> 1043 <li><a href= 1044 "https://invisible-island.net/ncurses/man/curs_addch.3x.html#h3-ACS-Symbols"> 1045 curs_addch.3x</a> gives some background for ACS 1046 symbols.</li> 1047 1048 <li><a href= 1049 "https://invisible-island.net/ncurses/man/curs_getcchar.3x.html#h2-PORTABILITY"> 1050 curs_getcchar.3x</a> explains a difference between ncurses 1051 and X/Open Curses.</li> 1052 1053 <li><a href= 1054 "https://invisible-island.net/ncurses/man/curs_getstr.3x.html#h2-PORTABILITY"> 1055 curs_getstr.3x</a> gives historical/portability background 1056 for the length parameter of <tt>wgetnstr</tt>.</li> 1057 1058 <li><a href= 1059 "https://invisible-island.net/ncurses/man/curs_slk.3x.html"> 1060 curs_slk.3x</a> lists a few differences between SVr4 curses 1061 and X/Open Curses for soft-keys.</li> 1062 1063 <li><a href= 1064 "https://invisible-island.net/ncurses/man/curs_terminfo.3x.html"> 1065 curs_terminfo.3x</a> explains that the initial 1066 implementation of terminfo in SVr2 was mostly replaced by 1067 other developers in SVr3.</li> 1068 1069 <li><a href= 1070 "https://invisible-island.net/ncurses/man/infocmp.1m.html">infocmp.1</a> 1071 explains that the initial version of terminfo had no tool 1072 for decompiling descriptions. That came later, with SVr3, 1073 with a different developer.</li> 1074 1075 <li><a href= 1076 "https://invisible-island.net/ncurses/man/tabs.1">tabs.1</a> 1077 tells more than you wanted to know about the tool.</li> 1078 1079 <li><a href= 1080 "https://invisible-island.net/ncurses/man/tic.1m.html">tic.1</a> 1081 explains that the initial version of terminfo had a 1082 rudimentary tool (based on termcap) for compiling entries. 1083 The tool used with Unix was developed by others for 1084 SVr3.</li> 1085 1086 <li><a href= 1087 "https://invisible-island.net/ncurses/man/toe.1m.html">toe.1</a> 1088 explains the origin of this tool.</li> 1089 </ul> 1090 </li> 1091 1092 <li> 1093 <p>Improvements for <a href= 1094 "https://invisible-island.net/ncurses/man/user_caps.5.html">user_caps.5</a>:</p> 1095 1096 <ul> 1097 <li>mention <tt>meml</tt>, <tt>memu</tt> and 1098 <tt>box1</tt></li> 1099 1100 <li>expanded description of <tt>XM</tt></li> 1101 1102 <li>add a clarification regarding the <tt>RGB</tt> 1103 capability.</li> 1104 1105 <li>mention user_caps.5 in the tic and infocmp manual 1106 pages.</li> 1107 </ul> 1108 </li> 1109 1110 <li> 1111 <p>Other improvements:</p> 1112 1113 <ul> 1114 <li><a href= 1115 "https://invisible-island.net/ncurses/man/curs_add_wch.3x.html#h3-Line-Graphics"> 1116 curs_add_wch.3x</a> adds note about Unicode terminology for 1117 the line-drawing characters.</li> 1118 1119 <li><a href= 1120 "https://invisible-island.net/ncurses/man/curs_color.3x.html#h3-RETURN-VALUE"> 1121 curs_color.3x</a> improves discussion of error returns and 1122 extensions.</li> 1123 1124 <li><a href= 1125 "https://invisible-island.net/ncurses/man/curs_mouse.3x.html"> 1126 curs_mouse.3x</a> explains how the <tt>kmous</tt> and 1127 <tt>XM</tt> capabilities are used for xterm-mouse 1128 input.</li> 1129 1130 <li><a href= 1131 "https://invisible-island.net/ncurses/man/curs_refresh.3x.html#h3-wnoutrefresh_doupdate"> 1132 curs_refresh.3x</a> improves documentation regarding the 1133 virtual and physical screens.</li> 1134 1135 <li><a href= 1136 "https://invisible-island.net/ncurses/man/curs_util.3x.html"> 1137 curs_util.3x</a> mentions a difference between SVr4 and 1138 X/Open Curses for <tt>unctrl.h</tt></li> 1139 1140 <li><a href= 1141 "https://invisible-island.net/ncurses/man/curs_variables.3x.html#h2-PORTABILITY"> 1142 curs_variables.3x</a> improves description of the 1143 <em>init_tabs</em> capability and <tt>TABSIZE</tt> 1144 variable.</li> 1145 1146 <li><a href= 1147 "https://invisible-island.net/ncurses/man/ncurses.3x.html#h2-ALTERNATE-CONFIGURATIONS"> 1148 ncurses.3x</a> improves documentation regarding 1149 feature-test macros in curses.h</li> 1150 1151 <li><a href= 1152 "https://invisible-island.net/ncurses/man/resizeterm.3x.html#h3-resize_term"> 1153 resizeterm.3x</a> about top-level windows which touch the 1154 screen's borders.</li> 1155 1156 <li><a href= 1157 "https://invisible-island.net/ncurses/man/tput.1.html#h3-Terminal-Size"> 1158 tput.1</a> clarifies how <em>tput</em> determines the 1159 terminal size.</li> 1160 </ul> 1161 </li> 1162 </ul> 1163 1164 <p>There are no new manual pages (all of the manual page updates 1165 are to existing pages).</p> 1166 1167 <p>Some of the improvements are more subtle, relating to the way 1168 the information is presented. For instance, the generated 1169 terminfo.5 file uses a different table layout, allowing it to use 1170 space on wide terminals more effectively.</p> 1171 1172 <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting 1173 bug-fixes</a></h3> 1174 1175 <p>While there were many bugs fixed during development of ncurses 1176 6.2, only a few (the reason for this release) were both important 1177 and interesting. Most of the bug-fixes were for local issues 1178 which did not affect compatibility across releases. Since those 1179 are detailed in the NEWS file no elaboration is needed here.</p> 1180 1181 <p>The interesting bugs were in tic/infocmp's handling of 1182 user-defined capabilities. These were not recent bugs. Initially 1183 it was a simple problem:</p> 1184 1185 <ul> 1186 <li>The user-defined capabilities can be any type (boolean, 1187 number or string), but once given a type all uses of the name 1188 must conform to that type—unless some special support for 1189 a particular multi-typed name is built into ncurses.</li> 1190 1191 <li> 1192 <p>One of simpleterm's contributors copied some definitions 1193 for using <em>tmux</em>'s user-defined capabilities in 1194 <a href= 1195 "https://git.suckless.org/st/commit/06f8cf8ca87a81db15816658c40b2afcd1ad5332.html"> 1196 late in 2016</a>.</p> 1197 1198 <blockquote> 1199 <pre class="demo-name"> 1200diff --git a/st.info b/st.info 1201@@ -185,7 +185,10 @@ st| simpleterm, 1202 tsl=\E]0;, 1203 xenl, 1204 vpa=\E[%i%p1%dd, 1205- 1206+# Tmux unofficial extensions, see TERMINFO EXTENSIONS in tmux(1) 1207+ Se, 1208+ Ss, 1209+ Tc, 1210 1211 st-256color| simpleterm with 256 colors, 1212 use=st, 1213</pre> 1214 </blockquote> 1215 </li> 1216 1217 <li> 1218 <p>Later, in (referring to a version from <a href= 1219 "https://git.suckless.org/st/commit/c0882f2ed1d7a2dd0fa2efa52157e6fc6fde3652.html"> 1220 mid-2017</a>), a user asked to have it updated in 1221 ncurses.</p> 1222 </li> 1223 1224 <li> 1225 <p>However, it had an error from the change in late 2016. The 1226 terminal description made what <em>tmux</em> expected to be 1227 <strong>string</strong> actually a 1228 <strong>boolean</strong>.</p> 1229 1230 <p>Over the years, there were problems with each of 1231 simpleterm's terminal descriptions. I repaired those, and 1232 usually dealt with the problem.</p> 1233 </li> 1234 1235 <li> 1236 <p>The difference in this case was that when compiling the 1237 terminal database, <em>tic</em> may have in memory the 1238 definitions for more than one terminal description (so that 1239 it can resolve “<tt>use=</tt>” clauses). Seeing 1240 two different types for the same name, in certain situations 1241 it would incorrectly merge the symbol tables for the two 1242 terminal descriptions.</p> 1243 </li> 1244 1245 <li> 1246 <p>On simpleterm's side, their bug was finally fixed in 1247 <a href= 1248 "https://git.suckless.org/st/commit/83866428de031300eab03fbb116bcf7d2b1d4f60.html"> 1249 late 2019</a>, three years after the bug was created.</p> 1250 </li> 1251 </ul> 1252 1253 <p>For ncurses, the elapsed time to fix this bug was less than 1254 three years. Someone reported a problem with the terminal 1255 description a few weeks after releasing ncurses 6.1 (in <a href= 1256 "https://github.com/tmux/tmux/issues/1264">tmux #1264</a>), and 1257 the terminal description was updated that week (ncurses patch 1258 <a href= 1259 "https://invisible-island.net/ncurses/NEWS.html#t20180224">20180224</a>):</p> 1260 1261 <blockquote> 1262 <pre class="demo-name"> 126320180224 1264 + modify _nc_resolve_uses2() to detect incompatible types when merging 1265 a "use=" clause of extended capabilities. The problem was seen in a 1266 defective terminfo integrated from simpleterm sources in 20171111, 1267 compounded by repair in 20180121. 1268 + correct Ss/Ms interchange in st-0.7 entry (tmux #1264) -TD 1269</pre> 1270 </blockquote> 1271 1272 <p>The larger part of that change added a check to prevent a 1273 simple merge of terminal descriptions where the same user-defined 1274 name was used with different types. But it raised some 1275 questions:</p> 1276 1277 <ul> 1278 <li> 1279 <p>Was there a reliable way to manage terminal descriptions 1280 which used the same extended name in different ways?</p> 1281 </li> 1282 1283 <li> 1284 <p>Should ncurses provide a registry of well-known extended 1285 names, with their types?</p> 1286 </li> 1287 </ul> 1288 1289 <p>Since the correction to <a href= 1290 "https://invisible-island.net/ncurses/ncurses.html#download_database"> 1291 <tt>terminfo.src</tt></a> could have been readily adopted by 1292 packagers, there was nothing more to be done from ncurses' 1293 standpoint on that part. But improving ncurses to prevent issues 1294 like that is the reason for making a release.</p> 1295 1296 <p>Nothing more (constructive) was mentioned with regard to 1297 simpleterm. But a few problems were found in the handling of 1298 user-defined capabilities:</p> 1299 1300 <ul> 1301 <li> 1302 <p>Forward-references to user-defined capabilities in a 1303 “<tt>use=</tt>” clause did not allocate new data 1304 for each use. In <em>tic</em>, successive compilation of 1305 terminal entries could add user-defined capabilities to the 1306 wrong terminal entry.</p> 1307 1308 <p>This was not noticed before, since xterm's terminal 1309 descriptions were the main users of the feature, and almost 1310 all of the uses of the building-blocks which contained 1311 user-defined capabilities were backward-references.</p> 1312 </li> 1313 1314 <li> 1315 <p>There is one (documented) case where ncurses 6.1 supports 1316 a user-defined capability that could be any type (i.e., 1317 “RGB”). The check added in February 2018 to guard 1318 against mismatches did not handle all of the combinations 1319 needed.</p> 1320 </li> 1321 </ul> 1322 1323 <p>Both of these issues dated from the original implementation of 1324 user-defined capabilities. Fixing them does not change the 1325 terminal database, but a older <em>tic</em> without the fixes 1326 will not be able to handle terminfo sources which rely upon those 1327 fixes. Starting in June 2019, the download link for the terminfo 1328 source file was capped at that date. The development sources have 1329 an up-to-date copy of the file, for people with a legitimate need 1330 for it.</p> 1331 1332 <p>The “<tt>-c</tt>” (check) option of <em>tic</em> 1333 is not very useful if it cannot offer advice on parameters needed 1334 for user-defined capabilities. The various <em>Caps</em> files 1335 were reorganized to reduce redundancy, and in the common portion 1336 (<a href= 1337 "https://github.com/ThomasDickey/ncurses-snapshots/blob/master/include/Caps-ncurses">Caps-ncurses</a>), 1338 a registry of user-defined capabilities is provided for use by 1339 <em>tic</em>. While users can still define their own custom 1340 capabilities, <em>tic</em> will not offer any advice when their 1341 parameters do not match.</p> 1342 1343 <p>In ncurses 6.2, <em>tic</em> makes a special check to allow 1344 any type for <em>RGB</em>, but its being able to do this relies 1345 upon fixes made in the ncurses library in mid-2019.</p> 1346 1347 <h3><a name="h3-config-config" id= 1348 "h3-config-config">Configuration changes</a></h3> 1349 1350 <h4><a name="h4-config-major" id="h4-config-major">Major 1351 changes</a></h4> 1352 1353 <p>There are no major changes. Several new options were added to 1354 ease integration of packages with systems using different 1355 versions of <em>GNAT</em> and <em>ncurses</em>. Also, 1356 improvements were made to configure checks.</p> 1357 1358 <h4><a name="h4-config-options" id= 1359 "h4-config-options">Configuration options</a></h4> 1360 1361 <p>There are a few new/modified configure options:</p> 1362 1363 <dl> 1364 <dt><tt>--with-config-suffix</tt> 1365 </dt> 1366 1367 <dd> 1368 <p>helps work around a filename conflict with Debian packages 1369 versus test-packages.</p> 1370 </dd> 1371 1372 <dt><tt>--with-ada-libname</tt> 1373 </dt> 1374 1375 <dd> 1376 <p>allows one to rename the “AdaCurses” library 1377 (at least one packager prefers a lowercase name).</p> 1378 </dd> 1379 1380 <dt><tt>--with-fallbacks</tt> 1381 </dt> 1382 1383 <dd> 1384 <p>now ensures there is a value, and adds the fallback 1385 information to top-level Makefile summary.</p> 1386 </dd> 1387 1388 <dt><tt>--with-pcre2</tt> 1389 </dt> 1390 1391 <dd> 1392 <p>check for pcre-posix library to help with MinGW port.</p> 1393 </dd> 1394 1395 <dt><tt>--with-tic-path</tt> and<br></dt> 1396 1397 <dt><tt>--with-infocmp-path</tt> 1398 </dt> 1399 1400 <dd> 1401 <p>help work around problems building fallback source using 1402 pre-6.0 tic/infocmp.</p> 1403 </dd> 1404 1405 <dt><tt>--with-versioned-syms</tt> 1406 </dt> 1407 1408 <dd> 1409 <p>option value can now be a relative pathname.</p> 1410 </dd> 1411 </dl> 1412 1413 <h3><a name="h3-portability" id="h3-portability">Portability</a></h3> 1414 1415 <p>Many of the portability changes are implemented via the 1416 configure script:</p> 1417 1418 <ul> 1419 <li> 1420 <p>ignore <a href= 1421 "/ncurses/man/ncurses.3x.html#h3-TERMINFO"><tt>$TERMINFO</tt></a> 1422 as a default value in configure script if it came from the 1423 <tt>infocmp</tt> <strong><tt>-Q</tt></strong> option.</p> 1424 </li> 1425 1426 <li> 1427 <p>distinguish gcc from icc and clang when the 1428 <tt>--enable-warnings</tt> option is not used, to avoid 1429 unnecessary warnings about unrecognized inline options</p> 1430 </li> 1431 1432 <li> 1433 <p>consistently prepend new libraries as they are found 1434 during configuration, rather than relying upon the linker to 1435 resolve order dependencies of libraries.</p> 1436 </li> 1437 1438 <li> 1439 <p>modified configure scripts to reduce relinking/ranlib 1440 during library install :</p> 1441 1442 <ul> 1443 <li>use “<tt>install -p</tt>” when available, 1444 to avoid need for ranlib of static libraries.</li> 1445 1446 <li>scripts which use 1447 “<tt>--disable-relink</tt>;” add a 1-second 1448 sleep to work around tools which use whole-second 1449 timestamps, e.g., in <tt>utime</tt> rather than the actual 1450 file system resolution.</li> 1451 </ul> 1452 </li> 1453 1454 <li> 1455 <p id="getenv-check">add configure check for <a href= 1456 "#getenv-fixes"><tt>getenv</tt></a> to work around 1457 implementation shown in Emscripten which overwrites the 1458 previous return value on each call.</p> 1459 1460 <p>Use that to optionally suppress <tt>START_TRACE</tt> 1461 macro, whose call to <tt>getenv</tt> may not work 1462 properly</p> 1463 </li> 1464 1465 <li> 1466 <p>change target configure level for <tt>_XOPEN_SOURCE</tt> 1467 to 600 to address use of <tt>vsscanf</tt> and 1468 <tt>setenv</tt>.</p> 1469 </li> 1470 1471 <li> 1472 <p>reduce use of <tt>_GNU_SOURCE</tt> for current glibc where 1473 <tt>_DEFAULT_SOURCE</tt> combines with 1474 <tt>_XOPEN_SOURCE</tt></p> 1475 1476 <p>Allow for Cygwin's newlib when checking for the 1477 _DEFAULT_SOURCE symbol.</p> 1478 1479 <p>MidnightBSD is now checked for the 1480 <tt>_XOPEN_SOURCE</tt>-related definitions.</p> 1481 </li> 1482 1483 <li> 1484 <p>If the check for <tt>va_copy</tt> or <tt>__va_copy</tt> 1485 fails,</p> 1486 1487 <ul> 1488 <li>configure now tries copying the pointers for 1489 <tt>va_list</tt>, or as an array.</li> 1490 1491 <li>alternatively, it checks for 1492 <tt>__builtin_va_copy</tt>(), which could be used with AIX 1493 <tt>xlc</tt> in <em>c89</em> mode.</li> 1494 </ul> 1495 </li> 1496 1497 <li> 1498 <p>several changes to support a port to Ultrix 3.1:</p> 1499 1500 <ul> 1501 <li>check if "b" binary feature of fopen works</li> 1502 1503 <li>check for missing feature of locale.h</li> 1504 1505 <li>add fallback for strstr() in test-programs</li> 1506 1507 <li>add fallback for STDOUT_FILENO in test-programs</li> 1508 </ul> 1509 </li> 1510 1511 <li> 1512 <p>The <em>test/configure</em> script (used for <a href= 1513 "/ncurses/ncurses-examples.html"><em>ncurses-examples</em></a>) 1514 is improved:</p> 1515 1516 <ul> 1517 <li>work around non-ncurses termcap.h file, e.g., in 1518 Slackware.</li> 1519 1520 <li>check for <a href= 1521 "/ncurses/man/curs_variables.3x.html#h3-TABSIZE"><tt>TABSIZE</tt></a> 1522 variable.</li> 1523 1524 <li>checks for the X11/Intrinsic.h header, accommodate 1525 recent MacOS changes which largely emptied 1526 <tt>/usr/include</tt>.</li> 1527 </ul> 1528 </li> 1529 </ul> 1530 1531 <p>Here are some of the other portability fixes:</p> 1532 1533 <ul> 1534 <li> 1535 <p>added dummy "check" rule in top-level and test-Makefile to 1536 simplify building test-packages for ArchLinux.</p> 1537 </li> 1538 1539 <li> 1540 <p>dropped library-dependency on psapi for MinGW port, since 1541 win_driver.c defines <tt>PSAPI_VERSION</tt> to 2, making it 1542 use <tt>GetProcessImageFileName</tt> from kernel32.dll</p> 1543 </li> 1544 1545 <li> 1546 <p>made build-fixes for configuration using --program-suffix 1547 with Ada95, noticed with MacOS but applicable to other 1548 platforms without libpanelw, etc.</p> 1549 </li> 1550 1551 <li> 1552 <p>modified ncurses/Makefile.in to fix a case where 1553 Debian/testing changes to the ld --as-needed configuration 1554 broke ncurses-examples test packages.</p> 1555 </li> 1556 1557 <li> 1558 <p>used <tt>_WIN32</tt>/<tt>_WIN64</tt> in preference to 1559 <tt>__MINGW32__</tt>/<tt>__MINGW64__</tt> symbols to simplify 1560 building with Microsoft Visual C++, since the former are 1561 defined in both compiler configurations.</p> 1562 </li> 1563 </ul> 1564 1565 <hr> 1566 1567 <h2><a name="h2-features" id="h2-features">Features of 1568 <span class="main-name">ncurses</span></a></h2> 1569 1570 <p>The <span class="main-name">ncurses</span> package is fully 1571 upward-compatible with SVr4 (System V Release 4) curses:</p> 1572 1573 <ul> 1574 <li> 1575 <p>All of the SVr4 calls have been implemented (and are 1576 documented).</p> 1577 </li> 1578 1579 <li> 1580 <p><span class="main-name">ncurses</span> supports all of the 1581 for SVr4 curses features including keyboard mapping, color, 1582 forms-drawing with ACS characters, and automatic recognition 1583 of keypad and function keys.</p> 1584 </li> 1585 1586 <li> 1587 <p><span class="main-name">ncurses</span> provides these SVr4 1588 add-on libraries (not part of X/Open Curses):</p> 1589 1590 <ul> 1591 <li> 1592 <p>the panels library, supporting a stack of windows with 1593 backing store.</p> 1594 </li> 1595 1596 <li> 1597 <p>the menus library, supporting a uniform but flexible 1598 interface for menu programming.</p> 1599 </li> 1600 1601 <li> 1602 <p>the form library, supporting data collection through 1603 on-screen forms.</p> 1604 </li> 1605 </ul> 1606 </li> 1607 1608 <li> 1609 <p><span class="main-name">ncurses</span>'s terminal database 1610 is fully compatible with that used by SVr4 curses.</p> 1611 1612 <ul> 1613 <li> 1614 <p><span class="main-name">ncurses</span> supports 1615 user-defined capabilities which it can see, but which are 1616 hidden from SVr4 curses applications using the 1617 <em>same</em> terminal database.</p> 1618 </li> 1619 1620 <li> 1621 <p>It can be optionally configured to match the format 1622 used in related systems such as AIX and Tru64.</p> 1623 </li> 1624 1625 <li> 1626 <p>Alternatively, <span class="main-name">ncurses</span> 1627 can be configured to use hashed databases rather than the 1628 directory of files used by SVr4 curses.</p> 1629 </li> 1630 </ul> 1631 </li> 1632 1633 <li> 1634 <p>The <span class="main-name">ncurses</span> utilities have 1635 options to allow you to filter terminfo entries for use with 1636 less capable <em>curses</em>/<em>terminfo</em> versions such 1637 as the HP/UX and AIX ports.</p> 1638 </li> 1639 </ul> 1640 1641 <p>The <span class="main-name">ncurses</span> package also has 1642 many useful extensions over SVr4:</p> 1643 1644 <ul> 1645 <li> 1646 <p>The API is 8-bit clean and base-level conformant with the 1647 X/OPEN curses specification, XSI curses (that is, it 1648 implements all BASE level features, and most EXTENDED 1649 features). It includes many function calls not supported 1650 under SVr4 curses (but portability of all calls is documented 1651 so you can use the SVr4 subset only).</p> 1652 </li> 1653 1654 <li> 1655 <p>Unlike SVr3 curses, <span class="main-name">ncurses</span> 1656 can write to the rightmost-bottommost corner of the screen if 1657 your terminal has an insert-character capability.</p> 1658 </li> 1659 1660 <li> 1661 <p>Ada95 and C++ bindings.</p> 1662 </li> 1663 1664 <li> 1665 <p>Support for mouse event reporting with X Window xterm and 1666 FreeBSD and OS/2 console windows.</p> 1667 </li> 1668 1669 <li> 1670 <p>Extended mouse support via Alessandro Rubini's gpm 1671 package.</p> 1672 </li> 1673 1674 <li> 1675 <p>The function <code>wresize</code> allows you to resize 1676 windows, preserving their data.</p> 1677 </li> 1678 1679 <li> 1680 <p>The function <code>use_default_colors</code> allows you to 1681 use the terminal's default colors for the default color pair, 1682 achieving the effect of transparent colors.</p> 1683 </li> 1684 1685 <li> 1686 <p>The functions <code>keyok</code> and 1687 <code>define_key</code> allow you to better control the use 1688 of function keys, e.g., disabling the <span class= 1689 "main-name">ncurses</span> KEY_MOUSE, or by defining more 1690 than one control sequence to map to a given key code.</p> 1691 </li> 1692 1693 <li> 1694 <p>Support for 256-color terminals, such as modern xterm.</p> 1695 </li> 1696 1697 <li> 1698 <p>Support for 16-color terminals, such as <em>aixterm</em> 1699 and <em>modern xterm</em>.</p> 1700 </li> 1701 1702 <li> 1703 <p>Better cursor-movement optimization. The package now 1704 features a cursor-local-movement computation more efficient 1705 than either BSD's or System V's.</p> 1706 </li> 1707 1708 <li> 1709 <p>Super hardware scrolling support. The screen-update code 1710 incorporates a novel, simple, and cheap algorithm that 1711 enables it to make optimal use of hardware scrolling, 1712 line-insertion, and line-deletion for screen-line movements. 1713 This algorithm is more powerful than the 4.4BSD curses 1714 <code>quickch</code> routine.</p> 1715 </li> 1716 1717 <li> 1718 <p>Real support for terminals with the magic-cookie glitch. 1719 The screen-update code will refrain from drawing a highlight 1720 if the magic- cookie unattributed spaces required just before 1721 the beginning and after the end would step on a non-space 1722 character. It will automatically shift highlight boundaries 1723 when doing so would make it possible to draw the highlight 1724 without changing the visual appearance of the screen.</p> 1725 </li> 1726 1727 <li> 1728 <p>It is possible to generate the library with a list of 1729 pre-loaded fallback entries linked to it so that it can serve 1730 those terminal types even when no terminfo tree or termcap 1731 file is accessible (this may be useful for support of 1732 screen-oriented programs that must run in single-user 1733 mode).</p> 1734 </li> 1735 1736 <li> 1737 <p>The <a href= 1738 "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name"> 1739 tic</span></a>/<a href= 1740 "https://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a> 1741 utility provided with <span class="main-name">ncurses</span> 1742 has the ability to translate many termcaps from the XENIX, 1743 IBM and AT&T extension sets.</p> 1744 </li> 1745 1746 <li> 1747 <p>A BSD-like <a href= 1748 "https://invisible-island.net/ncurses/man/tset.1.html"><span class="part-name"> 1749 tset</span></a> utility is provided.</p> 1750 </li> 1751 1752 <li> 1753 <p>The <span class="main-name">ncurses</span> library and 1754 utilities will automatically read terminfo entries from 1755 $HOME/.terminfo if it exists, and compile to that directory 1756 if it exists and the user has no write access to the system 1757 directory. This feature makes it easier for users to have 1758 personal terminfo entries without giving up access to the 1759 system terminfo directory.</p> 1760 </li> 1761 1762 <li> 1763 <p>You may specify a path of directories to search for 1764 compiled descriptions with the environment variable 1765 TERMINFO_DIRS (this generalizes the feature provided by 1766 TERMINFO under stock System V.)</p> 1767 </li> 1768 1769 <li> 1770 <p>In terminfo source files, use capabilities may refer not 1771 just to other entries in the same source file (as in System 1772 V) but also to compiled entries in either the system terminfo 1773 directory or the user's $HOME/.terminfo directory.</p> 1774 </li> 1775 1776 <li> 1777 <p>The table-of-entries utility <a href= 1778 "https://invisible-island.net/ncurses/man/toe.1m.html"><span class="part-name"> 1779 toe</span></a> makes it easy for users to see exactly what 1780 terminal types are available on the system.</p> 1781 </li> 1782 1783 <li> 1784 <p>The library meets the XSI requirement that every macro 1785 entry point have a corresponding function which may be linked 1786 (and will be prototype-checked) if the macro definition is 1787 disabled with <code>#undef</code>.</p> 1788 </li> 1789 1790 <li> 1791 <p>Extensive documentation is provided (see the <em><a href= 1792 "https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading"> 1793 Additional Reading</a></em> section of the <em><a href= 1794 "https://invisible-island.net/ncurses/ncurses.faq.html"><span class="main-name"> 1795 ncurses</span> FAQ</a></em> for online documentation).</p> 1796 </li> 1797 </ul> 1798 1799 <h2><a name="h2-who-uses" id="h2-who-uses">Applications using 1800 <span class="main-name">ncurses</span></a></h2> 1801 1802 <p>The <span class="main-name">ncurses</span> distribution 1803 includes a selection of test programs (including a few games). 1804 These are available separately as <a href= 1805 "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a></p> 1806 1807 <p>The ncurses library has been tested with a wide variety of 1808 applications including:</p> 1809 1810 <blockquote> 1811 <dl> 1812 <dt><span class="part-name">aptitude</span> 1813 </dt> 1814 1815 <dd> 1816 <p>FrontEnd to Apt, the debian package manager</p> 1817 1818 <p><a href= 1819 "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude</a></p> 1820 </dd> 1821 1822 <dt><span class="part-name">cdk</span> 1823 </dt> 1824 1825 <dd> 1826 <p>Curses Development Kit</p> 1827 1828 <p><a href= 1829 "https://invisible-island.net/cdk/">https://invisible-island.net/cdk/</a><br> 1830 1831 </p> 1832 </dd> 1833 1834 <dt><span class="part-name">ded</span> 1835 </dt> 1836 1837 <dd> 1838 <p>directory-editor</p> 1839 1840 <p><a href= 1841 "https://invisible-island.net/ded/">https://invisible-island.net/ded/</a></p> 1842 </dd> 1843 1844 <dt><span class="part-name">dialog</span> 1845 </dt> 1846 1847 <dd> 1848 <p>the underlying application used in Slackware's setup, 1849 and the basis for similar install/configure applications on 1850 many systems.</p> 1851 1852 <p><a href= 1853 "https://invisible-island.net/dialog/">https://invisible-island.net/dialog/</a></p> 1854 </dd> 1855 1856 <dt><span class="part-name">lynx</span> 1857 </dt> 1858 1859 <dd> 1860 <p>the text WWW browser</p> 1861 1862 <p><a href= 1863 "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/</a></p> 1864 </dd> 1865 1866 <dt><span class="part-name">mutt</span> 1867 </dt> 1868 1869 <dd> 1870 <p>mail utility</p> 1871 1872 <p><a href="http://www.mutt.org/">http://www.mutt.org/</a></p> 1873 </dd> 1874 1875 <dt><span class="part-name">ncftp</span> 1876 </dt> 1877 1878 <dd> 1879 <p>file-transfer utility</p> 1880 1881 <p><a href= 1882 "https://www.ncftp.com/">https://www.ncftp.com/</a></p> 1883 </dd> 1884 1885 <dt><span class="part-name">nvi</span> 1886 </dt> 1887 1888 <dd> 1889 <p>New vi uses ncurses.</p> 1890 1891 <p><a href= 1892 "https://sites.google.com/a/bostic.com/keithbostic/vi">https://sites.google.com/a/bostic.com/keithbostic/vi</a><br> 1893 1894 </p> 1895 </dd> 1896 1897 <dt><span class="part-name">ranger</span> 1898 </dt> 1899 1900 <dd> 1901 <p>A console file manager with VI key bindings in 1902 <em>Python</em>.</p> 1903 1904 <p><a href= 1905 "https://ranger.github.io/">https://ranger.github.io/</a></p> 1906 </dd> 1907 1908 <dt><span class="part-name">tin</span> 1909 </dt> 1910 1911 <dd> 1912 <p>newsreader, supporting color, MIME</p> 1913 1914 <p><a href="http://www.tin.org/">http://www.tin.org/</a></p> 1915 </dd> 1916 1917 <dt><span class="part-name">vifm</span> 1918 </dt> 1919 1920 <dd> 1921 <p>File manager with vi like keybindings</p> 1922 1923 <p><a href="https://vifm.info/">https://vifm.info/</a></p> 1924 </dd> 1925 </dl> 1926 </blockquote> 1927 1928 <p>as well as some that use <span class= 1929 "main-name">ncurses</span> for the terminfo support alone:</p> 1930 1931 <blockquote> 1932 <dl> 1933 <dt><span class="part-name">minicom</span> 1934 </dt> 1935 1936 <dd> 1937 <p>terminal emulator for serial modem connections</p> 1938 1939 <p><a href= 1940 "https://alioth.debian.org/projects/minicom/">https://alioth.debian.org/projects/minicom/</a></p> 1941 </dd> 1942 1943 <dt><span class="part-name">mosh</span> 1944 </dt> 1945 1946 <dd> 1947 <p>a replacement for <code>ssh</code>.</p> 1948 1949 <p><a href= 1950 "https://mosh.mit.edu/">https://mosh.mit.edu/</a></p> 1951 </dd> 1952 1953 <dt><span class="part-name">tack</span> 1954 </dt> 1955 1956 <dd> 1957 <p>terminfo action checker</p> 1958 1959 <p><a href= 1960 "https://invisible-island.net/ncurses/tack.html">https://invisible-island.net/ncurses/tack.html</a></p> 1961 </dd> 1962 1963 <dt><span class="part-name">tmux</span> 1964 </dt> 1965 1966 <dd> 1967 <p>terminal multiplexor</p> 1968 1969 <p><a href= 1970 "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki</a></p> 1971 </dd> 1972 1973 <dt><span class="part-name">vile</span> 1974 </dt> 1975 1976 <dd> 1977 <p><em>vi-like-emacs</em> may be built to use the terminfo, 1978 termcap or curses interfaces.</p> 1979 1980 <p><a href= 1981 "https://invisible-island.net/vile/">https://invisible-island.net/vile/</a></p> 1982 </dd> 1983 </dl> 1984 </blockquote> 1985 1986 <p>and finally, those which use only the termcap interface:</p> 1987 1988 <blockquote> 1989 <dl> 1990 <dt><span class="part-name">emacs</span> 1991 </dt> 1992 1993 <dd> 1994 <p>text editor</p> 1995 1996 <p><a href= 1997 "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/</a></p> 1998 </dd> 1999 2000 <dt><span class="part-name">less</span> 2001 </dt> 2002 2003 <dd> 2004 <p>The most commonly used <em>pager</em> (a program that 2005 displays text files).</p> 2006 2007 <p><a href= 2008 "http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/</a></p> 2009 </dd> 2010 2011 <dt><span class="part-name">screen</span> 2012 </dt> 2013 2014 <dd> 2015 <p>terminal multiplexor</p> 2016 2017 <p><a href= 2018 "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/</a></p> 2019 </dd> 2020 2021 <dt><span class="part-name">vim</span> 2022 </dt> 2023 2024 <dd> 2025 <p>text editor</p> 2026 2027 <p><a href="https://www.vim.org/">https://www.vim.org/</a></p> 2028 </dd> 2029 </dl> 2030 </blockquote> 2031 2032 <h2><a name="h2-development" id="h2-development">Development 2033 activities</a></h2> 2034 2035 <p>Zeyd Ben-Halim started <span class="main-name">ncurses</span> 2036 from a previous package pcurses, written by Pavel Curtis. Eric S. 2037 Raymond continued development. Jürgen Pfeifer wrote most of 2038 the form and menu libraries.</p> 2039 2040 <p>Ongoing development work is done by <a href= 2041 "mailto:dickey@invisible-island.net">Thomas E. Dickey</a>. Thomas 2042 E. Dickey has acted as the maintainer for the Free Software 2043 Foundation, which holds a <a href= 2044 "https://invisible-island.net/ncurses/ncurses-license.html">copyright 2045 on ncurses</a> for releases 4.2 through 6.1. Following the 2046 release of ncurses 6.1, effective as of release 6.2, copyright 2047 for ncurses reverted to Thomas E. Dickey (see the <a href= 2048 "https://invisible-island.net/ncurses/ncurses.faq.html#relicensed"> 2049 ncurses FAQ</a> for additional information).</p> 2050 2051 <p>Contact the current maintainers at</p> 2052 2053 <blockquote> 2054 <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a> 2055 </blockquote> 2056 2057 <p>To join the ncurses mailing list, please write email to</p> 2058 2059 <blockquote> 2060 <a href= 2061 "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a> 2062 </blockquote> 2063 containing the line: 2064 2065 <blockquote> 2066 <p><code>subscribe</code> 2067 <em><name>@<host.domain></em></p> 2068 </blockquote> 2069 2070 <p>This list is open to anyone interested in helping with the 2071 development and testing of this package.</p> 2072 2073 <p>Beta versions of <span class="main-name">ncurses</span> are 2074 made available at</p> 2075 2076 <blockquote> 2077 <p><a href= 2078 "ftp://ftp.invisible-island.net/ncurses/current/">ftp://ftp.invisible-island.net/ncurses/current/</a> 2079 and<br> 2080 <a href= 2081 "https://invisible-mirror.net/archives/ncurses/current/">https://invisible-mirror.net/archives/ncurses/current/</a> .</p> 2082 </blockquote> 2083 2084 <p>Patches to the current release are made available at</p> 2085 2086 <blockquote> 2087 <p><a href= 2088 "ftp://ftp.invisible-island.net/ncurses/6.1/">ftp://ftp.invisible-island.net/ncurses/6.1/</a> 2089 and<br> 2090 <a href= 2091 "https://invisible-mirror.net/archives/ncurses/6.1/">https://invisible-mirror.net/archives/ncurses/6.1/</a> .</p> 2092 </blockquote> 2093 2094 <p>There is an archive of the mailing list here:</p> 2095 2096 <blockquote> 2097 <p><a href= 2098 "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a> 2099 (also <a href= 2100 "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p> 2101 </blockquote> 2102 2103 <h2><a name="h2-this-stuff" id="h2-this-stuff">Related 2104 resources</a></h2> 2105 2106 <p>The release notes make scattered references to these pages, 2107 which may be interesting by themselves:</p> 2108 2109 <ul> 2110 <li><a href= 2111 "https://invisible-island.net/ncurses/ncurses-license.html"><span class="main-name"> 2112 ncurses</span> licensing</a></li> 2113 2114 <li><a href= 2115 "https://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol 2116 versioning in <span class="main-name">ncurses</span></a></li> 2117 2118 <li><a href= 2119 "https://invisible-island.net/ncurses/ncurses-slang.html">Comments 2120 on <span class="main-name">ncurses</span> versus <span class= 2121 "main-name">slang</span> (S-Lang)</a></li> 2122 2123 <li><a href= 2124 "https://invisible-island.net/ncurses/tack.html">tack – 2125 terminfo action checker</a></li> 2126 2127 <li><a href= 2128 "https://invisible-island.net/ncurses/tctest.html">tctest 2129 – termcap library checker</a></li> 2130 2131 <li><a href= 2132 "https://invisible-island.net/ncurses/ncurses.html#download_database"> 2133 Terminal Database</a></li> 2134 </ul> 2135 2136 <h2><a name="h2-other-stuff" id="h2-other-stuff">Other 2137 resources</a></h2> 2138 2139 <p>The distribution provides a newer version of the 2140 terminfo-format terminal description file once maintained by 2141 <a href="http://www.catb.org/~esr/terminfo/">Eric 2142 Raymond</a> . Unlike the older version, the termcap and 2143 terminfo data are provided in the same file, which also provides 2144 several user-definable extensions beyond the X/Open 2145 specification.</p> 2146 2147 <p>You can find lots of information on terminal-related topics 2148 not covered in the terminfo file at <a href= 2149 "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal"> 2150 Richard Shuford's archive</a> . The collection of computer 2151 manuals at <a href= 2152 "http://www.bitsavers.org/pdf/">bitsavers.org</a> has also been 2153 useful.</p> 2154 2155 <div class="nav"> 2156 <ul> 2157 <li><a href="#h2-overview">Overview</a></li> 2158 2159 <li> 2160 <a href="#h2-release-notes">Release Notes</a> 2161 2162 <ul> 2163 <li> 2164 <a href="#h3-library">Library improvements</a> 2165 2166 <ul> 2167 <li><a href="#h4-new-library">New features</a></li> 2168 2169 <li><a href="#h4-fixes-library">Other 2170 improvements</a></li> 2171 </ul> 2172 </li> 2173 2174 <li> 2175 <a href="#h3-programs">Program improvements</a> 2176 2177 <ul> 2178 <li><a href="#h4-utilities">Utilities</a></li> 2179 2180 <li><a href="#h4-examples">Examples</a></li> 2181 </ul> 2182 </li> 2183 2184 <li><a href="#h3-database">Terminal database</a></li> 2185 2186 <li><a href="#h3-documentation">Documentation</a></li> 2187 2188 <li><a href="#h3-bug-fixes">Interesting bug-fixes</a></li> 2189 2190 <li> 2191 <a href="#h3-config-config">Configuration changes</a> 2192 2193 <ul> 2194 <li><a href="#h4-config-major">Major changes</a></li> 2195 2196 <li><a href="#h4-config-options">Configuration 2197 options</a></li> 2198 </ul> 2199 </li> 2200 2201 <li><a href="#h3-portability">Portability</a></li> 2202 </ul> 2203 </li> 2204 2205 <li><a href="#h2-features">Features of <span class= 2206 "main-name">ncurses</span></a></li> 2207 2208 <li><a href="#h2-who-uses">Applications using <span class= 2209 "main-name">ncurses</span></a></li> 2210 2211 <li><a href="#h2-development">Development activities</a></li> 2212 2213 <li><a href="#h2-this-stuff">Related resources</a></li> 2214 2215 <li><a href="#h2-other-stuff">Other resources</a></li> 2216 </ul> 2217 </div> 2218</body> 2219</html> 2220