ncurses is a package that provides character and terminal handling libraries, including 'gui-like' panels and menus. It is often used instead of termcap. ncursesw provides a version of this library and related tools compiled to support wide characters (that is, wchar_t rather than char).
Note that ncursesw does NOT contain man pages for the applications; they are provided by the ncurses package under the 'narrow' names (e.g. 'man clear' for clearw.exe). Similarly, the libncursesw-devel package does NOT contain man pages about the API; these are provided by the 'narrow' libncurses-devel package. This is the first official release of ncurses compiled to support wide characters, and can be installed simultaineously with the "narrow" ncurses package(s). Like recent (narrow) ncurses packages, it is compiled with support for reentrancy, 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 about where they need to incur the mutex locking overhead. [[ compiled using gcc-4.3.4-3 ]] As expected now that cygwin-1.7.1 has been officially released, this ncursesw package is available exclusively for cygwin-1.7. MAINTAINERS: To use the wide version of ncurses, you must specify explicitly -I/usr/include/ncursesw and -L/usr/include/libncursesw when compiling and linking. See /usr/share/doc/Cygwin/ncursesw.README for more information on how libncursesw-devel can assist you in arranging that these flags are properly passed to your clients. 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. Charles Wilson volunteer ncurses[w] maintainer for cygwin ==================================================================== To update your installation, click on the "Install Cygwin now" link on the http://cygwin.com/ web page. This downloads setup.exe to your system. Then, run setup and answer all of the questions. *** CYGWIN-ANNOUNCE UNSUBSCRIBE INFO *** 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: cygwin-announce-unsubscribe-you=yourdomain....@cygwin.com If you need more information on unsubscribing, start reading here: http://sourceware.org/lists.html#unsubscribe-simple Please read *all* of the information on unsubscribing that is available starting at this URL. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple