Redbean 2.0 hija pjattaforma għall-applikazzjonijiet tal-web ippakkjati f'arkivju ZIP universali eżekutibbli

Ir-rilaxx tal-proġett Redbean 2.0 huwa ppreżentat, li joffri web server li jippermettilek li twassal applikazzjonijiet tal-web fil-forma ta 'fajl eżekutibbli universali li jista' jiġi eżegwit fuq Linux, Windows, MacOS, FreeBSD, NetBSD u OpenBSD. Ir-riżorsi kollha assoċjati mal-applikazzjoni tal-web u s-server huma kkompilati f'fajl eżekutibbli wieħed, li huwa kompatibbli mal-format tal-arkivju ZIP u jippermettilek tuża l-utilità zip biex iżżid fajls addizzjonali. Il-ħila li tħaddem fajl wieħed fuq OSs differenti u li tkun rikonoxxuta bħala arkivju ZIP tinkiseb billi timmanipula l-headers tal-fajls eżekutibbli u tgħaqqad mal-librerija C standard multi-pjattaforma Cosmopolitan. Il-kodiċi tal-proġett huwa mqassam taħt il-liċenzja ISC.

L-idea tal-proġett hija li tipprovdi fajl eżekutibbli wieħed "redbean.com" b'server tal-web inkorporat. Żviluppatur tal-applikazzjoni tal-web jista 'juża l-utilità zip biex iżid fajls HTML u Lua ma' dan il-fajl u jikseb applikazzjoni tal-web awtonoma li taħdem fuq is-sistemi operattivi popolari kollha u ma teħtieġx server tal-web separat biex jaħdem fuq is-sistema.

Wara li tniedi l-fajl eżekutibbli li jirriżulta, is-server tal-web inkorporat jintuża biex jaċċessa l-applikazzjoni tal-web salvata fil-fajl. B'mod awtomatiku, il-handler huwa mehmuż ma' localhost, iżda s-server jista 'jintuża wkoll bħala server tal-web pubbliku regolari (per eżempju, dan is-server iservi l-websajt tal-proġett). Is-server tal-Web inkorporat jappoġġja l-aċċess HTTPS u jista 'jiġi eżegwit bl-użu ta' iżolament ta 'sandbox, li jippermettilek tikkontrolla liema interfaces tas-sistema jiġu aċċessati. Biex tikkontrolla l-operat tas-server waqt l-eżekuzzjoni tiegħu, hija pprovduta interface REPL interattiva (ibbażata fuq il-Lua REPL u l-librerija bestline, analogu ta 'GNU Readline), li jagħmilha possibbli li l-istat tal-proċess jinbidel b'mod interattiv.

Huwa ddikjarat li s-server tal-web huwa kapaċi jipproċessa aktar minn miljun talba kull sekonda fuq PC regolari, li jservi kontenut kompressat b'gzip. Dak li jgħin fil-prestazzjoni huwa li zip u gzip jużaw format komuni, u għalhekk id-dejta tiġi moqdija mingħajr ma tiġi ppakkjata mill-ġdid minn żoni diġà kkompressati fil-fajl zip. Barra minn hekk, peress li l-eżekutibbli huwa maħluq bl-użu ta 'linking statiku u huwa żgħir fid-daqs, is-sejħa furketta fuqha tintroduċi ftit jew xejn overhead tal-memorja.

Minbarra l-ipproċessar tal-kontenut tal-web statiku u l-eżekuzzjoni ta 'JavaScript fil-browser, il-loġika tal-applikazzjoni tal-web tista' tiġi estiża bl-użu ta 'skripts fil-Lua, il-qafas tal-web Fullmoon u l-DBMS SQLite. Karatteristiċi addizzjonali jinkludu appoġġ għall-iskema tal-hashing tal-password argon2, il-kapaċità li tiddetermina r-reġjun tal-IP bl-użu tad-database MaxMind, u aċċess għall-API Unix tal-librerija Cosmopolitan. Id-daqs tal-munzell bażiku, li jinkludi web server, MbedTLS, Cosmopolitan, Lua u SQLite, huwa biss 1.9 MB.

Fajl eżekutibbli universali huwa ffurmat billi tgħaqqad segmenti u headers speċifiċi għal sistemi operattivi differenti (PE, ELF, MACHO, OPENBSD, ZIP) f'fajl wieħed. Biex jiġi żgurat li fajl eżekutibbli wieħed jaħdem fuq sistemi Windows u Unix, trick huwa li tikkodifika fajls Windows PE bħala script shell, filwaqt li tieħu vantaġġ mill-fatt li Thompson Shell ma jużax il-markatur tal-iskript “#!”. Ir-riżultat huwa fajl eżekutibbli li jgħaqqad diversi formati differenti użati fil-Linux, BSD, Windows u 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) isma http://127.0.0.1:8080 >: stennija għall-kmand... $ curl https://127.0.0.1:8080/hello .html hello $ printf 'GET /hello.lua\n\n' | nc 127.0.0.1 8080 hello



Sors: opennet.ru

Żid kumment