Redbean 2.0 — ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ исполняСмый ZIP-Π°Ρ€Ρ…ΠΈΠ²

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ выпуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Redbean 2.0, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰Π΅Π³ΠΎ web-сСрвСр, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ web-прилоТСния Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ исполняСмого Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π² Linux, Windows, MacOS, FreeBSD, NetBSD ΠΈ OpenBSD. ВсС связанныС с web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ сСрвСром рСсурсы ΠΊΠΎΠΌΠΏΠΎΠ½ΡƒΡŽΡ‚ΡΡ Π² ΠΎΠ΄ΠΈΠ½ исполняСмый Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ этом совмСстим с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ² ZIP ΠΈ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ zip для добавлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ запуска ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² Ρ€Π°Π·Π½Ρ‹Ρ… ОБ ΠΈ Π΅Π³ΠΎ распознаниС ΠΊΠ°ΠΊ ZIP-Π°Ρ€Ρ…ΠΈΠ²Π° достигаСтся благодаря манипуляциям с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ связываниСм с ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠΉ стандартной Π‘ΠΈ-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Cosmopolitan. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ ISC.

ИдСя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² поставкС ΠΎΠ΄Π½ΠΎΠ³ΠΎ исполняСмого Ρ„Π°ΠΉΠ»Π° «redbean.com» со встроСнным web-сСрвСром. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ web-прилоТСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ zip Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² этот Ρ„Π°ΠΉΠ» HTML ΠΈ Lua-Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ самодостаточноС web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, выполняСмого Π²ΠΎ всСх популярных ОБ ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅Π³ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ запуска Π² систСмС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ web-сСрвСра.

ПослС запуска ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ исполняСмого Ρ„Π°ΠΉΠ»Π°, для обращСния ΠΊ сохранённому Π² Ρ„Π°ΠΉΠ»Π΅ web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ встроСнный web-сСрвСр. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ прикрСпляСтся ΠΊ localhost, Π½ΠΎ сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΈ Π² качСствС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ web-сСрвСра (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π°Π½Π½Ρ‹ΠΉ сСрвСр обслуТиваСт сайт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°). ВстроСнный Web-сСрвСр ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎ HTTPS ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ с использованиСм sandbox-изоляции, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ систСмным интСрфСйсам производится ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅. Для управлСния Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ сСрвСра Π²ΠΎ врСмя Π΅Π³ΠΎ выполнСния прСдоставляСтся ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ интСрфСйс REPL (Π½Π° Π±Π°Π·Π΅ Lua REPL ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ bestline, Π°Π½Π°Π»ΠΎΠ³Π° GNU Readline), Π΄Π°ΡŽΡ‰ΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ состояниС процСсса Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

УтвСрТдаСтся, Ρ‡Ρ‚ΠΎ web-сСрвСр способСн ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° запросов Π² сСкунду Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ПК, отдавая ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, сТатый ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ gzip. Высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ способствуСт Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ zip ΠΈ gzip ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, поэтому Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Π΄Π°ΡŽΡ‚ΡΡ Π±Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈΠ· ΡƒΠΆΠ΅ сТатых областСй Π² zip-Ρ„Π°ΠΉΠ»Π΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ исполняСмый Ρ„Π°ΠΉΠ» создан с использованиСм статичСского связывания ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ нСбольшой Ρ€Π°Π·ΠΌΠ΅Ρ€, Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fork для Π½Π΅Π³ΠΎ практичСски Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹ΠΌ расходам ΠΏΡ€ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π² памяти.

Помимо ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ статичСского web-ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΈ выполнСния JavaScript Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, Π»ΠΎΠ³ΠΈΠΊΠ° web-прилоТСния ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ скриптов Π½Π° языкС Lua, web-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Fullmoon ΠΈ Π‘Π£Π‘Π” SQLite. Π‘Ρ€Π΅Π΄ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй отмСчаСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° схСмы Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ argon2, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ опрСдСлСния Ρ€Π΅Π³ΠΈΠΎΠ½Π° IP ΠΏΠΎ Π±Π°Π·Π΅ MaxMind ΠΈ доступ ΠΊ Unix API Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Cosmopolitan. Π Π°Π·ΠΌΠ΅Ρ€ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ стСка, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ web-сСрвСр, MbedTLS, Cosmopolitan, Lua ΠΈ SQLite, составляСт всСго 1.9 ΠœΠ‘.

Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ» формируСтся ΠΏΡƒΡ‚Ρ‘ΠΌ совмСщСния спСцифичных для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм сСгмСнтов ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² (PE, ELF, MACHO, OPENBSD, ZIP) Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. Для обСспСчСния запуска ΠΎΠ΄Π½ΠΎΠ³ΠΎ исполняСмого Ρ„Π°ΠΉΠ»Π° Π² Windows ΠΈ Unix-систСмах примСняСтся Ρ‚Ρ€ΡŽΠΊ, ΡΡƒΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Windows PE Π² Π²ΠΈΠ΄Π΅ shell-скрипта, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Thompson Shell Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ скриптов «#!». Π’ ΠΈΡ‚ΠΎΠ³Π΅ создаётся исполняСмый Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ скомбинировано нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Linux, BSD, Windows ΠΈ 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) listen http://127.0.0.1:8080 >: waiting for command… $ curl https://127.0.0.1:8080/hello.html hello $ printf ‘GET /hello.lua\n\n’ | nc 127.0.0.1 8080 hello



Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ