Ang Redbean 2.0 usa ka plataporma alang sa mga aplikasyon sa web nga giputos sa usa ka universal executable ZIP archive

Gipresentar ang pagpagawas sa proyekto sa Redbean 2.0, nga nagtanyag sa usa ka web server nga nagtugot kanimo sa paghatud sa mga aplikasyon sa web sa porma sa usa ka unibersal nga executable file nga mahimong ipatuman sa Linux, Windows, MacOS, FreeBSD, NetBSD ug OpenBSD. Ang tanan nga mga kapanguhaan nga may kalabutan sa web application ug server gihugpong sa usa ka executable file, nga nahiuyon sa ZIP archive format ug nagtugot kanimo sa paggamit sa zip utility aron makadugang og dugang nga mga file. Ang abilidad sa pagpadagan sa usa ka file sa lain-laing mga OS ug pag-ila niini isip ZIP archive makab-ot pinaagi sa pagmaniobra sa mga executable file header ug pagsumpay sa multi-platform standard C library Cosmopolitan. Ang code sa proyekto giapod-apod ubos sa lisensya sa ISC.

Ang ideya sa proyekto mao ang paghatag usa ka executable file nga "redbean.com" nga adunay built-in nga web server. Mahimong gamiton sa developer sa web application ang zip utility aron idugang ang HTML ug Lua nga mga file niini nga file ug makakuha og self-contained nga web application nga modagan sa tanang sikat nga operating system ug wala magkinahanglan og separado nga web server nga modagan sa sistema.

Human sa paglansad sa resulta nga executable file, ang built-in nga web server gigamit sa pag-access sa web application nga gitipigan sa file. Sa kasagaran, ang handler gilakip sa localhost, apan ang server mahimo usab nga gamiton isip usa ka regular nga publikong web server (pananglitan, kini nga server nagsilbi sa website sa proyekto). Gisuportahan sa built-in nga Web server ang pag-access sa HTTPS ug mahimong ipatuman gamit ang sandbox isolation, nga nagtugot kanimo nga makontrol kung unsang mga interface sa sistema ang ma-access. Aron makontrol ang operasyon sa server sa panahon sa pagpatuman niini, usa ka interactive nga interface sa REPL ang gihatag (base sa Lua REPL ug ang bestline library, usa ka analogue sa GNU Readline), nga nagpaposible sa pagbag-o sa kahimtang sa proseso nga interactive.

Giangkon nga ang web server makahimo sa pagproseso sa labaw sa usa ka milyon nga mga hangyo matag segundo sa usa ka regular nga PC, nga nag-alagad sa gzip-compressed content. Unsa ang makatabang sa performance mao nga ang zip ug gzip naggamit sa usa ka komon nga format, mao nga ang data gisilbi nga walay pag-repack gikan sa na-compress nga mga lugar sa zip file. Dugang pa, tungod kay ang executable gihimo gamit ang static nga pag-link ug gamay ang gidak-on, ang pagtawag sa tinidor niini nagpaila nga gamay o wala’y memorya sa ibabaw.

Dugang sa pagproseso sa static nga web content ug pag-execute sa JavaScript sa browser, ang web application logic mahimong mapalapdan gamit ang mga script sa Lua, ang Fullmoon web framework ug ang SQLite DBMS. Ang dugang nga mga bahin naglakip sa suporta alang sa argon2 password hashing scheme, ang abilidad sa pagtino sa IP nga rehiyon gamit ang MaxMind database, ug pag-access sa Unix API sa Cosmopolitan library. Ang gidak-on sa batakang stack, nga naglakip sa web server, MbedTLS, Cosmopolitan, Lua ug SQLite, 1.9 MB lang.

Usa ka unibersal nga executable nga file naporma pinaagi sa paghiusa sa mga bahin ug mga ulohan nga espesipiko sa lainlaing mga operating system (PE, ELF, MACHO, OPENBSD, ZIP) sa usa ka file. Aron maseguro nga ang usa ka executable file modagan sa Windows ug Unix system, usa ka lansis mao ang pag-encode sa Windows PE files isip shell script, nga nagpahimulos sa kamatuoran nga ang Thompson Shell wala mogamit sa β€œ#!” script marker. Ang resulta usa ka executable file nga naghiusa sa daghang lain-laing mga format nga gigamit sa Linux, BSD, Windows ug 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) paminaw http://127.0.0.1:8080 >: naghulat sa sugo… $ curl https://127.0.0.1:8080/hello .html hello $ printf 'GET /hello.lua\n\n' | nc 127.0.0.1 8080 kumusta



Source: opennet.ru

Idugang sa usa ka comment