Burrow؛ یه ماشین توسعهٔ کامل توی تب مرورگر
خلاصهٔ کاملتر
Burrow خودش رو اینطور معرفی میکنه: یه ماشین توسعهٔ کامل داخل یه تب مرورگر. Bun واقعی، گیت واقعی، یه شل واقعی، پیشنمایش زندهٔ سرور و یه ایجنت کدنویسی هوش مصنوعی محلی — همه روی دستگاه خودت و داخل همون صفحه. سازندهاش، دراویا شاه، اون رو یه جایگزین متنباز و Bun-محور برای WebContainers معرفی میکنه که با لایسنس MIT منتشر شده. به گفتهٔ پروژه، هیچ بکاند و سندباکس ریموتی در کار نیست و چیزی از تب بیرون نمیره.
ترفند اصلی چیه؟ به توضیح مستندات، نمیشه Bun رو به WebAssembly کامپایل کرد چون Bun با Zig روی موتور JavaScriptCore نوشته شده و اجرای JSC داخل WASM عملی نیست. پس Burrow همون کاری رو میکنه که WebContainers میکنه: جاوااسکریپت رو روی موتور خود مرورگر اجرا میکنه و هر چیز دیگهای رو دورش مجازیسازی میکنه.
چهار قطعه این حس «ماشین واقعی» رو میسازن. اول bun.wasm، یعنی ترنسپایلر واقعی Bun که به وباسمبلی کامپایل شده و از طریق یه شیم WASI دستی اجرا میشه — یعنی فایلهای .ts و .tsx با سمانتیک اصیل Bun ترنسپایل میشن، نه یه پیادهسازی دوباره. دوم یه فایلسیستم مجازی مشترک بین ادیتور، شل، گیت، پکیجمنیجر و رانتایم که تو IndexedDB اسنپشات میشه تا با ریلود از بین نره.
سوم، وبورکرها نقش پروسه رو بازی میکنن: هر bun run یه ورکر اختصاصی بالا میاره و کد روی موتور میزبان اجرا میشه. چهارم، سرویسورکر نقش شبکه رو داره؛ چون ورکر شبکه نداره، فراخوانی Bun.serve() داخل ورکر گرفته میشه و به یه آدرس واقعی و قابلفراخوانی تو صفحه پل زده میشه، تا بتونی سرورت رو تو iframe یا تب جدید باز کنی. مسیریابی بهازای هر پورت هم هست، پس چند سرور میتونن همزمان کنار هم زندگی کنن.
از نظر امکانات، ترمینال تعاملی با تاریخچه، تکمیل خودکار، پایپ و گلاب کار میکنه؛ ادیتور روی CodeMirror 6 با درخت فایل و پنل دیف گیت سواره؛ bun install واقعاً تاربالها رو از npm میگیره، باز میکنه و node_modules میسازه و یه لاکفایل داره که نصب رو بدون هیچ درخواستی به رجیستری بازپخش میکنه. گیت هم با isomorphic-git دستورهای clone، commit، log، diff و branch رو پوشش میده.
بخشی که Burrow رو متمایز میکنه ایجنت کدنویسیشه: یه مدل کوچیک محلی (Qwen3-0.6B یا Gemma) که با transformers.js روی WebGPU اجرا میشه. وزنها یه بار دانلود میشن و استنتاج روی دستگاه خودت انجام میشه. ایجنت تو یه حلقهٔ ابزارمحور فایل میخونه، ویرایش میکنه، میسازه و دستور شل اجرا میکنه؛ میشه با @ فایلها رو وارد کانتکست کرد و هر قدمش قابلمشاهده و قابلتوقفه.
از نظر معماری، یه قاعدهٔ سفتوسخت داره: نُه ماژول پروژه هیچوقت همدیگه رو مستقیم ایمپورت نمیکنن، بلکه از طریق یه رجیستری تایپدار سرویسلوکیتور با هم حرف میزنن — هر ماژول API خودش رو زیر یه کلید ثبت میکنه و بقیه با کلید ازش استفاده میکنن. همین قاعده شرط اصلی مشارکت تو پروژه هم هست.
سازنده دربارهٔ محدودیتها روراسته: TCP خام پشتیبانی نمیشه (پس کلاینتهای پستگرس و ردیس به رله نیاز دارن)، افزونهٔ نیتیو نداره، git push و pull نداره و اسکریپتهای چرخهٔ حیات npm اجرا نمیشن. تو مقایسه با WebContainers هم میگه شرط اصلی یکیه، ولی Burrow بهجای پیادهسازی دوبارهٔ ترنسپایلر از ترنسپایلر واقعی Bun استفاده میکنه، MITه نه تجاری و انحصاری، و ایجنت محلی رو هم توی جعبه داره — در عوض پروژهای جوونه و بهمراتب کمتر کامل.
نکات کلیدی:
- کل محیط توسعه داخل تب مرورگر و روی دستگاه خود کاربر اجرا میشه
- ترنسپایلر واقعی Bun روی WebAssembly، نه یه پیادهسازی دوباره
- فایلسیستم مجازی مشترک با اسنپشات روی IndexedDB
- وبورکر بهجای پروسه و سرویسورکر بهجای لایهٔ شبکه
- ایجنت کدنویسی با مدل کوچیک محلی روی WebGPU
- لایسنس MIT در مقابل مدل تجاری WebContainers
- محدودیتهای شفاف: بدون TCP خام، بدون افزونهٔ نیتیو، بدون push و pull




