پرش به محتوای اصلی
پرش به محتوای مقاله

کامپایلر Goeteia سرعت بازسازی کدهای Scheme در مرورگر را به ۱۵ میلی‌ثانیه رساند

·۲۱ تیر ۱۴۰۵۳ دقیقه مطالعه۲ بازدید
صفحه‌ای از کتاب گوئتیا که خودبه‌خود در حال تدوین است.
صفحه‌ای از کتاب گوئتیا که خودبه‌خود در حال تدوین است.
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

تولید یک کامپایلر Scheme کاملاً میزبانی‌شده (Self-hosting) که هدفش Wasm GC است و سرعت بازسازی کد را در مرورگر به ۱۵ میلی‌ثانیه می‌رساند؛ در حالی که پیش از این چنین سرعت‌هایی تنها در محیط‌های Native محلی ممکن بود.

تصور کنید بتوانید یک زبان برنامه‌نویسی کامل را در محیط مرورگر اجرا کنید و هر تغییری را در کمتر از یک پلک زدن، بدون نیاز به سرور، بازبینی نمایید. این تجربه اکنون با سرعت بازسازی ۱۵ میلی‌ثانیه‌ای در دسترس است.

در حالی که اکثر زبان‌های مبتنی بر وب برای پردازش به سرورهای خارجی متکی هستند، 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+ یا نسخه‌های جدید کروم، فایرفاکس و سافاری استفاده می‌کنید، ماژول‌های کامپایل‌شده را مستقیماً اجرا نمایید.

اما داستان سخت‌افزاری این تحول در سطح مرورگر تنها بخشی از ماجراست؛ برای درک لایه‌های عمیق‌تر اجرای کد، تحلیل ما درباره‌ی معماری‌های بدون سرور را بخوانید.

چرا این موضوع مهم است؟

این دستاورد با تکیه بر تخصص در مهندسی کامپایلر، اثبات می‌کند که می‌توان انعطاف‌پذیری زبان‌های دینامیک را بدون هزینه پردازشی زیاد در وب داشت. این موضوع باعث می‌شود ابزارهای توسعه زنده (Live Dev Tools) از حالت شبیه‌سازی به حالت اجرای واقعی و بومی تغییر کنند.

تأثیر برای ایران

این ابزار به دلیل متن‌باز بودن و اجرای کامل در مرورگر، بدون محدودیت API یا تحریم برای توسعه‌دهندگان ایرانی قابل استفاده است و فرصتی برای پژوهش در حوزه بهینه‌سازی کامپایلرها فراهم می‌کند.

·نگاه ما
تحریریه دات‌هوش

تکیه بر Native Wasm GC نشان می‌دهد که دوران وابستگی زبان‌های سطح بالا به لایه‌های مدیریت حافظه جاوا اسکریپت رو به پایان است. Goeteia با اثبات اینکه یک کامپایلر میزبانی شخصی می‌تواند در ۷۰ کیلوبایت جای بگیرد، استدلال‌های رایج درباره سنگین بودن Runtimeهای Lisp را به چالش می‌کشد. این رویکرد احتمالاً مسیر را برای زبان‌های تخصصی‌تر در وب هموار می‌کند.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.