ncurses 5.6 - patch 20070505
[ncurses.git] / ANNOUNCE
index 5a2a139850d892ffa8efa3b34501cbf10710a5f0..bbeeb8922d4724c0b184b8de901cfb0d99577bb5 100644 (file)
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,4 +1,4 @@
-                            Announcing ncurses 5.5
+                            Announcing ncurses 5.6
 
    The  ncurses  (new  curses)  library  is  a free software emulation of
    curses  in  System  V  Release 4.0, and more. It uses terminfo format,
 
    The  ncurses  (new  curses)  library  is  a free software emulation of
    curses  in  System  V  Release 4.0, and more. It uses terminfo format,
                                  Release Notes
 
    This  release  is  designed  to  be upward compatible from ncurses 5.0
                                  Release Notes
 
    This  release  is  designed  to  be upward compatible from ncurses 5.0
-   through   5.4;  very  few  applications  will  require  recompilation,
+   through   5.5;  very  few  applications  will  require  recompilation,
    depending   on  the  platform.  These  are  the  highlights  from  the
    depending   on  the  platform.  These  are  the  highlights  from  the
-   change-log since ncurses 5.4 release.
+   change-log since ncurses 5.5 release.
 
    Interface changes:
 
    Interface changes:
-     * terminfo   installs  "xterm-new"  as  "xterm"  entry  rather  than
-       "xterm-old" (aka xterm-r6).
-     * terminfo  data  is  installed using the tic -x option (few systems
-       still use ncurses 4.2).
-     * modify  C++  binding to work with newer C++ compilers by providing
-       initializers  and  using  modern casts. Old-style header names are
-       still  used  in  this  release  to allow compiling with not-so-old
-       compilers.
-     * modify parameter type in c++ binding for insch() and mvwinsch() to
-       be  consistent  with  underlying  ncurses  library  (was  char, is
-       chtype).
-     * change NCursesWindow::err_handler() to a virtual function.
-     * form  and  menu  libraries  now  work  with  wide-character  data.
-       Applications  which  bypassed the form library and manipulated the
-       FIELD.buf  data  directly  will  not  work properly with libformw,
-       since   that   no   longer   points  to  an  array  of  char.  The
-       set_field_buffer()  and field_buffer() functions translate to/from
-       the actual field data.
-     * add  symbol  to  curses.h which can be used to suppress include of
-       stdbool.h, e.g.,
-                #define NCURSES_ENABLE_STDBOOL_H 0
-                #include <curses.h>
-
-     * change  SP->_current_attr  to  a pointer, adjust ifdef's to ensure
-       that  libtinfo.so  and  libtinfow.so have the same ABI. The reason
-       for  this  is  that  the  corresponding  data which belongs to the
-       upper-level ncurses library has a different size in each model.
-     * winnstr()   now   returns  multibyte  character  strings  for  the
-       wide-character configuration.
-     * assume_default_colors()      no      longer      requires     that
-       use_default_colors() be called first.
-     * data_ahead() now works with wide-characters.
-     * slk_set()  and  slk_wset()  now  accept  and  store  multibyte  or
-       multicolumn characters.
-     * start_color()  now returns OK if colors have already been started.
-       start_color() also returns ERR if it cannot allocate memory.
-     * pair_content()  now returns -1 for consistency with init_pair() if
-       it corresponds to the default-color.
-     * unctrl()  now returns null if its parameter does not correspond to
-       an unsigned char.
+     * generate linkable stubs for some macros:
+       getbegx,  getbegy,  getcurx,  getcury,  getmaxx, getmaxy, getparx,
+       getpary, getpary,
+       and (for libncursesw)
+       wgetbkgrnd
 
    New features and improvements:
      * library
 
    New features and improvements:
      * library
-          + environment     variable     NCURSES_NO_UTF8_ACS     supports
-            miscellaneous   terminal  emulators  which  ignore  alternate
-            character set escape sequences when in UTF-8 mode.
-          + modify  initialization  of  key  lookup  table  so that if an
-            extended  capability (tic -x) string is defined, and its name
-            begins  with  'k',  ncurses  will automatically treat it as a
-            key.
-          + change  GPM  initialization,  using  dl  library  to  load it
-            dynamically at runtime.
-          + form, menu and panel libraries support debug-tracing.
-     * add   NCURSES-Programming-HOWTO.html   by   Pradeep   Padala  (see
-       http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/).
+          + support  hashed databases for the terminal descriptions. This
+            uses  the  Berkeley  database,  has  been  tested for several
+            versions on different platforms.
+          + add    use_legacy_coding()   function   to   support   lynx's
+            font-switching feature.
+          + add extension nofilter(), to cancel a prior filter() call.
+          + add/install a package config script, e.g., ncurses5-config or
+            ncursesw5-config, according to configuration options.
+          + provide  ifdef  for  NCURSES_NOMACROS  which  suppresses most
+            macro  definitions  from  curses.h,  i.e.,  where  a macro is
+            defined to override a function to improve performance.
+          + make  ifdef's  consistent in curses.h for the extended colors
+            so the header file can be used for the normal curses library.
+            The  header file installed for extended colors is a variation
+            of the wide-character configuration.
+          + improve  tgetstr()  by making the return value point into the
+            user's buffer, if provided.
+          + add  ifdef's  allowing ncurses to be built with tparm() using
+            either   varargs   (the   existing   status),   or   using  a
+            fixed-parameter list (to match X/Open).
+          + widen  the  test  for xterm kmous a little to allow for other
+            strings  than  "\E[M",  e.g.,  for xterm-sco functionality in
+            xterm.
+          + modify wgetnstr() to return KEY_RESIZE if a sigwinch occurs.
+          + move  prototypes  for  wide-character  trace  functions  from
+            curses.tail  to  curses.wide to avoid accidental reference to
+            those  if  _XOPEN_SOURCE_EXTENDED is defined without ensuring
+            that <wchar.h> is included.
+          + change  the  way  shared  libraries  (other than libtool) are
+            installed.  Rather  than  copying the build-tree's libraries,
+            link  the  shared  objects  into  the install directory. This
+            makes the --with-rpath option work except with $(DESTDIR).
+          + several  improvements for rendering in hpterm. These are only
+            available    if    the    library    is    configured   using
+            --enable-xmc-glitch.
+          + Add    NCURSES_NO_HARD_TABS    and    NCURSES_NO_MAGIC_COOKIE
+            environment  variables  to  allow  runtime suppression of the
+            related hard-tabs and xmc-glitch features.
      * programs:
      * programs:
-     * infocmp:
-          + The  -i  option  now matches 8-bit controls against its table
-            entries, e.g., so it can analyze the xterm-8bit entry.
-          + add  "-x"  option to infocmp like tic's "-x", for use in "-F"
-            comparisons.  This  modifies  infocmp to only report extended
-            capabilities  if  the  -x  option  is given, making this more
-            consistent  with  tic.  Some scripts may break, since infocmp
-            previous gave this information without an option.
-     * tic:
-          + modify  termcap-parsing  to retain 2-character aliases at the
-            beginning of an entry if the "-x" option is used in tic.
-          + filter  out  long  extended names when translating to termcap
-            format.  Only  two  characters  are  permissible  for termcap
-            capability names.
-          + correct  translation  of  "%%" in terminfo format to termcap,
-            e.g., using "tic -C".
-          + modify  the  "-c  -v" options to ignore delays when comparing
-            strings.  Also  modify  it  to  ignore a canceled sgr string,
-            e.g.,  for terminals which cannot properly combine attributes
-            in one control sequence.
-          + add  a  check  for  improperly  ended  strings, i.e., where a
-            following line begins in column 1.
-          + add a check in tic for terminfo entries having an sgr0 but no
-            sgr string. This confuses Tru64 and HPUX curses when combined
-            with  color,  e.g., making them leave line-drawing characters
-            in odd places.
-          + add  check (with debug configuration) that provides about the
-            runtime  changes  that  would  be  made  to  sgr0 for termcap
-            applications.
-     * tset:
-          + add  -c  and  -w  options  to allow user to suppress ncurses'
-            resizing  of the terminal emulator window in the special case
-            where it is not able to detect the true size.
+          + add  new  test programs: chgat.c, demo_altkeys.c, echochar.c,
+            foldkeys.c,  movewindow.c,  redraw.c,  (noting  that existing
+            test   programs   also   were  modified  to  test  additional
+            features).
+          + modify tack to test extended capability function-key strings.
+          + modify  toe  to  access  termcap  data,  e.g.,  via cgetent()
+            functions, or as a text file if those are not available.
+          + improve infocmp/tic -f option formatting.
+          + add  toe  -a  option,  to  show  all databases. This uses new
+            private  interfaces  in  the  ncurses  library  for iterating
+            through the list of databases.
+          + modify MKfallback.sh to use tic -x when constructing fallback
+            tables  to allow extended capabilities to be retrieved from a
+            fallback entry.
+     * terminal database
+          + add terminfo entries for xfce terminal (xfce) and multi gnome
+            terminal (mgt)
+          + add nsterm-16color entry
+          + updated mlterm terminfo entry
+          + add kon, kon2 and jfbterm terminfo entry
+          + remove  invis capability from klone+sgr, mainly used by linux
+            entry, since it does not really do this
+          + add ka2, kb1, kb3, kc2 to vt220-keypad as an extension
+          + add  shifted  up/down  arrow  codes  to xterm-new as kind/kri
+            strings
+          + add hpterm-color terminfo entry
+          + add  256color variants of terminfo entries for programs which
+            are reported to implement this feature
+          + correct  order  of use-clauses in rxvt-basic entry which made
+            codes for f1-f4 vt100-style rather than vt220-style.
 
    Major bug fixes:
 
    Major bug fixes:
-     * improve  logic  in tgetent() which adjusts the termcap "me" string
-       to  work with ISO-2022 string used in xterm-new. This is a feature
-       that was incompletely implemented in ncurses 5.3. ncurses attempts
-       to  provide  termcap clients with the portion of the sgr0 (termcap
-       "me") string that does not reset line-drawing.
-     * cells  in  the  WINDOW  which  are  continuations of a multicolumn
-       character   are   encoded   differently,  making  repainting  more
-       reliable.
-     * amend  change to setupterm() in ncurses 5.4 (20030405) which would
-       reuse  the value of cur_term if the same output was selected. This
-       now  reuses  it  only  when  setupterm() is called from tgetent(),
-       which  has no notion of separate SCREENs. Note that tgetent() must
-       be called after initscr() or newterm() to use this feature.
-     * make  setcchar() now works when its wchar_t* parameter is pointing
-       to a string which contains more data than can be converted.
-     * win_wchnstr() now works for more than one cell.
-     * resizeterm() now processes all levels of window hierarchy.
-     * disable  GPM  mouse support when $TERM happens to be prefixed with
-       "xterm".  Gpm_Open()  would otherwise assert that it can deal with
-       mouse events in this case.
-     * add  SP->_screen_acs_map[], used to ensure that mapping of missing
-       line-drawing   characters   is   handled  properly.  For  example,
-       ACS_DARROW  is  absent  from  xterm-new, and it was coincidentally
-       displayed the same as ACS_BTEE.
+     * correct  a typo in configure --with-bool option for the case where
+       --without-cxx is used.
+     * move  assignment from environment variable ESCDELAY from initscr()
+       down to newterm() so the environment variable affects timeouts for
+       terminals opened with newterm() as well.
+     * modify  werase  to clear multicolumn characters that extend into a
+       derived window.
+     * modify wchgat() to mark updated cells as changed so a refresh will
+       repaint those cells.
+     * correct  logic  in wadd_wch() and wecho_wch(), which did not guard
+       against   passing  the  multi-column  attribute  into  a  call  on
+       waddch(), e.g., using data returned by win_wch()
+     * fix  redrawing  of  windows other than stdscr using wredrawln() by
+       touching the corresponding rows in curscr.
+     * reduce  memory leaks in repeated calls to tgetent() by remembering
+       the  last TERMINAL* value allocated to hold the corresponding data
+       and freeing that if the tgetent() result buffer is the same as the
+       previous call.
+     * modify  read_termtype() so the term_names data is always allocated
+       as part of the str_table, a better fix for a memory leak.
+     * fix  wins_nwstr(),  which  did  not  handle single-column non-8bit
+       codes.
+     * modify  wbkgrnd()  to avoid clearing the A_CHARTEXT attribute bits
+       since those record the state of multicolumn characters.
+     * improve   SIGWINCH   handling  by  postponing  its  effect  during
+       newterm(), etc., when allocating screens.
+     * remove  970913 feature for copying subwindows as they are moved in
+       mvwin().
+     * add checks in waddchnstr() and wadd_wchnstr() to stop copying when
+       a null character is found.
+     * add  some  checks  to  ensure current position is within scrolling
+       region before scrolling on a new line.
+     * add  a  workaround  to  ACS  mapping to allow applications such as
+       test/blue.c  to  use  the "PC ROM" characters by masking them with
+       A_ALTCHARSET. This worked up til 5.5, but was lost in the revision
+       of legacy coding.
 
    Portability:
      * configure script:
           + new options:
 
 
    Portability:
      * configure script:
           + new options:
 
-              --enable-largefile
-                      set  compiler  and  linker  flags  to use largefile
-                      support.
-
-              --enable-ext-colors
-                      Allow  encoding  of  256  foreground and background
-                      colors,    e.g.,   with   the   xterm-256color   or
-                      xterm-88color terminfo entries. This requires ABI 6
-                      because it changes the size of cchar_t.
-
-              --enable-ext-mouse
-                      This  defines NCURSES_MOUSE_VERSION 2, and modifies
-                      the encoding of mouse events to support wheel mice,
-                      which may transmit buttons 4 and 5. This works with
-                      xterm and similar terminal emulators. This requires
-                      ABI  6  because  it  changes  the encoding of mouse
-                      events.
-
-              --with-chtype
-                      overriding of the non-LP64 model's use of chtype
-
-              --with-mmask-t
-                      overriding of the non-LP64 model's use of mmask_t
-
-              --without-xterm-new
-                      Installs  "xterm-old"  as  the "xterm" entry of the
-                      terminfo database.
-
-          + The  --with-termlib option now accepts a value which sets the
-            name  of the terminfo library. This would allow a packager to
-            build libtinfow.so renamed to coincide with libtinfo.so
-          + fixes/improvements for cross-compiling:
-               o suppress     $suffix     in     misc/run_tic.sh     when
-                 cross-compiling.  This  allows cross-compiles to use the
-                 host's  tic  program  to  handle the "make install.data"
-                 step.
-               o correct       BUILD_CPPFLAGS       substitution       in
-                 ncurses/Makefile.in,  to  allow  cross-compiling  from a
-                 separate directory tree.
+              --with-hashed-db
+                      Use  Berkeley  hashed database for storing terminfo
+                      data  rather  than storing each compiled entry in a
+                      separate binary file within a directory tree.
+
+              --without-dlsym
+                      Do not use dlsym() to load GPM dynamically.
+
+              --with-valgrind
+                      Simplify building for testing with valgrind.
+
+              --enable-wgetch-events
+                      Compile with experimental wgetch-events code.
+
+              --enable-signed-char
+                      Store booleans in "signed char" rather than "char".
+
+          + improved options:
+
+              --disable-largefile
+                      make the option work both ways.
+
+              --with-gpm
+                      The  option now accepts a parameter, i.e., the name
+                      of the dynamic GPM library to load via dlopen()
+
+              --disable-symlinks
+                      The  option  now allows one to disable symlink() in
+                      tic even when link() does not work.
+
+     * other configure/build issues:
+          + remove  special  case for Darwin in CF_XOPEN_SOURCE configure
+            macro.
+          + add  configure  check  to  ensure that SIGWINCH is defined on
+            platforms such as OS X which exclude that when _XOPEN_SOURCE,
+            etc., are defined
+          + use  ld's -search_paths_first option on Darwin to work around
+            odd search rules on that platform.
+          + improve  ifdef's for _POSIX_VDISABLE in tset to work with Mac
+            OS X.
+          + modify  configure  script to ensure that if the C compiler is
+            used  rather  than the loader in making shared libraries, the
+            $(CFLAGS) variable is also used.
+          + use  ${CC}  rather  than  ${LD}  in  shared library rules for
+            IRIX64,  Solaris  to help ensure that initialization sections
+            are  provided  for  extra  linkage requirements, e.g., of C++
+            applications.
+          + improve  some  shared-library  configure scripting for Linux,
+            FreeBSD and NetBSD to make --with-shlib-version work.
+          + split    up    dependency   of   names.c   and   codes.c   in
+            ncurses/Makefile to work with parallel make.
+          + modify  MKlib_gen.sh  to  change  preprocessor-expanded _Bool
+            back to bool.
+          + modify progs/Makefile.in to make tput init work properly with
+            cygwin, i.e., do not pass a .exe in the reference string used
+            in check_aliases.
      * library:
      * library:
-          + add  ifdef's  for  _LP64  in curses.h to avoid using wasteful
-            64-bits  for  chtype  and  mmask_t,  but add configure option
-            --disable-lp64 in case anyone used that configuration.
-          + modify  C++  binding to use some C internal functions to make
-            it compile properly on Solaris (and other platforms).
-          + remove  check  in  newwin()  that prevents allocating windows
-            that extend beyond the screen (Solaris does this).
-          + check  for  nl_langinfo(CODESET),  use  it if available. This
-            replaces  ad  hoc  tests of environment variables to check if
-            the  terminal is setup for UTF-8 encoding. Applications which
-            do  not  call  setlocale()  should be corrected, to make them
-            work properly with UTF-8 encoding.
-            In  particular,  applications  which  assume (and do not call
-            setlocale())  that Latin-1 codes are printable will no longer
-            work  in a UTF-8 locale since the ad hoc check of environment
-            variables  to  see  if  the locale was UTF-8 is not used when
-            nl_langinfo(CODESET) is available.
-          + use  setlocale() to query the program's current locale rather
-            than  using  getenv().  This supports applications which rely
-            upon  legacy treatment of 8-bit characters when the locale is
-            not initialized.
+          + ignore wide-acs line-drawing characters that wcwidth() claims
+            are  not one-column. This is a workaround for Solaris' broken
+            locale support.
+          + reduce  name-pollution  in  term.h  by removing #define's for
+            HAVE_xxx symbols.
+          + fix #ifdef in c++/internal.h for QNX 6.1
+     * test programs:
+          + modify  test/configure script to allow building test programs
+            with PDCurses/X11.
+          + modified  test  programs  to  allow  some to work with NetBSD
+            curses.  Several  do  not  because NetBSD curses implements a
+            subset  of  X/Open  curses,  and  also  lacks  much  of  SVr4
+            additions. But it is enough for comparison.
+          + improved  test/configure  to  build  test/ncurses  on HPUX 11
+            using the vendor curses.
+          + change  configure  script  to produce test/Makefile from data
+            file.
 
                               Features of Ncurses
 
 
                               Features of Ncurses
 
    The ncurses package also has many useful extensions over SVr4:
      * The  API  is 8-bit clean and base-level conformant with the X/OPEN
        curses  specification, XSI curses (that is, it implements all BASE
    The ncurses package also has many useful extensions over SVr4:
      * The  API  is 8-bit clean and base-level conformant with the X/OPEN
        curses  specification, XSI curses (that is, it implements all BASE
-       level   features,   but   not   all   EXTENDED   features).   Most
-       EXTENDED-level features not directly concerned with wide-character
-       support   are  implemented,  including  many  function  calls  not
-       supported  under  SVr4  curses  (but  portability  of all calls is
-       documented so you can use the SVr4 subset only).
+       level  features,  and  most  EXTENDED  features). It includes many
+       function calls not supported under SVr4 curses (but portability of
+       all calls is documented so you can use the SVr4 subset only).
      * Unlike  SVr3 curses, ncurses can write to the rightmost-bottommost
        corner  of  the  screen  if  your terminal has an insert-character
        capability.
      * Ada95 and C++ bindings.
      * Unlike  SVr3 curses, ncurses can write to the rightmost-bottommost
        corner  of  the  screen  if  your terminal has an insert-character
        capability.
      * Ada95 and C++ bindings.
-     * Support  for  mouse  event  reporting with X Window xterm and OS/2
-       console windows.
+     * Support  for mouse event reporting with X Window xterm and FreeBSD
+       and OS/2 console windows.
      * Extended mouse support via Alessandro Rubini's gpm package.
      * The  function  wresize()  allows you to resize windows, preserving
        their data.
      * Extended mouse support via Alessandro Rubini's gpm package.
      * The  function  wresize()  allows you to resize windows, preserving
        their data.
        the  use  of function keys, e.g., disabling the ncurses KEY_MOUSE,
        or  by  defining  more than one control sequence to map to a given
        key code.
        the  use  of function keys, e.g., disabling the ncurses KEY_MOUSE,
        or  by  defining  more than one control sequence to map to a given
        key code.
-     * Support for 16-color terminals, such as aixterm and XFree86 xterm.
+     * Support for 16-color terminals, such as aixterm and modern xterm.
      * Better  cursor-movement  optimization.  The package now features a
        cursor-local-movement computation more efficient than either BSD's
        or System V's.
      * Better  cursor-movement  optimization.  The package now features a
        cursor-local-movement computation more efficient than either BSD's
        or System V's.
 
    minicom
           terminal emulator
 
    minicom
           terminal emulator
-          [15]http://www.netsonic.fi/~walker/minicom.html
+          [15]http://alioth.debian.org/projects/minicom/
 
    vile
           vi-like-emacs
 
    vile
           vi-like-emacs
 Who's Who and What's What
 
    Zeyd  Ben-Halim started it from a previous package pcurses, written by
 Who's Who and What's What
 
    Zeyd  Ben-Halim started it from a previous package pcurses, written by
-   Pavel  Curtis.  Eric  S. Raymond continued development. Jürgen Pfeifer
+   Pavel  Curtis.  Eric S. Raymond continued development. Juergen Pfeifer
    wrote  most of the form and menu libraries. Ongoing work is being done
    by  [17]Thomas  Dickey.  Thomas  Dickey acts as the maintainer for the
    Free  Software  Foundation,  which  holds  the  copyright  on ncurses.
    wrote  most of the form and menu libraries. Ongoing work is being done
    by  [17]Thomas  Dickey.  Thomas  Dickey acts as the maintainer for the
    Free  Software  Foundation,  which  holds  the  copyright  on ncurses.
@@ -419,9 +430,10 @@ Future Plans
 Other Related Resources
 
    The  distribution  provides  a  newer  version  of the terminfo-format
 Other Related Resources
 
    The  distribution  provides  a  newer  version  of the terminfo-format
-   terminal  description file maintained by [20]Eric Raymond . Unlike the
-   older  version, the termcap and terminfo data are provided in the same
-   file.
+   terminal description file once maintained by [20]Eric Raymond . Unlike
+   the  older  version, the termcap and terminfo data are provided in the
+   same  file,  and provides several user-definable extensions beyond the
+   X/Open specification.
 
    You  can  find  lots  of  information  on  terminal-related topics not
    covered in the terminfo file at [21]Richard Shuford's archive .
 
    You  can  find  lots  of  information  on  terminal-related topics not
    covered in the terminfo file at [21]Richard Shuford's archive .
@@ -442,7 +454,7 @@ References
   12. http://dione.ids.pl/~pborys/software/pinfo/
   13. http://www.tin.org/
   14. http://www.debian.org/Packages/unstable/text/vh.html
   12. http://dione.ids.pl/~pborys/software/pinfo/
   13. http://www.tin.org/
   14. http://www.debian.org/Packages/unstable/text/vh.html
-  15. http://www.netsonic.fi/~walker/minicom.html
+  15. http://alioth.debian.org/projects/minicom/
   16. http://invisible-island.net/vile/
   17. mailto:dickey@invisible-island.net
   18. mailto:bug-ncurses@gnu.org
   16. http://invisible-island.net/vile/
   17. mailto:dickey@invisible-island.net
   18. mailto:bug-ncurses@gnu.org