Redbean 2.0 is 'n platform vir webtoepassings verpak in 'n universele uitvoerbare zip-argief

Die vrystelling van die Redbean 2.0-projek word aangebied, wat 'n webbediener bied wat jou toelaat om webtoepassings te lewer in die vorm van 'n universele uitvoerbare lêer wat op Linux, Windows, MacOS, FreeBSD, NetBSD en OpenBSD uitgevoer kan word. Alle hulpbronne wat met die webtoepassing en bediener geassosieer word, word saamgestel in 'n enkele uitvoerbare lêer, wat versoenbaar is met die ZIP-argiefformaat en jou toelaat om die zip-nutsding te gebruik om bykomende lêers by te voeg. Die vermoë om een ​​lêer op verskillende bedryfstelsels te laat loop en dit as 'n zip-argief te laat herken, word verkry deur uitvoerbare lêeropskrifte te manipuleer en met die multi-platform standaard C-biblioteek Cosmopolitan te koppel. Die projekkode word onder die ISC-lisensie versprei.

Die idee van die projek is om een ​​uitvoerbare lêer "redbean.com" met 'n ingeboude webbediener te verskaf. 'n Webtoepassingsontwikkelaar kan die zip-nutsding gebruik om HTML- en Lua-lêers by hierdie lêer te voeg en 'n selfstandige webtoepassing te kry wat op alle gewilde bedryfstelsels loop en nie 'n aparte webbediener vereis om op die stelsel te loop nie.

Nadat die resulterende uitvoerbare lêer geloods is, word die ingeboude webbediener gebruik om toegang te verkry tot die webtoepassing wat in die lêer gestoor is. By verstek is die hanteerder aan localhost gekoppel, maar die bediener kan ook as 'n gewone publieke webbediener gebruik word (byvoorbeeld, hierdie bediener bedien die projekwebwerf). Die ingeboude webbediener ondersteun HTTPS-toegang en kan uitgevoer word met behulp van sandbox-isolasie, wat jou toelaat om te beheer watter stelselkoppelvlakke toegang verkry word. Om die werking van die bediener tydens die uitvoering daarvan te beheer, word 'n interaktiewe REPL-koppelvlak voorsien (gebaseer op die Lua REPL en die bestline-biblioteek, 'n analoog van GNU Readline), wat dit moontlik maak om die toestand van die proses interaktief te verander.

Daar word beweer dat die webbediener in staat is om meer as 'n miljoen versoeke per sekonde op 'n gewone rekenaar te verwerk, wat gzip-saamgeperste inhoud bedien. Wat werkverrigting help, is dat zip en gzip 'n algemene formaat gebruik, sodat data bedien word sonder om herverpak te word vanaf reeds saamgeperste areas in die zip-lêer. Daarbenewens, aangesien die uitvoerbare lêer geskep word met behulp van statiese koppeling en klein van grootte is, lei roepvurk daarop min of geen geheue oorhoofse aan nie.

Benewens die verwerking van statiese webinhoud en die uitvoering van JavaScript in die blaaier, kan die webtoepassingslogika uitgebrei word deur skrifte in Lua, die Fullmoon-webraamwerk en die SQLite DBMS te gebruik. Bykomende kenmerke sluit in ondersteuning vir die argon2-wagwoord-hash-skema, die vermoë om die IP-streek te bepaal met behulp van die MaxMind-databasis, en toegang tot die Unix API van die Cosmopolitan-biblioteek. Die grootte van die basiese stapel, wat 'n webbediener, MbedTLS, Cosmopolitan, Lua en SQLite insluit, is slegs 1.9 MB.

'n Universele uitvoerbare lêer word gevorm deur segmente en kopskrifte spesifiek vir verskillende bedryfstelsels (PE, ELF, MACHO, OPENBSD, ZIP) in een lêer te kombineer. Om te verseker dat 'n enkele uitvoerbare lêer op Windows- en Unix-stelsels loop, is 'n truuk om Windows PE-lêers as 'n dopskrif te enkodeer, en benut die feit dat Thompson Shell nie die "#!"-skrifmerker gebruik nie. Die resultaat is 'n uitvoerbare lêer wat verskeie verskillende formate kombineer wat in Linux, BSD, Windows en macOS gebruik word. $ krul 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) luister http://127.0.0.1:8080 >: wag vir bevel... $ krul https://127.0.0.1:8080/hello .html hallo $ printf 'KRY /hello.lua\n\n' | nc 127.0.0.1 8080 hallo



Bron: opennet.ru

Voeg 'n opmerking