+ <li>The updated application binary interface is 6.1.20171230
+ (used for new <a href=
+ "https://invisible-island.net/ncurses/ncurses-mapsyms.html">versioned
+ symbols</a>), although the interface changes were developed
+ several months previously.</li>
+ </ul>
+
+ <p>The motivation for making this extension came from noticing
+ that <a href=
+ "https://invisible-island.net/ncurses/tctest.html#bsd42-numeric-caps">
+ termcap applications</a> could (though not <a href=
+ "https://invisible-island.net/ncurses/ncurses-slang.html#cause_numbers">
+ realistically</a>) use larger numbers than would fit in 16-bits,
+ and the fact that the number of color pairs for a 256-color xterm
+ could not be expressed in terminfo (i.e., 32767 versus 65536).
+ Also, a few terminals support direct-colors, which could use the
+ extension.</p>
+
+ <p>Generally speaking, applications that use internal details of
+ a library are unsupported. There was exactly one exception for
+ <span class="main-name">ncurses</span>: the <span class=
+ "main-name">tack</span> program <em>used</em> the internal
+ details of <code>TERMINAL</code>, because it provides an
+ ncurses-specific feature for interactively modifying a terminfo
+ description and writing the updated description to a text-file.
+ It was possible to not only separate <span class=
+ "main-name">tack</span> from these <a href=
+ "https://invisible-island.net/ncurses/tack.html#portable">internal
+ details of <span class="main-name">ncurses</span></a>, but to
+ generalize it so that the program works with Unix curses
+ (omitting the ncurses-specific feature). That was released as
+ <a href=
+ "https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726">
+ <span class="main-name">tack</span> 1.08</a> in July
+ 2017.</p>
+
+ <p>While making changes to <span class="main-name">tack</span> to
+ eliminate its dependency upon <span class=
+ "main-name">ncurses</span> internals, the publicly-visible
+ details of those internals were reviewed, and some symbols were
+ moved to private header files, while others were marked
+ explicitly as <span class="main-name">ncurses</span> internals.
+ Future releases of <span class="main-name">ncurses</span> may
+ eliminate some of those symbols (such as those used by
+ <span class="main-name">tack</span> 1.07) because they are
+ neither part of the API or the ABI.</p>
+
+ <p>Using the <code>TERMTYPE2</code> extended numeric
+ capabilities, it is possible to support both color pair values
+ and color values past 32767. Taking compatibility into account,
+ developers readily understand that neither function signatures
+ nor structure offsets change. Also, existing functions have to
+ operate with the extended numbers. Most of that work is internal
+ to the library. For the external interfaces, a hybrid approach
+ was used:</p>
+
+ <ul>
+ <li>
+ <p>X/Open Curses defined function prototypes such as
+ <code>wattr_set</code> with an unused parameter, for
+ “future” use. After 25 years, the future is here:
+ <span class="main-name">ncurses</span> uses the parameter to
+ augment color pair values as described in the <a href=
+ "https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-EXTENSIONS">
+ manual page</a>.</p>