Redbean 2.0 es una plataforma para aplicaciones web empaquetadas en un archivo ZIP ejecutable universal

Se presenta el lanzamiento del proyecto Redbean 2.0, que ofrece un servidor web que permite entregar aplicaciones web en forma de un archivo ejecutable universal que se puede ejecutar en Linux, Windows, MacOS, FreeBSD, NetBSD y OpenBSD. Todos los recursos asociados con la aplicación web y el servidor se compilan en un único archivo ejecutable, que es compatible con el formato de archivo ZIP y le permite usar la utilidad zip para agregar archivos adicionales. La capacidad de ejecutar un archivo en diferentes sistemas operativos y reconocerlo como un archivo ZIP se logra manipulando los encabezados de los archivos ejecutables y vinculándolos con la biblioteca C estándar multiplataforma Cosmopolitan. El código del proyecto se distribuye bajo la licencia ISC.

La idea del proyecto es proporcionar un archivo ejecutable “redbean.com” con un servidor web integrado. Un desarrollador de aplicaciones web puede utilizar la utilidad zip para agregar archivos HTML y Lua a este archivo y obtener una aplicación web independiente que se ejecuta en todos los sistemas operativos populares y no requiere un servidor web independiente para ejecutarse en el sistema.

Después de iniciar el archivo ejecutable resultante, el servidor web integrado se utiliza para acceder a la aplicación web guardada en el archivo. De forma predeterminada, el controlador está adjunto a localhost, pero el servidor también se puede utilizar como un servidor web público normal (por ejemplo, este servidor sirve al sitio web del proyecto). El servidor web integrado admite el acceso HTTPS y se puede ejecutar mediante aislamiento de espacio aislado, lo que le permite controlar a qué interfaces del sistema se accede. Para controlar el funcionamiento del servidor durante su ejecución, se proporciona una interfaz REPL interactiva (basada en Lua REPL y la biblioteca bestline, un análogo de GNU Readline), que permite cambiar el estado del proceso de forma interactiva.

Se afirma que el servidor web es capaz de procesar más de un millón de solicitudes por segundo en una PC normal y ofrece contenido comprimido con gzip. Lo que ayuda al rendimiento es que zip y gzip usan un formato común, por lo que los datos se entregan sin volver a empaquetarse desde áreas ya comprimidas en el archivo zip. Además, dado que el ejecutable se crea mediante enlaces estáticos y es de tamaño pequeño, llamar a fork prácticamente no introduce sobrecarga de asignación de memoria.

Además de procesar contenido web estático y ejecutar JavaScript en el navegador, la lógica de la aplicación web se puede ampliar utilizando scripts en Lua, el marco web Fullmoon y SQLite DBMS. Las características adicionales incluyen soporte para el esquema de hash de contraseñas argon2, la capacidad de determinar la región IP utilizando la base de datos MaxMind y acceso a la API Unix de la biblioteca Cosmopolitan. El tamaño de la pila básica, que incluye un servidor web, MbedTLS, Cosmopolitan, Lua y SQLite, es de sólo 1.9 MB.

Un archivo ejecutable universal se forma combinando segmentos y encabezados específicos de diferentes sistemas operativos (PE, ELF, MACHO, OPENBSD, ZIP) en un solo archivo. Para garantizar que un único archivo ejecutable se ejecute en sistemas Windows y Unix, un truco consiste en codificar los archivos de Windows PE como un script de shell, aprovechando el hecho de que Thompson Shell no utiliza el marcador de script “#!”. El resultado es un archivo ejecutable que combina varios formatos diferentes utilizados en Linux, BSD, Windows y macOS. $ curl https://redbean.dev/redbean-demo-2.0.7.com >redbean.com $ chmod +x redbean.com $ zip redbean.com hola.html $ zip redbean.com hola.lua $ ./redbean .com -vv I2022-06-23T08:27:14+000767:redbean] (srvr) escuche http://127.0.0.1:8080 >: esperando comando… $ curl https://127.0.0.1:8080/hello .html hola $ printf 'GET /hola.lua\n\n' | nc 127.0.0.1 8080 hola



Fuente: opennet.ru

Añadir un comentario