Redbean 2.0 on alusta web-sovelluksille, jotka on pakattu yleiseen suoritettavaan ZIP-arkistoon

Redbean 2.0 -projektin julkaisu esitellään, ja se tarjoaa web-palvelimen, jonka avulla voit toimittaa web-sovelluksia yleisen suoritettavan tiedoston muodossa, joka voidaan suorittaa Linuxissa, Windowsissa, MacOS:ssa, FreeBSD:ssä, NetBSD:ssä ja OpenBSD:ssä. Kaikki verkkosovellukseen ja palvelimeen liittyvät resurssit kootaan yhdeksi suoritettavaksi tiedostoksi, joka on yhteensopiva ZIP-arkistomuodon kanssa ja jonka avulla voit käyttää zip-apuohjelmaa lisätiedostojen lisäämiseen. Mahdollisuus käyttää yhtä tiedostoa eri käyttöjärjestelmissä ja tunnistaa se ZIP-arkistona saavutetaan käsittelemällä suoritettavien tiedostojen otsikoita ja linkittämällä usean alustan standardi C-kirjastoon Cosmopolitan. Projektikoodia jaetaan ISC-lisenssillä.

Projektin ideana on toimittaa yksi suoritettava tiedosto "redbean.com" sisäänrakennetulla web-palvelimella. Verkkosovelluskehittäjä voi käyttää zip-apuohjelmaa lisätäkseen HTML- ja Lua-tiedostoja tähän tiedostoon ja hankkiakseen itsenäisen verkkosovelluksen, joka toimii kaikissa suosituissa käyttöjärjestelmissä ja joka ei vaadi erillistä verkkopalvelinta toimiakseen järjestelmässä.

Kun tuloksena oleva suoritettava tiedosto on käynnistetty, sisäänrakennettua verkkopalvelinta käytetään tiedostoon tallennettuun verkkosovellukseen pääsyyn. Käsittelijä on oletusarvoisesti liitetty localhostiin, mutta palvelinta voidaan käyttää myös tavallisena julkisena web-palvelimena (esimerkiksi tämä palvelin palvelee projektin verkkosivustoa). Sisäänrakennettu Web-palvelin tukee HTTPS-yhteyttä, ja se voidaan suorittaa hiekkalaatikon eristyksen avulla, jonka avulla voit hallita, mitä järjestelmän rajapintoja käytetään. Palvelimen toiminnan ohjaamiseksi sen suorituksen aikana tarjotaan interaktiivinen REPL-liitäntä (perustuu Lua REPL:ään ja bestline-kirjastoon, joka on GNU Readlinen analogi), joka mahdollistaa prosessin tilan muuttamisen interaktiivisesti.

Väitetään, että verkkopalvelin pystyy käsittelemään yli miljoona pyyntöä sekunnissa tavallisella PC:llä ja palvelemaan gzip-pakattua sisältöä. Suorituskykyä parantaa se, että zip ja gzip käyttävät yhteistä muotoa, joten tiedot toimitetaan ilman, että niitä pakataan uudelleen zip-tiedoston jo pakatuilta alueilta. Lisäksi, koska suoritettava tiedosto on luotu käyttämällä staattista linkitystä ja se on kooltaan pieni, sen kutsuhaarukka aiheuttaa vain vähän tai ei ollenkaan muistia.

Staattisen verkkosisällön käsittelyn ja selaimessa JavaScriptin suorittamisen lisäksi verkkosovelluslogiikkaa voidaan laajentaa Luan skripteillä, Fullmoon-verkkokehyksellä ja SQLite DBMS:llä. Muita ominaisuuksia ovat tuki argon2-salasanojen hajautusjärjestelmälle, kyky määrittää IP-alue MaxMind-tietokannan avulla ja pääsy Cosmopolitan-kirjaston Unix-sovellusliittymään. Peruspinon koko, joka sisältää verkkopalvelimen, MbedTLS:n, Cosmopolitanin, Luan ja SQLiten, on vain 1.9 Mt.

Universaali suoritettava tiedosto muodostetaan yhdistämällä eri käyttöjärjestelmille (PE, ELF, MACHO, OPENBSD, ZIP) liittyvät segmentit ja otsikot yhteen tiedostoon. Jotta voidaan varmistaa, että yksi suoritettava tiedosto toimii Windows- ja Unix-järjestelmissä, temppu on koodata Windows PE -tiedostot komentosarjaksi hyödyntäen sitä tosiasiaa, että Thompson Shell ei käytä "#!"-skriptimerkkiä. Tuloksena on suoritettava tiedosto, joka yhdistää useita eri muotoja, joita käytetään Linuxissa, BSD:ssä, Windowsissa ja macOS:ssä. $ 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) kuuntele http://127.0.0.1:8080 >: odottaa komentoa… $ curl https://127.0.0.1:8080/hello .html hello $ printf 'HANKI /hello.lua\n\n' | nc 127.0.0.1 8080 hei



Lähde: opennet.ru

Lisää kommentti