نمای کلی اجرایی و اهمیت معماری
نسخه 1.3.1 بن (Bun) بهعنوان یک نسخه قدرتمند در چرخه حیات این ران تایم عرضه شده است که به ۱۰۳ مشکل گزارششده پاسخ میدهد و ۱۷۲ رأی مثبت از سوی توسعهدهندگان در سراسر جهان را شامل میشود. این انتشار بر صیقل دادن ساختاری تمرکز دارد و نقاط اصطکاک کلیدی در زیرسیستمهای باندلر (bundler)، ترنسپایلر، اجراکننده تست و مدیر پکیج را هدف قرار میدهد. تیم مهندسی با اولویتبندی گلوگاههای عملکردی هدفمند — بهویژه در فایلسیستمهای مبتنی بر یونیکس و درختهای وابستگی پیچیده — به پویایی خود در تثبیت جایگاه Bun بهعنوان یک جایگزین با عملکرد بالا و بیدردسر برای ابزارهای قدیمی جاوا اسکریپت ادامه میدهد. مقیاس این نسخه اصلاحی نشاندهنده یک فاز پایدارسازی تهاجمی است و تضمین میکند که بارهای کاری در سطح سازمانی در حال اجرا روی macOS، لینوکس و ویندوز میتوانند بدون قربانی کردن قطعیت یا صحت، از Bun بهرهبرداری کنند.
از منظر معماری، نسخه 1.3.1 شکافهای حیاتی بین عملکرد بومی و انتظارات اکوسیستم Node.js را پر میکند. معرفی استراتژیهای بهینهسازی کش فایلسیستم برای پروژههای سنگین از نظر پیوند نمادین (symlink) و ادغام عمیقتر بستهبندی CJS، نحوه کامپایل مونوپروژههای مدرن (monorepos) را دگرگون میکند. علاوه بر این، بهبودهای مدیر پکیج به موارد خاص دیرینه در حل وابستگیها و استراتژیهای ارتقا (hoisting) رسیدگی میکند. با کاهش سربار در هنگام نصبهای بدون وابستگی همتا (zero-peer) و معرفی تجزیه پیکربندی دقیق برای .npmrc، بن لایه زیرساختی خود را مستحکم میکند و به تیمها اجازه میدهد برنامههای قدیمی پیچیده را با حداقل اصطکاک و حداکثر توان عملیاتی مهاجرت دهند.
بهبودهای هسته و ارگونومی توسعهدهنده
چشمگیرترین پیشرفت عملکردی در Bun v1.3.1، افزایش سرعت ۲ برابری محلی در عملیات bun build روی سیستمعامل macOS است که بهطور خاص برای پروژههای دارای پیوندهای نمادین سنگین بهینهسازی شده است. مونوپروژههایی که به شدت به پیوندهای نمادین عمیقاً تو در تو متکی هستند، پیش از این از سربار بیش از حد پیمایش فایلسیستم رنج میبرند؛ اکتشافات حل جدید، مدیریت توصیفگر فایل و ردیابی پیوند نمادین را بهینهسازی کرده و زمانهای کامپایل را به شدت کاهش میدهند. علاوه بر این، باندلر اکنون کامنتهای قانونی را در مپهای سورس تولیدشده حفظ میکند و انطباق با چارچوبهای لایسنس را تضمین میکند، در حالی که --format=cjs به طور بومی import.meta را درونخطی میکند و یک شکاف مشخصات حیاتی را برای اهداف خروجی CommonJS میبندد.
ارگونومی توسعهدهنده در bun test و مدیر پکیج تقویت چشمگیری دریافت میکند. اجراکننده تست اکنون شامل یک ابزار سراسری vi برای تسهیل مسیرهای مهاجرت Vitest است، در کنار پرچمهای --pass-with-no-tests و --only-failures برای ادغام انعطافپذیرتر خط لوله CI/CD. مدیریت پکیج نیز به همین ترتیب ارتقا یافته است: فایلهای .npmrc اکنون فیلدهای احراز هویت :email را به درستی تجزیه میکنند، توالیهای نصب هنگام شناسایی وابستگیهای همتا صفر، مراحل اعتبارسنجی غیرضروری را دور میزنند، و ارتقای انتخابی (publicHoistPattern و hoistPattern) کنترل دقیقی را به ساختارهای نصب ایزوله میآورد. در نهایت، سازگاری با APIهای Node.js با افزودن fs/promises FileHandle.readLines()، در کنار پچهای پایداری حیاتی برای bunx و کامپایل react-jsxdev در ویندوز گسترش مییابد.
ماتریس مقایسه معماری
| ویژگی / زیرسیستم | مبنای قبلی (v1.3.0) | Bun نسخه 1.3.1 | تأثیر معماری |
|---|---|---|---|
| بستهبندی سنگین از نظر پیوند نمادین (macOS) | سربار پیمایش استاندارد | اجرای ساخت ۲ برابر سریعتر | کش بهینهشده و استفاده مجدد از توصیفگر فایل |
| کامپایل خروجی CJS | حفظ مرجعهای import.meta |
درونخطیسازی بومی import.meta |
همراستایی بهتر با رانتایمهای قدیمی CommonJS |
| حل مدیر پکیج | بررسیهای وابستگی همتا جهانی | مسیرهای شتابیافته برای گرافهای بدون همتا | کاهش سربار I/O در هنگام نصبهای سرد |
| قابلیتهای اجراکننده تست | ادعاها و تطبیقدهندههای استاندارد | افزودن vi سراسری، --pass-with-no-tests |
مسیر مهاجرت سادهشده از Vitest |
| پوشش API فایلسیستم | توابع اولیه جزئی FileHandle |
پیادهسازی FileHandle.readLines() |
برابری پیشرفته استریم و خطخوانی Node.js |
تغییرات ناسازگار و هشدارهای مهاجرت
نسخه 1.3.1 بن کاملاً با نسخههای قبلی در سری v1.x سازگار است، به این معنی که هیچ تغییر نگارشی یا منسوخشدنی که کدهای برنامه موجود را خراب کند، معرفی نشده است. با این حال، تیمهایی که پیکربندیهای ارتقای انتخابی جدید (publicHoistPattern و hoistPattern) را اتخاذ میکنند، باید طرحبندی فضای کاری خود را به طور کامل بررسی کنند تا مطمئن شوند پکیجهایی که به طور ضمنی به ارتقای flat-node_modules متکی هستند، به درستی حل میشوند. به طور مشابه، درونخطیسازی import.meta تحت --format=cjs ممکن است رفتار زمان اجرای خطوط لوله باندلر را که قبلاً انتظار ارزیابی معوق متادیتای ماژول را در بستههای CommonJS داشتند، تغییر دهد.
راهنمای گامبهگام ارتقا
ارتقای محیطهای محلی و CI خود به Bun نسخه 1.3.1 مستفزم یک دستور واحد است و پس از آن بررسی پیکربندی برای ویژگیهای جدید انجام میشود.
گام ۱: ارتقای سراسری Bun
اسکریپت ارتقای رسمی را برای دریافت آخرین نسخه باینری اجرا کنید:
bun upgrade
با بررسی نسخه فعال، اطمینان حاصل کنید که نصب موفقیتآمیز بوده است:
bun --version
# خروجی مورد انتظار: 1.3.1
گام ۲: استفاده از پرچمهای تست جدید در CI
پرچمهای اجرای تست جدید را در اسکریپتهای package.json خود بگنجانید تا خطوط لوله یکپارچهسازی مداوم را ساده کنید:
{
"scripts": {
"test:ci": "bun test --pass-with-no-tests --only-failures"
}
}
گام ۳: پیکربندی ارتقای انتخابی (اختیاری)
اگر یک مونوپروژه پیچیده را با استفاده از نصبهای ایزوله مدیریت میکنید، الگوهای ارتقا را به پیکربندی ریشه پروژه خود اضافه کنید تا دید وابستگی را کنترل کنید:
# .npmrc
publicHoistPattern[]=*eslint*
publicHoistPattern[]=*typescript*
hoistPattern[]=my-custom-package
