1<!-- 2 $Id: announce.html,v 1.64 2020/10/19 08:18:48 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#h2-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 id="h4-utilities">Several improvements were made to the 524 utility programs:</p> 525 526 <dl> 527 <dt><span class="part-name">clear</span> 528 </dt> 529 530 <dd> 531 <ul> 532 <li>improved logic for clearing with the <em>E3</em> 533 extension, in case the terminal scrolls content onto its 534 saved-lines before actually clearing the display, by 535 clearing the saved-lines after clearing the display</li> 536 </ul> 537 </dd> 538 539 <dt><span class="part-name">infocmp</span> 540 </dt> 541 542 <dd> 543 <ul> 544 <li>omit filtering of “<tt>OTxx</tt>” names 545 which are used for obsolete capabilities, when the output 546 is sorted by long-names. This change helps when making a 547 table of the short/long capability names.</li> 548 </ul> 549 </dd> 550 551 <dt><span class="part-name">tic</span> 552 </dt> 553 554 <dd> 555 <ul> 556 <li>added check for consistent alternate character set 557 capabilities.</li> 558 559 <li>added check for paired <tt>indn</tt>/<tt>rin</tt>.</li> 560 561 <li>added check for terminals with <tt>parm_dch</tt> vs 562 <tt>parm_ich</tt>.</li> 563 564 <li>added check for the case where 565 <tt>setf</tt>/<tt>setb</tt> are given using different 566 strings, but provide identical results to 567 <tt>setaf</tt>/<tt>setab</tt>.</li> 568 569 <li>corrected check for <tt>ich1</tt>.</li> 570 571 <li>changed a too-large terminal entry from a fatal error 572 to a warning.</li> 573 </ul> 574 </dd> 575 576 <dt><span class="part-name">toe</span> 577 </dt> 578 579 <dd> 580 <ul> 581 <li>ignores any hex/b64 <tt>$TERMINFO</tt> value in the 582 list of terminfo databases.</li> 583 </ul> 584 </dd> 585 586 <dt><span class="part-name">tset</span> 587 </dt> 588 589 <dd> 590 <ul> 591 <li>replace check in <span class="part-name">reset</span> 592 command for obsolete “<tt>pt</tt>” capability 593 using <tt>tbc</tt> and <tt>hts</tt> capabilities as 594 clues</li> 595 596 <li>modify <span class="part-name">reset</span> to allow 597 for tabstops at intervals other than 8.</li> 598 599 <li>change <span class="part-name">reset</span>'s behavior 600 for margins to simply clear soft-margins if possible, 601 rather than clearing and then setting them according to the 602 terminal's width.</li> 603 </ul> 604 </dd> 605 606 <dt><span class="part-name">tput</span> 607 </dt> 608 609 <dd> 610 <ul> 611 <li>add “<tt>x</tt>” to <tt>getopt</tt> string 612 so that “<tt>tput -x clear</tt>” 613 works.</li> 614 </ul> 615 </dd> 616 </dl> 617 618 <p>Several changes were made to the generated ncurses*config 619 scripts and the analogous “<tt>.pc</tt>” files to 620 reduce differences between the configurations they report:</p> 621 622 <ul> 623 <li> 624 <p>modified the ncurse*-config and pc-files to more closely 625 match for the <tt>-I</tt> and <tt>-l</tt> options.</p> 626 </li> 627 628 <li> 629 <p>filtered out linker-specs from the <tt>--libs</tt> 630 report.</p> 631 </li> 632 633 <li> 634 <p>amended the ncurses*-config and pc-files to take into 635 account the rpath hack which differed between those 636 files.</p> 637 </li> 638 639 <li> 640 <p>modified generated ncurses*config and ncurses.pc, 641 ncursesw.pc, etc., to list helper libraries such as gpm for 642 static linking.</p> 643 </li> 644 </ul> 645 646 <h4><a name="h4-examples" id="h4-examples">Examples</a></h4> 647 648 <p>Along with the library and utilities, improvements were made 649 to the <a href= 650 "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>. 651 Most of this activity aimed at improving the test-packages. A few 652 changes are more generally useful, e.g., for the main ncurses 653 test-program, and for analyzing traces using the 654 <em>tracemunch</em> script:</p> 655 656 <ul> 657 <li> 658 <p>improve recovery from error when reading command-character 659 in <tt>test/ncurses.c</tt>, showing the relevant error 660 message and not exiting on EINTR.</p> 661 </li> 662 663 <li> 664 <p>improve <em>tracemunch</em>, by keeping track of 665 <tt>TERMINAL*</tt> values, and if tracing was first turned on 666 after initialization, attempt to show distinct screen, window 667 and terminal names anyway.</p> 668 </li> 669 670 <li> 671 <p>modify <em>tracemunch</em> to accept filename parameters 672 in addition to use as a pipe/filter.</p> 673 </li> 674 675 <li> 676 <p>update <em>tracemunch</em> to work with <em>perl 677 5.26.2</em>, which changed the rules for escaping regular 678 expressions.</p> 679 </li> 680 681 <li> 682 <p>add some checks in <em>tracemunch</em> for undefined 683 variables.</p> 684 </li> 685 686 <li> 687 <p>modify <tt>TurnOn</tt>/<tt>TurnOff</tt> macros (in 688 lib_vidattr.c and lib_vid_attr.c) to avoid expansion of 689 “<tt>CUR</tt>” in trace.</p> 690 </li> 691 </ul> 692 693 <p>There are other new demo/test programs and reusable 694 examples:</p> 695 696 <dl> 697 <dt><span class="part-name">color_content</span> 698 </dt> 699 700 <dd>Demonstrate the <tt>color_content</tt> and 701 <tt>extended_color_content</tt> functions.</dd> 702 703 <dt><span class="part-name">demo_tabs</span> 704 </dt> 705 706 <dd>A simple demo of tabs in curses.</dd> 707 708 <dt><span class="part-name">dump_window</span> 709 </dt> 710 711 <dd>A portable curses screen-dump, used to compare ncurses 712 screen contents with Solaris.</dd> 713 714 <dt><span class="part-name">pair_content</span> 715 </dt> 716 717 <dd>Demonstrate the <tt>pair_content</tt> and 718 <tt>extended_pair_content</tt> functions.</dd> 719 720 <dt><span class="part-name">report_hashing</span> 721 </dt> 722 723 <dd>Check hash-tables used for terminfo and termcap names.</dd> 724 725 <dt><span class="part-name">parse_rgb</span> 726 </dt> 727 728 <dd>Sample implementation of the ncurses RGB extension from 729 <a href= 730 "https://invisible-island.net/ncurses/man/user_caps.5.html">user_caps.5</a>, 731 used in <em>picsmap</em> and <em>savescreen</em> programs.</dd> 732 </dl> 733 734 <p>A variety of improvements were made to existing programs, both 735 new features as well as options added to make the set of programs 736 more consistent.</p> 737 738 <ul> 739 <li> 740 <p>add “<tt>-l</tt>” option to test/background, 741 to dump screen contents in a form that lets different curses 742 implementations be compared.</p> 743 </li> 744 745 <li> 746 <p>add “<tt>@</tt>” command to test/ncurses 747 F-test, to allow rapid jump to different character pages.</p> 748 </li> 749 750 <li> 751 <p>added enum, regex examples to test/demo_forms</p> 752 </li> 753 754 <li> 755 <p>amend Scaled256() macro in test/picsmap.c to cover the 756 full range 0..1000</p> 757 </li> 758 759 <li> 760 <p>corrected pathname used in Ada95 sample programs for 761 <tt>explain.txt</tt>, to work with test-packages, and used an 762 awk script to split the resulting pathname when it would be 763 too long for a single line.</p> 764 </li> 765 766 <li> 767 <p>ignore interrupted system-call in test/ncurses's 768 command-line, e.g., if the terminal were resized.</p> 769 </li> 770 771 <li> 772 <p>improved ifdef's for <tt>TABSIZE</tt> variable, to help 773 with AIX/HPUX ports.</p> 774 </li> 775 </ul> 776 777 <h3><a name="h3-database" id="h3-database">Terminal database</a></h3> 778 779 <p>There are several new terminal descriptions:</p> 780 781 <blockquote style="word-break:keep-all"> 782 <p><tt>alacritty</tt>, <tt>domterm</tt>, <tt>kitty</tt>, 783 <tt>mintty</tt>, <tt>mintty-direct</tt>, <tt>ms-terminal</tt>, 784 <tt>n7900</tt>, <tt>nsterm-build309</tt>, 785 <tt>nsterm-direct</tt>, <tt>screen5</tt>, <tt>ti703</tt>, 786 <tt>ti707</tt>, <tt>ti703-w</tt>, <tt>ti707-w</tt> 787 <tt>vscode</tt>, <tt>vscode-direct</tt>, <tt>xterm-mono</tt>, 788 <tt>xterm.js</tt></p> 789 </blockquote> 790 791 <p>There are many changes to existing terminal descriptions. Some 792 were updates to several descriptions:</p> 793 794 <ul> 795 <li>use <a href= 796 "/ncurses/terminfo.src.html#tic-ansi_rep"><tt>ansi+rep</tt></a> 797 in a dozen places</li> 798 799 <li>add rs1 to konsole, mlterm</li> 800 801 <li>improve several flash capabilities with trailing mandatory 802 delays</li> 803 804 <li>drop <tt>ich1</tt> from <tt>rxvt-basic</tt>, <tt>Eterm</tt> 805 and <tt>mlterm</tt> to improve compatibility with old 806 non-curses programs</li> 807 808 <li>add/use <a href= 809 "/ncurses/terminfo.src.html#tic-xterm_keypad"><tt>xterm+keypad</tt></a> 810 in <tt>xterm-new</tt></li> 811 812 <li>use <a href= 813 "/ncurses/terminfo.src.html#tic-xterm_sl-twm"><tt>xterm+sl-twm</tt></a> 814 for consistency, nine places</li> 815 816 <li>improve <em>xm</em> example in <a href= 817 "/ncurses/terminfo.src.html#tic-xterm_x11mouse">xterm+x11mouse</a> 818 and <a href= 819 "/ncurses/terminfo.src.html#tic-xterm_sm_1006">xterm+sm_1006</a>.</li> 820 </ul> 821 822 <p>while others affected specific descriptions. These were 823 retested, to take into account changes by their developers:</p> 824 825 <blockquote> 826 <p><tt>terminator</tt>, <tt>st</tt></p> 827 </blockquote> 828 829 <p>while these are specific fixes based on reviewing 830 documentation, user reports, or warnings from <span class= 831 "part-name">tic</span>:</p> 832 833 <dl> 834 <dt><a href= 835 "/ncurses/terminfo.src.html#tic-adds200">adds200</a>:</dt> 836 837 <dd> 838 <ul> 839 <li>fix typo</li> 840 </ul> 841 </dd> 842 843 <dt><a href= 844 "/ncurses/terminfo.src.html#tic-gnome-256color">gnome-256color</a> 845 </dt> 846 847 <dd> 848 <ul> 849 <li>base entry on "gnome", not "vte", for consistency</li> 850 </ul> 851 </dd> 852 853 <dt><a href= 854 "/ncurses/terminfo.src.html#tic-interix">interix</a> 855 </dt> 856 857 <dd> 858 <ul> 859 <li>trim unnecessary setf/setb</li> 860 </ul> 861 </dd> 862 863 <dt><a href= 864 "/ncurses/terminfo.src.html#tic-linux-16color">linux-16color</a> 865 </dt> 866 867 <dd> 868 <ul> 869 <li>accommodate <a href= 870 "https://lists.gnu.org/archive/html/bug-ncurses/2019-10/msg00061.html"> 871 Linux console driver</a> incompatibility introduced in 872 early 2018</li> 873 </ul> 874 </dd> 875 876 <dt><a href= 877 "/ncurses/terminfo.src.html#tic-nsterm-256color">nsterm-256color</a>:</dt> 878 879 <dd> 880 <ul> 881 <li>add nsterm-build309 to replace nsterm-256color, 882 assigning the latter as an alias of nsterm, to make mouse 883 work with nsterm-256color</li> 884 </ul> 885 </dd> 886 887 <dt><a href= 888 "/ncurses/terminfo.src.html#tic-regent40">regent40</a>:</dt> 889 890 <dd> 891 <ul> 892 <li>renumber function-keys to match manual</li> 893 </ul> 894 </dd> 895 896 <dt><a href= 897 "/ncurses/terminfo.src.html#tic-regent60">regent60</a>:</dt> 898 899 <dd> 900 <ul> 901 <li>add cd (clr_eos)</li> 902 903 <li>corrected acsc</li> 904 905 <li>add shifted function-keys</li> 906 </ul> 907 </dd> 908 909 <dt><a href= 910 "/ncurses/terminfo.src.html#tic-tvi950">tvi950</a>:</dt> 911 912 <dd> 913 <ul> 914 <li>added function-key definitions to agree with Televideo 915 950 manual</li> 916 917 <li>corrected acsc</li> 918 919 <li>remove bogus kf0</li> 920 921 <li>add bel</li> 922 </ul> 923 </dd> 924 925 <dt><a href= 926 "/ncurses/terminfo.src.html#tic-tvi955">tvi955</a>:</dt> 927 928 <dd> 929 <ul> 930 <li>fix typo</li> 931 </ul> 932 </dd> 933 934 <dt><a href= 935 "/ncurses/terminfo.src.html#tic-vi200">vi200</a>:</dt> 936 937 <dd> 938 <ul> 939 <li>add acsc string, including right/down-arrow</li> 940 </ul> 941 </dd> 942 943 <dt><a href= 944 "/ncurses/terminfo.src.html#tic-wy50">wy50</a>:</dt> 945 946 <dd> 947 <ul> 948 <li>corrected acsc</li> 949 </ul> 950 </dd> 951 952 <dt><a href="/ncurses/terminfo.src.html#tic-wy50">wy50</a> and 953 <a href="/ncurses/terminfo.src.html#tic-wy60">wy60</a>:</dt> 954 955 <dd> 956 <ul> 957 <li>add shifted function-keys as kF1 to kF16</li> 958 </ul> 959 </dd> 960 961 <dt><a href= 962 "/ncurses/terminfo.src.html#tic-xterm_x11hilite">xterm+x11hilite</a>:</dt> 963 964 <dd> 965 <ul> 966 <li>eliminate unused <em>p5</em> parameter.</li> 967 </ul> 968 </dd> 969 </dl> 970 971 <p>A few entries use extensions (user-defined terminal 972 capabilities):</p> 973 974 <ul> 975 <li>use <a href= 976 "/ncurses/terminfo.src.html#tic-xterm_sm_1006"><tt>xterm+sm+1006</tt></a> 977 (aka “SGR 1006 mouse”) for konsole-base and 978 putty</li> 979 980 <li>add <em><tt>Smol/Rmol</tt></em> user-defined capability to 981 <tt>tmux</tt> and <tt>vte-2018</tt></li> 982 983 <li>add <em><tt>Smulx</tt></em> user-defined capability to 984 <tt>tmux</tt>, <tt>vte-2018</tt></li> 985 </ul> 986 987 <h3><a name="h3-documentation" id= 988 "h3-documentation">Documentation</a></h3> 989 990 <p>As usual, this release</p> 991 992 <ul> 993 <li> 994 <p>improves documentation by describing new features,</p> 995 </li> 996 997 <li> 998 <p>attempts to improve the description of features which 999 users have found confusing</p> 1000 </li> 1001 1002 <li> 1003 <p>fills in overlooked descriptions of features which were 1004 described in the <a href= 1005 "https://invisible-island.net/ncurses/NEWS.html">NEWS</a> 1006 file but treated sketchily in manual pages.</p> 1007 </li> 1008 </ul> 1009 1010 <p>In addition to providing background information to explain 1011 these features and show how they evolved, there are corrections, 1012 clarifications, etc.:</p> 1013 1014 <ul> 1015 <li> 1016 <p>Corrections:</p> 1017 1018 <ul> 1019 <li>correct error-returns listed in manual pages for a few 1020 form functions</li> 1021 1022 <li>corrected prototypes in several manpages using script 1023 to extract those in compilable form.</li> 1024 1025 <li>fix typo in <a href= 1026 "https://invisible-island.net/ncurses/man/term.5.html#h3-EXTENDED-NUMBER-FORMAT"> 1027 term.5</a>, improve explanation of format</li> 1028 </ul> 1029 </li> 1030 1031 <li> 1032 <p>Clarify in manual pages that <a href= 1033 "https://invisible-island.net/ncurses/man/curs_printw.3x.html#h2-PORTABILITY"> 1034 vwprintw</a> and <a href= 1035 "https://invisible-island.net/ncurses/man/curs_scanw.3x.html#h2-PORTABILITY"> 1036 vwscanw</a> are obsolete.<br> 1037 They have not been part of X/Open Curses since 2007.</p> 1038 </li> 1039 1040 <li> 1041 <p>New/improved history and portability sections:</p> 1042 1043 <ul> 1044 <li><a href= 1045 "https://invisible-island.net/ncurses/man/curs_addch.3x.html#h3-ACS-Symbols"> 1046 curs_addch.3x</a> gives some background for ACS 1047 symbols.</li> 1048 1049 <li><a href= 1050 "https://invisible-island.net/ncurses/man/curs_getcchar.3x.html#h2-PORTABILITY"> 1051 curs_getcchar.3x</a> explains a difference between ncurses 1052 and X/Open Curses.</li> 1053 1054 <li><a href= 1055 "https://invisible-island.net/ncurses/man/curs_getstr.3x.html#h2-PORTABILITY"> 1056 curs_getstr.3x</a> gives historical/portability background 1057 for the length parameter of <tt>wgetnstr</tt>.</li> 1058 1059 <li><a href= 1060 "https://invisible-island.net/ncurses/man/curs_slk.3x.html"> 1061 curs_slk.3x</a> lists a few differences between SVr4 curses 1062 and X/Open Curses for soft-keys.</li> 1063 1064 <li><a href= 1065 "https://invisible-island.net/ncurses/man/curs_terminfo.3x.html"> 1066 curs_terminfo.3x</a> explains that the initial 1067 implementation of terminfo in SVr2 was mostly replaced by 1068 other developers in SVr3.</li> 1069 1070 <li><a href= 1071 "https://invisible-island.net/ncurses/man/infocmp.1m.html">infocmp.1</a> 1072 explains that the initial version of terminfo had no tool 1073 for decompiling descriptions. That came later, with SVr3, 1074 with a different developer.</li> 1075 1076 <li><a href= 1077 "https://invisible-island.net/ncurses/man/tabs.1.html">tabs.1</a> 1078 tells more than you wanted to know about the tool.</li> 1079 1080 <li><a href= 1081 "https://invisible-island.net/ncurses/man/tic.1m.html">tic.1</a> 1082 explains that the initial version of terminfo had a 1083 rudimentary tool (based on termcap) for compiling entries. 1084 The tool used with Unix was developed by others for 1085 SVr3.</li> 1086 1087 <li><a href= 1088 "https://invisible-island.net/ncurses/man/toe.1m.html">toe.1</a> 1089 explains the origin of this tool.</li> 1090 </ul> 1091 </li> 1092 1093 <li> 1094 <p>Improvements for <a href= 1095 "https://invisible-island.net/ncurses/man/user_caps.5.html">user_caps.5</a>:</p> 1096 1097 <ul> 1098 <li>mention <tt>meml</tt>, <tt>memu</tt> and 1099 <tt>box1</tt></li> 1100 1101 <li>expanded description of <tt>XM</tt></li> 1102 1103 <li>add a clarification regarding the <tt>RGB</tt> 1104 capability.</li> 1105 1106 <li>mention user_caps.5 in the tic and infocmp manual 1107 pages.</li> 1108 </ul> 1109 </li> 1110 1111 <li> 1112 <p>Other improvements:</p> 1113 1114 <ul> 1115 <li><a href= 1116 "https://invisible-island.net/ncurses/man/curs_add_wch.3x.html#h3-Line-Graphics"> 1117 curs_add_wch.3x</a> adds note about Unicode terminology for 1118 the line-drawing characters.</li> 1119 1120 <li><a href= 1121 "https://invisible-island.net/ncurses/man/curs_color.3x.html#h2-RETURN-VALUE"> 1122 curs_color.3x</a> improves discussion of error returns and 1123 extensions.</li> 1124 1125 <li><a href= 1126 "https://invisible-island.net/ncurses/man/curs_mouse.3x.html"> 1127 curs_mouse.3x</a> explains how the <tt>kmous</tt> and 1128 <tt>XM</tt> capabilities are used for xterm-mouse 1129 input.</li> 1130 1131 <li><a href= 1132 "https://invisible-island.net/ncurses/man/curs_refresh.3x.html#h3-wnoutrefresh_doupdate"> 1133 curs_refresh.3x</a> improves documentation regarding the 1134 virtual and physical screens.</li> 1135 1136 <li><a href= 1137 "https://invisible-island.net/ncurses/man/curs_util.3x.html"> 1138 curs_util.3x</a> mentions a difference between SVr4 and 1139 X/Open Curses for <tt>unctrl.h</tt></li> 1140 1141 <li><a href= 1142 "https://invisible-island.net/ncurses/man/curs_variables.3x.html#h2-PORTABILITY"> 1143 curs_variables.3x</a> improves description of the 1144 <em>init_tabs</em> capability and <tt>TABSIZE</tt> 1145 variable.</li> 1146 1147 <li><a href= 1148 "https://invisible-island.net/ncurses/man/ncurses.3x.html#h2-ALTERNATE-CONFIGURATIONS"> 1149 ncurses.3x</a> improves documentation regarding 1150 feature-test macros in curses.h</li> 1151 1152 <li><a href= 1153 "https://invisible-island.net/ncurses/man/resizeterm.3x.html#h3-resize_term"> 1154 resizeterm.3x</a> about top-level windows which touch the 1155 screen's borders.</li> 1156 1157 <li><a href= 1158 "https://invisible-island.net/ncurses/man/tput.1.html#h3-Terminal-Size"> 1159 tput.1</a> clarifies how <em>tput</em> determines the 1160 terminal size.</li> 1161 </ul> 1162 </li> 1163 </ul> 1164 1165 <p>There are no new manual pages (all of the manual page updates 1166 are to existing pages).</p> 1167 1168 <p>Some of the improvements are more subtle, relating to the way 1169 the information is presented. For instance, the generated 1170 terminfo.5 file uses a different table layout, allowing it to use 1171 space on wide terminals more effectively.</p> 1172 1173 <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting 1174 bug-fixes</a></h3> 1175 1176 <p>While there were many bugs fixed during development of ncurses 1177 6.2, only a few (the reason for this release) were both important 1178 and interesting. Most of the bug-fixes were for local issues 1179 which did not affect compatibility across releases. Since those 1180 are detailed in the NEWS file no elaboration is needed here.</p> 1181 1182 <p>The interesting bugs were in tic/infocmp's handling of 1183 user-defined capabilities. These were not recent bugs. Initially 1184 it was a simple problem:</p> 1185 1186 <ul> 1187 <li>The user-defined capabilities can be any type (boolean, 1188 number or string), but once given a type all uses of the name 1189 must conform to that type—unless some special support for 1190 a particular multi-typed name is built into ncurses.</li> 1191 1192 <li> 1193 <p>One of simpleterm's contributors copied some definitions 1194 for using <em>tmux</em>'s user-defined capabilities in 1195 <a href= 1196 "https://git.suckless.org/st/commit/06f8cf8ca87a81db15816658c40b2afcd1ad5332.html"> 1197 late in 2016</a>.</p> 1198 1199 <blockquote> 1200 <pre class="demo-name"> 1201diff --git a/st.info b/st.info 1202@@ -185,7 +185,10 @@ st| simpleterm, 1203 tsl=\E]0;, 1204 xenl, 1205 vpa=\E[%i%p1%dd, 1206- 1207+# Tmux unofficial extensions, see TERMINFO EXTENSIONS in tmux(1) 1208+ Se, 1209+ Ss, 1210+ Tc, 1211 1212 st-256color| simpleterm with 256 colors, 1213 use=st, 1214</pre> 1215 </blockquote> 1216 </li> 1217 1218 <li> 1219 <p>Later, in (referring to a version from <a href= 1220 "https://git.suckless.org/st/commit/c0882f2ed1d7a2dd0fa2efa52157e6fc6fde3652.html"> 1221 mid-2017</a>), a user asked to have it updated in 1222 ncurses.</p> 1223 </li> 1224 1225 <li> 1226 <p>However, it had an error from the change in late 2016. The 1227 terminal description made what <em>tmux</em> expected to be 1228 <strong>string</strong> actually a 1229 <strong>boolean</strong>.</p> 1230 1231 <p>Over the years, there were problems with each of 1232 simpleterm's terminal descriptions. I repaired those, and 1233 usually dealt with the problem.</p> 1234 </li> 1235 1236 <li> 1237 <p>The difference in this case was that when compiling the 1238 terminal database, <em>tic</em> may have in memory the 1239 definitions for more than one terminal description (so that 1240 it can resolve “<tt>use=</tt>” clauses). Seeing 1241 two different types for the same name, in certain situations 1242 it would incorrectly merge the symbol tables for the two 1243 terminal descriptions.</p> 1244 </li> 1245 1246 <li> 1247 <p>On simpleterm's side, their bug was finally fixed in 1248 <a href= 1249 "https://git.suckless.org/st/commit/83866428de031300eab03fbb116bcf7d2b1d4f60.html"> 1250 late 2019</a>, three years after the bug was created.</p> 1251 </li> 1252 </ul> 1253 1254 <p>For ncurses, the elapsed time to fix this bug was less than 1255 three years. Someone reported a problem with the terminal 1256 description a few weeks after releasing ncurses 6.1 (in <a href= 1257 "https://github.com/tmux/tmux/issues/1264">tmux #1264</a>), and 1258 the terminal description was updated that week (ncurses patch 1259 <a href= 1260 "https://invisible-island.net/ncurses/NEWS.html#t20180224">20180224</a>):</p> 1261 1262 <blockquote> 1263 <pre class="demo-name"> 126420180224 1265 + modify _nc_resolve_uses2() to detect incompatible types when merging 1266 a "use=" clause of extended capabilities. The problem was seen in a 1267 defective terminfo integrated from simpleterm sources in 20171111, 1268 compounded by repair in 20180121. 1269 + correct Ss/Ms interchange in st-0.7 entry (tmux #1264) -TD 1270</pre> 1271 </blockquote> 1272 1273 <p>The larger part of that change added a check to prevent a 1274 simple merge of terminal descriptions where the same user-defined 1275 name was used with different types. But it raised some 1276 questions:</p> 1277 1278 <ul> 1279 <li> 1280 <p>Was there a reliable way to manage terminal descriptions 1281 which used the same extended name in different ways?</p> 1282 </li> 1283 1284 <li> 1285 <p>Should ncurses provide a registry of well-known extended 1286 names, with their types?</p> 1287 </li> 1288 </ul> 1289 1290 <p>Since the correction to <a href= 1291 "https://invisible-island.net/ncurses/ncurses.html#download_database"> 1292 <tt>terminfo.src</tt></a> could have been readily adopted by 1293 packagers, there was nothing more to be done from ncurses' 1294 standpoint on that part. But improving ncurses to prevent issues 1295 like that is the reason for making a release.</p> 1296 1297 <p>Nothing more (constructive) was mentioned with regard to 1298 simpleterm. But a few problems were found in the handling of 1299 user-defined capabilities:</p> 1300 1301 <ul> 1302 <li> 1303 <p>Forward-references to user-defined capabilities in a 1304 “<tt>use=</tt>” clause did not allocate new data 1305 for each use. In <em>tic</em>, successive compilation of 1306 terminal entries could add user-defined capabilities to the 1307 wrong terminal entry.</p> 1308 1309 <p>This was not noticed before, since xterm's terminal 1310 descriptions were the main users of the feature, and almost 1311 all of the uses of the building-blocks which contained 1312 user-defined capabilities were backward-references.</p> 1313 </li> 1314 1315 <li> 1316 <p>There is one (documented) case where ncurses 6.1 supports 1317 a user-defined capability that could be any type (i.e., 1318 “RGB”). The check added in February 2018 to guard 1319 against mismatches did not handle all of the combinations 1320 needed.</p> 1321 </li> 1322 </ul> 1323 1324 <p>Both of these issues dated from the original implementation of 1325 user-defined capabilities. Fixing them does not change the 1326 terminal database, but a older <em>tic</em> without the fixes 1327 will not be able to handle terminfo sources which rely upon those 1328 fixes. Starting in June 2019, the download link for the terminfo 1329 source file was capped at that date. The development sources have 1330 an up-to-date copy of the file, for people with a legitimate need 1331 for it.</p> 1332 1333 <p>The “<tt>-c</tt>” (check) option of <em>tic</em> 1334 is not very useful if it cannot offer advice on parameters needed 1335 for user-defined capabilities. The various <em>Caps</em> files 1336 were reorganized to reduce redundancy, and in the common portion 1337 (<a href= 1338 "https://github.com/ThomasDickey/ncurses-snapshots/blob/master/include/Caps-ncurses">Caps-ncurses</a>), 1339 a registry of user-defined capabilities is provided for use by 1340 <em>tic</em>. While users can still define their own custom 1341 capabilities, <em>tic</em> will not offer any advice when their 1342 parameters do not match.</p> 1343 1344 <p>In ncurses 6.2, <em>tic</em> makes a special check to allow 1345 any type for <em>RGB</em>, but its being able to do this relies 1346 upon fixes made in the ncurses library in mid-2019.</p> 1347 1348 <h3><a name="h3-config-config" id= 1349 "h3-config-config">Configuration changes</a></h3> 1350 1351 <h4><a name="h4-config-major" id="h4-config-major">Major 1352 changes</a></h4> 1353 1354 <p>There are no major changes. Several new options were added to 1355 ease integration of packages with systems using different 1356 versions of <em>GNAT</em> and <em>ncurses</em>. Also, 1357 improvements were made to configure checks.</p> 1358 1359 <h4><a name="h4-config-options" id= 1360 "h4-config-options">Configuration options</a></h4> 1361 1362 <p>There are a few new/modified configure options:</p> 1363 1364 <dl> 1365 <dt><tt>--with-config-suffix</tt> 1366 </dt> 1367 1368 <dd> 1369 <p>helps work around a filename conflict with Debian packages 1370 versus test-packages.</p> 1371 </dd> 1372 1373 <dt><tt>--with-ada-libname</tt> 1374 </dt> 1375 1376 <dd> 1377 <p>allows one to rename the “AdaCurses” library 1378 (at least one packager prefers a lowercase name).</p> 1379 </dd> 1380 1381 <dt><tt>--with-fallbacks</tt> 1382 </dt> 1383 1384 <dd> 1385 <p>now ensures there is a value, and adds the fallback 1386 information to top-level Makefile summary.</p> 1387 </dd> 1388 1389 <dt><tt>--with-pcre2</tt> 1390 </dt> 1391 1392 <dd> 1393 <p>check for pcre-posix library to help with MinGW port.</p> 1394 </dd> 1395 1396 <dt><tt>--with-tic-path</tt> and<br></dt> 1397 1398 <dt><tt>--with-infocmp-path</tt> 1399 </dt> 1400 1401 <dd> 1402 <p>help work around problems building fallback source using 1403 pre-6.0 tic/infocmp.</p> 1404 </dd> 1405 1406 <dt><tt>--with-versioned-syms</tt> 1407 </dt> 1408 1409 <dd> 1410 <p>option value can now be a relative pathname.</p> 1411 </dd> 1412 </dl> 1413 1414 <h3><a name="h3-portability" id="h3-portability">Portability</a></h3> 1415 1416 <p>Many of the portability changes are implemented via the 1417 configure script:</p> 1418 1419 <ul> 1420 <li> 1421 <p>ignore <a href= 1422 "/ncurses/man/ncurses.3x.html#h3-TERMINFO"><tt>$TERMINFO</tt></a> 1423 as a default value in configure script if it came from the 1424 <tt>infocmp</tt> <strong><tt>-Q</tt></strong> option.</p> 1425 </li> 1426 1427 <li> 1428 <p>distinguish gcc from icc and clang when the 1429 <tt>--enable-warnings</tt> option is not used, to avoid 1430 unnecessary warnings about unrecognized inline options</p> 1431 </li> 1432 1433 <li> 1434 <p>consistently prepend new libraries as they are found 1435 during configuration, rather than relying upon the linker to 1436 resolve order dependencies of libraries.</p> 1437 </li> 1438 1439 <li> 1440 <p>modified configure scripts to reduce relinking/ranlib 1441 during library install :</p> 1442 1443 <ul> 1444 <li>use “<tt>install -p</tt>” when available, 1445 to avoid need for ranlib of static libraries.</li> 1446 1447 <li>scripts which use 1448 “<tt>--disable-relink</tt>;” add a 1-second 1449 sleep to work around tools which use whole-second 1450 timestamps, e.g., in <tt>utime</tt> rather than the actual 1451 file system resolution.</li> 1452 </ul> 1453 </li> 1454 1455 <li> 1456 <p id="getenv-check">add configure check for <a href= 1457 "#getenv-fixes"><tt>getenv</tt></a> to work around 1458 implementation shown in Emscripten which overwrites the 1459 previous return value on each call.</p> 1460 1461 <p>Use that to optionally suppress <tt>START_TRACE</tt> 1462 macro, whose call to <tt>getenv</tt> may not work 1463 properly</p> 1464 </li> 1465 1466 <li> 1467 <p>change target configure level for <tt>_XOPEN_SOURCE</tt> 1468 to 600 to address use of <tt>vsscanf</tt> and 1469 <tt>setenv</tt>.</p> 1470 </li> 1471 1472 <li> 1473 <p>reduce use of <tt>_GNU_SOURCE</tt> for current glibc where 1474 <tt>_DEFAULT_SOURCE</tt> combines with 1475 <tt>_XOPEN_SOURCE</tt></p> 1476 1477 <p>Allow for Cygwin's newlib when checking for the 1478 _DEFAULT_SOURCE symbol.</p> 1479 1480 <p>MidnightBSD is now checked for the 1481 <tt>_XOPEN_SOURCE</tt>-related definitions.</p> 1482 </li> 1483 1484 <li> 1485 <p>If the check for <tt>va_copy</tt> or <tt>__va_copy</tt> 1486 fails,</p> 1487 1488 <ul> 1489 <li>configure now tries copying the pointers for 1490 <tt>va_list</tt>, or as an array.</li> 1491 1492 <li>alternatively, it checks for 1493 <tt>__builtin_va_copy</tt>(), which could be used with AIX 1494 <tt>xlc</tt> in <em>c89</em> mode.</li> 1495 </ul> 1496 </li> 1497 1498 <li> 1499 <p>several changes to support a port to Ultrix 3.1:</p> 1500 1501 <ul> 1502 <li>check if "b" binary feature of fopen works</li> 1503 1504 <li>check for missing feature of locale.h</li> 1505 1506 <li>add fallback for strstr() in test-programs</li> 1507 1508 <li>add fallback for STDOUT_FILENO in test-programs</li> 1509 </ul> 1510 </li> 1511 1512 <li> 1513 <p>The <em>test/configure</em> script (used for <a href= 1514 "/ncurses/ncurses-examples.html"><em>ncurses-examples</em></a>) 1515 is improved:</p> 1516 1517 <ul> 1518 <li>work around non-ncurses termcap.h file, e.g., in 1519 Slackware.</li> 1520 1521 <li>check for <a href= 1522 "/ncurses/man/curs_variables.3x.html#h3-TABSIZE"><tt>TABSIZE</tt></a> 1523 variable.</li> 1524 1525 <li>checks for the X11/Intrinsic.h header, accommodate 1526 recent MacOS changes which largely emptied 1527 <tt>/usr/include</tt>.</li> 1528 </ul> 1529 </li> 1530 </ul> 1531 1532 <p>Here are some of the other portability fixes:</p> 1533 1534 <ul> 1535 <li> 1536 <p>added dummy "check" rule in top-level and test-Makefile to 1537 simplify building test-packages for ArchLinux.</p> 1538 </li> 1539 1540 <li> 1541 <p>dropped library-dependency on psapi for MinGW port, since 1542 win_driver.c defines <tt>PSAPI_VERSION</tt> to 2, making it 1543 use <tt>GetProcessImageFileName</tt> from kernel32.dll</p> 1544 </li> 1545 1546 <li> 1547 <p>made build-fixes for configuration using --program-suffix 1548 with Ada95, noticed with MacOS but applicable to other 1549 platforms without libpanelw, etc.</p> 1550 </li> 1551 1552 <li> 1553 <p>modified ncurses/Makefile.in to fix a case where 1554 Debian/testing changes to the ld --as-needed configuration 1555 broke ncurses-examples test packages.</p> 1556 </li> 1557 1558 <li> 1559 <p>used <tt>_WIN32</tt>/<tt>_WIN64</tt> in preference to 1560 <tt>__MINGW32__</tt>/<tt>__MINGW64__</tt> symbols to simplify 1561 building with Microsoft Visual C++, since the former are 1562 defined in both compiler configurations.</p> 1563 </li> 1564 </ul> 1565 1566 <hr> 1567 1568 <h2><a name="h2-features" id="h2-features">Features of 1569 <span class="main-name">ncurses</span></a></h2> 1570 1571 <p>The <span class="main-name">ncurses</span> package is fully 1572 upward-compatible with SVr4 (System V Release 4) curses:</p> 1573 1574 <ul> 1575 <li> 1576 <p>All of the SVr4 calls have been implemented (and are 1577 documented).</p> 1578 </li> 1579 1580 <li> 1581 <p><span class="main-name">ncurses</span> supports all of the 1582 for SVr4 curses features including keyboard mapping, color, 1583 forms-drawing with ACS characters, and automatic recognition 1584 of keypad and function keys.</p> 1585 </li> 1586 1587 <li> 1588 <p><span class="main-name">ncurses</span> provides these SVr4 1589 add-on libraries (not part of X/Open Curses):</p> 1590 1591 <ul> 1592 <li> 1593 <p>the panels library, supporting a stack of windows with 1594 backing store.</p> 1595 </li> 1596 1597 <li> 1598 <p>the menus library, supporting a uniform but flexible 1599 interface for menu programming.</p> 1600 </li> 1601 1602 <li> 1603 <p>the form library, supporting data collection through 1604 on-screen forms.</p> 1605 </li> 1606 </ul> 1607 </li> 1608 1609 <li> 1610 <p><span class="main-name">ncurses</span>'s terminal database 1611 is fully compatible with that used by SVr4 curses.</p> 1612 1613 <ul> 1614 <li> 1615 <p><span class="main-name">ncurses</span> supports 1616 user-defined capabilities which it can see, but which are 1617 hidden from SVr4 curses applications using the 1618 <em>same</em> terminal database.</p> 1619 </li> 1620 1621 <li> 1622 <p>It can be optionally configured to match the format 1623 used in related systems such as AIX and Tru64.</p> 1624 </li> 1625 1626 <li> 1627 <p>Alternatively, <span class="main-name">ncurses</span> 1628 can be configured to use hashed databases rather than the 1629 directory of files used by SVr4 curses.</p> 1630 </li> 1631 </ul> 1632 </li> 1633 1634 <li> 1635 <p>The <span class="main-name">ncurses</span> utilities have 1636 options to allow you to filter terminfo entries for use with 1637 less capable <em>curses</em>/<em>terminfo</em> versions such 1638 as the HP/UX and AIX ports.</p> 1639 </li> 1640 </ul> 1641 1642 <p>The <span class="main-name">ncurses</span> package also has 1643 many useful extensions over SVr4:</p> 1644 1645 <ul> 1646 <li> 1647 <p>The API is 8-bit clean and base-level conformant with the 1648 X/OPEN curses specification, XSI curses (that is, it 1649 implements all BASE level features, and most EXTENDED 1650 features). It includes many function calls not supported 1651 under SVr4 curses (but portability of all calls is documented 1652 so you can use the SVr4 subset only).</p> 1653 </li> 1654 1655 <li> 1656 <p>Unlike SVr3 curses, <span class="main-name">ncurses</span> 1657 can write to the rightmost-bottommost corner of the screen if 1658 your terminal has an insert-character capability.</p> 1659 </li> 1660 1661 <li> 1662 <p>Ada95 and C++ bindings.</p> 1663 </li> 1664 1665 <li> 1666 <p>Support for mouse event reporting with X Window xterm and 1667 FreeBSD and OS/2 console windows.</p> 1668 </li> 1669 1670 <li> 1671 <p>Extended mouse support via Alessandro Rubini's gpm 1672 package.</p> 1673 </li> 1674 1675 <li> 1676 <p>The function <code>wresize</code> allows you to resize 1677 windows, preserving their data.</p> 1678 </li> 1679 1680 <li> 1681 <p>The function <code>use_default_colors</code> allows you to 1682 use the terminal's default colors for the default color pair, 1683 achieving the effect of transparent colors.</p> 1684 </li> 1685 1686 <li> 1687 <p>The functions <code>keyok</code> and 1688 <code>define_key</code> allow you to better control the use 1689 of function keys, e.g., disabling the <span class= 1690 "main-name">ncurses</span> KEY_MOUSE, or by defining more 1691 than one control sequence to map to a given key code.</p> 1692 </li> 1693 1694 <li> 1695 <p>Support for 256-color terminals, such as modern xterm.</p> 1696 </li> 1697 1698 <li> 1699 <p>Support for 16-color terminals, such as <em>aixterm</em> 1700 and <em>modern xterm</em>.</p> 1701 </li> 1702 1703 <li> 1704 <p>Better cursor-movement optimization. The package now 1705 features a cursor-local-movement computation more efficient 1706 than either BSD's or System V's.</p> 1707 </li> 1708 1709 <li> 1710 <p>Super hardware scrolling support. The screen-update code 1711 incorporates a novel, simple, and cheap algorithm that 1712 enables it to make optimal use of hardware scrolling, 1713 line-insertion, and line-deletion for screen-line movements. 1714 This algorithm is more powerful than the 4.4BSD curses 1715 <code>quickch</code> routine.</p> 1716 </li> 1717 1718 <li> 1719 <p>Real support for terminals with the magic-cookie glitch. 1720 The screen-update code will refrain from drawing a highlight 1721 if the magic- cookie unattributed spaces required just before 1722 the beginning and after the end would step on a non-space 1723 character. It will automatically shift highlight boundaries 1724 when doing so would make it possible to draw the highlight 1725 without changing the visual appearance of the screen.</p> 1726 </li> 1727 1728 <li> 1729 <p>It is possible to generate the library with a list of 1730 pre-loaded fallback entries linked to it so that it can serve 1731 those terminal types even when no terminfo tree or termcap 1732 file is accessible (this may be useful for support of 1733 screen-oriented programs that must run in single-user 1734 mode).</p> 1735 </li> 1736 1737 <li> 1738 <p>The <a href= 1739 "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name"> 1740 tic</span></a>/<a href= 1741 "https://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a> 1742 utility provided with <span class="main-name">ncurses</span> 1743 has the ability to translate many termcaps from the XENIX, 1744 IBM and AT&T extension sets.</p> 1745 </li> 1746 1747 <li> 1748 <p>A BSD-like <a href= 1749 "https://invisible-island.net/ncurses/man/tset.1.html"><span class="part-name"> 1750 tset</span></a> utility is provided.</p> 1751 </li> 1752 1753 <li> 1754 <p>The <span class="main-name">ncurses</span> library and 1755 utilities will automatically read terminfo entries from 1756 $HOME/.terminfo if it exists, and compile to that directory 1757 if it exists and the user has no write access to the system 1758 directory. This feature makes it easier for users to have 1759 personal terminfo entries without giving up access to the 1760 system terminfo directory.</p> 1761 </li> 1762 1763 <li> 1764 <p>You may specify a path of directories to search for 1765 compiled descriptions with the environment variable 1766 TERMINFO_DIRS (this generalizes the feature provided by 1767 TERMINFO under stock System V.)</p> 1768 </li> 1769 1770 <li> 1771 <p>In terminfo source files, use capabilities may refer not 1772 just to other entries in the same source file (as in System 1773 V) but also to compiled entries in either the system terminfo 1774 directory or the user's $HOME/.terminfo directory.</p> 1775 </li> 1776 1777 <li> 1778 <p>The table-of-entries utility <a href= 1779 "https://invisible-island.net/ncurses/man/toe.1m.html"><span class="part-name"> 1780 toe</span></a> makes it easy for users to see exactly what 1781 terminal types are available on the system.</p> 1782 </li> 1783 1784 <li> 1785 <p>The library meets the XSI requirement that every macro 1786 entry point have a corresponding function which may be linked 1787 (and will be prototype-checked) if the macro definition is 1788 disabled with <code>#undef</code>.</p> 1789 </li> 1790 1791 <li> 1792 <p>Extensive documentation is provided (see the <em><a href= 1793 "https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading"> 1794 Additional Reading</a></em> section of the <em><a href= 1795 "https://invisible-island.net/ncurses/ncurses.faq.html"><span class="main-name"> 1796 ncurses</span> FAQ</a></em> for online documentation).</p> 1797 </li> 1798 </ul> 1799 1800 <h2><a name="h2-who-uses" id="h2-who-uses">Applications using 1801 <span class="main-name">ncurses</span></a></h2> 1802 1803 <p>The <span class="main-name">ncurses</span> distribution 1804 includes a selection of test programs (including a few games). 1805 These are available separately as <a href= 1806 "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a></p> 1807 1808 <p>The ncurses library has been tested with a wide variety of 1809 applications including:</p> 1810 1811 <blockquote> 1812 <dl> 1813 <dt><span class="part-name">aptitude</span> 1814 </dt> 1815 1816 <dd> 1817 <p>FrontEnd to Apt, the debian package manager</p> 1818 1819 <p><a href= 1820 "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude</a></p> 1821 </dd> 1822 1823 <dt><span class="part-name">cdk</span> 1824 </dt> 1825 1826 <dd> 1827 <p>Curses Development Kit</p> 1828 1829 <p><a href= 1830 "https://invisible-island.net/cdk/">https://invisible-island.net/cdk/</a><br> 1831 1832 </p> 1833 </dd> 1834 1835 <dt><span class="part-name">ded</span> 1836 </dt> 1837 1838 <dd> 1839 <p>directory-editor</p> 1840 1841 <p><a href= 1842 "https://invisible-island.net/ded/">https://invisible-island.net/ded/</a></p> 1843 </dd> 1844 1845 <dt><span class="part-name">dialog</span> 1846 </dt> 1847 1848 <dd> 1849 <p>the underlying application used in Slackware's setup, 1850 and the basis for similar install/configure applications on 1851 many systems.</p> 1852 1853 <p><a href= 1854 "https://invisible-island.net/dialog/">https://invisible-island.net/dialog/</a></p> 1855 </dd> 1856 1857 <dt><span class="part-name">lynx</span> 1858 </dt> 1859 1860 <dd> 1861 <p>the text WWW browser</p> 1862 1863 <p><a href= 1864 "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/</a></p> 1865 </dd> 1866 1867 <dt><span class="part-name">mutt</span> 1868 </dt> 1869 1870 <dd> 1871 <p>mail utility</p> 1872 1873 <p><a href="http://www.mutt.org/">http://www.mutt.org/</a></p> 1874 </dd> 1875 1876 <dt><span class="part-name">ncftp</span> 1877 </dt> 1878 1879 <dd> 1880 <p>file-transfer utility</p> 1881 1882 <p><a href= 1883 "https://www.ncftp.com/">https://www.ncftp.com/</a></p> 1884 </dd> 1885 1886 <dt><span class="part-name">nvi</span> 1887 </dt> 1888 1889 <dd> 1890 <p>New vi uses ncurses.</p> 1891 1892 <p><a href= 1893 "https://sites.google.com/a/bostic.com/keithbostic/vi">https://sites.google.com/a/bostic.com/keithbostic/vi</a><br> 1894 1895 </p> 1896 </dd> 1897 1898 <dt><span class="part-name">ranger</span> 1899 </dt> 1900 1901 <dd> 1902 <p>A console file manager with VI key bindings in 1903 <em>Python</em>.</p> 1904 1905 <p><a href= 1906 "https://ranger.github.io/">https://ranger.github.io/</a></p> 1907 </dd> 1908 1909 <dt><span class="part-name">tin</span> 1910 </dt> 1911 1912 <dd> 1913 <p>newsreader, supporting color, MIME</p> 1914 1915 <p><a href="http://www.tin.org/">http://www.tin.org/</a></p> 1916 </dd> 1917 1918 <dt><span class="part-name">vifm</span> 1919 </dt> 1920 1921 <dd> 1922 <p>File manager with vi like keybindings</p> 1923 1924 <p><a href="https://vifm.info/">https://vifm.info/</a></p> 1925 </dd> 1926 </dl> 1927 </blockquote> 1928 1929 <p>as well as some that use <span class= 1930 "main-name">ncurses</span> for the terminfo support alone:</p> 1931 1932 <blockquote> 1933 <dl> 1934 <dt><span class="part-name">minicom</span> 1935 </dt> 1936 1937 <dd> 1938 <p>terminal emulator for serial modem connections</p> 1939 1940 <p><a href= 1941 "https://alioth.debian.org/projects/minicom/">https://alioth.debian.org/projects/minicom/</a></p> 1942 </dd> 1943 1944 <dt><span class="part-name">mosh</span> 1945 </dt> 1946 1947 <dd> 1948 <p>a replacement for <code>ssh</code>.</p> 1949 1950 <p><a href= 1951 "https://mosh.mit.edu/">https://mosh.mit.edu/</a></p> 1952 </dd> 1953 1954 <dt><span class="part-name">tack</span> 1955 </dt> 1956 1957 <dd> 1958 <p>terminfo action checker</p> 1959 1960 <p><a href= 1961 "https://invisible-island.net/ncurses/tack.html">https://invisible-island.net/ncurses/tack.html</a></p> 1962 </dd> 1963 1964 <dt><span class="part-name">tmux</span> 1965 </dt> 1966 1967 <dd> 1968 <p>terminal multiplexor</p> 1969 1970 <p><a href= 1971 "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki</a></p> 1972 </dd> 1973 1974 <dt><span class="part-name">vile</span> 1975 </dt> 1976 1977 <dd> 1978 <p><em>vi-like-emacs</em> may be built to use the terminfo, 1979 termcap or curses interfaces.</p> 1980 1981 <p><a href= 1982 "https://invisible-island.net/vile/">https://invisible-island.net/vile/</a></p> 1983 </dd> 1984 </dl> 1985 </blockquote> 1986 1987 <p>and finally, those which use only the termcap interface:</p> 1988 1989 <blockquote> 1990 <dl> 1991 <dt><span class="part-name">emacs</span> 1992 </dt> 1993 1994 <dd> 1995 <p>text editor</p> 1996 1997 <p><a href= 1998 "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/</a></p> 1999 </dd> 2000 2001 <dt><span class="part-name">less</span> 2002 </dt> 2003 2004 <dd> 2005 <p>The most commonly used <em>pager</em> (a program that 2006 displays text files).</p> 2007 2008 <p><a href= 2009 "http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/</a></p> 2010 </dd> 2011 2012 <dt><span class="part-name">screen</span> 2013 </dt> 2014 2015 <dd> 2016 <p>terminal multiplexor</p> 2017 2018 <p><a href= 2019 "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/</a></p> 2020 </dd> 2021 2022 <dt><span class="part-name">vim</span> 2023 </dt> 2024 2025 <dd> 2026 <p>text editor</p> 2027 2028 <p><a href="https://www.vim.org/">https://www.vim.org/</a></p> 2029 </dd> 2030 </dl> 2031 </blockquote> 2032 2033 <h2><a name="h2-development" id="h2-development">Development 2034 activities</a></h2> 2035 2036 <p>Zeyd Ben-Halim started <span class="main-name">ncurses</span> 2037 from a previous package pcurses, written by Pavel Curtis. Eric S. 2038 Raymond continued development. Jürgen Pfeifer wrote most of 2039 the form and menu libraries.</p> 2040 2041 <p>Ongoing development work is done by <a href= 2042 "mailto:dickey@invisible-island.net">Thomas E. Dickey</a>. Thomas 2043 E. Dickey has acted as the maintainer for the Free Software 2044 Foundation, which holds a <a href= 2045 "https://invisible-island.net/ncurses/ncurses-license.html">copyright 2046 on ncurses</a> for releases 4.2 through 6.1. Following the 2047 release of ncurses 6.1, effective as of release 6.2, copyright 2048 for ncurses reverted to Thomas E. Dickey (see the <a href= 2049 "https://invisible-island.net/ncurses/ncurses.faq.html#relicensed"> 2050 ncurses FAQ</a> for additional information).</p> 2051 2052 <p>Contact the current maintainers at</p> 2053 2054 <blockquote> 2055 <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a> 2056 </blockquote> 2057 2058 <p>To join the ncurses mailing list, please write email to</p> 2059 2060 <blockquote> 2061 <a href= 2062 "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a> 2063 </blockquote> 2064 containing the line: 2065 2066 <blockquote> 2067 <p><code>subscribe</code> 2068 <em><name>@<host.domain></em></p> 2069 </blockquote> 2070 2071 <p>This list is open to anyone interested in helping with the 2072 development and testing of this package.</p> 2073 2074 <p>Beta versions of <span class="main-name">ncurses</span> are 2075 made available at</p> 2076 2077 <blockquote> 2078 <p><a href= 2079 "ftp://ftp.invisible-island.net/ncurses/current/">ftp://ftp.invisible-island.net/ncurses/current/</a> 2080 and<br> 2081 <a href= 2082 "https://invisible-mirror.net/archives/ncurses/current/">https://invisible-mirror.net/archives/ncurses/current/</a> .</p> 2083 </blockquote> 2084 2085 <p>Patches to the current release are made available at</p> 2086 2087 <blockquote> 2088 <p><a href= 2089 "ftp://ftp.invisible-island.net/ncurses/6.1/">ftp://ftp.invisible-island.net/ncurses/6.1/</a> 2090 and<br> 2091 <a href= 2092 "https://invisible-mirror.net/archives/ncurses/6.1/">https://invisible-mirror.net/archives/ncurses/6.1/</a> .</p> 2093 </blockquote> 2094 2095 <p>There is an archive of the mailing list here:</p> 2096 2097 <blockquote> 2098 <p><a href= 2099 "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a> 2100 (also <a href= 2101 "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p> 2102 </blockquote> 2103 2104 <h2><a name="h2-this-stuff" id="h2-this-stuff">Related 2105 resources</a></h2> 2106 2107 <p>The release notes make scattered references to these pages, 2108 which may be interesting by themselves:</p> 2109 2110 <ul> 2111 <li><a href= 2112 "https://invisible-island.net/ncurses/ncurses-license.html"><span class="main-name"> 2113 ncurses</span> licensing</a></li> 2114 2115 <li><a href= 2116 "https://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol 2117 versioning in <span class="main-name">ncurses</span></a></li> 2118 2119 <li><a href= 2120 "https://invisible-island.net/ncurses/ncurses-slang.html">Comments 2121 on <span class="main-name">ncurses</span> versus <span class= 2122 "main-name">slang</span> (S-Lang)</a></li> 2123 2124 <li><a href= 2125 "https://invisible-island.net/ncurses/tack.html">tack – 2126 terminfo action checker</a></li> 2127 2128 <li><a href= 2129 "https://invisible-island.net/ncurses/tctest.html">tctest 2130 – termcap library checker</a></li> 2131 2132 <li><a href= 2133 "https://invisible-island.net/ncurses/ncurses.html#download_database"> 2134 Terminal Database</a></li> 2135 </ul> 2136 2137 <h2><a name="h2-other-stuff" id="h2-other-stuff">Other 2138 resources</a></h2> 2139 2140 <p>The distribution provides a newer version of the 2141 terminfo-format terminal description file once maintained by 2142 <a href="http://www.catb.org/~esr/terminfo/">Eric 2143 Raymond</a> . Unlike the older version, the termcap and 2144 terminfo data are provided in the same file, which also provides 2145 several user-definable extensions beyond the X/Open 2146 specification.</p> 2147 2148 <p>You can find lots of information on terminal-related topics 2149 not covered in the terminfo file at <a href= 2150 "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal"> 2151 Richard Shuford's archive</a> . The collection of computer 2152 manuals at <a href= 2153 "http://www.bitsavers.org/pdf/">bitsavers.org</a> has also been 2154 useful.</p> 2155 2156 <div class="nav"> 2157 <ul> 2158 <li><a href="#h2-overview">Overview</a></li> 2159 2160 <li> 2161 <a href="#h2-release-notes">Release Notes</a> 2162 2163 <ul> 2164 <li> 2165 <a href="#h3-library">Library improvements</a> 2166 2167 <ul> 2168 <li><a href="#h4-new-library">New features</a></li> 2169 2170 <li><a href="#h4-fixes-library">Other 2171 improvements</a></li> 2172 </ul> 2173 </li> 2174 2175 <li> 2176 <a href="#h3-programs">Program improvements</a> 2177 2178 <ul> 2179 <li><a href="#h4-utilities">Utilities</a></li> 2180 2181 <li><a href="#h4-examples">Examples</a></li> 2182 </ul> 2183 </li> 2184 2185 <li><a href="#h3-database">Terminal database</a></li> 2186 2187 <li><a href="#h3-documentation">Documentation</a></li> 2188 2189 <li><a href="#h3-bug-fixes">Interesting bug-fixes</a></li> 2190 2191 <li> 2192 <a href="#h3-config-config">Configuration changes</a> 2193 2194 <ul> 2195 <li><a href="#h4-config-major">Major changes</a></li> 2196 2197 <li><a href="#h4-config-options">Configuration 2198 options</a></li> 2199 </ul> 2200 </li> 2201 2202 <li><a href="#h3-portability">Portability</a></li> 2203 </ul> 2204 </li> 2205 2206 <li><a href="#h2-features">Features of <span class= 2207 "main-name">ncurses</span></a></li> 2208 2209 <li><a href="#h2-who-uses">Applications using <span class= 2210 "main-name">ncurses</span></a></li> 2211 2212 <li><a href="#h2-development">Development activities</a></li> 2213 2214 <li><a href="#h2-this-stuff">Related resources</a></li> 2215 2216 <li><a href="#h2-other-stuff">Other resources</a></li> 2217 </ul> 2218 </div> 2219</body> 2220</html> 2221