ĂshtĂ« publikuar versioni 2.0 i projektit Redbean, i cili ofron njĂ« server web qĂ« mundĂ«son dorĂ«zimin e aplikacioneve web nĂ« formĂ«n e njĂ« skedari ekzekutiv universal, i cili mund tĂ« ekzekutohet nĂ« Linux, Windows, MacOS, FreeBSD, NetBSD dhe OpenBSD. TĂ« gjitha burimet e lidhura me aplikacionin web dhe serverin janĂ« kompozuar nĂ« njĂ« skedar ekzekutiv, i cili Ă«shtĂ« gjithashtu i pajtueshĂ«m me formatin e arkivave ZIP dhe lejon pĂ«rdorimin e utilitetit zip pĂ«r tĂ« shtuar skedarĂ« shtesĂ«. MundĂ«sia e ekzekutimit tĂ« njĂ« skedari nĂ« sisteme tĂ« ndryshme operative dhe njohja e tij si njĂ« arkiv ZIP arrihet pĂ«rmes manipulimeve me titujt e skedarĂ«ve ekzekutivĂ« dhe lidhjes me bibliotekĂ«n standarde tĂ« C Cosmopolitan, shumĂ«platinum. Kodi i projektit shpĂ«rndahet nĂ«n licencĂ«n ISC.
Ideja e projektit është dorëzimi i një skedari ekzekutiv 'redbean.com' me një server web të integruar. Zhvilluesi i aplikacionit web mund të përdorë utilitetin zip për të shtuar në këtë skedar HTML dhe skedarë Lua dhe për të marrë si rezultat një aplikacion web të vetë-mjaftueshëm, i zbatueshëm në të gjitha sistemet e njohura operative dhe që nuk kërkon ekzekutimin e një serveri web të veçantë në sistem.
Pas ekzekutimit të skedarit të marrë, për t'u drejtuar në aplikacionin web të ruajtur në skedar, përdoret serveri web i integruar. Nga parazgjedhja, përpunuesi lidhet me localhost, por serveri mund të përdoret edhe si një server web publik normal (për shembull, ky server shërben faqen e internetit të projektit). Serveri web i integruar mbështet aksesin përmes HTTPS dhe mund të ekzekutohet duke përdorur izolimin sandbox, që lejon kontrollin mbi cilat ndërfaqe sistemike bëhet apel. Për të menaxhuar funksionimin e serverit gjatë ekzekutimit të tij, ofrohet një ndërfaqe interaktive REPL (e bazuar në Lua REPL dhe bibliotekën bestline, analog i GNU Readline), që ofron mundësinë për të ndryshuar gjendjen e procesit në mënyrë interaktive.
Kreu i web-serverit raportohet se është në gjendje të përpunojë më shumë se një milion kërkesa në sekondë në një PC të zakonshëm, duke ofruar përmbajtje të kompresuar me metodën gzip. Performanca e lartë ndihmohet nga fakti që zip dhe gzip përdorin një format të përbashkët, duke e lënë të dhënat të dorëzohen pa ripaketim nga zonat tashmë të kompresuara në skedarin zip. Për më tepër, pasi skedari ekzekutiv është krijuar duke përdorur lidhjen statike dhe ka një madhësi të vogël, thirrja e funksionit fork për të sjell rreth nuk ka kosto të madhe kur ndodhet në memorje.
Përveç përpunimit të përmbajtjes statike web dhe ekzekutimit të JavaScript në shfletues, logjika e aplikacionit web mund të zgjeroheshe me skripte në gjuhën Lua, web-framer Fullmoon dhe DBMS SQLite. Mes mundësive shtesë përmendim mbështetje për skemën e hashing të fjalëkalimeve argon2, mundësinë e përcaktimit të rajonit të IP-së sipas bazës MaxMind dhe qasje në librarinë Unix API të Cosmopolitan. Madhësia e stack-ut bazë, i cili përfshin web-serverin, MbedTLS, Cosmopolitan, Lua dhe SQLite, është vetëm 1.9 MB.
Skedari ekzekutiv universal formohet duke bashkuar segmente dhe tituj specifik pĂ«r sisteme tĂ« ndryshme operative (PE, ELF, MACHO, OPENBSD, ZIP) nĂ« njĂ« skedar tĂ« vetĂ«m. PĂ«r tĂ« lejuar ekzekutimin e njĂ« skedari ekzekutiv nĂ« Windows dhe sistemet Unix, aplikohet njĂ« trik, qĂ« qĂ«ndron nĂ« kodimin e skedarĂ«ve Windows PE si njĂ« skript shell, duke shfrytĂ«zuar tĂ« vĂ«rtetĂ«n qĂ« Thompson Shell nuk pĂ«rdor markerin e skriptit «#!». NĂ« rezultat krijohet njĂ« skedar ekzekutiv, nĂ« tĂ« cilin janĂ« kombinuar disa formate tĂ« ndryshme, tĂ« pĂ«rdorura nĂ« Linux, BSD, Windows dhe 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) dĂ«gjo http://127.0.0.1:8080 >: po pres pĂ«r komandĂ«n⊠$ curl https://127.0.0.1:8080/hello.html hello $ printf âGET /hello.lua\n\nâ | nc 127.0.0.1 8080 hello
Burimi: opennet.ru
