Blue؛ کامپایل جاوااسکریپت به فایل اجرایی نیتیو
خلاصهٔ کاملتر
ایدهی Blue اینه که کد جاوااسکریپت رو به یه فایل اجرایی نیتیو تبدیل کنه. اول کد رو (با کمک AST پایینآوردهشدهی Babel) به C++ ترجمه میکنه و بعد به یه باینری مستقل لینک میکنه که موقع اجرا هیچ اینترپرتری نداره. نتیجه یه فایل اجراییه که پنجرهی گرافیکی، فایلسیستم و سرور HTTP رو بدون Electron و بدون Node.js راه میندازه.
به گفتهی سازنده، Blue دو حالت داره. حالت AOT همون ترجمهی مستقیم به C++ ـه و چیزهایی مثل کلاسها، کلوژرها، وراثت پروتوتایپی و متدهای آرایه و رشته و آبجکت رو پشتیبانی میکنه؛ مناسب پنجرهی نیتیو، فایلسیستم و حلقههای حساس به کارایی. کنارش یه «جزیرهی QuickJS» اختیاری هست که ES2020+ کامل، async/await و پکیجهای npm (از طریق esbuild) رو میآره.
این دو تا بخش از طریق یه پل سبک با هم حرف میزنن: با Blue.callAot() و Blue.callIsland() میشه از یه طرف به طرف دیگه فراخوانی کرد. برای APIهای نیتیو هم چیزهایی مثل Blue.Window، Blue.Dialog، Blue.Clipboard و Blue.Process هست که پنجره، دیالوگ فایل، کلیپبورد و اجرای دستور رو در دسترس میذارن.
مثلاً یه سرور HTTP که تو جزیرهی QuickJS اجرا میشه و برای گرفتن داده به بخش AOT وصل میشه:
const http = require("http");
const server = http.createServer((req, res) => {
var note = Blue.callAot("getNote", req.url.slice(1));
res.end(note);
});
server.listen(3000);سازنده روی کارایی مانور میده و یه سری بنچمارک در برابر Node.js میذاره: زمان استارتآپ حدود ۱ میلیثانیه در مقابل ۱۰۸ میلیثانیه، مصرف حافظهی هلوورلد ۳.۸ مگابایت در مقابل ۴۸.۵ مگابایت و اندازهی باینری هلوورلد فقط ۶۰ کیلوبایت بدون نیاز به رانتایم جدا. حتی خودِ صفحهی سایتشون رو یه باینری Blue سرو میکنه.
نویسنده صادقانه محدودیتها رو هم میگه. جزیره QuickJS ـه نه Node.js، پس سازگاری npm کامل نیست؛ پکیجهای خالص جاوااسکریپت بیشتر جواب میدن، ولی چیزهایی مثل addonهای نیتیو، worker_threads، child_process و eval زمان اجرا کار نمیکنن. بیلدهای لوکال ویندوز و لینوکس هم فعلاً آزمایشیان و پیشنهاد میشه اول تو Codespaces امتحانش کنی. مجوزش هم PolyForm Small Business ـه.
نکات کلیدی:
- Blue کد جاوااسکریپت رو به C++ و بعد به یه باینری نیتیو مستقل کامپایل میکنه
- بدون Electron و بدون Node.js موقع اجرا، پنجرهی نیتیو و سرور HTTP میسازه
- دو حالت داره: AOT برای کارایی و جزیرهی QuickJS برای ES2020+ و npm
- بنچمارکها استارتآپ حدود ۱ میلیثانیه و باینری ۶۰ کیلوبایتی رو در برابر Node.js نشون میدن
- سازگاری npm کامل نیست و بیلدهای ویندوز/لینوکس هنوز آزمایشیان




