Redbean 2.0 — piattaforma per applicazioni web, confezionate in un archivio ZIP eseguibile universale

È stata presentata la versione del progetto Redbean 2.0, che offre un server web in grado di fornire applicazioni web sotto forma di file eseguibile universale, che può essere eseguito su Linux, Windows, MacOS, FreeBSD, NetBSD e OpenBSD. Tutte le risorse relative all'applicazione web e al server vengono assemblate in un unico file eseguibile, compatibile con il formato degli archivi ZIP e consente di utilizzare l'utilità zip per aggiungere file aggiuntivi. La possibilità di eseguire un singolo file su diversi sistemi operativi e di riconoscerlo come archivio ZIP è ottenuta grazie alla manipolazione degli header dei file eseguibili e al collegamento con la libreria standard C multi-piattaforma Cosmopolitan. Il codice del progetto è distribuito con licenza ISC.

L'idea del progetto è la distribuzione di un singolo file eseguibile «redbean.com» con un server web integrato. Lo sviluppatore dell'applicazione web può, utilizzando l'utilità zip, aggiungere in questo file file HTML e Lua, ottenendo così un'applicazione web autonoma, eseguibile su tutti i principali sistemi operativi e che non richiede l'avvio di un server web separato nel sistema.

Dopo l'avvio del file eseguibile ottenuto, per accedere all'applicazione web salvata nel file si utilizza il server web integrato. Per impostazione predefinita, il gestore è associato a localhost, ma il server può essere utilizzato anche come un normale server web pubblico (ad esempio, questo server ospita il sito del progetto). Il server web integrato supporta l'accesso tramite HTTPS e può essere eseguito utilizzando un isolamento sandbox che consente di controllare a quali interfacce di sistema si accede. Per gestire l'attività del server durante la sua esecuzione è fornita un'interfaccia interattiva REPL (basata su Lua REPL e sulla libreria bestline, analoga a GNU Readline), che consente di modificare lo stato del processo in modalità interattiva.

Si afferma che il server web sia in grado di gestire oltre un milione di richieste al secondo su un normale PC, restituendo contenuti compressi con il metodo gzip. L'alta performance è facilitata dal fatto che zip e gzip utilizzano un formato comune, quindi i dati vengono restituiti senza ripackaging da aree già compresse nel file zip. Inoltre, poiché l'eseguibile è stato creato utilizzando il collegamento statico e ha una dimensione ridotta, la chiamata alla funzione fork comporta praticamente costi aggiuntivi trascurabili in memoria.

Oltre a trattare contenuti web statici e a eseguire JavaScript nel browser, la logica delle applicazioni web può essere ampliata mediante script in linguaggio Lua, il framework web Fullmoon e il database SQLite. Tra le opzioni aggiuntive si segnala il supporto per lo schema di hashing delle password argon2, la possibilità di determinare la regione IP tramite il database MaxMind e l'accesso all'API Unix della libreria Cosmopolitan. La dimensione dello stack di base, che include il server web, MbedTLS, Cosmopolitan, Lua e SQLite, è di soli 1,9 MB.

Il file eseguibile universale è formato combinando segmenti e intestazioni specifici per vari sistemi operativi (PE, ELF, MACHO, OPENBSD, ZIP) in un unico file. Per garantire l'esecuzione di un file eseguibile in Windows e nei sistemi Unix, viene utilizzato un trucco che consiste nella codifica dei file Windows PE come uno script shell, sfruttando il fatto che la Thompson Shell non utilizza il marcatore di script "#!". Di conseguenza, si crea un file eseguibile che combina diversi formati utilizzati in 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) listen http://127.0.0.1:8080 >: waiting for command… $ curl https://127.0.0.1:8080/hello.html hello $ printf ‘GET /hello.lua\n\n’ | nc 127.0.0.1 8080 hello



Fonte: opennet.ru
Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster