ncurses 5.7 - patch 20100731
[ncurses.git] / ANNOUNCE
index 5a2a139850d892ffa8efa3b34501cbf10710a5f0..e09e73177a45557238edf8d979c8ac5a3b665a66 100644 (file)
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,4 +1,4 @@
-                            Announcing ncurses 5.5
+                            Announcing ncurses 5.7
 
    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
-   through   5.4;  very  few  applications  will  require  recompilation,
+   through   5.6;  very  few  applications  will  require  recompilation,
    depending   on  the  platform.  These  are  the  highlights  from  the
-   change-log since ncurses 5.4 release.
+   change-log since ncurses 5.6 release.
 
    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:
+       getattrs
 
    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/).
+          + new  flavor  of  the  ncurses  library  provides  rudimentary
+            support  for  POSIX threads. Several functions are reentrant,
+            but most require either a window-level or screen-level mutex.
+            (This  is  API-compatible,  but  not  ABI-compatible with the
+            normal library).
+          + add  NCURSES_OPAQUE  symbol  to  curses.h,  will  use to make
+            structs opaque in selected configurations.
+          + add   NCURSES_EXT_FUNCS  and  NCURSES_EXT_COLORS  symbols  to
+            curses.h to make it simpler to tell if the extended functions
+            and/or colors are declared.
+          + add wresize() to C++ binding
+          + eliminate fixed-buffer vsprintf() calls in C++ binding.
+          + add  several  functions to C++ binding which wrap C functions
+            that pass a WINDOW* parameter.
+          + adapt mouse-handling code from menu library in form-library
+          + improve  tracing  for  form  library,  showing created forms,
+            fields, etc.
+          + make $NCURSES_NO_PADDING feature work for termcap interface .
+          + add  check  to  trace-file  open,  if  the  given  name  is a
+            directory, add ".log" to the name and try again.
+          + several   new   manpages:  curs_legacy.3x,  curs_memleaks.3x,
+            curs_opaque.3x and curs_threads.3x
      * 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.
+          + modified  three  test-programs  to  demonstrate the threading
+            support in this version: ditto, rain, worm.
+          + several    new    test-programs:   demo_panels,   dots_mvcur,
+            inch_wide,    inchs,    key_name,    key_names,   savescreen,
+            savescreen.sh    test_arrays,   test_get_wstr,   test_getstr,
+            test_instr, test_inwstr and test_opaque.
+          + add adacurses-config to the Ada95 install.
+          + modify  tic  -f option to format spaces as \s to prevent them
+            from  being  lost  when  that  is  read  back  in unformatted
+            strings.
+          + The tack program is now distributed separately from ncurses.
+     * terminal database
+          + added entries:
+               o Eterm-256color, Eterm-88color and rxvt-88color
+               o aterm
+               o konsole-256color
+               o mrxvt
+               o screen.mlterm
+               o screen.rxvt
+               o teraterm4.59  is now the primary primary teraterm entry,
+                 renamed original to teraterm2.3
+               o 9term terminal
+               o Newbury Data entries
+          + updated/improved entries:
+               o gnome to version 2.22.3
+               o h19, z100
+               o konsole to version 1.6.6
+               o mlterm, mlterm+pcfkeys
+               o xterm, and building-blocks for function-keys to [3]xterm
+                 patch #230.
 
    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.
+     * add   logic   to   tic  for  cancelling  strings  in  user-defined
+       capabilities (this is needed for current konsole terminfo entry).
+     * modify  mk-1st.awk  so the generated makefile rules for linking or
+       installing  shared  libraries  do not first remove the library, in
+       case it is in use, e.g., libncurses.so by /bin/sh.
+     * correct check for notimeout() in wgetch().
+     * fix a sign-extension bug in infocmp's repair_acsc() function.
+     * change winnstr() to stop at the end of the line.
+     * make Ada95 demo_panels() example work.
+     * fix for adding a non-spacing character at the beginning of a line.
+     * fill   in   extended-color   pair   to   make   colors   work  for
+       wide-characters using extended-colors.
+     * improve  refresh  of  window  on  top  of multi-column characters,
+       taking   into   account  split  characters  on  left/right  window
+       boundaries.
+     * modify  win_wchnstr()  to ensure that only a base cell is returned
+       for each multi-column character.
+     * improve waddch() and winsch() handling of EILSEQ from mbrtowc() by
+       using  unctrl()  to  display  illegal  bytes rather than trying to
+       append further bytes to make up a valid sequence.
+     * restore curs_set() state after endwin()/refresh()
+     * modify  keyname() to use "^X" form only if meta() has been called,
+       or  if  keyname() is called without initializing curses, e.g., via
+       initscr() or newterm().
+     * modify  unctrl() to check codes in 128-255 range versus isprint().
+       If  they  are not printable, and locale was set, use a "M-" or "~"
+       sequence.
+     * improve  resizeterm()  by  moving ripped-off lines, and repainting
+       the soft-keys.
+     * modify  form  library to accept control characters such as newline
+       in set_field_buffer(), which is compatible with Solaris.
+     * use  NCURSES_MOUSE_MASK() in definition of BUTTON_RELEASE(), etc.,
+       to   make   those   work   properly  with  the  --enable-ext-mouse
+       configuration
+     * correct  some  functions  in Ada95 binding which were using return
+       value from C where none was returned.
+     * reviewed/fixed issues reported by Coverity and Klocwork tools.
 
    Portability:
      * configure script:
           + new options:
 
-              --enable-largefile
-                      set  compiler  and  linker  flags  to use largefile
-                      support.
+              --disable-big-strings
+                      control  whether static string tables are generated
+                      as   single   large  strings  (to  improve  startup
+                      performance), or as array of individual strings.
+
+              --disable-relink
+                      control   whether  shared  libraries  are  relinked
+                      (during install) when rpath is enabled.
+
+              --disable-tic-depends
+                      make   explicit  whether  tic  library  depends  on
+                      ncurses/ncursesw library.
+
+              --enable-mixed-case
+                      override   the  configure  script's  check  if  the
+                      filesystem   supports  mixed-case  filenames.  This
+                      allows  one  to  control  how the terminal database
+                      maps to the filesystem. For filesystems that do not
+                      support   mixed-case,  the  library  uses  generate
+                      2-character (hexadecimal) codes for the lower-level
+                      of the filesystem terminfo database
+
+              --enable-reentrant
+                      builds  a  different  flavor of the ncurses library
+                      (ncursest)  which  improves  reentrant  use  of the
+                      library  by  reducing  global  and static variables
+                      (see  the  "--with-pthread" option for the threaded
+                      support).
+
+              --enable-weak-symbols
+                      use  weak-symbols  for  linking to the POSIX thread
+                      library,  and  use  the same soname for the ncurses
+                      shared  library  as the normal library (caveat: the
+                      ABI is for the threaded library, which makes global
+                      data accessed via functions).
+
+              --with-pthread
+                      build  with  the  POSIX thread library (tested with
+                      AIX,   Linux,   FreeBSD,   OpenBSD,  HPUX,  IRIX64,
+                      Solaris, Tru64).
+
+              --with-ticlib
+                      build/install   the   tic-support  functions  in  a
+                      separate library
+
+          + improved options:
 
               --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.
+                      requires the wide-character configuration.
 
               --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.
+                      ignore  option  value "unsigned" is always added to
+                      the   type   in   curses.h;   do   the   same   for
+                      --with-mmask-t.
+
+              --with-dmalloc
+                      build-fix for redefinition of strndup.
+
+              --with-hashed-db
+                      accepts  a parameter which is the install-prefix of
+                      a given Berkeley Database.
+
+              --with-hashed-db
+                      the $LIBS environment variable overrides the search
+                      for the db library.
+
+              --without-hashed-db
+                      assumed when "--disable-database" is used.
+
+     * other configure/build issues:
+          + build-fixes for LynxOS
+          + modify  shared-library  rules  to  allow  FreeBSD  3.x to use
+            rpath.
+          + build-fix for FreeBSD "contemporary" TTY interface.
+          + build-fixes for AIX with libtool.
+          + build-fixes for Darwin and libtool.
+          + modify BeOS-specific ifdef's to build on Haiku.
+          + corrected  gcc  options  for  building  shared  libraries  on
+            Solaris and IRIX64.
+          + change  shared-library  configuration for OpenBSD, make rpath
+            work.
+          + build-fixes for using libutf8, e.g., on OpenBSD 3.7
+          + add   "-e"  option  in  ncurses/Makefile.in  when  generating
+            source-files  to  force earlier exit if the build environment
+            fails unexpectedly.
+          + add support for shared libraries for QNX.
+          + change  delimiter  in  MKlib_gen.sh from '%' to '@', to avoid
+            substitution  by  IBM xlc to '#' as part of its extensions to
+            digraphs.
      * 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.
+          + rewrite  wrapper  for  wcrtomb(),  making it work on Solaris.
+            This  is  used in the form library to determine the length of
+            the buffer needed by field_buffer.
+          + add/use  configure  script  macro  CF_SIG_ATOMIC_T,  use  the
+            corresponding type for data manipulated by signal handlers.
+          + set locale in misc/ncurses-config.in since it uses a range
+          + disable  GPM  mouse  support  when  $TERM  does not happen to
+            contain  "linux",  since  Gpm_Open()  no  longer  limits  its
+            assertion  to  terminals  that  it might handle, e.g., within
+            "screen" in xterm.
+          + reset mouse file-descriptor when unloading GPM library.
+     * test programs:
+          + update  test  programs to build/work with various UNIX curses
+            for comparisons.
 
                               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
-       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.
-     * 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.
        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  256-color  terminals,  such  as  modern  xterm, when
+       configured using the --enable-ext-colors option.
+     * 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.
 
    cdk
           Curses Development Kit
-          [3]http://invisible-island.net/cdk/
-          [4]http://www.vexus.ca/products/CDK/
+          [4]http://invisible-island.net/cdk/
+          [5]http://www.vexus.ca/products/CDK/
 
    ded
           directory-editor
-          [5]http://invisible-island.net/ded/
+          [6]http://invisible-island.net/ded/
 
    dialog
           the  underlying  application used in Slackware's setup, and the
           basis for similar applications on GNU/Linux.
-          [6]http://invisible-island.net/dialog/
+          [7]http://invisible-island.net/dialog/
 
    lynx
           the character-screen WWW browser
-          [7]http://lynx.isc.org/release/
+          [8]http://lynx.isc.org/release/
 
    Midnight Commander
           file manager
-          [8]http://www.ibiblio.org/mc/
+          [9]http://www.ibiblio.org/mc/
 
    mutt
           mail utility
-          [9]http://www.mutt.org/
+          [10]http://www.mutt.org/
 
    ncftp
           file-transfer utility
-          [10]http://www.ncftp.com/
+          [11]http://www.ncftp.com/
 
    nvi
           New vi versions 1.50 are able to use ncurses versions 1.9.7 and
           later.
-          [11]http://www.bostic.com/vi/
+          [12]http://www.bostic.com/vi/
 
    pinfo
           Lynx-like info browser.
-          [12]http://dione.ids.pl/~pborys/software/pinfo/
+          [13]https://alioth.debian.org/projects/pinfo/
 
    tin
-          newsreader, supporting color, MIME [13]http://www.tin.org/
-
-   vh-1.6
-          Volks-Hypertext browser for the Jargon File
-          [14]http://www.debian.org/Packages/unstable/text/vh.html
+          newsreader, supporting color, MIME [14]http://www.tin.org/
 
    as well as some that use ncurses for the terminfo support alone:
 
    minicom
           terminal emulator
-          [15]http://www.netsonic.fi/~walker/minicom.html
+          [15]http://alioth.debian.org/projects/minicom/
 
    vile
           vi-like-emacs
@@ -419,9 +440,10 @@ Future Plans
 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 .
@@ -430,19 +452,19 @@ References
 
    1. ftp://ftp.gnu.org/gnu/ncurses/
    2. ftp://invisible-island.net/ncurses/
-   3. http://invisible-island.net/cdk/
-   4. http://www.vexus.ca/products/CDK/
-   5. http://invisible-island.net/ded/
-   6. http://invisible-island.net/dialog/
-   7. http://lynx.isc.org/release/
-   8. http://www.ibiblio.org/mc/
-   9. http://www.mutt.org/
-  10. http://www.ncftp.com/
-  11. http://www.bostic.com/vi/
-  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
+   3. http://invisible-island.net/xterm/xterm.log.html#xterm_230
+   4. http://invisible-island.net/cdk/
+   5. http://www.vexus.ca/products/CDK/
+   6. http://invisible-island.net/ded/
+   7. http://invisible-island.net/dialog/
+   8. http://lynx.isc.org/release/
+   9. http://www.ibiblio.org/mc/
+  10. http://www.mutt.org/
+  11. http://www.ncftp.com/
+  12. http://www.bostic.com/vi/
+  13. https://alioth.debian.org/projects/pinfo/
+  14. http://www.tin.org/
+  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