]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - ANNOUNCE
ncurses 5.5
[ncurses.git] / ANNOUNCE
index 513234e33caa431aec05182c38be2c74dd34ffb6..5a2a139850d892ffa8efa3b34501cbf10710a5f0 100644 (file)
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,5 +1,4 @@
-
-                            Announcing ncurses 5.4
+                            Announcing ncurses 5.5
 
    The  ncurses  (new  curses)  library  is  a free software emulation of
    curses  in  System  V  Release 4.0, and more. It uses terminfo format,
@@ -8,9 +7,8 @@
    enhancements over BSD curses.
 
    In  mid-June  1995,  the  maintainer of 4.4BSD curses declared that he
-   considered  4.4BSD  curses obsolete, and is encouraging the keepers of
-   Unix  releases  such  as  BSD/OS, freeBSD and netBSD to switch over to
-   ncurses.
+   considered  4.4BSD curses obsolete, and encouraged the keepers of Unix
+   releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses.
 
    The ncurses code was developed under GNU/Linux. It has been in use for
    some  time  with  OpenBSD as the system curses library, and on FreeBSD
 
                                  Release Notes
 
-   This  release is designed to be upward compatible from ncurses 5.0 and
-   5.3;  very  few  applications will require recompilation, depending on
-   the  platform.  These  are  the  highlights  from the change-log since
-   ncurses 5.3 release.
+   This  release  is  designed  to  be upward compatible from ncurses 5.0
+   through   5.4;  very  few  applications  will  require  recompilation,
+   depending   on  the  platform.  These  are  the  highlights  from  the
+   change-log since ncurses 5.4 release.
 
    Interface changes:
-     * add  the  remaining  functions  for  X/Open  curses wide-character
-       support.
-          + pecho_wchar()
-          + slk_wset()
-       These  are  only  available if the library is configured using the
-       --enable-widec option.
-     * write  getyx()  and related 2-return macros in terms of getcury(),
-       getcurx(), etc.
-     * simplify ifdef for bool declaration in curses.h
-     * modify  ifdef's  in  curses.h that disabled use of __attribute__()
-       for  g++,  since recent versions implement the cases which ncurses
-       uses.
-     * add  key_defined()  function,  to  tell  which keycode a string is
-       bound to.
+     * 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.
 
    New features and improvements:
      * library
-          + implement  logic  in  lib_mouse.c  to handle position reports
-            which  are  generated  when XFree86 xterm is initialized with
-            private  modes  1002  or  1003.  These  are  returned  to the
-            application  as the REPORT_MOUSE_POSITION mask, which was not
-            implemented.
-          + modify soft-key initialization to use A_REVERSE if A_STANDOUT
-            would  not  be  shown when colors are used, i.e., if ncv#1 is
-            set in the terminfo as is done in "screen".
-          + add  configure  option for FreeBSD sysmouse, --with-sysmouse,
-            and implement library support for that.
+          + 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/).
      * programs:
-          + tack:
-               o allow it to run from fallback terminfo data.
-               o reset  colors  after  each  color  test, correct a place
-                 where    exit_standout_mode    was   used   instead   of
-                 exit_attribute_mode.
-               o improve  bce  test  by  making  it set colors other than
-                 black on white.
-          + tic:
-               o handle  a  case  where  an entry has no description, and
-                 capabilities begin on the same line as the entry name.
-               o allow a terminfo entry with a leading 2-character name.
-               o improved  warnings  when  suppressing  items  to  fit in
-                 termcap's 1023-byte limit.
-               o add check for multiple "tc=" clauses in a termcap.
-               o correct logic for resolving "use=" clauses allow infocmp
-                 and tic to show cancelled capabilities.
-               o check for incomplete line-drawing character mapping.
-               o check for missing/empty/illegal terminfo name.
-          + tput:
-               o modify  tput  to  use  the  same  parameter  analysis as
-                 tparm() does, to provide for user-defined strings, e.g.,
-                 for  xterm  title,  a  corresponding capability might be
-                 title=\E]2;%p1%s^G,
-          + tset:
-               o use  the  system's  default  values  for CKILL and other
-                 default control characters.
-               o correct  interchanged  defaults  for  kill and interrupt
-                 characters, which caused it to report unnecessarily.
+     * 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.
 
    Major bug fixes:
-     * prevent  recursion  in  wgetch()  via wgetnstr() if the connection
-       cannot  be  switched  between cooked/raw modes because it is not a
-       TTY.
-     * correct  a  case  in _nc_remove_string(), used by define_key(), to
-       avoid  infinite loop if the given string happens to be a substring
-       of other strings which are assigned to keys.
-     * modify  logic  of acsc to use the original character if no mapping
-       is defined, rather than a null.
-     * several  improvements  for  handling  multi-cell  display  of wide
-       characters.
-          + modify  setcchar()  to allow converting control characters to
-            complex characters.
-          + correct  handling of multibyte characters in waddch_literal()
-            which force wrapping because they are started too late on the
-            line.
-          + modify  setcchar()  to  allow  for wchar_t input strings that
-            have more than one spacing character.
-     * other fixes for wide-character support:
-          + rewrote  lib_acs.c  to  allow  PutAttrChar() to decide how to
-            render alternate-characters, i.e., to work with Linux console
-            and UTF-8 locale.
-          + implement  a  workaround  so  that  line-drawing  works  with
-            screen's  crippled  UTF-8  support (tested with 3.9.13). This
-            only  works with the wide-character support (--enable-widec);
-            the  normal  library  will  simply suppress line-drawing when
-            running in a UTF-8 locale in screen.
-          + corrections to lib_get_wstr.c:
-               o null-terminate   buffer   passed  to  setcchar(),  which
-                 occasionally failed.
-               o map    special    characters    such   as   erase-   and
-                 kill-characters  into  key-codes  so  those will work as
-                 expected even if they are not mentioned in the terminfo.
-     * modify  setupterm()  to  check  if the terminfo and terminal-modes
-       have  already  been  read.  This ensures that it does not reinvoke
-       def_prog_mode()  when an application calls more than one function,
-       such as tgetent() and initscr().
-     * fix    form_driver()    cases    for   REQ_CLR_EOF,   REQ_CLR_EOL,
-       REQ_DEL_CHAR,  REQ_DEL_PREV and REQ_NEW_LINE, which did not ensure
-       the   cursor   was   at   the   editing   position  before  making
-       modifications.
-     * correct keybound(), which reported definitions in the wrong table,
-       i.e., the list of definitions which are disabled by keyok().
-     * fixes related to safe_sprintf.c:
-          + correct  an  allocation  size  in  safe_sprintf.c for the "*"
-            format code.
-          + correct  safe_sprintf.c  to  not return a null pointer if the
-            format happens to be an empty string.
-          + make   return   value  from  _nc_printf_string()  consistent.
-            Before,  depending on whether --enable-safe-sprintf was used,
-            it might not be cached for reallocating.
-     * other low-level improvements to the optimization code include:
-          + if  the  output  is  a  socket or other non-tty device, use 1
-            millisecond  for  the  cost  in  mvcur;  previously  it was 9
-            milliseconds because the baudrate was not known.
-          + modify lib_getch.c to avoid recursion via wgetnstr() when the
-            input is not a tty and consequently mode-changes do not work.
-          + fix  several  places  in tack/pad.c which tested and used the
-            parameter- and parameterless strings inconsistently.
-          + change several tputs() calls in scrolling code to use putp(),
-            to enable padding which may be needed for some terminals.
-          + improve  mvcur() by checking if it is safe to move when video
-            attributes   are   set  (msgr),  and  if  not,  reset/restore
-            attributes   within   that  function  rather  than  doing  it
-            separately in the GoTo() function in tty_update.c.
-          + use tputs() rather than putp() in a few cases in tty_update.c
-            since the corresponding delays are proportional to the number
-            of       lines      affected:      repeat_char,      clr_eos,
-            change_scroll_region.
-     * correct  line/column  reference in adjust_window(), needed to make
-       special windows such as curscr track properly when resizing.
-     * fix a potential recursion between napms() and _nc_timed_wait()
-     * rewrote lib_insch.c, combining it with lib_insstr.c so both handle
-       tab and other control characters consistently.
-     * do  not  try  to open gpm mouse driver if standard output is not a
-       tty; the gpm library does not make this check.
+     * 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.
 
    Portability:
      * configure script:
           + new options:
 
-              --with-abi-version option.
-                      addresses  platforms  where packagers have diverged
-                      from ncurses ABI numbering.
-
-              --with-manpage-format=catonly
-                      addresses   behavior  of  BSDI,  allow  install  of
-                      man+cat   files   on  NetBSD,  whose  behavior  has
-                      diverged by requiring both to be present.
-
-              --with-manpage-aliases
-                      extends  "--with-manpage-aliases"  to  provide  the
-                      option   of  generating  ".so"  files  rather  than
-                      symbolic links for manpage aliases.
-
-              --with-rel-version
-                      workaround  to force libtool on Darwin generate the
-                      "same"  library  names  as with the "--with-shared"
-                      option.  The  Darwin  ld program does not work well
-                      with a zero as the minor-version value.
-
-              --with-trace
-                      simplifies defining TRACE to incorporate trace() in
-                      libraries.
-
+              --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 allow BUILD_CC and related configure script variables to
-                 be overridden from the environment.
-               o use AC_CHECK_TOOL to get proper values for AR and LD for
-                 cross compiling.
-               o use $cross_compiling variable in configure script rather
-                 than  comparing  $host_alias  and  $target  alias, since
-                 "host"  is traditionally misused in autoconf to refer to
-                 the target platform.
-               o modify  run_tic.in to avoid using wrong shared libraries
-                 when cross-compiling.
-          + fixes for Mac OS X:
-               o fix  a  redefinition  of $RANLIB in the configure script
-                 when libtool is used.
-               o modify  MKlib_gen.sh to avoid passing "#" tokens through
-                 the  C  preprocessor.  This  works  around  Mac  OS  X's
-                 preprocessor,  which  insists  on adding a blank on each
-                 side of the token.
-          + workarounds for broken tools:
-               o add configure check for wchar_t and wint_t types, rather
-                 than  rely on preprocessor definitions. Also work around
-                 for  gcc  fixinclude  bug which creates a shadow copy of
-                 curses.h if it sees these symbols apparently typedef'd.
-               o modify  configure  script  to omit -Winline for gcc 3.3,
-                 since that feature is broken.
-               o several script fixes to work around the ironically named
-                 POSIXLY_CORRECT feature of GNU sed 4.0.
-               o modify  configure script to avoid using "head -1", which
-                 does not work if POSIXLY_CORRECT (sic) is set.
-               o update    configure    script   to   reflect   fix   for
-                 AC_PROG_GCC_TRADITIONAL,  which  is  broken  in autoconf
-                 2.5x for Mac OS X 10.2.3.
-               o repair  check  for missing C++ compiler, which is broken
-                 in autoconf 2.5x by hardcoding it to g++.
-          + corrected  ifdef's  relating  to configure check for wchar_t,
-            etc.
-          + remove configure script check to allow -Wconversion for older
-            versions of gcc
-          + modify  configure  script to accommodate libtool 1.5, as well
-            as  add an parameter to the "--with-libtool" option which can
-            specify the pathname of libtool.
-          + change  several  sed  scripts to avoid using "\+" since it is
-            not  a  BRE  (basic  regular expression). One instance caused
-            terminfo.5 to be misformatted on FreeBSD.
-          + use  '%'  as  sed  substitute  delimiter in run_tic script to
-            avoid problems with pathname delimiters such as ':' and '@'.
-          + add  -D_XOPEN_SOURCE=500  if  needed  when  configuring  with
-            "--enable-widec", to get mbstate_t declaration on HPUX 11.11.
+               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.
      * library:
-          + adjust  include-options  in  CF_ETIP_DEFINES to avoid missing
-            ncurses_dll.h,  fixing special definitions that may be needed
-            for etip.h.
-          + modify CF_LIB_SUFFIX for Itanium releases of HP-UX, which use
-            a ".so" suffix.
-          + improve  ifdef's to guard against redefinition of wchar_t and
-            wint_t in curses.h.
-          + remove  an  #undef for KEY_EVENT from curses.tail used in the
-            experimental   NCURSES_WGETCH_EVENTS   feature.   The  #undef
-            confuses Debian dpkg's build script.
+          + 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.
 
                               Features of Ncurses