Se lanzó una nueva versión de la biblioteca notcurses v1.4.x «¡la saga continúa! ¡wu-tang! ¡wu-tang!»
Notcurses es una biblioteca TUI para emuladores de terminal modernos. Literalmente traduciéndolo: no maldiciones (not curses). Está escrita en C, con cabeceras seguras de C++. Hay envolturas disponibles para Rust, C++ y Python.
¿Qué es?: una biblioteca que simplifica TUI complejos en emuladores de terminal modernos, maximizando el soporte para colores brillantes y Unicode. Muchas tareas delegadas a curses se pueden realizar con notcurses (y viceversa).
Lo que no es: una implementación compatible de X/Open curses o un reemplazo de ncurses en sistemas existentes.
Notcurses renuncia a la API X/Open Curses, que se entrega como parte de la Especificación Única de UNIX. Esta especificación está obsoleta desde hace tiempo y, por ejemplo, no soporta funcionalidades de terminal como color de 24 bits no indexado. Como tal, notcurses no es un reemplazo de curses. Es menos portátil y ha sido probada en menos hardware.
Cuando es posible, notcurses utiliza la biblioteca terminfo que se entrega con ncurses, aprovechando su portabilidad.
Notcurses abre capacidades avanzadas para la interacción con usuarios en estaciones de trabajo, teléfonos, portátiles y tabletas.
¿Por qué utilizar esta biblioteca no estándar?
La seguridad de los hilos y un uso eficiente en programas multihilo fueron consideraciones de diseño desde el principio.
Una API más correctamente estructurada en comparación con X/Open:
Los identificadores exportados tienen un prefijo para evitar colisiones en los espacios de nombres.
El archivo objeto de la biblioteca exporta un conjunto mínimo de símbolos. Donde es apropiado, se utiliza código estático solo para encabezados de línea. Esto facilita la optimización del compilador y reduce el tiempo de carga.
-
Todas las API originalmente soportan un conjunto universal de símbolos (Unicode). La API para celdas se basa en el concepto Grupo de Grafemas Extendidos de Unicode.
Capacidades visuales, incluyendo imágenes, fuentes, videos, texto de alto contraste, sprites y áreas transparentes. Todas las API soportan de forma nativa color de 24 bits, cuantificado según sea necesario para el terminal.
-
Licencia Apache2, a diferencia de drama en varios actos, que constituyen la licencia de ncurses (la última se resume como «reformulación de MIT-X11»).
Desde la última versión significativa 1.1.0 se han agregado una enorme cantidad de funciones. Los cambios principales:
Widget de lectura para la entrada de cadenas de forma arbitraria con enlace a las cadenas de lectura.
Widget subprocess para generar un subproceso, gestionarlo y transmitir sus resultados de vuelta.
En Linux 5.3+ se utiliza un nuevo mecanismo clone3+pidfd para gestionar procesos sin condiciones de carrera.
Widget Fdplane para transmitir un descriptor de archivo arbitrario a un plano (en el cual se basa el subproceso). Ambos permiten que los callbacks estilicen o procesen de otra manera el texto.
Rotación de planos y efectos visuales. Carga de visualizaciones desde la memoria. Blit arbitrario RGBA/BGRx.
El menú se puede colocar en cualquiera (o en ambas) de las superficies superiores e inferiores.
Grandes mejoras en el modo Direct.
Polyfills, degradados y texto de alto contraste.
Se ha añadido tetris como ejemplo.
Los envoltorios en C++ de Marek Habersack ahora pueden lanzar excepciones (si es necesario).
FFI de Python y Rust actualizados y probados.
Video demo con comentarios del autor.
El libro «Hacking The Planet! with Notcurses» del autor.
Fuente: linux.org.ru

