This is the mail archive of the cygwin-announce mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

New: libncurses10-5.7-18; Updated: {ncurses/libncurses-devel/ncurses-demo}-5.7-18

ncurses is a package that provides character and terminal handling
libraries, including 'gui-like' panels and menus.  It is often used
instead of termcap.  Like the (new) ncursesw packages, it is
compiled with support for reentracy, and uses and uses the same ABI
number ("10" on cygwin for historical reasons; "ABI 6" according to
the upstream ncurses developers). ncurses is not compiled with full
multi-thread support, as that slows operation drastically (see below).

Note that this "reentrancy" support doesn't magically make your client
programs/libraries re-entrant. Internal to libncurses, all calls carry
a specific context variable.  However, the POSIX curses interface
still specifies calls that operate on the "current screen" -- an
obvious re-entrancy violation. Clients must instead use the non-POSIX
extensions provided by ncurses, to ensure that all curses operations are
actually re-entrant. That is:
  POSIX:      int addch(const chtype ch);
  REENTRANT:  int waddch(WINDOW *win, const chtype ch);
Naturally, if reentrancy is not a concern, the POSIX interface can
continue to be used as always. See the man pages for more information.

Clients can be made threadsafe, by universally using the reentrant
interfaces, and managing mutexes on the WINDOW* variables manually. If
ncurses were compiled with full thread support, the WINDOW object would
itself contain a mutex, and all ncurses calls would use it to manage
access. This slows ncurses to a crawl -- even in single-thread
applications. Therefore, I believe the better choice is to compile ncurses
with support for re-entrancy, so that multi-thread client apps that
actually NEED thread safety can use it, and make intelligent decisions

This is feature release, and an update to latest upstream. It is compiled
with support for reentrancy, and so breaks the previous ABI.  Therefore,
the runtime package and DLLs have been renamed to reflect the new ABI.

[[ compiled using gcc-4.3.4-3 ]]

As expected now that cygwin-1.7.1 has been officially released, this
ncurses package is available exclusively for cygwin-1.7.

You must now specify explicitly -I/usr/include/ncurses when compiling
against ncurses. The package no longer provides in the top /usr/include
directory symlinks to the header files in /usr/include/ncurses. This is
for compatibility/interop with the wide ncurses library.

cygwin-1.7 now supports UTF-8 encoding by default. It is expected that
the "wide char" version of ncurses, ncursesw, will be of increasing
utility for clients as time goes on. Maintainers, I recommend that you
first attempt to rebuild your applications against libncursesw, and only
use libncurses if it doesn't work, and you can't figure out how to fix
it right away.  See ncursesw.README for more information.

CHANGES since 5.7-16
o Update to 20091227 patchset
o compile with reentrancy and various other ABI-breaking changes (also
  don't use broken-linker). Now at ncurses API #6 (that is, cygwin
  ncurses ABI #10).
o Fix hint files
o Remove symlinks in /usr/include/ to /usr/include/ncurses/*
o Because the API changes (upstream "ABI 5" vs "ABI 6") are handled
  transparently by macros, we assist clients that explicitly search
  for ncurses5-config by providing it as a symlink to ncurses6-config.
  (Suggestion by Yaakov Selkowitz)
o Add symlinks in /usr/lib/ncurses/ to the import, static, and
  libtool libs in /usr/lib/.  Also symlink pkgconfig.

Charles Wilson
volunteer ncurses[w] maintainer for cygwin


To update your installation, click on the "Install Cygwin now" link
on the web page.  This downloads setup.exe to
your system.  Then, run setup and answer all of the questions.


If you want to unsubscribe from the cygwin-announce mailing list, look
at the "List-Unsubscribe: " tag in the email header of this message.
Send email to the address specified there.  It will be in the format:

If you need more information on unsubscribing, start reading here:

Please read *all* of the information on unsubscribing that is
available starting at this URL.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]