Redbean 2.0 estas platformo por TTT-aplikoj pakitaj en universala plenumebla ZIP-arkivo

La eldono de la projekto Redbean 2.0 estas prezentita, proponante retservilon, kiu ebligas al vi liveri TTT-aplikaĵojn en la formo de universala plenumebla dosiero, kiu povas esti efektivigita en Linukso, Vindozo, MacOS, FreeBSD, NetBSD kaj OpenBSD. Ĉiuj rimedoj asociitaj kun la TTT-aplikaĵo kaj servilo estas kompilitaj en ununuran ruleblan dosieron, kiu kongruas kun la ZIP-arkiva formato kaj permesas vin uzi la zip-ilaĵon por aldoni pliajn dosierojn. La kapablo ruli unu dosieron sur malsamaj OS-oj kaj rekoni ĝin kiel ZIP-arkivon estas atingita manipulante ruleblajn dosierkapojn kaj ligante kun la plurplatforma norma C-biblioteko Cosmopolitan. La projektkodo estas distribuita sub la ISC-licenco.

La ideo de la projekto estas provizi unu plenumeblan dosieron "redbean.com" kun enkonstruita retservilo. Programisto de TTT-apliko povas uzi la zip-ilaĵon por aldoni HTML kaj Lua-dosierojn al ĉi tiu dosiero kaj akiri memstaran TTT-aplikaĵon kiu funkcias per ĉiuj popularaj operaciumoj kaj ne postulas apartan retservilon por funkcii en la sistemo.

Post lanĉo de la rezulta rulebla dosiero, la enkonstruita retservilo estas uzata por aliri la retejon konservitan en la dosiero. Defaŭlte, la prizorganto estas ligita al localhost, sed la servilo ankaŭ povas esti uzata kiel kutima publika retservilo (ekzemple, ĉi tiu servilo servas la retejon de la projekto). La enkonstruita TTT-servilo subtenas HTTPS-aliron kaj povas esti efektivigita per izolado de sablokesto, kiu ebligas al vi kontroli, kiuj sistemaj interfacoj estas alireblaj. Por kontroli la funkciadon de la servilo dum ĝia ekzekuto, estas disponigita interaga REPL-interfaco (bazita sur la Lua REPL kaj la bestline-biblioteko, analogo de GNU Readline), kiu ebligas ŝanĝi la staton de la procezo interage.

Oni asertas, ke la retservilo kapablas prilabori pli ol milionon da petoj sekundo sur regula komputilo, servante gzip-kunpremitan enhavon. Kio helpas agadon estas, ke zip kaj gzip uzas komunan formaton, do datumoj estas servataj sen esti repakitaj el jam kunpremitaj areoj en la zip-dosiero. Aldone, ĉar la ruleblaĵo estas kreita per senmova ligo kaj estas malgranda en grandeco, voki forkon sur ĝi enkondukas malmulte al neniu memoro superkompeto.

Krom prilaborado de senmova retenhavo kaj ekzekuto de JavaScript en la retumilo, la retaplikaĵa logiko povas esti vastigita uzante skriptojn en Lua, la Fullmoon-retkadro kaj la SQLite DBMS. Kromaj funkcioj inkluzivas subtenon por la argon2-pasvorta hashskemo, la kapablon determini la IP-regionon uzante la MaxMind-datumbazon, kaj aliron al la Unikso-similaj API de la Cosmopolitan biblioteko. La grandeco de la baza stako, kiu inkluzivas retservilon, MbedTLS, Cosmopolitan, Lua kaj SQLite, estas nur 1.9 MB.

Universala rulebla dosiero estas formita kombinante segmentojn kaj titolojn specifajn por malsamaj operaciumoj (PE, ELF, MACHO, OPENBSD, ZIP) en unu dosiero. Por certigi, ke unuopa rulebla dosiero funkcias en Vindozo kaj Unikso-sistemoj, lertaĵo estas kodi Windows PE-dosierojn kiel ŝel-skripton, profitante la fakton, ke Thompson Shell ne uzas la "#!"-skripto-signon. La rezulto estas rulebla dosiero, kiu kombinas plurajn malsamajn formatojn uzatajn en Linukso, BSD, Vindozo kaj macOS. $ buklo 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) aŭskultu http://127.0.0.1:8080 >: atendante komandon... $ curl https://127.0.0.1:8080/hello .html saluton $ printf 'GET /saluton.lua\n\n' | nc 127.0.0.1 8080 saluton



fonto: opennet.ru

Aldoni komenton