Deno به Cloudflare پیوست؛ ایدههاش ولی موندن
خلاصهٔ کاملتر
رایان دال اعلام کرده که تیم Deno به Cloudflare میپیونده. رانتایم Deno طی یه سال آینده جمع میشه، رجیستری JSR روی زیرساخت Cloudflare به کارش ادامه میده و کار جدید تیم، ادغام celld از Deno توی workerd (رانتایم متنباز Cloudflare Workers) هست. این خبر دقیقاً دو سال بعد از انتشار Deno 2 اومد و ده ماه بعد از اینکه Bun به Anthropic پیوست. دارسی کلارک، مدیرعامل vlt، تو این یادداشت میگه نتیجهگیری «Node بُرد» عجولانهست، چون اکوسیستم فایدههایی که Deno دنبالش بود رو گرفته، فقط نه از خود Deno.
Deno سال ۲۰۱۸ با یه شروع تازه اومد: permissionها پیشفرض بسته، TypeScript بهعنوان ورودی اصلی، APIهای استاندارد وب روی سرور، فقط ES modules و حذف npm و package.json و node_modules. وابستگیها فقط URL بودن. نویسنده میگه خیلیها همون موقع به این آخری شک داشتن، چون یه URL فقط میگه یه چیزی کجا بوده، نه اینکه چیه. وقتی بخوای مطمئن شی بایتهایی که تست کردی هموناییان که ship میکنی، به integrity hash و یه جا برای ثبتش احتیاج داری، یعنی دوباره lockfile رو اختراع کردی.
به گفتهٔ نویسنده، Deno بعد از نسخهٔ 1.0 تو سال ۲۰۲۰، چهار سال این تصمیمها رو تیکهتیکه پس گرفت: اول قرارداد deps.ts که عملاً یه manifest بود، بعد lock.json که همون lockfile بود و بعد import maps. حدود شش هفته بعد از عرضهٔ Bun 0.1 تو جولای ۲۰۲۲، Deno پشتیبانی از npm: رو اعلام کرد و Deno 2 تو اکتبر ۲۰۲۴ سازگاری کامل با Node و npm رو آورد. نویسنده میگه این تصمیم درستی بود، ولی یه جور اعتراف هم بود که اکوسیستم وابستگیهای یه دههش رو یهشبه کنار نمیذاره.
نویسنده معتقده بزرگترین اثر Deno فشاری بود که روی Node گذاشت. Node از ۲۰۱۸ به این طرف fetch سراسری، WebSocket، Web Streams و Web Crypto، یه test runner پایدار و --watch، --env-file، ساخت فایل اجرایی تکی، یه permission model پایدار، type stripping (یعنی اجرای TypeScript با حذف تایپها بدون مرحلهٔ build) که پیشفرض روشنه، node:sqlite و require(esm) رو اضافه کرده. به نظرش یه پروژهٔ پخته کمبود ایده نداره، کمبود فوریت داره و رقبا همین فوریت رو میارن. گروه استاندارد WinterCG هم سال ۲۰۲۲ از همین فشار درست شد و حالا با اسم Ecma TC55 ادامه داره.
تو دنیای package managerها هم همین داستان تکرار شده. Yarn تو ۲۰۱۶ lockfile رو آورد و npm 5 سال بعدش package-lock.json رو داد. pnpm نشون داد node_modules لازم نیست پر از فایل تکراری باشه و Bun نصب رو اونقدر سریع کرد که بقیه مجبور شدن سراغ سرعت برن. واضحترین مثال، install scriptهاست: pnpm و Bun و vlt اجراشون رو پیشفرض خاموش کرده بودن و تو ژوئن امسال، بعد از چند حمله به supply chain، GitHub اعلام کرد npm 12 هم دیگه پیشفرض اجراشون نمیکنه.
نویسنده میگه حالا دو رانتایم مستقل و پرطرفدار جاوااسکریپت توی شرکتهاییان که کار اصلیشون چیز دیگهایه، درست مثل V8 و JavaScriptCore. به نظرش جاوااسکریپت تقریباً تو هر لایه «بیمه» داره: سه موتور، چند رانتایم و چند package manager، پس وقتی یه لایه ادغام میشه بقیه سر پا میمونن. حرف آخرش اینه که هیچکس مجبور نشد Node رو ول کنه تا fetch یا اجرای TypeScript بدون build رو بگیره؛ پروژهها همیشه نبردن، ولی ایدهها معمولاً بردن.
نکات کلیدی:
- تیم Deno به Cloudflare پیوسته، رانتایم Deno طی یه سال متوقف میشه و JSR روی زیرساخت Cloudflare ادامه میده.
- کار جدید تیم، ادغام celld توی workerd هست، یه پیادهسازی متنباز و self-host از Workers و Durable Objects.
- Deno که بدون npm شروع کرده بود، با Deno 2 تو اکتبر ۲۰۲۴ سازگاری کامل با Node و npm رو آورد.
- Node از ۲۰۱۸ fetch، permission model پایدار، test runner، type stripping پیشفرض و node:sqlite رو اضافه کرده.
- npm 12 طبق اعلام GitHub دیگه install scriptها رو پیشفرض اجرا نمیکنه، کاری که pnpm و Bun و vlt زودتر کرده بودن.




