Redbean 2.0 adalah platform untuk aplikasi web yang dikemas dalam arsip ZIP universal yang dapat dieksekusi

Rilis proyek Redbean 2.0 dihadirkan, menawarkan server web yang memungkinkan Anda mengirimkan aplikasi web dalam bentuk file universal yang dapat dieksekusi yang dapat dijalankan di Linux, Windows, MacOS, FreeBSD, NetBSD, dan OpenBSD. Semua sumber daya yang terkait dengan aplikasi web dan server dikompilasi menjadi satu file yang dapat dieksekusi, yang kompatibel dengan format arsip ZIP dan memungkinkan Anda menggunakan utilitas zip untuk menambahkan file tambahan. Kemampuan untuk menjalankan satu file pada OS yang berbeda dan mengenalinya sebagai arsip ZIP dicapai dengan memanipulasi header file yang dapat dieksekusi dan menghubungkannya dengan perpustakaan C standar multi-platform Cosmopolitan. Kode proyek didistribusikan di bawah lisensi ISC.

Ide dari proyek ini adalah untuk menyediakan satu file yang dapat dieksekusi β€œredbean.com” dengan server web bawaan. Pengembang aplikasi web dapat menggunakan utilitas zip untuk menambahkan file HTML dan Lua ke file ini dan mendapatkan aplikasi web mandiri yang berjalan di semua sistem operasi populer dan tidak memerlukan server web terpisah untuk berjalan di sistem.

Setelah meluncurkan file eksekusi yang dihasilkan, server web internal digunakan untuk mengakses aplikasi web yang disimpan dalam file tersebut. Secara default, handler terpasang ke localhost, namun server juga dapat digunakan sebagai server web publik biasa (misalnya, server ini melayani situs web proyek). Server Web internal mendukung akses HTTPS dan dapat dijalankan menggunakan isolasi kotak pasir, yang memungkinkan Anda mengontrol antarmuka sistem mana yang diakses. Untuk mengontrol pengoperasian server selama eksekusinya, antarmuka REPL interaktif disediakan (berdasarkan Lua REPL dan perpustakaan bestline, analog dari GNU Readline), yang memungkinkan untuk mengubah keadaan proses secara interaktif.

Server web ini diklaim mampu memproses lebih dari satu juta permintaan per detik pada PC biasa, menyajikan konten yang dikompresi gzip. Yang membantu kinerja adalah zip dan gzip menggunakan format umum, sehingga data disajikan tanpa dikemas ulang dari area yang sudah dikompresi di file zip. Selain itu, karena executable dibuat menggunakan tautan statis dan berukuran kecil, pemanggilan fork di dalamnya menimbulkan sedikit atau bahkan tidak ada overhead memori.

Selain memproses konten web statis dan menjalankan JavaScript di browser, logika aplikasi web dapat diperluas menggunakan skrip di Lua, kerangka web Fullmoon, dan DBMS SQLite. Fitur tambahan termasuk dukungan untuk skema hashing kata sandi argon2, kemampuan untuk menentukan wilayah IP menggunakan database MaxMind, dan akses ke API Unix dari perpustakaan Cosmopolitan. Ukuran tumpukan dasar, yang mencakup server web, MbedTLS, Cosmopolitan, Lua dan SQLite, hanya 1.9 MB.

File universal yang dapat dieksekusi dibentuk dengan menggabungkan segmen dan header khusus untuk sistem operasi yang berbeda (PE, ELF, MACHO, OPENBSD, ZIP) dalam satu file. Untuk memastikan bahwa satu file yang dapat dieksekusi berjalan pada sistem Windows dan Unix, triknya adalah dengan menyandikan file Windows PE sebagai skrip shell, dengan memanfaatkan fakta bahwa Thompson Shell tidak menggunakan penanda skrip β€œ#!”. Hasilnya adalah file yang dapat dieksekusi yang menggabungkan beberapa format berbeda yang digunakan di Linux, BSD, Windows dan 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) dengarkan http://127.0.0.1:8080 >: menunggu perintah… $ curl https://127.0.0.1:8080/hello .html halo $ printf 'DAPATKAN /hello.lua\n\n' | nc 127.0.0.1 8080 halo



Sumber: opennet.ru

Tambah komentar