xref: /freebsd/contrib/ncurses/ANNOUNCE (revision 06bfebdedb0d353f1771adb65731f64461d9bd01)
1*06bfebdeSXin LI                            Announcing ncurses 5.9
20e3d5408SPeter Wemm
30e3d5408SPeter Wemm   The  ncurses  (new  curses)  library  is  a free software emulation of
40e3d5408SPeter Wemm   curses  in  System  V  Release 4.0, and more. It uses terminfo format,
50e3d5408SPeter Wemm   supports  pads  and color and multiple highlights and forms characters
60e3d5408SPeter Wemm   and   function-key   mapping,   and  has  all  the  other  SYSV-curses
70e3d5408SPeter Wemm   enhancements over BSD curses.
80e3d5408SPeter Wemm
90e3d5408SPeter Wemm   In  mid-June  1995,  the  maintainer of 4.4BSD curses declared that he
104a1a9510SRong-En Fan   considered  4.4BSD curses obsolete, and encouraged the keepers of Unix
114a1a9510SRong-En Fan   releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses.
120e3d5408SPeter Wemm
134a1a9510SRong-En Fan   The ncurses code was developed under GNU/Linux. It has been in use for
144a1a9510SRong-En Fan   some  time  with  OpenBSD as the system curses library, and on FreeBSD
154a1a9510SRong-En Fan   and  NetBSD  as  an  external  package.  It  should port easily to any
164a1a9510SRong-En Fan   ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 Warp!
170e3d5408SPeter Wemm
180e3d5408SPeter Wemm   The distribution includes the library and support utilities, including
190e3d5408SPeter Wemm   a   terminfo  compiler  tic(1),  a  decompiler  infocmp(1),  clear(1),
200e3d5408SPeter Wemm   tput(1),  tset(1),  and  a  termcap conversion tool captoinfo(1). Full
210e3d5408SPeter Wemm   manual pages are provided for the library and tools.
220e3d5408SPeter Wemm
230e3d5408SPeter Wemm   The  ncurses  distribution  is  available via anonymous FTP at the GNU
244a1a9510SRong-En Fan   distribution site [1]ftp://ftp.gnu.org/gnu/ncurses/ .
254a1a9510SRong-En Fan   It is also available at [2]ftp://invisible-island.net/ncurses/ .
260e3d5408SPeter Wemm
270e3d5408SPeter Wemm                                 Release Notes
280e3d5408SPeter Wemm
294a1a9510SRong-En Fan   This  release  is  designed  to  be upward compatible from ncurses 5.0
30*06bfebdeSXin LI   through   5.8;  very  few  applications  will  require  recompilation,
314a1a9510SRong-En Fan   depending   on  the  platform.  These  are  the  highlights  from  the
32*06bfebdeSXin LI   change-log since ncurses 5.8 release.
330e3d5408SPeter Wemm
34*06bfebdeSXin LI   This  is  a  bug-fix  release,  correcting  a  small  number of urgent
35*06bfebdeSXin LI   problems in the ncurses library from the 5.8 release.
360e3d5408SPeter Wemm
37*06bfebdeSXin LI   It also improves the Ada95 binding:
38*06bfebdeSXin LI     * fixes  a  longstanding  portability  problem  with  its use of the
39*06bfebdeSXin LI       [3]set_field_type    function.    Because   that   function   uses
40*06bfebdeSXin LI       variable-length  argument  lists, its interface with gnat does not
41*06bfebdeSXin LI       work with certain platforms.
42*06bfebdeSXin LI     * improves  configurability and portability, particularly when built
43*06bfebdeSXin LI       separately  from the main ncurses tree. The 5.8 release introduced
44*06bfebdeSXin LI       scripts  which  can be used to construct separate tarballs for the
45*06bfebdeSXin LI       Ada95 and ncurses examples.
46*06bfebdeSXin LI       Those  were a proof of concept. For the 5.9 release, those scripts
47*06bfebdeSXin LI       are  augmented  with  rpm-  and  dpkg-scripts  used in test builds
48*06bfebdeSXin LI       against  a  variety of gnat- and system ncurses versions as old as
49*06bfebdeSXin LI       gnat  3.15  and  ncurses  5.4  (see  snapshots  and systems tested
50*06bfebdeSXin LI       [4]here.
51*06bfebdeSXin LI     * additional  improvements  were made for portability of the ncurses
52*06bfebdeSXin LI       examples,  adding  rpm-  and  dpkg-scripts  for  test-builds.  See
53*06bfebdeSXin LI       [5]this page for snapshots and other information.
540e3d5408SPeter Wemm
550e3d5408SPeter Wemm                              Features of Ncurses
560e3d5408SPeter Wemm
570e3d5408SPeter Wemm   The ncurses package is fully compatible with SVr4 (System V Release 4)
580e3d5408SPeter Wemm   curses:
590e3d5408SPeter Wemm     * All  257  of  the  SVr4  calls  have  been  implemented  (and  are
600e3d5408SPeter Wemm       documented).
610e3d5408SPeter Wemm     * Full  support for SVr4 curses features including keyboard mapping,
620e3d5408SPeter Wemm       color,   forms-drawing   with   ACS   characters,   and  automatic
630e3d5408SPeter Wemm       recognition of keypad and function keys.
640e3d5408SPeter Wemm     * An  emulation  of  the  SVr4 panels library, supporting a stack of
650e3d5408SPeter Wemm       windows with backing store, is included.
660e3d5408SPeter Wemm     * An  emulation  of the SVr4 menus library, supporting a uniform but
670e3d5408SPeter Wemm       flexible interface for menu programming, is included.
680e3d5408SPeter Wemm     * An  emulation of the SVr4 form library, supporting data collection
690e3d5408SPeter Wemm       through on-screen forms, is included.
700e3d5408SPeter Wemm     * Binary   terminfo   entries   generated   by  the  ncurses  tic(1)
710e3d5408SPeter Wemm       implementation  are  bit-for-bit-compatible  with the entry format
720e3d5408SPeter Wemm       SVr4 curses uses.
730e3d5408SPeter Wemm     * The utilities have options to allow you to filter terminfo entries
740e3d5408SPeter Wemm       for  use  with  less  capable curses/terminfo versions such as the
750e3d5408SPeter Wemm       HP/UX and AIX ports.
760e3d5408SPeter Wemm
770e3d5408SPeter Wemm   The ncurses package also has many useful extensions over SVr4:
780e3d5408SPeter Wemm     * The  API  is 8-bit clean and base-level conformant with the X/OPEN
790e3d5408SPeter Wemm       curses  specification, XSI curses (that is, it implements all BASE
804a1a9510SRong-En Fan       level  features,  and  most  EXTENDED  features). It includes many
814a1a9510SRong-En Fan       function calls not supported under SVr4 curses (but portability of
824a1a9510SRong-En Fan       all calls is documented so you can use the SVr4 subset only).
831759abf3SPeter Wemm     * Unlike  SVr3 curses, ncurses can write to the rightmost-bottommost
840e3d5408SPeter Wemm       corner  of  the  screen  if  your terminal has an insert-character
850e3d5408SPeter Wemm       capability.
860e3d5408SPeter Wemm     * Ada95 and C++ bindings.
874a1a9510SRong-En Fan     * Support  for mouse event reporting with X Window xterm and FreeBSD
884a1a9510SRong-En Fan       and OS/2 console windows.
890e3d5408SPeter Wemm     * Extended mouse support via Alessandro Rubini's gpm package.
90*06bfebdeSXin LI     * The  function  wresize  allows  you  to resize windows, preserving
910e3d5408SPeter Wemm       their data.
92*06bfebdeSXin LI     * The  function  use_default_colors allows you to use the terminal's
930e3d5408SPeter Wemm       default colors for the default color pair, achieving the effect of
940e3d5408SPeter Wemm       transparent colors.
95*06bfebdeSXin LI     * The functions keyok and define_key allow you to better control the
96*06bfebdeSXin LI       use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by
97*06bfebdeSXin LI       defining  more  than  one  control  sequence to map to a given key
98*06bfebdeSXin LI       code.
995d08fb1fSRong-En Fan     * Support  for  256-color  terminals,  such  as  modern  xterm, when
1005d08fb1fSRong-En Fan       configured using the --enable-ext-colors option.
1014a1a9510SRong-En Fan     * Support for 16-color terminals, such as aixterm and modern xterm.
1020e3d5408SPeter Wemm     * Better  cursor-movement  optimization.  The package now features a
1030e3d5408SPeter Wemm       cursor-local-movement computation more efficient than either BSD's
1040e3d5408SPeter Wemm       or System V's.
1050e3d5408SPeter Wemm     * Super   hardware   scrolling   support.   The  screen-update  code
1060e3d5408SPeter Wemm       incorporates  a novel, simple, and cheap algorithm that enables it
1070e3d5408SPeter Wemm       to  make  optimal  use  of hardware scrolling, line-insertion, and
1080e3d5408SPeter Wemm       line-deletion  for  screen-line  movements. This algorithm is more
109*06bfebdeSXin LI       powerful than the 4.4BSD curses quickch routine.
1100e3d5408SPeter Wemm     * Real  support  for  terminals  with  the  magic-cookie glitch. The
1110e3d5408SPeter Wemm       screen-update  code  will  refrain from drawing a highlight if the
1120e3d5408SPeter Wemm       magic-   cookie  unattributed  spaces  required  just  before  the
1130e3d5408SPeter Wemm       beginning  and  after the end would step on a non-space character.
1140e3d5408SPeter Wemm       It  will  automatically  shift  highlight boundaries when doing so
1150e3d5408SPeter Wemm       would  make it possible to draw the highlight without changing the
1160e3d5408SPeter Wemm       visual appearance of the screen.
1170e3d5408SPeter Wemm     * It  is  possible to generate the library with a list of pre-loaded
1180e3d5408SPeter Wemm       fallback  entries linked to it so that it can serve those terminal
1190e3d5408SPeter Wemm       types  even  when  no  terminfo tree or termcap file is accessible
1200e3d5408SPeter Wemm       (this  may  be useful for support of screen-oriented programs that
1210e3d5408SPeter Wemm       must run in single-user mode).
1220e3d5408SPeter Wemm     * The tic(1)/captoinfo utility provided with ncurses has the ability
1230e3d5408SPeter Wemm       to  translate many termcaps from the XENIX, IBM and AT&T extension
1240e3d5408SPeter Wemm       sets.
1250e3d5408SPeter Wemm     * A BSD-like tset(1) utility is provided.
1260e3d5408SPeter Wemm     * The ncurses library and utilities will automatically read terminfo
1270e3d5408SPeter Wemm       entries  from  $HOME/.terminfo  if  it exists, and compile to that
1280e3d5408SPeter Wemm       directory  if  it  exists  and the user has no write access to the
1290e3d5408SPeter Wemm       system  directory.  This feature makes it easier for users to have
1300e3d5408SPeter Wemm       personal  terminfo  entries without giving up access to the system
1310e3d5408SPeter Wemm       terminfo directory.
1320e3d5408SPeter Wemm     * You  may  specify  a  path  of  directories to search for compiled
1330e3d5408SPeter Wemm       descriptions  with  the  environment  variable TERMINFO_DIRS (this
1340e3d5408SPeter Wemm       generalizes  the  feature  provided by TERMINFO under stock System
1350e3d5408SPeter Wemm       V.)
1360e3d5408SPeter Wemm     * In  terminfo  source files, use capabilities may refer not just to
1370e3d5408SPeter Wemm       other entries in the same source file (as in System V) but also to
1380e3d5408SPeter Wemm       compiled  entries  in  either the system terminfo directory or the
1390e3d5408SPeter Wemm       user's $HOME/.terminfo directory.
1400e3d5408SPeter Wemm     * A  script  (capconvert)  is  provided to help BSD users transition
1410e3d5408SPeter Wemm       from  termcap to terminfo. It gathers the information in a TERMCAP
1420e3d5408SPeter Wemm       environment  variable  and/or  a ~/.termcap local entries file and
1430e3d5408SPeter Wemm       converts   it   to   an   equivalent  local  terminfo  tree  under
1440e3d5408SPeter Wemm       $HOME/.terminfo.
1450e3d5408SPeter Wemm     * Automatic  fallback  to  the  /etc/termcap file can be compiled in
1460e3d5408SPeter Wemm       when  it is not possible to build a terminfo tree. This feature is
1470e3d5408SPeter Wemm       neither  fast  nor cheap, you don't want to use it unless you have
1480e3d5408SPeter Wemm       to, but it's there.
1490e3d5408SPeter Wemm     * The  table-of-entries  utility  toe makes it easy for users to see
1500e3d5408SPeter Wemm       exactly what terminal types are available on the system.
1510e3d5408SPeter Wemm     * The library meets the XSI requirement that every macro entry point
1520e3d5408SPeter Wemm       have  a  corresponding  function  which may be linked (and will be
1530e3d5408SPeter Wemm       prototype-checked)  if  the  macro  definition  is  disabled  with
1540e3d5408SPeter Wemm       #undef.
1550e3d5408SPeter Wemm     * An  HTML  "Introduction  to  Programming  with  NCURSES"  document
1560e3d5408SPeter Wemm       provides  a  narrative  introduction  to  the  curses  programming
1570e3d5408SPeter Wemm       interface.
1580e3d5408SPeter Wemm
1590e3d5408SPeter Wemm                             State of the Package
1600e3d5408SPeter Wemm
1610e3d5408SPeter Wemm   Numerous bugs present in earlier versions have been fixed; the library
1620e3d5408SPeter Wemm   is  far  more  reliable  than  it  used to be. Bounds checking in many
1630e3d5408SPeter Wemm   `dangerous'  entry points has been improved. The code is now type-safe
1640e3d5408SPeter Wemm   according  to gcc -Wall. The library has been checked for malloc leaks
1650e3d5408SPeter Wemm   and arena corruption by the Purify memory-allocation tester.
1660e3d5408SPeter Wemm
1670e3d5408SPeter Wemm   The  ncurses  code has been tested with a wide variety of applications
1680e3d5408SPeter Wemm   including (versions starting with those noted):
1690e3d5408SPeter Wemm
1701759abf3SPeter Wemm   cdk
17115589c42SPeter Wemm          Curses Development Kit
172*06bfebdeSXin LI          [6]http://invisible-island.net/cdk/
173*06bfebdeSXin LI          [7]http://www.vexus.ca/products/CDK/
1741759abf3SPeter Wemm
1750e3d5408SPeter Wemm   ded
17615589c42SPeter Wemm          directory-editor
177*06bfebdeSXin LI          [8]http://invisible-island.net/ded/
1780e3d5408SPeter Wemm
1790e3d5408SPeter Wemm   dialog
1800e3d5408SPeter Wemm          the  underlying  application used in Slackware's setup, and the
1810e3d5408SPeter Wemm          basis for similar applications on GNU/Linux.
182*06bfebdeSXin LI          [9]http://invisible-island.net/dialog/
1830e3d5408SPeter Wemm
1841759abf3SPeter Wemm   lynx
1850e3d5408SPeter Wemm          the character-screen WWW browser
186*06bfebdeSXin LI          [10]http://lynx.isc.org/release/
1870e3d5408SPeter Wemm
1884a1a9510SRong-En Fan   Midnight Commander
1890e3d5408SPeter Wemm          file manager
190*06bfebdeSXin LI          [11]http://www.midnight-commander.org/
1910e3d5408SPeter Wemm
1921759abf3SPeter Wemm   mutt
1930e3d5408SPeter Wemm          mail utility
194*06bfebdeSXin LI          [12]http://www.mutt.org/
1950e3d5408SPeter Wemm
1961759abf3SPeter Wemm   ncftp
1970e3d5408SPeter Wemm          file-transfer utility
198*06bfebdeSXin LI          [13]http://www.ncftp.com/
1990e3d5408SPeter Wemm
2000e3d5408SPeter Wemm   nvi
2010e3d5408SPeter Wemm          New vi versions 1.50 are able to use ncurses versions 1.9.7 and
2020e3d5408SPeter Wemm          later.
203*06bfebdeSXin LI          [14]https://sites.google.com/a/bostic.com/keithbostic/nvi
2044a1a9510SRong-En Fan
2054a1a9510SRong-En Fan   pinfo
2064a1a9510SRong-En Fan          Lynx-like info browser.
207*06bfebdeSXin LI          [15]https://alioth.debian.org/projects/pinfo/
2080e3d5408SPeter Wemm
2091759abf3SPeter Wemm   tin
210*06bfebdeSXin LI          newsreader, supporting color, MIME [16]http://www.tin.org/
2110e3d5408SPeter Wemm
2120e3d5408SPeter Wemm   as well as some that use ncurses for the terminfo support alone:
2130e3d5408SPeter Wemm
2141759abf3SPeter Wemm   minicom
2150e3d5408SPeter Wemm          terminal emulator
216*06bfebdeSXin LI          [17]http://alioth.debian.org/projects/minicom/
2170e3d5408SPeter Wemm
2180e3d5408SPeter Wemm   vile
21915589c42SPeter Wemm          vi-like-emacs
220*06bfebdeSXin LI          [18]http://invisible-island.net/vile/
2210e3d5408SPeter Wemm
2220e3d5408SPeter Wemm   The  ncurses  distribution  includes  a  selection  of  test  programs
2230e3d5408SPeter Wemm   (including a few games).
2240e3d5408SPeter Wemm
2250e3d5408SPeter WemmWho's Who and What's What
2260e3d5408SPeter Wemm
2274a1a9510SRong-En Fan   Zeyd  Ben-Halim started it from a previous package pcurses, written by
228*06bfebdeSXin LI   Pavel  Curtis.  Eric S. Raymond continued development. Juergen Pfeifer
2294a1a9510SRong-En Fan   wrote  most of the form and menu libraries. Ongoing work is being done
230*06bfebdeSXin LI   by  [19]Thomas  Dickey.  Thomas  Dickey acts as the maintainer for the
2310e3d5408SPeter Wemm   Free  Software  Foundation,  which  holds  the  copyright  on ncurses.
232*06bfebdeSXin LI   Contact the current maintainers at [20]bug-ncurses@gnu.org.
2330e3d5408SPeter Wemm
2340e3d5408SPeter Wemm   To   join   the   ncurses   mailing   list,   please  write  email  to
2350e3d5408SPeter Wemm   bug-ncurses-request@gnu.org containing the line:
2360e3d5408SPeter Wemm             subscribe <name>@<host.domain>
2370e3d5408SPeter Wemm
2380e3d5408SPeter Wemm   This list is open to anyone interested in helping with the development
2390e3d5408SPeter Wemm   and testing of this package.
2400e3d5408SPeter Wemm
2410e3d5408SPeter Wemm   Beta  versions  of ncurses and patches to the current release are made
242*06bfebdeSXin LI   available at [21]ftp://invisible-island.net/ncurses/ .
2430e3d5408SPeter Wemm
2440e3d5408SPeter WemmFuture Plans
2450e3d5408SPeter Wemm
2460e3d5408SPeter Wemm     * Extended-level   XPG4   conformance,   with   internationalization
2470e3d5408SPeter Wemm       support.
2480e3d5408SPeter Wemm     * Ports to more systems, including DOS and Windows.
2490e3d5408SPeter Wemm
2500e3d5408SPeter Wemm   We  need  people to help with these projects. If you are interested in
2510e3d5408SPeter Wemm   working on them, please join the ncurses list.
2520e3d5408SPeter Wemm
2530e3d5408SPeter WemmOther Related Resources
2540e3d5408SPeter Wemm
2554a1a9510SRong-En Fan   The  distribution  provides  a  newer  version  of the terminfo-format
256*06bfebdeSXin LI   terminal description file once maintained by [22]Eric Raymond . Unlike
2574a1a9510SRong-En Fan   the  older  version, the termcap and terminfo data are provided in the
2584a1a9510SRong-En Fan   same  file,  and provides several user-definable extensions beyond the
2594a1a9510SRong-En Fan   X/Open specification.
2600e3d5408SPeter Wemm
2610e3d5408SPeter Wemm   You  can  find  lots  of  information  on  terminal-related topics not
262*06bfebdeSXin LI   covered in the terminfo file at [23]Richard Shuford's archive .
2630e3d5408SPeter Wemm
2640e3d5408SPeter WemmReferences
2650e3d5408SPeter Wemm
2664a1a9510SRong-En Fan   1. ftp://ftp.gnu.org/gnu/ncurses/
2674a1a9510SRong-En Fan   2. ftp://invisible-island.net/ncurses/
268*06bfebdeSXin LI   3. http://invisible-island.net/ncurses/man/form_fieldtype.3x
269*06bfebdeSXin LI   4. http://invisible-island.net/ncurses/ncurses-Ada95.html
270*06bfebdeSXin LI   5. http://invisible-island.net/ncurses/ncurses-examples.html
271*06bfebdeSXin LI   6. http://invisible-island.net/cdk/
272*06bfebdeSXin LI   7. http://www.vexus.ca/products/CDK/
273*06bfebdeSXin LI   8. http://invisible-island.net/ded/
274*06bfebdeSXin LI   9. http://invisible-island.net/dialog/
275*06bfebdeSXin LI  10. http://lynx.isc.org/release/
276*06bfebdeSXin LI  11. http://www.midnight-commander.org/
277*06bfebdeSXin LI  12. http://www.mutt.org/
278*06bfebdeSXin LI  13. http://www.ncftp.com/
279*06bfebdeSXin LI  14. https://sites.google.com/a/bostic.com/keithbostic/nvi
280*06bfebdeSXin LI  15. https://alioth.debian.org/projects/pinfo/
281*06bfebdeSXin LI  16. http://www.tin.org/
282*06bfebdeSXin LI  17. http://alioth.debian.org/projects/minicom/
283*06bfebdeSXin LI  18. http://invisible-island.net/vile/
284*06bfebdeSXin LI  19. mailto:dickey@invisible-island.net
285*06bfebdeSXin LI  20. mailto:bug-ncurses@gnu.org
286*06bfebdeSXin LI  21. ftp://invisible-island.net/ncurses/
287*06bfebdeSXin LI  22. http://www.catb.org/~esr/terminfo/
288*06bfebdeSXin LI  23. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal
289