Se dio a conocer hace poco el lanzamiento de la nueva versión de la biblioteca GNU «libmicrohttpd 1.0.0», la cual está marcada como la primera versión estable del proyecto y en la cual se destaca el rediseño de la implementación de la autenticación implícita, asi como también que el código de inicialización de GnuTLS se ha reelaborado, entre otras cosas mas.
Para quienes desconocen de libmicrohttpd deben saber que esta es una poderosa herramienta para ejecutar un servidor HTTP dentro de una aplicación C o C++. GNU libmicrohttpd se caracteriza por ser una biblioteca C rápida y pequeña, eficiente en términos de recursos y adecuada para aplicaciones que requieren un servidor HTTP integrado.
Cuenta con una API expresiva y segura para trabajar con el servidor HTTP, compatible con HTTP 1.1 y con capacidad para escuchar en múltiples puertos, ademas de ofrecer opciones flexibles para la gestión de hilos, lo que permite adaptarse a diferentes entornos de aplicación.
Proporciona métodos versátiles para la gestión de sockets, es compatible con una variedad de plataformas de sistema operativo, permite la comunicación a través de IPv4 e IPv6 y facilita el procesamiento eficiente de datos enviados a través de solicitudes POST.
Principales novedades de libmicrohttpd
Este lanzamiento marca la primera versión estable de GNU libmicrohttpd después de 16 años de desarrollo del proyecto y en esta nueva versión se han implementado importantes cambios y nuevas características, entre las cuales se destaca un análisis reescrito de las solicitudes de los clientes, alineado con los estándares RFC, ya que el código encargado de analizar las solicitudes de los clientes ha sido completamente reescrito y ahora cumple con los requisitos detallados en los RFC 9110 y 9112, ademas de que se han proporcionado modos de cumplimiento rigurosos y flexibles para equilibrar la compatibilidad y la seguridad mejorada.
Otro de los cambios que se destaca de la nueva versión es que se han implementado mejoras en la autenticación implícita y básica, con soporte para características avanzadas según RFC 7617, ya que la autenticación implícita, se ha rediseñado su implementación, lo que amplía notablemente la compatibilidad con las funciones descritas en el RFC 7617. Esto abarca la compatibilidad con SHA-512, userhash y el nombre de usuario en notación extendida. Asimismo, se mantiene la compatibilidad con el antiguo RFC 2069 y se conserva la capacidad de utilizar hashes MD5 y SHA-256.
Ademas de ello, se han realizado mejoras en entornos de subprocesos múltiples, especialmente en modos de sondeo de sockets externos. El rendimiento ha sido mejorado especialmente en entornos multiproceso, así como en los modos de sondeo de sockets. Además, la implementación de la autenticación básica ha sido rediseñada, lo que incluye la provisión de funciones adicionales en la Interfaz de Programación de Aplicaciones (API).
Por otra parte, se destaca la reimplementación de la inicialización de GnuTLS, con soporte para configuraciones específicas del sistema, ya que el código de inicialización de GnuTLS ha sido revisado y reelaborado. Se ha añadido la capacidad de emplear tanto la configuración estándar del sistema GnuTLS como la específica de libmicrohttpd, junto con el soporte para anular configuraciones individuales del sistema GnuTLS.
De los demás cambios que se destacan de esta nueva versión:
- Corrección de la fuga de memoria en la ruta de error.
- Se corrigieron pruebas con GnuTLS en una ruta no predeterminada.
- Se corrigió la compilación no debug sin HTTPS.
- configure: se eliminó la solución alternativa antigua para Solaris.
- «Actualización» de conexiones TLS: corregida la transferencia de datos en varias condiciones límite.
- ‘bootstrap’: correcciones y simplificaciones.
- Se cambió el nombre de una nueva función de autenticación básica, se mejoró la documentación.
- Se agregó la detección de más condiciones para procesar los datos sin esperar.
- Mejora del manejo de cierre del demonio en modo de sondeo externo.
- Se unificó y simplificó el llenado de fd_set.
- Soporte oficial para cero en MHD_OPTION_THREAD_POOL_SIZE.
- Se corrigieron los includes faltantes de <errno.h>.
- Se refactorizó el soporte de subprocesos para manejar plataformas sin valor «inválido» de ID.
- Se corrigió MHD_CONNECTION_INFO_DAEMON: devuelve demonio maestro. -EG
Finalmente, cabe mencionar que está previsto desarrollar la rama libmicrohttpd 2, que proporcionará soporte para los protocolos HTTP/2 y HTTP/3, además de trabajar para simplificar la API y admitir varios backends para TLS. El inicio de los trabajos en la nueva sucursal será financiado por la Sovereign Tech Fund, establecida en Alemania para estimular el desarrollo de infraestructura digital abierta y ecosistemas de código abierto.
Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.