1262629Sdelphij                            Announcing ncurses 5.9
250276Speter
3166124Srafan   The  ncurses  (new  curses)  library  is  a free software emulation of
4166124Srafan   curses  in  System  V  Release 4.0, and more. It uses terminfo format,
5166124Srafan   supports  pads  and color and multiple highlights and forms characters
6166124Srafan   and   function-key   mapping,   and  has  all  the  other  SYSV-curses
750276Speter   enhancements over BSD curses.
862449Speter
9166124Srafan   In  mid-June  1995,  the  maintainer of 4.4BSD curses declared that he
10166124Srafan   considered  4.4BSD curses obsolete, and encouraged the keepers of Unix
11166124Srafan   releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses.
1262449Speter
13166124Srafan   The ncurses code was developed under GNU/Linux. It has been in use for
14166124Srafan   some  time  with  OpenBSD as the system curses library, and on FreeBSD
15166124Srafan   and  NetBSD  as  an  external  package.  It  should port easily to any
16166124Srafan   ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 Warp!
1762449Speter
1850276Speter   The distribution includes the library and support utilities, including
19166124Srafan   a   terminfo  compiler  tic(1),  a  decompiler  infocmp(1),  clear(1),
20166124Srafan   tput(1),  tset(1),  and  a  termcap conversion tool captoinfo(1). Full
2150276Speter   manual pages are provided for the library and tools.
2262449Speter
23166124Srafan   The  ncurses  distribution  is  available via anonymous FTP at the GNU
24166124Srafan   distribution site [1]ftp://ftp.gnu.org/gnu/ncurses/ .
25166124Srafan   It is also available at [2]ftp://invisible-island.net/ncurses/ .
2662449Speter
2750276Speter                                 Release Notes
2862449Speter
29166124Srafan   This  release  is  designed  to  be upward compatible from ncurses 5.0
30262629Sdelphij   through   5.8;  very  few  applications  will  require  recompilation,
31166124Srafan   depending   on  the  platform.  These  are  the  highlights  from  the
32262629Sdelphij   change-log since ncurses 5.8 release.
3362449Speter
34262629Sdelphij   This  is  a  bug-fix  release,  correcting  a  small  number of urgent
35262629Sdelphij   problems in the ncurses library from the 5.8 release.
3662449Speter
37262629Sdelphij   It also improves the Ada95 binding:
38262629Sdelphij     * fixes  a  longstanding  portability  problem  with  its use of the
39262629Sdelphij       [3]set_field_type    function.    Because   that   function   uses
40262629Sdelphij       variable-length  argument  lists, its interface with gnat does not
41262629Sdelphij       work with certain platforms.
42262629Sdelphij     * improves  configurability and portability, particularly when built
43262629Sdelphij       separately  from the main ncurses tree. The 5.8 release introduced
44262629Sdelphij       scripts  which  can be used to construct separate tarballs for the
45262629Sdelphij       Ada95 and ncurses examples.
46262629Sdelphij       Those  were a proof of concept. For the 5.9 release, those scripts
47262629Sdelphij       are  augmented  with  rpm-  and  dpkg-scripts  used in test builds
48262629Sdelphij       against  a  variety of gnat- and system ncurses versions as old as
49262629Sdelphij       gnat  3.15  and  ncurses  5.4  (see  snapshots  and systems tested
50262629Sdelphij       [4]here.
51262629Sdelphij     * additional  improvements  were made for portability of the ncurses
52262629Sdelphij       examples,  adding  rpm-  and  dpkg-scripts  for  test-builds.  See
53262629Sdelphij       [5]this page for snapshots and other information.
5462449Speter
5550276Speter                              Features of Ncurses
5662449Speter
5750276Speter   The ncurses package is fully compatible with SVr4 (System V Release 4)
5850276Speter   curses:
59166124Srafan     * All  257  of  the  SVr4  calls  have  been  implemented  (and  are
6050276Speter       documented).
61166124Srafan     * Full  support for SVr4 curses features including keyboard mapping,
62166124Srafan       color,   forms-drawing   with   ACS   characters,   and  automatic
6350276Speter       recognition of keypad and function keys.
64166124Srafan     * An  emulation  of  the  SVr4 panels library, supporting a stack of
6550276Speter       windows with backing store, is included.
66166124Srafan     * An  emulation  of the SVr4 menus library, supporting a uniform but
6750276Speter       flexible interface for menu programming, is included.
68166124Srafan     * An  emulation of the SVr4 form library, supporting data collection
6950276Speter       through on-screen forms, is included.
70166124Srafan     * Binary   terminfo   entries   generated   by  the  ncurses  tic(1)
71166124Srafan       implementation  are  bit-for-bit-compatible  with the entry format
7250276Speter       SVr4 curses uses.
7350276Speter     * The utilities have options to allow you to filter terminfo entries
74166124Srafan       for  use  with  less  capable curses/terminfo versions such as the
7550276Speter       HP/UX and AIX ports.
7662449Speter
7750276Speter   The ncurses package also has many useful extensions over SVr4:
78166124Srafan     * The  API  is 8-bit clean and base-level conformant with the X/OPEN
79166124Srafan       curses  specification, XSI curses (that is, it implements all BASE
80166124Srafan       level  features,  and  most  EXTENDED  features). It includes many
81166124Srafan       function calls not supported under SVr4 curses (but portability of
82166124Srafan       all calls is documented so you can use the SVr4 subset only).
83166124Srafan     * Unlike  SVr3 curses, ncurses can write to the rightmost-bottommost
84166124Srafan       corner  of  the  screen  if  your terminal has an insert-character
8550276Speter       capability.
8650276Speter     * Ada95 and C++ bindings.
87166124Srafan     * Support  for mouse event reporting with X Window xterm and FreeBSD
88166124Srafan       and OS/2 console windows.
8950276Speter     * Extended mouse support via Alessandro Rubini's gpm package.
90262629Sdelphij     * The  function  wresize  allows  you  to resize windows, preserving
9150276Speter       their data.
92262629Sdelphij     * The  function  use_default_colors allows you to use the terminal's
9350276Speter       default colors for the default color pair, achieving the effect of
9450276Speter       transparent colors.
95262629Sdelphij     * The functions keyok and define_key allow you to better control the
96262629Sdelphij       use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by
97262629Sdelphij       defining  more  than  one  control  sequence to map to a given key
98262629Sdelphij       code.
99184989Srafan     * Support  for  256-color  terminals,  such  as  modern  xterm, when
100184989Srafan       configured using the --enable-ext-colors option.
101166124Srafan     * Support for 16-color terminals, such as aixterm and modern xterm.
102166124Srafan     * Better  cursor-movement  optimization.  The package now features a
10350276Speter       cursor-local-movement computation more efficient than either BSD's
10450276Speter       or System V's.
105166124Srafan     * Super   hardware   scrolling   support.   The  screen-update  code
106166124Srafan       incorporates  a novel, simple, and cheap algorithm that enables it
107166124Srafan       to  make  optimal  use  of hardware scrolling, line-insertion, and
108166124Srafan       line-deletion  for  screen-line  movements. This algorithm is more
109262629Sdelphij       powerful than the 4.4BSD curses quickch routine.
110166124Srafan     * Real  support  for  terminals  with  the  magic-cookie glitch. The
111166124Srafan       screen-update  code  will  refrain from drawing a highlight if the
112166124Srafan       magic-   cookie  unattributed  spaces  required  just  before  the
113166124Srafan       beginning  and  after the end would step on a non-space character.
114166124Srafan       It  will  automatically  shift  highlight boundaries when doing so
115166124Srafan       would  make it possible to draw the highlight without changing the
11650276Speter       visual appearance of the screen.
117166124Srafan     * It  is  possible to generate the library with a list of pre-loaded
118166124Srafan       fallback  entries linked to it so that it can serve those terminal
119166124Srafan       types  even  when  no  terminfo tree or termcap file is accessible
120166124Srafan       (this  may  be useful for support of screen-oriented programs that
12150276Speter       must run in single-user mode).
12250276Speter     * The tic(1)/captoinfo utility provided with ncurses has the ability
123166124Srafan       to  translate many termcaps from the XENIX, IBM and AT&T extension
12450276Speter       sets.
12550276Speter     * A BSD-like tset(1) utility is provided.
12650276Speter     * The ncurses library and utilities will automatically read terminfo
127166124Srafan       entries  from  $HOME/.terminfo  if  it exists, and compile to that
128166124Srafan       directory  if  it  exists  and the user has no write access to the
129166124Srafan       system  directory.  This feature makes it easier for users to have
130166124Srafan       personal  terminfo  entries without giving up access to the system
13150276Speter       terminfo directory.
132166124Srafan     * You  may  specify  a  path  of  directories to search for compiled
133166124Srafan       descriptions  with  the  environment  variable TERMINFO_DIRS (this
134166124Srafan       generalizes  the  feature  provided by TERMINFO under stock System
13550276Speter       V.)
136166124Srafan     * In  terminfo  source files, use capabilities may refer not just to
13750276Speter       other entries in the same source file (as in System V) but also to
138166124Srafan       compiled  entries  in  either the system terminfo directory or the
13950276Speter       user's $HOME/.terminfo directory.
140166124Srafan     * A  script  (capconvert)  is  provided to help BSD users transition
141166124Srafan       from  termcap to terminfo. It gathers the information in a TERMCAP
142166124Srafan       environment  variable  and/or  a ~/.termcap local entries file and
143166124Srafan       converts   it   to   an   equivalent  local  terminfo  tree  under
14450276Speter       $HOME/.terminfo.
145166124Srafan     * Automatic  fallback  to  the  /etc/termcap file can be compiled in
146166124Srafan       when  it is not possible to build a terminfo tree. This feature is
147166124Srafan       neither  fast  nor cheap, you don't want to use it unless you have
14850276Speter       to, but it's there.
149166124Srafan     * The  table-of-entries  utility  toe makes it easy for users to see
15050276Speter       exactly what terminal types are available on the system.
15150276Speter     * The library meets the XSI requirement that every macro entry point
152166124Srafan       have  a  corresponding  function  which may be linked (and will be
153166124Srafan       prototype-checked)  if  the  macro  definition  is  disabled  with
15450276Speter       #undef.
155166124Srafan     * An  HTML  "Introduction  to  Programming  with  NCURSES"  document
156166124Srafan       provides  a  narrative  introduction  to  the  curses  programming
15750276Speter       interface.
15862449Speter
15950276Speter                             State of the Package
16062449Speter
16150276Speter   Numerous bugs present in earlier versions have been fixed; the library
162166124Srafan   is  far  more  reliable  than  it  used to be. Bounds checking in many
163166124Srafan   `dangerous'  entry points has been improved. The code is now type-safe
164166124Srafan   according  to gcc -Wall. The library has been checked for malloc leaks
16550276Speter   and arena corruption by the Purify memory-allocation tester.
16662449Speter
167166124Srafan   The  ncurses  code has been tested with a wide variety of applications
16850276Speter   including (versions starting with those noted):
16962449Speter
17056639Speter   cdk
17162449Speter          Curses Development Kit
172262629Sdelphij          [6]http://invisible-island.net/cdk/
173262629Sdelphij          [7]http://www.vexus.ca/products/CDK/
17462449Speter
17550276Speter   ded
17662449Speter          directory-editor
177262629Sdelphij          [8]http://invisible-island.net/ded/
17862449Speter
17950276Speter   dialog
180166124Srafan          the  underlying  application used in Slackware's setup, and the
18150276Speter          basis for similar applications on GNU/Linux.
182262629Sdelphij          [9]http://invisible-island.net/dialog/
18362449Speter
18456639Speter   lynx
18550276Speter          the character-screen WWW browser
186262629Sdelphij          [10]http://lynx.isc.org/release/
18762449Speter
188166124Srafan   Midnight Commander
18950276Speter          file manager
190262629Sdelphij          [11]http://www.midnight-commander.org/
19162449Speter
19256639Speter   mutt
19350276Speter          mail utility
194262629Sdelphij          [12]http://www.mutt.org/
19562449Speter
19656639Speter   ncftp
19750276Speter          file-transfer utility
198262629Sdelphij          [13]http://www.ncftp.com/
19962449Speter
20050276Speter   nvi
20150276Speter          New vi versions 1.50 are able to use ncurses versions 1.9.7 and
20250276Speter          later.
203262629Sdelphij          [14]https://sites.google.com/a/bostic.com/keithbostic/nvi
20462449Speter
205166124Srafan   pinfo
206166124Srafan          Lynx-like info browser.
207262629Sdelphij          [15]https://alioth.debian.org/projects/pinfo/
208166124Srafan
20956639Speter   tin
210262629Sdelphij          newsreader, supporting color, MIME [16]http://www.tin.org/
21162449Speter
21250276Speter   as well as some that use ncurses for the terminfo support alone:
21362449Speter
21456639Speter   minicom
21550276Speter          terminal emulator
216262629Sdelphij          [17]http://alioth.debian.org/projects/minicom/
21762449Speter
21850276Speter   vile
21962449Speter          vi-like-emacs
220262629Sdelphij          [18]http://invisible-island.net/vile/
22162449Speter
222166124Srafan   The  ncurses  distribution  includes  a  selection  of  test  programs
22350276Speter   (including a few games).
22462449Speter
22550276SpeterWho's Who and What's What
22650276Speter
227166124Srafan   Zeyd  Ben-Halim started it from a previous package pcurses, written by
228262629Sdelphij   Pavel  Curtis.  Eric S. Raymond continued development. Juergen Pfeifer
229166124Srafan   wrote  most of the form and menu libraries. Ongoing work is being done
230262629Sdelphij   by  [19]Thomas  Dickey.  Thomas  Dickey acts as the maintainer for the
231166124Srafan   Free  Software  Foundation,  which  holds  the  copyright  on ncurses.
232262629Sdelphij   Contact the current maintainers at [20]bug-ncurses@gnu.org.
23362449Speter
234166124Srafan   To   join   the   ncurses   mailing   list,   please  write  email  to
23550276Speter   bug-ncurses-request@gnu.org containing the line:
23650276Speter             subscribe <name>@<host.domain>
23750276Speter
23850276Speter   This list is open to anyone interested in helping with the development
23950276Speter   and testing of this package.
24062449Speter
241166124Srafan   Beta  versions  of ncurses and patches to the current release are made
242262629Sdelphij   available at [21]ftp://invisible-island.net/ncurses/ .
24362449Speter
24450276SpeterFuture Plans
24550276Speter
246166124Srafan     * Extended-level   XPG4   conformance,   with   internationalization
24750276Speter       support.
24850276Speter     * Ports to more systems, including DOS and Windows.
24962449Speter
250166124Srafan   We  need  people to help with these projects. If you are interested in
25150276Speter   working on them, please join the ncurses list.
25262449Speter
25350276SpeterOther Related Resources
25450276Speter
255166124Srafan   The  distribution  provides  a  newer  version  of the terminfo-format
256262629Sdelphij   terminal description file once maintained by [22]Eric Raymond . Unlike
257166124Srafan   the  older  version, the termcap and terminfo data are provided in the
258166124Srafan   same  file,  and provides several user-definable extensions beyond the
259166124Srafan   X/Open specification.
26062449Speter
261166124Srafan   You  can  find  lots  of  information  on  terminal-related topics not
262262629Sdelphij   covered in the terminfo file at [23]Richard Shuford's archive .
26350276Speter
26450276SpeterReferences
26550276Speter
266166124Srafan   1. ftp://ftp.gnu.org/gnu/ncurses/
267166124Srafan   2. ftp://invisible-island.net/ncurses/
268262629Sdelphij   3. http://invisible-island.net/ncurses/man/form_fieldtype.3x
269262629Sdelphij   4. http://invisible-island.net/ncurses/ncurses-Ada95.html
270262629Sdelphij   5. http://invisible-island.net/ncurses/ncurses-examples.html
271262629Sdelphij   6. http://invisible-island.net/cdk/
272262629Sdelphij   7. http://www.vexus.ca/products/CDK/
273262629Sdelphij   8. http://invisible-island.net/ded/
274262629Sdelphij   9. http://invisible-island.net/dialog/
275262629Sdelphij  10. http://lynx.isc.org/release/
276262629Sdelphij  11. http://www.midnight-commander.org/
277262629Sdelphij  12. http://www.mutt.org/
278262629Sdelphij  13. http://www.ncftp.com/
279262629Sdelphij  14. https://sites.google.com/a/bostic.com/keithbostic/nvi
280262629Sdelphij  15. https://alioth.debian.org/projects/pinfo/
281262629Sdelphij  16. http://www.tin.org/
282262629Sdelphij  17. http://alioth.debian.org/projects/minicom/
283262629Sdelphij  18. http://invisible-island.net/vile/
284262629Sdelphij  19. mailto:dickey@invisible-island.net
285262629Sdelphij  20. mailto:bug-ncurses@gnu.org
286262629Sdelphij  21. ftp://invisible-island.net/ncurses/
287262629Sdelphij  22. http://www.catb.org/~esr/terminfo/
288262629Sdelphij  23. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal
289