ncurses (new curses ) es una biblioteca de programación que proporciona una interfaz de programación de aplicaciones (API) que permite escribir interfaces de usuario basadas en texto (TUI) de manera independiente de la terminal de computadora . Es un conjunto de herramientas para desarrollar software de aplicación similar a una interfaz gráfica de usuario (GUI) que se ejecuta en un emulador de terminal . También optimiza los cambios de pantalla para reducir la latencia experimentada al utilizar shells remotos .
ncurses es una emulación de software gratuita y de código abierto de los curses de System V Release 4.0 (SVr4) .
Hay enlaces para ncurses en una variedad de lenguajes de programación, incluidos Ada , [4] Python , [5] Gambas , [6] Ruby , [7] PHP , [8] JavaScript , [9] Perl , [10] y Object. REXX (ooRexx). [11]
Como nueva versión, ncurses es una emulación de software gratuita y de código abierto de los curses System V Release 4.0 (SVr4) , que fue una mejora con respecto a los curses 4.4 BSD descontinuados. [12] El estándar XSI Curses emitido por X/Open está modelado explícita y estrechamente en UNIX System V.
La primera biblioteca de curses se desarrolló en la Universidad de California en Berkeley, para un sistema operativo BSD , alrededor de 1980 para soportar Rogue , un juego de aventuras basado en texto. Originalmente usaba la biblioteca termcap , que se usaba en otros programas, como el editor vi . [12]
El éxito de la biblioteca de curses de BSD llevó a Bell Labs a lanzar una biblioteca de curses mejorada en sus sistemas Unix System V Release 2 . Esta biblioteca era más poderosa y en lugar de usar termcap, usaba terminfo . Sin embargo, debido a la política de AT&T con respecto a la distribución del código fuente, esta biblioteca de curses mejorada no tuvo mucha aceptación en la comunidad BSD. [12]
Alrededor de 1982, Pavel Curtis comenzó a trabajar en un clon gratuito de los curses de Bell Labs, llamado pcurses , que fue mantenido por varias personas hasta 1986. [13]
La biblioteca pcurses se mejoró aún más cuando Zeyd Ben-Halim se hizo cargo del desarrollo a finales de 1991. [12] [13] [14] La nueva biblioteca se lanzó como ncurses en noviembre de 1993, con la versión 1.8.1 como la primera versión importante. . El trabajo posterior, hasta la versión 1.8.8 (M1995), fue impulsado por Eric S. Raymond , quien agregó las bibliotecas de formularios y menús escritas por Juergen Pfeifer. [1] Desde 1996, lo mantiene Thomas E. Dickey. [13]
La mayoría de las llamadas de ncurses se pueden transferir fácilmente a los antiguos curses. Las implementaciones de curses de System V pueden soportar programas de curses BSD con sólo una recompilación . [15] Sin embargo, algunas áreas son problemáticas, como el manejo del cambio de tamaño de la terminal, ya que no existe ninguna contraparte en las antiguas maldiciones.
ncurses puede usar terminfo (con datos extensibles) o termcap . Otras implementaciones de maldiciones generalmente usan terminfo ; una minoría utiliza termcap . Pocos (mytinfo fue una excepción anterior [16] ) usan ambos.
ncurses es parte del Proyecto GNU , pero no se distribuye bajo la Licencia Pública General GNU (GPL) o la Licencia Pública General Reducida GNU (LGPL). En cambio, se distribuye bajo una licencia de software libre permisiva , es decir, la Licencia MIT . [17] Esto se debe al acuerdo realizado con la Free Software Foundation en el momento en que los desarrolladores cedieron sus derechos de autor.
Cuando se llegó al acuerdo para traspasar los derechos a la FSF, había una cláusula que decía: [17]
La Fundación promete que toda distribución del Paquete, o de cualquier trabajo "basado en el Paquete", que tenga lugar bajo el control de la Fundación o sus agentes o cesionarios, se realizará en términos que permitan explícita y perpetuamente a cualquiera que posea una copia del la obra a la que se aplican los términos, y en posesión de una notificación precisa de estos términos, para redistribuir copias de la obra a cualquier persona en los mismos términos.
Según el mantenedor Thomas E. Dickey, esto impide volver a obtener la licencia GPL en cualquier versión, ya que impondría restricciones a los programas que podrán vincularse a las bibliotecas. [17]
Cientos de programas utilizan ncurses. [18] [19] Algunos, como GNU Screen y w3m , usan solo la interfaz termcap y realizan la administración de la pantalla ellos mismos. Otros, como GNU Midnight Commander y otra herramienta de configuración ( YaST ), utilizan la interfaz de programación de curses.