Redbean 2.0 — o platformă pentru aplicații web, pachetizată într-un arhiv ZIP executabil universal

A fost lansată versiunea proiectului Redbean 2.0, care oferă un server web ce permite livrarea aplicațiilor web sub forma unui fișier executable universal, care poate fi rulat pe Linux, Windows, MacOS, FreeBSD, NetBSD și OpenBSD. Toate resursele legate de aplicația web și server sunt comprimate într-un singur fișier executabil, care este compatibil cu formatul arhivelor ZIP și permite utilizarea utilitarului zip pentru adăugarea de fișiere suplimentare. Capacitatea de a rula un singur fișier pe diferite sisteme de operare și de a fi recunoscut ca arhivă ZIP este realizată prin manipularea capetelor fișierelor executabile și legarea cu biblioteca standard multi-platformă Cosmopolitan. Codul proiectului este distribuit sub licența ISC.

Ideea proiectului constă în livrarea unui singur fișier executabil „redbean.com” cu un server web încorporat. Dezvoltatorul aplicației web poate, cu ajutorul utilitarului zip, să adauge în acest fișier fișiere HTML și Lua, obținând astfel o aplicație web autosuficientă, care rulează pe toate sistemele de operare populare și care nu necesită pentru funcționare lansarea unui server web separat în sistem.

După lansarea fișierului executabil obținut, pentru a accesa aplicația web salvată în fișier se utilizează serverul web încorporat. În mod implicit, handler-ul este atașat la localhost, dar serverul poate fi folosit și ca un server web public obișnuit (de exemplu, acest server găzduiește site-ul proiectului). Serverul web încorporat suportă accesul prin HTTPS și poate fi rulat cu izolarea sandbox, permițând controlul asupra interfețelor sistemului la care se face apel. Pentru a gestiona funcționarea serverului în timpul executării, este oferit un interface interactiv REPL (bazat pe Lua REPL și biblioteca bestline, un echivalent GNU Readline), care permite modificarea stării procesului în mod interactiv.

Se susține că serverul web poate gestiona peste un milion de solicitări pe secundă pe un PC obișnuit, livrând conținut comprimat prin metoda gzip. Performanța ridicată se datorează faptului că zip și gzip folosesc un format comun, astfel încât datele sunt transmise fără recompresie din zonele deja comprimate ale fișierului zip. În plus, deoarece fișierul executabil a fost creat folosind legătura statică și are o dimensiune mică, apelul funcției fork pentru acesta nu generează practic cheltuieli suplimentare atunci când este plasat în memorie.

Pe lângă procesarea conținutului web static și execuția JavaScript în browser, logica aplicației web poate fi extinsă cu ajutorul scripturilor în limbajul Lua, framework-ului web Fullmoon și bazei de date SQLite. Printre funcționalitățile suplimentare se numără suportul pentru schema de hash pentru parole argon2, posibilitatea de a determina regiunea IP din baza MaxMind și accesul la API-ul Unix al bibliotecii Cosmopolitan. Dimensiunea stivei de bază, care include serverul web, MbedTLS, Cosmopolitan, Lua și SQLite, este de doar 1.9 MB.

Fișierul executabil universal se formează prin combinarea segmentelor și antetelor specifice diferitelor sisteme de operare (PE, ELF, MACHO, OPENBSD, ZIP) într-un singur fișier. Pentru a asigura rularea unui singur fișier executabil în Windows și sistemele Unix, se aplică un truc, care constă în codificarea fișierelor Windows PE sub formă de script shell, utilizând faptul că Thompson Shell nu folosește marcatorul de scripturi «#!». În cele din urmă, se creează un fișier executabil în care sunt combinate mai multe formate diferite utilizate în Linux, BSD, Windows și 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



Sursa: opennet.ro
Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster