ncurses (new curses ) es una biblioteca de programación para crear interfaces de usuario textuales (TUI) que funcionan en una amplia variedad de terminales . Está escrita de forma que intenta optimizar los comandos que se envían al terminal, para reducir la latencia que se experimenta al actualizar el contenido mostrado.
ncurses es una emulación de software libre y de código abierto de curses de System V Release 4.0 (SVr4).
Hay enlaces para ncurses en una variedad de lenguajes de programación, incluyendo Ada , [ 4 ] Common Lisp , [ 5 ] Python , [ 6 ] Gambas , [ 7 ] Ruby , [ 8 ] PHP , [ 9 ] JavaScript , [ 10 ] Perl , [ 11 ] Object REXX (ooRexx) [ 12 ] y Rust . [ 13 ]
Historia
Como nueva versión, ncurses es una emulación de software libre y de código abierto de curses System V Release 4.0 (SVr4) , que fue una mejora con respecto a curses BSD 4.4 descontinuado. [ 14 ] El estándar XSI Curses emitido por X/Open está explícitamente y estrechamente modelado en UNIX System V.
maldiciones
La primera biblioteca curses se desarrolló en la Universidad de California, Berkeley, para un sistema operativo BSD , alrededor de 1980, para dar soporte a Rogue , un juego de aventuras basado en texto. Originalmente utilizaba la biblioteca termcap , que se usaba en otros programas, como el editor vi . [ 14 ]
El éxito de la biblioteca curses de BSD impulsó a Bell Labs a lanzar una versión mejorada en sus sistemas Unix System V Release 2. Esta biblioteca era más potente y, en lugar de usar termcap, utilizaba terminfo . Sin embargo, debido a la política de AT&T sobre la distribución del código fuente, la versión mejorada de curses no tuvo una amplia adopción en la comunidad BSD. [ 14 ]
maldiciones
Alrededor de 1982, Pavel Curtis comenzó a trabajar en un clon de software libre de curses de Bell Labs, llamado pcurses , que fue mantenido por varias personas hasta 1986. [ 15 ]
maldiciones
La biblioteca pcurses se mejoró aún más cuando Zeyd Ben-Halim asumió el desarrollo a finales de 1991. [ 14 ] [ 15 ] [ 16 ] La nueva biblioteca se publicó como ncurses en noviembre de 1993, siendo la versión 1.8.1 la primera versión principal. El trabajo posterior, hasta la versión 1.8.8 (M1995), fue impulsado por Eric S. Raymond , quien añadió las bibliotecas de formularios y menús escritas por Juergen Pfeifer. [ 1 ] Desde 1996, ha sido mantenida por Thomas E. Dickey. [ 15 ]
La mayoría de las llamadas a ncurses se pueden portar fácilmente a curses antiguo. Las implementaciones de curses de System V pueden admitir programas curses de BSD con solo una recompilación . [ 17 ] Sin embargo, algunas áreas son problemáticas, como el manejo del redimensionamiento de la terminal, ya que no existe un equivalente en curses antiguo.
Base de datos terminal
ncurses puede usar terminfo (con datos extensibles) o termcap . Otras implementaciones de curses generalmente usan terminfo; una minoría usa termcap. Pocas (mytinfo fue una excepción antigua [ 18 ] ) usan ambas.
Licencia
ncurses forma parte del Proyecto GNU , pero no se distribuye bajo la Licencia Pública General de GNU (GPL) ni la Licencia Pública General Reducida de GNU (LGPL). En cambio, se distribuye bajo una licencia de software libre permisiva : la Licencia MIT . [ 19 ] Esto se debe al acuerdo alcanzado con la Free Software Foundation cuando los desarrolladores cedieron sus derechos de autor.
Cuando se llegó al acuerdo para transferir los derechos a la FSF, había una cláusula que establecía: [ 19 ]
La Fundación garantiza que toda distribución del Paquete, o de cualquier obra "basada en el Paquete", que se realice bajo el control de la Fundación o de sus agentes o cesionarios, se regirá por términos que permitan de forma explícita y perpetua a cualquier persona que posea una copia de la obra a la que se aplican dichos términos, y que tenga conocimiento preciso de los mismos, redistribuir copias de la obra a cualquier persona en los mismos términos.
Según el mantenedor Thomas E. Dickey, esto impide la relicencia a la GPL en cualquier versión, ya que impondría restricciones a los programas que podrán enlazar con las bibliotecas. [ 19 ]
Programas que utilizan ncurses
Cientos de programas utilizan ncurses. [ 20 ] [ 21 ] Algunos, como GNU Screen y w3m , utilizan únicamente la interfaz termcap y gestionan la pantalla por sí mismos. Otros, como GNU Midnight Commander y Yet another Setup Tool ( YaST ), utilizan la interfaz de programación curses.
Véase también
- conio.h – Archivo de cabecera AC utilizado principalmente con compiladores MS-DOS para crear interfaces de usuario de texto.
- Kit de desarrollo de maldiciones
- Diálogo (software)
- Maldiciones de PD
- Biblioteca de programación S-Lang
- SMG$ – Biblioteca de gestión de pantallas disponible en OpenVMS
- GNU Readline
Referencias
- 1 2 "NCURSES - Preguntas frecuentes (FAQ): ¿Quién escribió NCURSES?" .
- 1 2 "NCURSES – Licencias" . Consultado el 9 de julio de 2013 .
- ↑ Thomas E. Dickey (31 de diciembre de 2025). "ncurses 6.6" . Consultado el 1 de enero de 2026 .
- ↑ "Enlace Ada95 para ncurses" .
- ↑ "CL-Ncurses: Una interfaz Ncurses y pdcurses para Common Lisp" .
- ↑ "Programación con maldiciones en Python - Documentación de Python" .
- ↑ «gb.ncurses - Wiki Gambas» .
- ↑ "ncurses Ruby - RubyGems.org" .
- ↑ "Funciones de Ncurses - Manual de PHP" . Archivado del original el 28 de marzo de 2021. Consultado el 4 de febrero de 2020 .
- ↑ "Complemento nc: enlaces ncurses para SpiderApe" .
- ↑ "Curses::UI - Un marco de interfaz de usuario orientado a objetos basado en curses" .
- ↑ Documentación de ooRexx 5.0.0: Referencia de la biblioteca de clases nCurses (PDF) . Rexx Language Association. 2022.
- ↑ "Enlaces de Rust para ncurses" .
- 1 2 3 4 Raymond, Eric S. (septiembre de 1995). "ncurses: Manejo portátil de pantallas para Linux" . Linux Journal .
- 1 2 3 Dickey, Thomas E. (diciembre de 1996). "NCURSES - Nuevas maldiciones" .
- ↑ El archivo README en ncurses 1.8.1 indica "v0.1 31 de julio de 1992" y "v1.8.1 5 de noviembre de 1993", lo cual coincide con el archivo NEWS (registro de cambios).
- ↑ "Guía de un hacker sobre el funcionamiento interno de Ncurses" .
- ↑ Weinstein, Sydney S. (abril de 1993). "Sobre las redes" . C/C++ Users Journal. Archivado del original el 11 de agosto de 2014. Recuperado el 15 de septiembre de 2017 .
- 1 2 3 "CURSOS - Preguntas frecuentes (FAQ): ¿Está bajo licencia GPL?" .
- ↑ "Resultados de búsqueda: +ncurses en freshmeat.net" . Archivado del original el 18 de febrero de 2012. Consultado el 10 de mayo de 2013 .
- ↑ "Proyectos etiquetados como 'ncurses'"" . ohloh. Archivado del original el 15-05-2013 . Recuperado el 28-03-2008 .
Enlaces externos
- Nmaldiciones
- Bibliotecas de C (lenguaje de programación)
- Software libre programado en Ada
- Software libre programado en C
- Software del Proyecto GNU
- Software que utiliza la licencia MIT.
- Termcap
- Terminfo