Redbean 2.0 ir platforma tīmekļa lietojumprogrammām, kas iepakotas universālā izpildāmā ZIP arhīvā

Tiek prezentēts Redbean 2.0 projekta izlaidums, kas piedāvā tīmekļa serveri, kas ļauj piegādāt tīmekļa lietojumprogrammas universāla izpildāmā faila veidā, ko var izpildīt uz Linux, Windows, MacOS, FreeBSD, NetBSD un OpenBSD. Visi ar tīmekļa lietojumprogrammu un serveri saistītie resursi tiek apkopoti vienā izpildāmā failā, kas ir saderīgs ar ZIP arhīva formātu un ļauj izmantot zip utilītu, lai pievienotu papildu failus. Iespēja palaist vienu failu dažādās operētājsistēmās un atpazīt to kā ZIP arhīvu tiek panākta, manipulējot ar izpildāmo failu galvenēm un izveidojot saiti ar vairāku platformu standarta C bibliotēku Cosmopolitan. Projekta kods tiek izplatīts saskaņā ar ISC licenci.

Projekta ideja ir nodrošināt vienu izpildāmo failu “redbean.com” ar iebūvētu tīmekļa serveri. Tīmekļa lietojumprogrammu izstrādātājs var izmantot zip utilītu, lai šim failam pievienotu HTML un Lua failus un iegūtu autonomu tīmekļa lietojumprogrammu, kas darbojas visās populārajās operētājsistēmās un kurai nav nepieciešams atsevišķs tīmekļa serveris, lai darbotos sistēmā.

Pēc iegūtā izpildāmā faila palaišanas iebūvētais tīmekļa serveris tiek izmantots, lai piekļūtu failā saglabātajai tīmekļa lietojumprogrammai. Pēc noklusējuma apdarinātājs ir pievienots localhost, taču serveri var izmantot arī kā parastu publisko tīmekļa serveri (piemēram, šis serveris apkalpo projekta vietni). Iebūvētais tīmekļa serveris atbalsta HTTPS piekļuvi, un to var izpildīt, izmantojot smilškastes izolāciju, kas ļauj kontrolēt, kurām sistēmas saskarnēm tiek piekļūts. Lai kontrolētu servera darbību tā izpildes laikā, tiek nodrošināts interaktīvs REPL interfeiss (pamatojoties uz Lua REPL un bestline bibliotēku, GNU Readline analogu), kas ļauj interaktīvi mainīt procesa stāvokli.

Tiek apgalvots, ka tīmekļa serveris spēj apstrādāt vairāk nekā miljonu pieprasījumu sekundē parastajā datorā, apkalpojot gzip saspiestu saturu. Veiktspēju uzlabo tas, ka zip un gzip izmanto kopīgu formātu, tāpēc dati tiek apkalpoti bez pārsaiņošanas no jau saspiestiem ZIP faila apgabaliem. Turklāt, tā kā izpildāmais fails tiek izveidots, izmantojot statisku saiti, un ir mazs, tā izsaukšanas dakša ievieš maz atmiņas vai tās nav vispār.

Papildus statiskā tīmekļa satura apstrādei un JavaScript izpildei pārlūkprogrammā, tīmekļa lietojumprogrammu loģiku var paplašināt, izmantojot Lua skriptus, Fullmoon tīmekļa ietvaru un SQLite DBVS. Papildu funkcijas ietver atbalstu argon2 paroļu jaukšanas shēmai, spēju noteikt IP reģionu, izmantojot MaxMind datu bāzi, un piekļuvi Cosmopolitan bibliotēkas Unix API. Pamata steka, kas ietver tīmekļa serveri, MbedTLS, Cosmopolitan, Lua un SQLite, izmērs ir tikai 1.9 MB.

Universāls izpildāmais fails tiek veidots, vienā failā apvienojot dažādām operētājsistēmām (PE, ELF, MACHO, OPENBSD, ZIP) raksturīgus segmentus un galvenes. Lai nodrošinātu, ka Windows un Unix sistēmās darbojas viens izpildāmais fails, Windows PE failus var kodēt kā čaulas skriptu, izmantojot to, ka Thompson Shell neizmanto skripta marķieri “#!”. Rezultāts ir izpildāms fails, kas apvieno vairākus dažādus Linux, BSD, Windows un macOS izmantotos formātus. $ 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) klausieties http://127.0.0.1:8080 >: gaida komandu… $ curl https://127.0.0.1:8080/hello .html hello $ printf 'GET /hello.lua\n\n' | nc 127.0.0.1 8080 labdien!



Avots: opennet.ru

Pievieno komentāru