تصور کنید بتوانید یک زبان برنامهنویسی کامل را در محیط مرورگر اجرا کنید و هر تغییری را در کمتر از یک پلک زدن، بدون نیاز به سرور، بازبینی نمایید. این تجربه اکنون با سرعت بازسازی ۱۵ میلیثانیهای در دسترس است.
در حالی که اکثر زبانهای مبتنی بر وب برای پردازش به سرورهای خارجی متکی هستند، Goeteia طبق اعلام تیم توسعهدهنده، این رکورد سرعت را ثبت کرده است. این کامپایلر میزبانی شخصی (Self-Hosting) — شبیه به آشپزی که دستور پخت خودش را همزمان با غذا مینویسد — تماماً از طریق WebAssembly (Wasm) در مرورگر اجرا میشود؛ قابلیتی که در ۱۲ ژوئیه ۲۰۲۶ به نمایش گذاشته شد. این کارایی در بنچمارکهای آن مشهود است، جایی که یک حلقه با ۱۰۰ میلیون تکرار را تقریباً در ۱۵۰ میلیثانیه اجرا میکند.
همانطور که در تحلیلهای پیشین ما دربارهی بهینهسازیهای سطح پایین در وب اشاره کردیم، حذف لایههای واسط کلید دسترسی به سختافزار است. Goeteia این الگو را با جایگزینی بستههای سنگین جاوا اسکریپت با یک فایل ۷۰ کیلوبایتی (gzipped) در حافظه پنهان مرورگر میشکند. بر اساس مستندات فنی goeteia.dev، این معماری امکان «خود-کامپایل» زنده را فراهم میکند تا پلی مستقیم میان منطق سطح بالای Lisp و اجرای سختافزاری ایجاد شود. این رویکرد در تحلیل ساختار کد، شباهت زیادی به متدهای پیشرفتهی تجزیه درخت نحو انتزاعی دارد که ابزارهایی مانند Onboard CLI برای بصریسازی معماری پروژهها و جلوگیری از نفوذ کد از آن بهره میبرند.
این سامانه از چندین ویژگی پیشرفته Wasm بهره میبرد:
- Native Wasm GC: استفاده از i31refs برای اعداد صحیح و ساختارهای GC برای رکوردها، که نیاز به مدیریت حافظه موازی در جاوا اسکریپت را حذف میکند.
- میزبانی شخصی (Self-Hosting): کامپایلر با همان زیرمجموعه Scheme نوشته شده که کامپایل میکند و خروجی آن در هر تغییر توسط CI تأیید میشود.
- بهینهسازی فراخوانی دنباله (Tail Call Optimization): هر فراخوانی دنباله به صورت
return_callاجرا میشود تا پشته (Stack) در بازگشتهای عمیق ثابت بماند. - برج عددی (Numeric Tower): پشتیبانی کامل از اعداد صحیح، اعداد بزرگ، اعداد اعشاری و مختلط با استاندارد IEEE-754.
برای توسعهدهندگان، کاربردیترین بخش این پروژه پشتهٔ واکنشی (web sx) است. این ساختار اجازه میدهد سیگنالهای دقیق تعریف شوند و رابط مستقیم FFI با میزبان برقرار شود. جالب این است که پروژه این قابلیت را به گرافیک سهبعدی از طریق (web three) و (web gl) گسترانده است؛ جایی که شیدرها به صورت s-expressions نوشته شده و در هر فریم تنها با یک فراخوانی رندر میشوند.
این معماری این فرض را که انعطافپذیری زبانهای Lisp نیاز به محیط اجرای (Runtime) سنگین دارد، به کلی تغییر میدهد. با هدفگذاری Wasm GC، Goeteia ثابت میکند ویژگیهای سطح بالایی مثل تداومها (Continuations) و ماکروهای بهداشتی (Hygienic Macros) میتوانند بسیار سبک باشند. در واقع، مرورگر به یک محیط توسعه درجهیک تبدیل شده که مرز بین کد منبع و باینری در آن از بین میرود.
گام بعدی شما
- مخزن GitHub پروژه را کلون کرده و اسکریپت
build-self.shرا برای تجربه بازسازی کامپایلر با خودش اجرا کنید. - اگر از Node 22+ یا نسخههای جدید کروم، فایرفاکس و سافاری استفاده میکنید، ماژولهای کامپایلشده را مستقیماً اجرا نمایید.
اما داستان سختافزاری این تحول در سطح مرورگر تنها بخشی از ماجراست؛ برای درک لایههای عمیقتر اجرای کد، تحلیل ما دربارهی معماریهای بدون سرور را بخوانید.




گفتگو