Redbean 2.0 je platforma za web aplikacije upakovana u univerzalnu izvršnu ZIP arhivu

Predstavljeno je izdanje Redbean 2.0 projekta, koji nudi web server koji vam omogućava isporuku web aplikacija u obliku univerzalne izvršne datoteke koja se može izvršiti na Linux, Windows, MacOS, FreeBSD, NetBSD i OpenBSD. Svi resursi povezani sa web aplikacijom i serverom se kompajliraju u jednu izvršnu datoteku, koja je kompatibilna sa formatom ZIP arhive i omogućava vam da koristite zip uslužni program za dodavanje dodatnih datoteka. Mogućnost pokretanja jedne datoteke na različitim operativnim sistemima i njenog prepoznavanja kao ZIP arhive postiže se manipulacijom zaglavlja izvršnih datoteka i povezivanjem sa standardnom C bibliotekom za više platformi Cosmopolitan. Šifra projekta se distribuira pod ISC licencom.

Ideja projekta je da se obezbedi jedna izvršna datoteka “redbean.com” sa ugrađenim web serverom. Programer web aplikacija može koristiti zip uslužni program da doda HTML i Lua datoteke u ovu datoteku i dobije samostalnu web aplikaciju koja radi na svim popularnim operativnim sistemima i ne zahtijeva poseban web server za rad na sistemu.

Nakon pokretanja rezultirajuće izvršne datoteke, ugrađeni web server se koristi za pristup web aplikaciji sačuvanoj u datoteci. Podrazumevano, rukovalac je vezan za localhost, ali server se takođe može koristiti kao običan javni veb server (na primer, ovaj server služi veb lokaciji projekta). Ugrađeni Web server podržava HTTPS pristup i može se izvršiti pomoću izolacije sandbox-a, što vam omogućava da kontrolišete kojim sistemskim interfejsima se pristupa. Za kontrolu rada servera tokom njegovog izvršavanja, omogućeno je interaktivno REPL sučelje (bazirano na Lua REPL-u i bestline biblioteci, analogu GNU Readline-a), što omogućava interaktivnu promjenu stanja procesa.

Tvrdi se da je veb server sposoban da obradi više od milion zahteva u sekundi na običnom računaru, opslužujući gzip komprimovani sadržaj. Ono što pomaže performansama je to što zip i gzip koriste zajednički format, tako da se podaci serviraju bez ponovnog pakiranja iz već komprimiranih područja u zip datoteci. Dodatno, pošto je izvršni fajl kreiran korišćenjem statičkog povezivanja i male je veličine, pozivanje fork-a na njemu uvodi malo ili nimalo memorije.

Osim obrade statičkog web sadržaja i izvršavanja JavaScripta u pretraživaču, logika web aplikacije može se proširiti korištenjem skripti u Lua, Fullmoon web framework-a i SQLite DBMS-a. Dodatne karakteristike uključuju podršku za šemu argon2 lozinke, mogućnost određivanja IP regiona koristeći MaxMind bazu podataka i pristup Unix API-ju Cosmopolitan biblioteke. Veličina osnovnog steka, koji uključuje web server, MbedTLS, Cosmopolitan, Lua i SQLite, je samo 1.9 MB.

Univerzalni izvršni fajl se formira kombinovanjem segmenata i zaglavlja specifičnih za različite operativne sisteme (PE, ELF, MACHO, OPENBSD, ZIP) u jednoj datoteci. Da bi se osiguralo da jedna izvršna datoteka radi na Windows i Unix sistemima, trik je u kodiranju Windows PE datoteka kao shell skripte, koristeći prednost činjenice da Thompson Shell ne koristi marker skripte “#!”. Rezultat je izvršna datoteka koja kombinira nekoliko različitih formata koji se koriste u Linuxu, BSD-u, Windows-u i macOS-u. $ 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) slušaj http://127.0.0.1:8080 >: čekam komandu… $ curl https://127.0.0.1:8080/hello .html hello $ printf 'GET /hello.lua\n\n' | nc 127.0.0.1 8080 zdravo



izvor: opennet.ru

Dodajte komentar