Redbean 2.0 është një platformë për aplikacione në ueb të paketuara në një arkiv universal ZIP të ekzekutueshëm

Prezantohet publikimi i projektit Redbean 2.0, duke ofruar një server në internet që ju lejon të dorëzoni aplikacione në internet në formën e një skedari të ekzekutueshëm universal që mund të ekzekutohet në Linux, Windows, MacOS, FreeBSD, NetBSD dhe OpenBSD. Të gjitha burimet që lidhen me aplikacionin në internet dhe serverin përpilohen në një skedar të vetëm të ekzekutueshëm, i cili është i pajtueshëm me formatin e arkivit ZIP dhe ju lejon të përdorni mjetin zip për të shtuar skedarë shtesë. Aftësia për të ekzekutuar një skedar në OS të ndryshëm dhe për ta njohur atë si një arkiv ZIP arrihet duke manipuluar titujt e skedarëve të ekzekutueshëm dhe duke u lidhur me bibliotekën C Cosmopolitan standarde me shumë platforma. Kodi i projektit shpërndahet nën licencën ISC.

Ideja e projektit është të furnizojë një skedar të ekzekutueshëm "redbean.com" me një server të integruar në internet. Një zhvillues i aplikacionit në ueb mund të përdorë mjetin zip për të shtuar skedarë HTML dhe Lua në këtë skedar dhe për të marrë një aplikacion uebi të pavarur që funksionon në të gjitha sistemet operative të njohura dhe nuk kërkon një server të veçantë ueb për të ekzekutuar në sistem.

Pas nisjes së skedarit të ekzekutueshëm që rezulton, serveri i integruar i uebit përdoret për të hyrë në aplikacionin ueb të ruajtur në skedar. Si parazgjedhje, mbajtësi është i bashkangjitur me localhost, por serveri mund të përdoret gjithashtu si një server i rregullt në internet publik (për shembull, ky server shërben në faqen e internetit të projektit). Serveri i integruar i uebit mbështet aksesin HTTPS dhe mund të ekzekutohet duke përdorur izolimin e sandbox, i cili ju lejon të kontrolloni se cilat ndërfaqe të sistemit aksesohen. Për të kontrolluar funksionimin e serverit gjatë ekzekutimit të tij, ofrohet një ndërfaqe interaktive REPL (bazuar në Lua REPL dhe bibliotekën bestline, një analog i GNU Readline), i cili bën të mundur ndryshimin e gjendjes së procesit në mënyrë interaktive.

Pretendohet se serveri në internet është i aftë të përpunojë më shumë se një milion kërkesa në sekondë në një kompjuter të rregullt, duke shërbyer përmbajtje të kompresuar me gzip. Ajo që ndihmon performancën është se zip dhe gzip përdorin një format të përbashkët, kështu që të dhënat shërbehen pa u ripaketuar nga zona tashmë të ngjeshura në skedarin zip. Për më tepër, duke qenë se ekzekutuesi është krijuar duke përdorur lidhje statike dhe është në madhësi të vogël, thirrja e fork në të sjell pak ose aspak ngarkesë memorie.

Përveç përpunimit të përmbajtjes statike të uebit dhe ekzekutimit të JavaScript në shfletues, logjika e aplikacionit në ueb mund të zgjerohet duke përdorur skriptet në Lua, kornizën e internetit Fullmoon dhe SQLite DBMS. Veçoritë shtesë përfshijnë mbështetjen për skemën e hashimit të fjalëkalimit argon2, aftësinë për të përcaktuar rajonin IP duke përdorur bazën e të dhënave MaxMind dhe akses në Unix API të bibliotekës Cosmopolitan. Madhësia e grupit bazë, i cili përfshin një server në internet, MbedTLS, Cosmopolitan, Lua dhe SQLite, është vetëm 1.9 MB.

Një skedar universal i ekzekutueshëm formohet duke kombinuar segmente dhe tituj specifikë për sisteme të ndryshme operative (PE, ELF, MACHO, OPENBSD, ZIP) në një skedar. Për të siguruar që një skedar i vetëm i ekzekutueshëm të funksionojë në sistemet Windows dhe Unix, një mashtrim është të kodoni skedarët e Windows PE si një skript shell, duke përfituar nga fakti se Thompson Shell nuk përdor shënuesin e skriptit "#!". Rezultati është një skedar i ekzekutueshëm që kombinon 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 >: në pritje të komandës… $ curl https://127.0.0.1:8080/hello .html përshëndetje $ printf 'MERRNI /hello.lua\n\n' | nc 127.0.0.1 8080 përshëndetje



Burimi: opennet.ru

Shto një koment