Desarrollador(es) | Thomas E. Dickey, Juergen Pfeifer, Eric S Raymond, Alexander V Lukyanov, Philippe Blain, Sven Verdoolaege, Nicolas Boulenguez et al. [1] [2] |
---|---|
Lanzamiento inicial | 1993 ( 1993 ) |
Versión estable | 6.5 [3] / 27 de abril de 2024 ( 27-04-2024 ) |
Repositorio |
|
Escrito en | do |
Sistema operativo | Sistema de archivos POSIX |
Tipo | Kit de herramientas de widgets |
Licencia | X11 [2] |
Sitio web | isla-invisible.net/ncurses/ |
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 bajo un emulador de terminal . También optimiza los cambios de pantalla para reducir la latencia que se experimenta al usar shells remotos .
ncurses es una emulación de software libre y de código abierto de System V Release 4.0 (SVr4) curses .
Existen 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] Object REXX (ooRexx) [11] y Rust . [12]
Como nueva versión, ncurses es una emulación de software libre y de código abierto de curses de System V Release 4.0 (SVr4) , que fue una mejora con respecto a curses de 4.4 BSD, que ya no se fabricaba. [13] El estándar XSI Curses emitido por X/Open está explícitamente y estrechamente modelado en UNIX System V.
La primera biblioteca curses fue desarrollada 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 . [13]
El éxito de la biblioteca de curses de BSD impulsó a Bell Labs a lanzar una biblioteca de curses mejorada en sus sistemas Unix System V Release 2. Esta biblioteca era más potente y en lugar de utilizar termcap, utilizaba 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. [13]
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. [14]
La biblioteca pcurses fue mejorada aún más cuando Zeyd Ben-Halim se hizo cargo del esfuerzo de desarrollo a finales de 1991. [13] [14] [15] La nueva biblioteca fue lanzada como ncurses en noviembre de 1993, con la versión 1.8.1 como el primer lanzamiento importante. El trabajo posterior, hasta la versión 1.8.8 (M1995), fue dirigido por Eric S. Raymond , quien agregó las bibliotecas de formularios y menús escritas por Juergen Pfeifer. [1] Desde 1996, ha sido mantenida por Thomas E. Dickey. [14]
La mayoría de las llamadas ncurses se pueden trasladar fácilmente a la antigua versión de curses. Las implementaciones de curses de System V pueden admitir programas de curses de BSD con solo una recompilación . [16] Sin embargo, algunas áreas son problemáticas, como el manejo del cambio de tamaño de la terminal, ya que no existe una contraparte en la antigua versión de curses.
ncurses puede utilizar terminfo (con datos extensibles) o termcap . Otras implementaciones de curses generalmente utilizan terminfo ; una minoría utiliza termcap . Pocas (mytinfo era una excepción más antigua [17] ) utilizan 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 . [18] Esto se debe al acuerdo realizado con la Free Software Foundation en el momento en que los desarrolladores asignaron sus derechos de autor.
Cuando se llegó al acuerdo para transferir los derechos a la FSF, había una cláusula que decía: [18]
La Fundación promete que toda distribución del Paquete, o de cualquier obra "basada 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 cualquier persona que posea una copia de la obra a la que se aplican los términos, y que posea un conocimiento preciso de estos términos, redistribuir copias de la obra a cualquier persona en los mismos términos.
Según el mantenedor Thomas E. Dickey, esto impide renovar la licencia GPL en cualquier versión, ya que impondría restricciones a los programas que podrán vincularse a las bibliotecas. [18]
Cientos de programas utilizan ncurses. [19] [20] Algunos, como GNU Screen y w3m , utilizan únicamente la interfaz termcap y realizan la gestión de pantalla por sí mismos. Otros, como GNU Midnight Commander y Yet another Setup Tool ( YaST ), utilizan la interfaz de programación curses.