+ </ul>
+
+ <p>There are no new manual pages (all of the manual page updates
+ are to existing pages).</p>
+
+ <p>Some of the improvements are more subtle, relating to the way
+ the information is presented. For instance, the generated
+ terminfo.5 file uses a different table layout, allowing it to use
+ space on wide terminals more effectively.</p>
+
+ <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
+ bug-fixes</a></h3>
+
+ <p>While there were many bugs fixed during development of ncurses
+ 6.2, only a few (the reason for this release) were both important
+ and interesting. Most of the bug-fixes were for local issues
+ which did not affect compatibility across releases. Since those
+ are detailed in the NEWS file no elaboration is needed here.</p>
+
+ <p>The interesting bugs were in tic/infocmp's handling of
+ user-defined capabilities. These were not recent bugs. Initially
+ it was a simple problem:</p>
+
+ <ul>
+ <li>The user-defined capabilities can be any type (boolean,
+ number or string), but once given a type all uses of the name
+ must conform to that type—unless some special support for
+ a particular multi-typed name is built into ncurses.</li>
+
+ <li>
+ <p>One of simpleterm's contributors copied some definitions
+ for using <em>tmux</em>'s user-defined capabilities in
+ <a href=
+ "https://git.suckless.org/st/commit/06f8cf8ca87a81db15816658c40b2afcd1ad5332.html">
+ late in 2016</a>.</p>
+
+ <blockquote>
+ <pre class="demo-name">
+diff --git a/st.info b/st.info
+@@ -185,7 +185,10 @@ st| simpleterm,
+ tsl=\E]0;,
+ xenl,
+ vpa=\E[%i%p1%dd,
+-
++# Tmux unofficial extensions, see TERMINFO EXTENSIONS in tmux(1)
++ Se,
++ Ss,
++ Tc,
+
+ st-256color| simpleterm with 256 colors,
+ use=st,
+</pre>
+ </blockquote>
+ </li>
+
+ <li>
+ <p>Later, in (referring to a version from <a href=
+ "https://git.suckless.org/st/commit/c0882f2ed1d7a2dd0fa2efa52157e6fc6fde3652.html">
+ mid-2017</a>), a user asked to have it updated in
+ ncurses.</p>
+ </li>
+
+ <li>
+ <p>However, it had an error from the change in late 2016. The
+ terminal description made what <em>tmux</em> expected to be
+ <strong>string</strong> actually a
+ <strong>boolean</strong>.</p>
+
+ <p>Over the years, there were problems with each of
+ simpleterm's terminal descriptions. I repaired those, and
+ usually dealt with the problem.</p>
+ </li>
+
+ <li>
+ <p>The difference in this case was that when compiling the
+ terminal database, <em>tic</em> may have in memory the
+ definitions for more than one terminal description (so that
+ it can resolve “<tt>use=</tt>” clauses). Seeing
+ two different types for the same name, in certain situations
+ it would incorrectly merge the symbol tables for the two
+ terminal descriptions.</p>
+ </li>
+
+ <li>
+ <p>On simpleterm's side, their bug was finally fixed in
+ <a href=
+ "https://git.suckless.org/st/commit/83866428de031300eab03fbb116bcf7d2b1d4f60.html">
+ late 2019</a>, three years after the bug was created.</p>
+ </li>
+ </ul>
+
+ <p>For ncurses, the elapsed time to fix this bug was less than
+ three years. Someone reported a problem with the terminal
+ description a few weeks after releasing ncurses 6.1 (in <a href=
+ "https://github.com/tmux/tmux/issues/1264">tmux #1264</a>), and
+ the terminal description was updated that week (ncurses patch
+ <a href="@HOMEPAGE@/NEWS.html#t20180224">20180224</a>):</p>
+
+ <blockquote>
+ <pre class="demo-name">
+20180224
+ + modify _nc_resolve_uses2() to detect incompatible types when merging
+ a "use=" clause of extended capabilities. The problem was seen in a
+ defective terminfo integrated from simpleterm sources in 20171111,
+ compounded by repair in 20180121.
+ + correct Ss/Ms interchange in st-0.7 entry (tmux #1264) -TD
+</pre>
+ </blockquote>
+
+ <p>The larger part of that change added a check to prevent a
+ simple merge of terminal descriptions where the same user-defined
+ name was used with different types. But it raised some
+ questions:</p>
+
+ <ul>
+ <li>
+ <p>Was there a reliable way to manage terminal descriptions
+ which used the same extended name in different ways?</p>
+ </li>
+
+ <li>
+ <p>Should ncurses provide a registry of well-known extended
+ names, with their types?</p>
+ </li>
+ </ul>
+
+ <p>Since the correction to <a href=
+ "@HOMEPAGE@/ncurses.html#download_database"><tt>terminfo.src</tt></a>
+ could have been readily adopted by packagers, there was nothing
+ more to be done from ncurses' standpoint on that part. But
+ improving ncurses to prevent issues like that is the reason for
+ making a release.</p>
+
+ <p>Nothing more (constructive) was mentioned with regard to
+ simpleterm. But a few problems were found in the handling of
+ user-defined capabilities:</p>
+
+ <ul>
+ <li>
+ <p>Forward-references to user-defined capabilities in a
+ “<tt>use=</tt>” clause did not allocate new data
+ for each use. In <em>tic</em>, successive compilation of
+ terminal entries could add user-defined capabilities to the
+ wrong terminal entry.</p>
+
+ <p>This was not noticed before, since xterm's terminal
+ descriptions were the main users of the feature, and almost
+ all of the uses of the building-blocks which contained
+ user-defined capabilities were backward-references.</p>
+ </li>
+
+ <li>
+ <p>There is one (documented) case where ncurses 6.1 supports
+ a user-defined capability that could be any type (i.e.,
+ “RGB”). The check added in February 2018 to guard
+ against mismatches did not handle all of the combinations
+ needed.</p>
+ </li>
+ </ul>
+
+ <p>Both of these issues dated from the original implementation of
+ user-defined capabilities. Fixing them does not change the
+ terminal database, but a older <em>tic</em> without the fixes
+ will not be able to handle terminfo sources which rely upon those
+ fixes. Starting in June 2019, the download link for the terminfo
+ source file was capped at that date. The development sources have
+ an up-to-date copy of the file, for people with a legitimate need
+ for it.</p>
+
+ <p>The “<tt>-c</tt>” (check) option of <em>tic</em>
+ is not very useful if it cannot offer advice on parameters needed
+ for user-defined capabilities. The various <em>Caps</em> files
+ were reorganized to reduce redundancy, and in the common portion
+ (<a href=
+ "https://github.com/ThomasDickey/ncurses-snapshots/blob/master/include/Caps-ncurses">Caps-ncurses</a>),
+ a registry of user-defined capabilities is provided for use by
+ <em>tic</em>. While users can still define their own custom
+ capabilities, <em>tic</em> will not offer any advice when their
+ parameters do not match.</p>
+
+ <p>In ncurses 6.2, <em>tic</em> makes a special check to allow
+ any type for <em>RGB</em>, but its being able to do this relies
+ upon fixes made in the ncurses library in mid-2019.</p>
+
+ <h3><a name="h3-config-config" id=
+ "h3-config-config">Configuration changes</a></h3>
+
+ <h4><a name="h4-config-major" id="h4-config-major">Major
+ changes</a></h4>
+
+ <p>There are no major changes. Several new options were added to
+ ease integration of packages with systems using different
+ versions of <em>GNAT</em> and <em>ncurses</em>. Also,
+ improvements were made to configure checks.</p>
+
+ <h4><a name="h4-config-options" id=
+ "h4-config-options">Configuration options</a></h4>
+
+ <p>There are a few new/modified configure options:</p>
+
+ <dl>
+ <dt><tt>--with-config-suffix</tt>
+ </dt>
+
+ <dd>
+ <p>helps work around a filename conflict with Debian packages
+ versus test-packages.</p>
+ </dd>
+
+ <dt><tt>--with-ada-libname</tt>
+ </dt>
+
+ <dd>
+ <p>allows one to rename the “AdaCurses” library
+ (at least one packager prefers a lowercase name).</p>
+ </dd>
+
+ <dt><tt>--with-fallbacks</tt>
+ </dt>
+
+ <dd>
+ <p>now ensures there is a value, and adds the fallback
+ information to top-level Makefile summary.</p>
+ </dd>
+
+ <dt><tt>--with-pcre2</tt>
+ </dt>
+
+ <dd>
+ <p>check for pcre-posix library to help with MinGW port.</p>
+ </dd>
+
+ <dt><tt>--with-tic-path</tt> and<br></dt>
+
+ <dt><tt>--with-infocmp-path</tt>
+ </dt>
+
+ <dd>
+ <p>help work around problems building fallback source using
+ pre-6.0 tic/infocmp.</p>
+ </dd>
+
+ <dt><tt>--with-versioned-syms</tt>
+ </dt>
+
+ <dd>
+ <p>option value can now be a relative pathname.</p>
+ </dd>
+ </dl>
+
+ <h3><a name="h3-portability" id="h3-portability">Portability</a></h3>
+
+ <p>Many of the portability changes are implemented via the
+ configure script:</p>
+
+ <ul>
+ <li>
+ <p>ignore <a href=
+ "/ncurses/man/ncurses.3x.html#h3-TERMINFO"><tt>$TERMINFO</tt></a>
+ as a default value in configure script if it came from the
+ <tt>infocmp</tt> <strong><tt>-Q</tt></strong> option.</p>
+ </li>
+
+ <li>
+ <p>distinguish gcc from icc and clang when the
+ <tt>--enable-warnings</tt> option is not used, to avoid
+ unnecessary warnings about unrecognized inline options</p>
+ </li>
+
+ <li>
+ <p>consistently prepend new libraries as they are found
+ during configuration, rather than relying upon the linker to
+ resolve order dependencies of libraries.</p>
+ </li>