xref: /freebsd/contrib/ncurses/ANNOUNCE (revision 4928135658a9d0eaee37003df6137ab363fcb0b4)
1                            Announcing ncurses 5.9
2
3   The  ncurses  (new  curses)  library  is  a free software emulation of
4   curses  in  System  V  Release 4.0, and more. It uses terminfo format,
5   supports  pads  and color and multiple highlights and forms characters
6   and   function-key   mapping,   and  has  all  the  other  SYSV-curses
7   enhancements over BSD curses.
8
9   In  mid-June  1995,  the  maintainer of 4.4BSD curses declared that he
10   considered  4.4BSD curses obsolete, and encouraged the keepers of Unix
11   releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses.
12
13   The ncurses code was developed under GNU/Linux. It has been in use for
14   some  time  with  OpenBSD as the system curses library, and on FreeBSD
15   and  NetBSD  as  an  external  package.  It  should port easily to any
16   ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 Warp!
17
18   The distribution includes the library and support utilities, including
19   a   terminfo  compiler  tic(1),  a  decompiler  infocmp(1),  clear(1),
20   tput(1),  tset(1),  and  a  termcap conversion tool captoinfo(1). Full
21   manual pages are provided for the library and tools.
22
23   The  ncurses  distribution  is  available via anonymous FTP at the GNU
24   distribution site [1]ftp://ftp.gnu.org/gnu/ncurses/ .
25   It is also available at [2]ftp://invisible-island.net/ncurses/ .
26
27                                 Release Notes
28
29   This  release  is  designed  to  be upward compatible from ncurses 5.0
30   through   5.8;  very  few  applications  will  require  recompilation,
31   depending   on  the  platform.  These  are  the  highlights  from  the
32   change-log since ncurses 5.8 release.
33
34   This  is  a  bug-fix  release,  correcting  a  small  number of urgent
35   problems in the ncurses library from the 5.8 release.
36
37   It also improves the Ada95 binding:
38     * fixes  a  longstanding  portability  problem  with  its use of the
39       [3]set_field_type    function.    Because   that   function   uses
40       variable-length  argument  lists, its interface with gnat does not
41       work with certain platforms.
42     * improves  configurability and portability, particularly when built
43       separately  from the main ncurses tree. The 5.8 release introduced
44       scripts  which  can be used to construct separate tarballs for the
45       Ada95 and ncurses examples.
46       Those  were a proof of concept. For the 5.9 release, those scripts
47       are  augmented  with  rpm-  and  dpkg-scripts  used in test builds
48       against  a  variety of gnat- and system ncurses versions as old as
49       gnat  3.15  and  ncurses  5.4  (see  snapshots  and systems tested
50       [4]here.
51     * additional  improvements  were made for portability of the ncurses
52       examples,  adding  rpm-  and  dpkg-scripts  for  test-builds.  See
53       [5]this page for snapshots and other information.
54
55                              Features of Ncurses
56
57   The ncurses package is fully compatible with SVr4 (System V Release 4)
58   curses:
59     * All  257  of  the  SVr4  calls  have  been  implemented  (and  are
60       documented).
61     * Full  support for SVr4 curses features including keyboard mapping,
62       color,   forms-drawing   with   ACS   characters,   and  automatic
63       recognition of keypad and function keys.
64     * An  emulation  of  the  SVr4 panels library, supporting a stack of
65       windows with backing store, is included.
66     * An  emulation  of the SVr4 menus library, supporting a uniform but
67       flexible interface for menu programming, is included.
68     * An  emulation of the SVr4 form library, supporting data collection
69       through on-screen forms, is included.
70     * Binary   terminfo   entries   generated   by  the  ncurses  tic(1)
71       implementation  are  bit-for-bit-compatible  with the entry format
72       SVr4 curses uses.
73     * The utilities have options to allow you to filter terminfo entries
74       for  use  with  less  capable curses/terminfo versions such as the
75       HP/UX and AIX ports.
76
77   The ncurses package also has many useful extensions over SVr4:
78     * The  API  is 8-bit clean and base-level conformant with the X/OPEN
79       curses  specification, XSI curses (that is, it implements all BASE
80       level  features,  and  most  EXTENDED  features). It includes many
81       function calls not supported under SVr4 curses (but portability of
82       all calls is documented so you can use the SVr4 subset only).
83     * Unlike  SVr3 curses, ncurses can write to the rightmost-bottommost
84       corner  of  the  screen  if  your terminal has an insert-character
85       capability.
86     * Ada95 and C++ bindings.
87     * Support  for mouse event reporting with X Window xterm and FreeBSD
88       and OS/2 console windows.
89     * Extended mouse support via Alessandro Rubini's gpm package.
90     * The  function  wresize  allows  you  to resize windows, preserving
91       their data.
92     * The  function  use_default_colors allows you to use the terminal's
93       default colors for the default color pair, achieving the effect of
94       transparent colors.
95     * The functions keyok and define_key allow you to better control the
96       use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by
97       defining  more  than  one  control  sequence to map to a given key
98       code.
99     * Support  for  256-color  terminals,  such  as  modern  xterm, when
100       configured using the --enable-ext-colors option.
101     * Support for 16-color terminals, such as aixterm and modern xterm.
102     * Better  cursor-movement  optimization.  The package now features a
103       cursor-local-movement computation more efficient than either BSD's
104       or System V's.
105     * Super   hardware   scrolling   support.   The  screen-update  code
106       incorporates  a novel, simple, and cheap algorithm that enables it
107       to  make  optimal  use  of hardware scrolling, line-insertion, and
108       line-deletion  for  screen-line  movements. This algorithm is more
109       powerful than the 4.4BSD curses quickch routine.
110     * Real  support  for  terminals  with  the  magic-cookie glitch. The
111       screen-update  code  will  refrain from drawing a highlight if the
112       magic-   cookie  unattributed  spaces  required  just  before  the
113       beginning  and  after the end would step on a non-space character.
114       It  will  automatically  shift  highlight boundaries when doing so
115       would  make it possible to draw the highlight without changing the
116       visual appearance of the screen.
117     * It  is  possible to generate the library with a list of pre-loaded
118       fallback  entries linked to it so that it can serve those terminal
119       types  even  when  no  terminfo tree or termcap file is accessible
120       (this  may  be useful for support of screen-oriented programs that
121       must run in single-user mode).
122     * The tic(1)/captoinfo utility provided with ncurses has the ability
123       to  translate many termcaps from the XENIX, IBM and AT&T extension
124       sets.
125     * A BSD-like tset(1) utility is provided.
126     * The ncurses library and utilities will automatically read terminfo
127       entries  from  $HOME/.terminfo  if  it exists, and compile to that
128       directory  if  it  exists  and the user has no write access to the
129       system  directory.  This feature makes it easier for users to have
130       personal  terminfo  entries without giving up access to the system
131       terminfo directory.
132     * You  may  specify  a  path  of  directories to search for compiled
133       descriptions  with  the  environment  variable TERMINFO_DIRS (this
134       generalizes  the  feature  provided by TERMINFO under stock System
135       V.)
136     * In  terminfo  source files, use capabilities may refer not just to
137       other entries in the same source file (as in System V) but also to
138       compiled  entries  in  either the system terminfo directory or the
139       user's $HOME/.terminfo directory.
140     * A  script  (capconvert)  is  provided to help BSD users transition
141       from  termcap to terminfo. It gathers the information in a TERMCAP
142       environment  variable  and/or  a ~/.termcap local entries file and
143       converts   it   to   an   equivalent  local  terminfo  tree  under
144       $HOME/.terminfo.
145     * Automatic  fallback  to  the  /etc/termcap file can be compiled in
146       when  it is not possible to build a terminfo tree. This feature is
147       neither  fast  nor cheap, you don't want to use it unless you have
148       to, but it's there.
149     * The  table-of-entries  utility  toe makes it easy for users to see
150       exactly what terminal types are available on the system.
151     * The library meets the XSI requirement that every macro entry point
152       have  a  corresponding  function  which may be linked (and will be
153       prototype-checked)  if  the  macro  definition  is  disabled  with
154       #undef.
155     * An  HTML  "Introduction  to  Programming  with  NCURSES"  document
156       provides  a  narrative  introduction  to  the  curses  programming
157       interface.
158
159                             State of the Package
160
161   Numerous bugs present in earlier versions have been fixed; the library
162   is  far  more  reliable  than  it  used to be. Bounds checking in many
163   `dangerous'  entry points has been improved. The code is now type-safe
164   according  to gcc -Wall. The library has been checked for malloc leaks
165   and arena corruption by the Purify memory-allocation tester.
166
167   The  ncurses  code has been tested with a wide variety of applications
168   including (versions starting with those noted):
169
170   cdk
171          Curses Development Kit
172          [6]http://invisible-island.net/cdk/
173          [7]http://www.vexus.ca/products/CDK/
174
175   ded
176          directory-editor
177          [8]http://invisible-island.net/ded/
178
179   dialog
180          the  underlying  application used in Slackware's setup, and the
181          basis for similar applications on GNU/Linux.
182          [9]http://invisible-island.net/dialog/
183
184   lynx
185          the character-screen WWW browser
186          [10]http://lynx.isc.org/release/
187
188   Midnight Commander
189          file manager
190          [11]http://www.midnight-commander.org/
191
192   mutt
193          mail utility
194          [12]http://www.mutt.org/
195
196   ncftp
197          file-transfer utility
198          [13]http://www.ncftp.com/
199
200   nvi
201          New vi versions 1.50 are able to use ncurses versions 1.9.7 and
202          later.
203          [14]https://sites.google.com/a/bostic.com/keithbostic/nvi
204
205   pinfo
206          Lynx-like info browser.
207          [15]https://alioth.debian.org/projects/pinfo/
208
209   tin
210          newsreader, supporting color, MIME [16]http://www.tin.org/
211
212   as well as some that use ncurses for the terminfo support alone:
213
214   minicom
215          terminal emulator
216          [17]http://alioth.debian.org/projects/minicom/
217
218   vile
219          vi-like-emacs
220          [18]http://invisible-island.net/vile/
221
222   The  ncurses  distribution  includes  a  selection  of  test  programs
223   (including a few games).
224
225Who's Who and What's What
226
227   Zeyd  Ben-Halim started it from a previous package pcurses, written by
228   Pavel  Curtis.  Eric S. Raymond continued development. Juergen Pfeifer
229   wrote  most of the form and menu libraries. Ongoing work is being done
230   by  [19]Thomas  Dickey.  Thomas  Dickey acts as the maintainer for the
231   Free  Software  Foundation,  which  holds  the  copyright  on ncurses.
232   Contact the current maintainers at [20]bug-ncurses@gnu.org.
233
234   To   join   the   ncurses   mailing   list,   please  write  email  to
235   bug-ncurses-request@gnu.org containing the line:
236             subscribe <name>@<host.domain>
237
238   This list is open to anyone interested in helping with the development
239   and testing of this package.
240
241   Beta  versions  of ncurses and patches to the current release are made
242   available at [21]ftp://invisible-island.net/ncurses/ .
243
244Future Plans
245
246     * Extended-level   XPG4   conformance,   with   internationalization
247       support.
248     * Ports to more systems, including DOS and Windows.
249
250   We  need  people to help with these projects. If you are interested in
251   working on them, please join the ncurses list.
252
253Other Related Resources
254
255   The  distribution  provides  a  newer  version  of the terminfo-format
256   terminal description file once maintained by [22]Eric Raymond . Unlike
257   the  older  version, the termcap and terminfo data are provided in the
258   same  file,  and provides several user-definable extensions beyond the
259   X/Open specification.
260
261   You  can  find  lots  of  information  on  terminal-related topics not
262   covered in the terminfo file at [23]Richard Shuford's archive .
263
264References
265
266   1. ftp://ftp.gnu.org/gnu/ncurses/
267   2. ftp://invisible-island.net/ncurses/
268   3. http://invisible-island.net/ncurses/man/form_fieldtype.3x
269   4. http://invisible-island.net/ncurses/ncurses-Ada95.html
270   5. http://invisible-island.net/ncurses/ncurses-examples.html
271   6. http://invisible-island.net/cdk/
272   7. http://www.vexus.ca/products/CDK/
273   8. http://invisible-island.net/ded/
274   9. http://invisible-island.net/dialog/
275  10. http://lynx.isc.org/release/
276  11. http://www.midnight-commander.org/
277  12. http://www.mutt.org/
278  13. http://www.ncftp.com/
279  14. https://sites.google.com/a/bostic.com/keithbostic/nvi
280  15. https://alioth.debian.org/projects/pinfo/
281  16. http://www.tin.org/
282  17. http://alioth.debian.org/projects/minicom/
283  18. http://invisible-island.net/vile/
284  19. mailto:dickey@invisible-island.net
285  20. mailto:bug-ncurses@gnu.org
286  21. ftp://invisible-island.net/ncurses/
287  22. http://www.catb.org/~esr/terminfo/
288  23. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal
289