Redbean 2.0 é uma plataforma para aplicações web empacotadas em um arquivo ZIP executável universal

É apresentado o lançamento do projeto Redbean 2.0, que oferece um servidor web que permite entregar aplicações web na forma de um arquivo executável universal que pode ser executado em Linux, Windows, MacOS, FreeBSD, NetBSD e OpenBSD. Todos os recursos associados ao aplicativo web e ao servidor são compilados em um único arquivo executável, que é compatível com o formato de arquivo ZIP e permite usar o utilitário zip para adicionar arquivos adicionais. A capacidade de executar um arquivo em diferentes sistemas operacionais e reconhecê-lo como um arquivo ZIP é obtida manipulando cabeçalhos de arquivos executáveis ​​​​e vinculando-os à biblioteca C padrão multiplataforma Cosmopolitan. O código do projeto é distribuído sob a licença ISC.

A ideia do projeto é fornecer um arquivo executável “redbean.com” com um servidor web integrado. Um desenvolvedor de aplicativos da web pode usar o utilitário zip para adicionar arquivos HTML e Lua a esse arquivo e obter um aplicativo da web independente que roda em todos os sistemas operacionais populares e não requer um servidor da web separado para ser executado no sistema.

Após iniciar o arquivo executável resultante, o servidor web integrado é usado para acessar o aplicativo web salvo no arquivo. Por padrão, o manipulador é anexado ao localhost, mas o servidor também pode ser usado como um servidor web público regular (por exemplo, este servidor atende o site do projeto). O servidor Web integrado suporta acesso HTTPS e pode ser executado usando isolamento de sandbox, que permite controlar quais interfaces do sistema são acessadas. Para controlar o funcionamento do servidor durante sua execução, é fornecida uma interface REPL interativa (baseada no Lua REPL e na biblioteca bestline, análoga ao GNU Readline), que permite alterar o estado do processo de forma interativa.

Alega-se que o servidor web é capaz de processar mais de um milhão de solicitações por segundo em um PC normal, servindo conteúdo compactado em gzip. O que ajuda no desempenho é que zip e gzip usam um formato comum, de modo que os dados são servidos sem serem reempacotados de áreas já compactadas no arquivo zip. Além disso, como o executável é criado usando link estático e é pequeno em tamanho, chamar fork nele introduz pouca ou nenhuma sobrecarga de memória.

Além de processar conteúdo web estático e executar JavaScript no navegador, a lógica da aplicação web pode ser expandida usando scripts em Lua, o framework web Fullmoon e o SGBD SQLite. Recursos adicionais incluem suporte para o esquema de hash de senha argon2, a capacidade de determinar a região IP usando o banco de dados MaxMind e acesso à API Unix da biblioteca Cosmopolitan. O tamanho da pilha básica, que inclui um servidor web, MbedTLS, Cosmopolitan, Lua e SQLite, é de apenas 1.9 MB.

Um arquivo executável universal é formado pela combinação de segmentos e cabeçalhos específicos de diferentes sistemas operacionais (PE, ELF, MACHO, OPENBSD, ZIP) em um arquivo. Para garantir que um único arquivo executável seja executado em sistemas Windows e Unix, um truque é codificar os arquivos do Windows PE como um script de shell, aproveitando o fato de que o Thompson Shell não usa o marcador de script “#!”. O resultado é um arquivo executável que combina diversos formatos diferentes usados ​​em Linux, BSD, Windows e macOS. $ curl https://redbean.dev/redbean-demo-2.0.7.com >redbean.com $ chmod +x redbean.com $ zip redbean.com hello.html $ zip redbean.com hello.lua $ ./redbean .com -vv I2022-06-23T08:27:14+000767:redbean] (srvr) ouvir http://127.0.0.1:8080 >: aguardando comando… $ curl https://127.0.0.1:8080/hello .html olá $ printf 'GET /hello.lua\n\n' | nc 127.0.0.1 8080 olá



Fonte: opennet.ru

Adicionar um comentário