Redbean 2.0 er en plattform for webapplikasjoner pakket i et universelt kjørbart ZIP-arkiv

Utgivelsen av Redbean 2.0-prosjektet presenteres, og tilbyr en webserver som lar deg levere webapplikasjoner i form av en universell kjørbar fil som kan kjøres på Linux, Windows, MacOS, FreeBSD, NetBSD og OpenBSD. Alle ressurser knyttet til nettapplikasjonen og serveren er kompilert til en enkelt kjørbar fil, som er kompatibel med ZIP-arkivformatet og lar deg bruke zip-verktøyet til å legge til flere filer. Muligheten til å kjøre én fil på forskjellige operativsystemer og få den gjenkjent som et ZIP-arkiv oppnås ved å manipulere kjørbare filoverskrifter og koble til multiplattformstandard C-biblioteket Cosmopolitan. Prosjektkoden distribueres under ISC-lisensen.

Ideen med prosjektet er å levere en kjørbar fil "redbean.com" med en innebygd webserver. En webapplikasjonsutvikler kan bruke zip-verktøyet til å legge til HTML- og Lua-filer til denne filen og få en selvstendig nettapplikasjon som kjører på alle populære operativsystemer og som ikke krever en egen webserver for å kjøre på systemet.

Etter å ha startet den resulterende kjørbare filen, brukes den innebygde webserveren for å få tilgang til webapplikasjonen som er lagret i filen. Som standard er behandleren knyttet til localhost, men serveren kan også brukes som en vanlig offentlig webserver (for eksempel betjener denne serveren prosjektets nettside). Den innebygde webserveren støtter HTTPS-tilgang og kan kjøres ved hjelp av sandbox-isolering, som lar deg kontrollere hvilke systemgrensesnitt som aksesseres. For å kontrollere driften av serveren under kjøringen, er det gitt et interaktivt REPL-grensesnitt (basert på Lua REPL og bestline-biblioteket, en analog av GNU Readline), som gjør det mulig å endre tilstanden til prosessen interaktivt.

Det hevdes at webserveren er i stand til å behandle mer enn en million forespørsler per sekund på en vanlig PC, og serverer gzip-komprimert innhold. Det som hjelper ytelsen er at zip og gzip bruker et vanlig format, slik at data blir servert uten å pakkes om fra allerede komprimerte områder i zip-filen. I tillegg, siden den kjørbare filen er opprettet ved hjelp av statisk kobling og er liten i størrelse, introduserer calling fork på den lite eller ingen minneoverhead.

I tillegg til å behandle statisk nettinnhold og kjøre JavaScript i nettleseren, kan nettapplikasjonslogikken utvides ved å bruke skript i Lua, Fullmoon nettrammeverk og SQLite DBMS. Ytterligere funksjoner inkluderer støtte for argon2-passordhashing-skjemaet, muligheten til å bestemme IP-regionen ved å bruke MaxMind-databasen og tilgang til Unix API til Cosmopolitan-biblioteket. Størrelsen på grunnstakken, som inkluderer en webserver, MbedTLS, Cosmopolitan, Lua og SQLite, er bare 1.9 MB.

En universell kjørbar fil dannes ved å kombinere segmenter og overskrifter som er spesifikke for forskjellige operativsystemer (PE, ELF, MACHO, OPENBSD, ZIP) i én fil. For å sikre at en enkelt kjørbar fil kjører på Windows- og Unix-systemer, er et triks å kode Windows PE-filer som et skallskript, og dra nytte av det faktum at Thompson Shell ikke bruker "#!"-skriptmarkøren. Resultatet er en kjørbar fil som kombinerer flere forskjellige formater som brukes i Linux, BSD, Windows og 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) lytt http://127.0.0.1:8080 >: venter på kommando... $ curl https://127.0.0.1:8080/hello .html hei $ printf 'GET /hello.lua\n\n' | nc 127.0.0.1 8080 hei



Kilde: opennet.ru

Legg til en kommentar