Redbean 2.0 är en plattform för webbapplikationer paketerade i ett universellt körbart ZIP-arkiv

Releasen av Redbean 2.0-projektet presenteras, som erbjuder en webbserver som låter dig leverera webbapplikationer i form av en universell körbar fil som kan köras på Linux, Windows, MacOS, FreeBSD, NetBSD och OpenBSD. Alla resurser som är associerade med webbapplikationen och servern kompileras till en enda körbar fil, som är kompatibel med ZIP-arkivformatet och låter dig använda zip-verktyget för att lägga till ytterligare filer. Möjligheten att köra en fil på olika operativsystem och få den igenkänd som ett ZIP-arkiv uppnås genom att manipulera körbara filhuvuden och länka till multiplattformsstandard C-biblioteket Cosmopolitan. Projektkoden distribueras under ISC-licensen.

Tanken med projektet är att tillhandahålla en körbar fil "redbean.com" med en inbyggd webbserver. En webbapplikationsutvecklare kan använda zip-verktyget för att lägga till HTML- och Lua-filer till den här filen och få en fristående webbapplikation som körs på alla populära operativsystem och som inte kräver en separat webbserver för att köras på systemet.

Efter att den resulterande körbara filen har startat, används den inbyggda webbservern för att komma åt webbapplikationen som sparats i filen. Som standard är hanteraren kopplad till localhost, men servern kan också användas som en vanlig offentlig webbserver (till exempel serverar denna server projektets webbplats). Den inbyggda webbservern stöder HTTPS-åtkomst och kan köras med sandlådeisolering, vilket låter dig styra vilka systemgränssnitt som nås. För att styra driften av servern under dess körning tillhandahålls ett interaktivt REPL-gränssnitt (baserat på Lua REPL och bestline-biblioteket, en analog till GNU Readline), vilket gör det möjligt att ändra processens tillstånd interaktivt.

Det påstås att webbservern klarar av att behandla mer än en miljon förfrågningar per sekund på en vanlig PC och serverar gzip-komprimerat innehåll. Det som hjälper prestanda är att zip och gzip använder ett vanligt format, så data serveras utan att packas om från redan komprimerade områden i zip-filen. Dessutom, eftersom den körbara filen skapas med statisk länkning och är liten i storlek, introducerar calling fork på den lite eller inget minneskostnader.

Förutom att bearbeta statiskt webbinnehåll och köra JavaScript i webbläsaren kan webbapplikationslogiken utökas med skript i Lua, Fullmoon webbramverk och SQLite DBMS. Ytterligare funktioner inkluderar stöd för argon2-lösenordshashing-schemat, möjligheten att bestämma IP-regionen med hjälp av MaxMind-databasen och tillgång till Unix API för Cosmopolitan-biblioteket. Storleken på grundstacken, som inkluderar en webbserver, MbedTLS, Cosmopolitan, Lua och SQLite, är bara 1.9 MB.

En universell körbar fil bildas genom att kombinera segment och rubriker som är specifika för olika operativsystem (PE, ELF, MACHO, OPENBSD, ZIP) i en fil. För att säkerställa att en enda körbar fil körs på Windows- och Unix-system är ett knep att koda Windows PE-filer som ett skalskript, och dra fördel av det faktum att Thompson Shell inte använder skriptmarkören "#!". Resultatet är en körbar fil som kombinerar flera olika format som används i Linux, BSD, Windows och 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) lyssna http://127.0.0.1:8080 >: väntar på kommando... $ curl https://127.0.0.1:8080/hello .html hej $ printf 'GET /hello.lua\n\n' | nc 127.0.0.1 8080 hej



Källa: opennet.ru

Lägg en kommentar