This is the list of changes in each release.  For general historical
information, see the file 'HISTORY'.

Note that the filename "ChangeLog" is recognized by the CPAN machinery as the
name of a change log.

New in 1.44 (Released March 07, 2023)

  Implement A_ITALIC

New in 1.43 (Released December 08, 2022)

  Fix missing file introduced in 1.42 that prevents all builds from working.

New in 1.42 (Released December 07, 2022)

  Add missing return type declarations so it works with modern C compilers.

  Fix build failure with newer compilers: test compiles to find Curses library
  capabilities fail because necessary header files are not included because
  C_PANELFUNCTION etc are not defined because the test compiles do not include
  CursesFun.h, which they can't because the test compiles are part of creating
  CursesFun.h.  Solution: put C_PANELFUNCTION, etc in new config.h.

  Rename test.syms program to testsyms, because it is a more conventional
  name format.

New in 1.41 (Released August 18, 2022)

  Fix bug in previous release causing non-GNU make to fail.

New in 1.40 (Released August 17, 2022)

  Make passes make variables to 'test.syms' in environment instead of
  'test.syms' reading and trying to interpret the make file.  This makes it
  possible to override e.g. LDLOADLIBS on the make command line.  Also makes
  it less icky.

  Fix compile errors in cdemo.c: 'sleep' not defined, argument count is not
  type int.

  Fix make file for cdemo so it doesn't use the Perl compile rule for cdemo.o.

  Split ChangeLog file out of HISTORY file.

New in 1.39 (Released August 11, 2022)

  Add #include <stdbool.h> to top of Curses.c to fix a conflict between the
  Curses header files and Perl header files that causes a "loadable library
  and perl binaries are mismatched" / handshake key failure when you try to
  load the Perl module.

New in 1.38 (Released July 26, 2021)

  Fix compilation failure with some compilers, including AIX's because
  _XOPEN_SOURCE_EXTENDED was defined with null value.

New in 1.37 (Released October 3, 2020)

  Fix printw for wide characters.

  Fix bug: wenclose() and mouse_trafo() treat an integer as a boolean.  The
  functional effect is they return true if they fail to do the window move (I
  don't understand this - there's some kind of window move that is part of
  every function).  False is better.

New in 1.36 (Released August 14, 2016)

  Fix the GNU Hurd thing from 1.35 by including the hints file in the

New in 1.35 (Released July 11, 2016)

  Added hints file for GNU Hurd ($OSNAME == 'gnu').  From Pino Toscano.

New in 1.34 (Released April 2, 2016)

  Several bugs fixed in demo programs (which also function as the
  documentation) for forms and menus and comments added explaining need to
  keep Perl variables around to avoid invalid memory references.

New in 1.33 (Released October 3, 2015)

  Package contains META files.

New in 1.32 (Released August 9, 2014)

  Makefile.PL: if /usr/include/ncurses/ncurses.h exists, use Ncurses regardless
  of what the $guess_cfg table says for the OS at hand.  This fixes the former
  hybrid approach which didn't work for a Solaris 11 system that has both
  Ncurses and BSD curses.

  Typographical error in documentation fixed.

New in 1.31 (Released April 26, 2014)

  Fix compile failure with some Curses libraries, introduced in
  1.29 - undefined KEY_CODE_YES.

  Fix documentation: wide character functions exist back to Perl 5.6,
  not 5.16.

New in 1.30 (Released April 19, 2014)

  Fix build failure: Use older substitutes if Perl is too old to have
  the 'utf8_to_uvchr_buf' function they use; don't include the wide character
  functions if Perl is even too old to have the substitutes.  Broken in 1.29.

  Fix "constant not provided by your vendor" message when you refer to a
  function that does not exist in the Curses module.

  Minor fixes to documentation of new wide character functions.

  Fix warning about extra argument to c_setmevent .

  Fix documentation for "not defined in your Curses library" errors.
  (broken in 1.28).

  Fix demo programs' recognition of "not defined in your Curses library"
  errors (broken in 1.28).

New in 1.29 (Released April 6, 2014)

  Add an alternate set of functions (getchar, ungetchar, getstring,
  instring, addstring, insstring) providing a more Perl-like interface,
  converting from and to Perl strings (instead of passing data to the C
  library verbatim) and using wide character functions if available in the
  underlying curses library.

  Written by Edgar Fuß, Mathematisches Institut der Uni Bonn,

New in 1.28 (Released January 27, 2010)

  Disable Curses::Var::STORE.  It doesn't work (doesn't even compile) with
  newer Ncurses (due to updates to make Ncurses reentrant).  One can
  re-enable it by defining ALLOW_VARS_STORE in c-config.h.

  Improve "not provided by your vendor" message.

New in 1.27 (Released January 20, 2009)

  Extraneous .i and .s files in 1.26 removed.  'make clean' cleans all
  .i and .s too.

  'gen' directory is replaced by gen.tar file, so CPAN doesn't index
  the stuff in there.  That directory is stuff for developing the Curses
  package, not stuff for users.

New in 1.26 (Released January 3, 2009)

  newterm() is available and putwin() and getwin() work in newer Perl (with
  PerlIO).  We now use PerlIO_findFile().

1.25 doesn't exist (The name got burned in a CPAN upload mistake).

New in 1.24 (Released September 10, 2008)


  For Netbsd, allow both Netbsd and BSD guesses via CURSES_LIBTYPE,
  and default to Ncurses.  Used to guess only BSD.  From Ulrich Habel .

  Add guess capability for Dragonfly.  From Ulrich Habel .

New in 1.23 (Released March 9, 2008)

  Fix crash of Makefile.PL on Windows.

New in 1.22 (Released February 29, 2008)

  Nothing.  Just a packaging fix.

New in 1.21 (Released February 15, 2008)

  Don't undefine 'bool' macro in c-darwin hints file.

New in 1.20 (Released November 19, 2007)

  Fix missing comment delimiter.

New in 1.19 (Released November 18, 2007)

  Make it work on 5.005 again, using ppport.h (Devel::PPPort).
  From Slaven Rezic - slaven <at> rezic <dot> de .

  Fix uninitialized value in Makefile.PL on a system without BSD Curses or
  Ncurses in a common place.

  Reverse change to chgat() in 1.16.  Make expected argument count 4.

There was never a 1.18 release; problems with PAUSE prevent using that
release number.

New in 1.17 (Released October 14, 2007)

  Fix bug - can't find c-config.h on a system with ncursesw.

  Make cdemo work on Windows.

  Don't undefine SP macro with Pdcurses.  (Otherwise it won't compile;
  don't know why we used to undefine SP).

  In Windows hints file, #include curses.h instead of pdcurses.h.  It
  seems to be called curses.h these days.

New in 1.16 (August 7, 2007)

  Use Ncursesw (Ncurses with wide character functions) instead of
  Ncurses if available.

  Undefine "tab" macro, defined by Curses header file.  It interferes
  with perl.h.

  Fix demo.form to use L! instead of J in the pack template that generates
  the new_form() argument.  Apparently, J is something from older Perl
  and doesn't exist in current Perl.

  Put some documentation of the library in comments in demo.form.

  Use L! instead of I in the pack template in

  Change SvPV(X,PL_na) to SvPV_nolen(X) to get with the times.

  Change #!/usr/local/bin/perl to #! /usr/bin/perl .

  Fix bug: chgat() requires an extra, meaningless, argument.  Fix changes
  expected argument count from 4 to 3.

New in 1.15 (October 8, 2006)

  Add a simple load test 00-load.t.

  Makefile.PL: use cdemo.obj instead of cdemo.o on Windows.

  Makefile.PL: Guess ncurses/bsd based on what .h files exist.

  Fix bug in Makefile.PL: doesn't use curses type in guess at c-config.h
  (e.g. tries to use c-freebsd.h when it should use c-freebsd.bsd.h).

  Change all sv_isa() to sv_derived_from() so you can use subclasses.
  Thanks Leigh <>.

  Rename default Darwin (Mac OS X) hints file (ca 2001) to c-darwin.old, and
  the newer one ca 2004) to c-darwin.old so as to be the default.  We're
  guessing that the newer one applies to more systems today.

New in 1.14 (June 3, 2006)

  Make demo.form work on 64 bit machine.

  Add some narration to Makefile.PL to help with diagnosis.

  Move undef of 'instr' from individual hint files to Curses.c and add

  Use perl -w instead of 'use warnings' in Makefile.PL so it works with
  older Perl.

New in 1.13 (October 10, 2005)

  Fix so it builds on current Cygwin.

  Some kind of build fix to get panels, forms, and menu functions to build.

New in 1.12 (March 17, 2005)

  Build bug fixed: panel, forms, menu libs not found in build.

  Build bug fixed: treats version as number, so 1.10 == 1.1 .

New in 1.11 (March 12, 2005)

  Various cleanup and improved diagnostics in the build.

New in 1.10 (March 11, 2005)

  Build bug fixed: Makefile has undefined variable $libtyp.

  Build bug fixed: Makefile computes wrong guess hint file name.

New in 1.09 (March 6, 2005)

  - Makefile.PL searches for curses header files instead of assuming
    based on $OSNAME.

  - Makefile.PL warns user to reconfigure environment when form.h is
    in /usr/include rather than just add -I/usr/include to the compile
    (this concerns the problem with the conflicting Perl form.h file).

New in 1.08 (November 2004)

  - perl.syms more verbose so you can diagnose failures.

  - You can use environment variables instead of modifying Makefile.PL
    to set your -I, -L, etc. options for the Curses libraries.

  - c-linux.ncurses.h hints file includes ncurses.h, not curses.h.

  - New c-darwin-thread-multi-2level.h hints file.

New in 1.07 (September 2004)

  - Call to Perl_sv_isa() changed to sv_isa() because the former doesn't
    work on some systems (causes a build failure).

New in 1.06 (July 2001)

 o Now requires perl5.005 or better to run.  (You can probably run it
   in perl5.002-perl5.004 by grabbing newCONSTSUB out of the IO
   distribution on CPAN and editing all uses of "foreach my $var" in
   my perl scripts.)

 o Did lots of fiddling with the file generation in an effort to make
   it more comprehensible.  In doing so, I moved around the way some
   things were done and probably broke it on some systems with weird
   compilers.  Please let me know.

 o changed the "Curses->new()" function to be a bit less clever.

 o Works with libmenu!  Many thanks to Yury Pshenichny <yura at>
   who did most of the actual work.

   Update: Well, sort of works.  For some reason beyond my ken, it
   doesn't work with Solaris (2.6) libmenu. (The items won't attach to
   the menu.)  ncurses menu, both 1.9.9 and 5.2, seem to work fine.

 o Works with libform too.  Ho hum.  ;)  This one does appear to
   work with Solaris libform.

 o Added the following ncurses extension functions:


   (Thanks to neild at, hans at

 o Re-enabled the functions:


 o Between the functions exposed and the functions listed in the
   pod as not exposeded, those are all the ones I know about.
   Got any more?  Let me know.

 o Fixed 64 bit issue with getch() and possibly others, truncating
   returns of `chtype' to 32 bits.  Note that this could possibly
   break some OSes.  Please let me know.
   (Thanks to Randall.G.Steiner at

 o Fixed bug where @ARGV was always being cleared, and so no arguments
   ever got to MakeMaker.
   (Thanks to bdlow at

 o Added hints for Darwin/Mac OS X system.
   (Thanks to sdietrich at

 o Added note to NETBSD users at the bottom of this README.

 o Added a security notice to the README and pod.
   (Thanks to connor at

 o Has anyone successfully used the mouse event stuff?