Redbean 2.0 は、ユニバーサルな実行可能 ZIP アーカイブにパッケージ化された Web アプリケーション用のプラットフォームです

Redbean 2.0 プロジェクトのリリースが発表され、Linux、Windows、MacOS、FreeBSD、NetBSD、OpenBSD で実行できるユニバーサル実行可能ファイルの形式で Web アプリケーションを配信できる Web サーバーが提供されます。 Web アプリケーションとサーバーに関連付けられたすべてのリソースは、単一の実行可能ファイルにコンパイルされます。このファイルは ZIP アーカイブ形式と互換性があり、zip ユーティリティを使用してファイルを追加できます。 XNUMX つのファイルを異なる OS 上で実行し、ZIP アーカイブとして認識させる機能は、実行可能ファイルのヘッダーを操作し、マルチプラットフォームの標準 C ライブラリ Cosmopolitan とリンクすることで実現されます。 プロジェクト コードは ISC ライセンスに基づいて配布されます。

プロジェクトのアイデアは、組み込み Web サーバーを備えた XNUMX つの実行可能ファイル「redbean.com」を提供することです。 Web アプリケーション開発者は、zip ユーティリティを使用して HTML および Lua ファイルをこのファイルに追加し、すべての一般的なオペレーティング システムで実行され、システム上で実行する別の Web サーバーを必要としない自己完結型の Web アプリケーションを取得できます。

生成された実行可能ファイルを起動した後、内蔵 Web サーバーを使用して、ファイルに保存された Web アプリケーションにアクセスします。 デフォルトでは、ハンドラーは localhost に接続されますが、サーバーは通常のパブリック Web サーバーとして使用することもできます (たとえば、このサーバーはプロジェクト Web サイトにサービスを提供します)。 内蔵 Web サーバーは HTTPS アクセスをサポートしており、サンドボックス分離を使用して実行できます。これにより、どのシステム インターフェイスにアクセスするかを制御できます。 実行中のサーバーの動作を制御するために、対話型 REPL インターフェイス (Lua REPL および GNU Readline の類似物である bestline ライブラリに基づく) が提供されており、これによりプロセスの状態を対話的に変更できるようになります。

この Web サーバーは、通常の PC 上で XNUMX 秒あたり XNUMX 万件を超えるリクエストを処理でき、gzip 圧縮されたコンテンツを提供できると言われています。 zip と gzip が共通の形式を使用しているため、zip ファイル内のすでに圧縮されている領域からデータが再パックされずに提供されるため、パフォーマンスが向上します。 さらに、実行可能ファイルは静的リンクを使用して作成され、サイズが小さいため、これに対して fork を呼び出してもメモリ オーバーヘッドはほとんど、またはまったく発生しません。

静的 Web コンテンツの処理とブラウザーでの JavaScript の実行に加えて、Lua、Fullmoon Web フレームワーク、および SQLite DBMS のスクリプトを使用して Web アプリケーション ロジックを拡張できます。 追加機能には、argon2 パスワード ハッシュ スキームのサポート、MaxMind データベースを使用して IP 領域を決定する機能、Cosmopolitan ライブラリの Unix API へのアクセスなどがあります。 Web サーバー、MbedTLS、Cosmopolitan、Lua、SQLite を含む基本スタックのサイズはわずか 1.9 MB です。

ユニバーサル実行可能ファイルは、さまざまなオペレーティング システム (PE、ELF、MACHO、OPENBSD、ZIP) に固有のセグメントとヘッダーを 2.0.7 つのファイルに結合することによって形成されます。 単一の実行可能ファイルを Windows および Unix システムで確実に実行するには、Thompson Shell が「#!」スクリプト マーカーを使用しないという事実を利用して、Windows PE ファイルをシェル スクリプトとしてエンコードするという方法があります。 その結果、Linux、BSD、Windows、macOS で使用されるいくつかの異なる形式を組み合わせた実行可能ファイルが作成されます。 $カール https://redbean.dev/redbean-demo-2022.com >redbean.com $ chmod +x redbean.com $ zip redbean.com hello.html $ zip redbean.com hello.lua $ ./redbean .com -vv I06-23-08T27:14:000767+127.0.0.1:redbean] (srvr) listen http://8080:127.0.0.1 >: コマンドを待っています… $curl https://8080:127.0.0.1/hello .html hello $ printf 'GET /hello.lua\n\n' | NC 8080 XNUMX こんにちは



出所: オープンネット.ru

コメントを追加します