Deno 2.8
(deno.com)deno addऔरdeno installअब CLI में बिना prefix वाले package name को डिफ़ॉल्ट रूप सेnpm:package मानते हैं, जिससे मौजूदा Node project मेंnpm install·yarn·pnpm installकी जगह इन्हें इस्तेमाल करना आसान हो जाता हैdeno audit fixnpm dependency की vulnerable package को version constraint पूरा करने वाले सबसे नज़दीकी patch version तक अपने-आप upgrade करता है, और जिन items में major version change चाहिए उन्हें अलग से दिखाता है- नए subcommand के रूप में
deno ci,deno pack,deno transpile,deno why,deno bump-versionजोड़े गए हैं, जो reproducible install, npm publish के लिए tarball बनाना, TS→JS conversion, dependency path tracing, और workspace version update को support करते हैं - Node.js API compatibility Node के अपने test suite के आधार पर Deno 2.7 के लगभग 42% से बढ़कर Deno 2.8 में 76.4% (3,405/4,457) हो गई है, और कई
node:module अब lazy-load होते हैं, जिससे उन modules का उपयोग न करने वाले programs का startup तेज़ होता है - Performance में Deno 2.7.1 की तुलना में cold npm install 3,319ms से घटकर 906ms हो गया है, यानी 3.66 गुना तेज़;
node:bufferbase64 3.07 गुना,node:httpthroughput 2.21 गुना, औरnode:cryptoscrypt 2.12 गुना बेहतर हुए हैं - Compatibility change के तहत global
setTimeoutऔरsetIntervalअब number की बजाय Node काTimeoutobject लौटाते हैं, इसलिए जो code return value कोnumberके रूप में store करता था या type check और arithmetic में इस्तेमाल करता था, उसेNodeJS.Timeoutआदि के अनुसार बदलना होगा - TypeScript 6.0.3 built-in है, और
deno check, LSP अब डिफ़ॉल्ट रूप सेlib.nodeशामिल करते हैं, जिससेNodeJS.*,Buffer,processजैसे Node types बिना अलग configuration के resolve हो जाते हैं - Debugging में Chrome DevTools का Network tab अब Deno के
fetch(),node:http/node:https,WebSockettraffic को दिखाता है, और--cpu-prof,--cpu-prof-flamegraph,--cpu-prof-mdसे V8 profile, SVG flamegraph, और Markdown report बनाई जा सकती है - Package और workspace management में
catalog:protocol,deno install --os --arch,--prod,nodeModulesLinker: "hoisted",.npmrcकाmin-release-age, और--package-jsonजोड़े गए हैं, जो monorepo version alignment, cross-platform install, production install, और मौजूदा Node project migration को बेहतर बनाते हैं deno compileअब Next.js, Astro, Fresh, Remix, SvelteKit, Nuxt, SolidStart, TanStack Start, Vite SSR project को detect करकेdeno task buildचलाता है और उपयुक्त entry point बनाता है, साथ ही बड़े npm dependency tree को process करते समय progress भी दिखाता है- Testing और Web API में
Deno.test()केsanitizeOpsऔरsanitizeResourcesके डिफ़ॉल्ट मानfalseहो गए हैं, per-testtimeoutऔर function-level coverage जोड़ी गई है, औरOffscreenCanvas, transferableHeaders·Request·Response·Streams, SHA3 digest, और P-521 Web Crypto support शामिल हैं - Upgrade और runtime foundation में
deno upgradeउपलब्ध होने पर delta update के जरिए download को लगभग 48MB से घटाकर 3~6MB कर देता है,deno upgrade pr <number>से PR build install की जा सकती है, और V8 को 14.6 से 14.9 तक upgrade किया गया है
1 टिप्पणियां
Hacker News की राय
Deno का डिफ़ॉल्ट permission model उपयोगी है, यह Rust में लिखा गया है, और TypeScript को native रूप से सपोर्ट करता है
मैं web development/Node/Bun ecosystem में बहुत गहराई से नहीं हूँ, लेकिन कुछ सालों से छोटे services के लिए Deno को संतोषजनक तरीके से इस्तेमाल करता रहा हूँ। मुझे जिज्ञासा है कि Bun इतनी तेज़ी से बढ़ता हुआ क्यों दिखता है। पता नहीं इसे मुख्यतः bundler के रूप में इस्तेमाल किया जाता है और JavaScript runtime के रूप में कम
सिर्फ permission system की वजह से भी Deno आकर्षक लगता है, इसलिए लोग Node से Bun पर जाते हुए Deno पर क्यों नहीं जाते, यह मुझे ठीक से समझ नहीं आता
लंबे समय तक बहुत-सी dependencies और frameworks Deno पर सही से काम नहीं करते थे, और शुरुआत में तो npm से dependencies install करने की सुविधा भी नहीं थी। npm supply-chain attacks को देखते हुए शायद Ryan का फैसला सही रहा हो
इसलिए Bun बहुत कम configuration में तुरंत काम करने वाले, सुविधाओं से भरपूर बेहतर Node जैसा लगता था। Deno टीम को भी शायद समझ आ गया कि सफल होने के लिए Node compatibility चाहिए, और पिछले कुछ सालों से उन्होंने उसी पर ध्यान दिया है। अब मुझे लगता है कि Deno, Bun से भी ज़्यादा Node-compatible है
वैसे, इनमें से कुछ ही Pokémon moves हैं, बाकी सचमुच JS/TS ecosystem के tools हैं
जब test config, tsconfig, ES modules जैसी चीज़ों को छेड़ना न हो, तो यह बस काम कर देता है। Deno की standard library अच्छी है और CLI support भी शानदार है, और पहले deno deploy भी पसंद था, लेकिन आजकल वह काफ़ी झंझट भरा हो गया है
इसके साथ काम करना सच में अच्छा है, और अफ़सोस है कि यह JS वालों के बीच ज़्यादा नहीं फैला
इसलिए मैं Bun पर चला गया और अनुभव कहीं ज़्यादा smooth हो गया
मुझे जिज्ञासा है कि आजकल Deno की स्थिति क्या है
Node एक स्थिर समाधान है और आगे भी बना रहेगा। अब इसमें TypeScript भी इस्तेमाल कर सकते हैं, और लगता है कि जल्द ही native dependencies समेत apps को single executable file में build करना भी संभव होगा
Bun थोड़ा अव्यवस्थित है, लेकिन तेज़ है, और standard library में सब कुछ शामिल करने वाला इसका approach दिलचस्प है। ऊपर से, इसे Anthropic ने acquire भी कर लिया है
Deno के पास sandboxing और third-party dependencies import करने की आसानी जैसी एक अच्छी कहानी थी, लेकिन अब sandboxing काफ़ी आम-सी लगती है, और import का तरीका भी आख़िरकार
npm addसे इतना बेहतर था या नहीं, यह पता नहींDeno शानदार है। मैं छोटे web services और मध्यम आकार की web services Deno में लिख रहा हूँ
यह Swiss watch की तरह चलता है, और project philosophy भी Unix spirit के साथ अच्छी तरह मेल खाती है
व्यक्तिगत रूप से मुझे लगता है कि Deno बनाने वाले लोग थोड़ा ज़्यादा विनम्र हैं। आभारी users project को donation देने की पेशकश भी करते हैं, तो वे विनम्रता से मना कर देते हैं। वजह समझ में आती है, लेकिन लंबी अवधि में इससे project पर अनावश्यक आर्थिक दबाव बन सकता है
ऐसे users के लिए जो project की long-term success पर निर्भर हैं, “कृपया पैसे ले लीजिए” जैसी monthly subscription काफ़ी अच्छी बैठ सकती है
यह तेज़ और लचीला है, और दूसरे JS/TS विकल्पों की तुलना में ज़्यादा ताकतवर features वाला थोड़ा ज़्यादा समझदार package management, बेहतर security model, बेहतर standard library देता है। और यह बहुत तेज़ है
जिन लोगों को Deno नाम परिचित नहीं है, उनके लिए बता दूँ कि Deno एक JavaScript और TypeScript runtime है
Deno 2.6 की competitor Bun 1.3 और Node.js 25 के साथ तुलना करने वाली एक review है: https://www.devtoolreviews.com/reviews/bun-vs-node-vs-deno-2...
इसी तरह, लेख में साफ़ नहीं कहा गया, लेकिन Bun शायद warm package cache की स्थिति में चलाया गया लगता है। जानना चाहूँगा कि क्या दूसरे runtimes के लिए भी cache मौजूद था
Deno का लगातार release cycle प्रभावशाली है। इस version में कौन-कौन से performance improvements आए हैं, यह देखने की उत्सुकता है
नया
deno packcommand सुरक्षित और सरल packaging के लिए एक अच्छा addition हैअगर आप Node.js इस्तेमाल कर रहे हैं, तो ऐसा ही single-command तरीका https://www.npmjs.com/package/ts-node-pack से संभव है
अब जबकि Node.js
.tsmodules import करना सपोर्ट करता है, ज़्यादा repositories इसे build step या checkout में build artifacts डाले बिना इस्तेमाल कर पाएँगीdeno packशायद मेरे open source package के मौजूदाnpm publishflow की जगह ले सकता है, और काम को Deno-first/Deno-centric दिशा में आगे बढ़ाने के लिए अच्छा हो सकता हैदूसरी तरफ़, Node का TypeScript support बढ़ रहा है, इसलिए इसे TypeScript-only npm package में बदलना भी ecosystem को भेजा गया एक बहुत छोटा-सा संदेश हो सकता है
फिर भी, यह अच्छा है कि JSR अपेक्षाकृत ज़्यादा साफ़-सुथरे ecosystem के रूप में मौजूद है
लेकिन अगर यह Deno CLI के अंदर आ जाए, तो इसकी visibility बहुत बढ़ जाती है
अगर Deno ने अपनी शुरुआती value proposition को थोड़ा और लंबे समय तक पकड़े रखा होता, तो Node compatibility का दबाव कुछ हद तक AI agents कम कर सकते थे
उस दबाव का बड़ा हिस्सा familiarity की समस्या से आता है। अगर आपको सिर्फ express.js के साथ configuration करना आता है, तो उसके बाद कोई भी tool या runtime इस्तेमाल करते समय आपको लगेगा कि smooth transition के लिए वैसी ही abstractions मिलनी चाहिए। इससे फ़र्क नहीं पड़ता कि पहला समाधान शुरू से कितना ख़राब था
आजकल product के साथ ज़रूरी tech bundle भी दिया जा सकता है और developers को नई technologies से परिचित कराया जा सकता है, और कई बार यह सचमुच documentation की जगह ले लेता है तथा बेहतर वैकल्पिक approaches दिखाने में काफ़ी अच्छा साबित होता है
कई hobby projects में Deno इस्तेमाल करने के बाद, मुझे यक़ीन है कि Deno वही दिशा है जिस तरफ़ JS ecosystem को जाना चाहिए
लेकिन काम के माहौल में, बहुत खास और आमतौर पर सीमित use cases के बाहर इसे recommend करना जटिल है। किसी बिंदु पर अगर project business reasons की वजह से pivot करता है, तो आख़िरकार Node की ज़रूरत पड़ती है
Edge.js [1] के लॉन्च के बाद Deno ने Node.js compatibility को ज़्यादा गंभीरता से लेना शुरू किया, यह देखना अच्छा है
लगभग 2 महीनों में यह 40% के दायरे से बढ़कर करीब 75% तक आ गया, तो चाहे यह संयोग हो या नहीं, यह सही दिशा में एक स्पष्ट कदम है
Deno टीम के सभी लोगों को बधाई
[1] https://edgejs.org/
मैं ज़्यादातर Node-शैली के idioms को wrap करके Deno को runtime की तरह इस्तेमाल करता हूँ। यह अच्छी तरह काम करता है
अगर project pure TypeScript है, तो मैं उसे सीधे Deno से चलाता हूँ। security के लिए extra options भी अच्छे हैं, और install scripts का default रूप से disabled होना भी अच्छा है
अगर आप सीधे Node इस्तेमाल कर रहे हैं, तो उम्मीद है कि आप ऐसा बंद करेंगे। कम से कम Bun इस्तेमाल करना बेहतर है
agent-based work में Rust और TypeScript के अलावा कुछ और इस्तेमाल करने का कारण लगभग नहीं है। असहमति हो सकती है, लेकिन type safety, memory safety, और विशाल work corpora महत्वपूर्ण हैं। agents को tricky errors और built-in patterns चाहिए होते हैं ताकि वे आसानी से रास्ता निकाल सकें। UI के लिए TypeScript सबसे तर्कसंगत है, क्योंकि design examples की संख्या बहुत ज़्यादा है