- <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>