Deno 2.8
(deno.com)deno addและdeno installจะตีความชื่อแพ็กเกจที่ไม่มีคำนำหน้าใน CLI เป็นแพ็กเกจnpm:โดยค่าเริ่มต้น ทำให้ใช้แทนnpm install·yarn·pnpm installในโปรเจ็กต์ Node เดิมได้ง่ายขึ้นdeno audit fixจะอัปเกรดแพ็กเกจ npm ที่มีช่องโหว่ใน dependency ไปเป็นแพตช์เวอร์ชันที่ใกล้ที่สุดซึ่งยังคงเป็นไปตามข้อจำกัดของเวอร์ชันโดยอัตโนมัติ และจะแสดงรายการที่ต้องเปลี่ยนเมเจอร์เวอร์ชันแยกต่างหาก- มีการเพิ่มคำสั่งย่อยใหม่คือ
deno ci,deno pack,deno transpile,deno why,deno bump-versionเพื่อรองรับการติดตั้งแบบทำซ้ำได้, การสร้าง tarball สำหรับเผยแพร่ npm, การแปลง TS→JS, การติดตามเส้นทาง dependency และการอัปเดตเวอร์ชันของ workspace - ความเข้ากันได้กับ Node.js API เพิ่มขึ้นจากประมาณ 42% ใน Deno 2.7 เป็น 76.4% (3,405/4,457) ใน Deno 2.8 ตามเกณฑ์ของชุดทดสอบของ Node เอง และมี
node:โมดูลจำนวนมากที่ถูกโหลดแบบหน่วงเวลา ทำให้โปรแกรมที่ไม่ได้ใช้โมดูลเหล่านั้นเริ่มทำงานได้เร็วขึ้น - ประสิทธิภาพ เมื่อเทียบกับ Deno 2.7.1 การติดตั้ง npm แบบ cold เร็วขึ้น 3.66 เท่า จาก 3,319ms เหลือ 906ms,
node:bufferbase64 ดีขึ้น 3.07 เท่า, throughput ของnode:httpดีขึ้น 2.21 เท่า และnode:cryptoscrypt ดีขึ้น 2.12 เท่า - การเปลี่ยนแปลงด้านความเข้ากันได้ คือ
setTimeoutและsetIntervalแบบ global จะคืนค่าเป็นอ็อบเจ็กต์Timeoutของ Node แทนตัวเลข ดังนั้นโค้ดที่เก็บค่าที่คืนมาเป็นnumberหรือนำไปใช้กับการตรวจชนิดหรือคำนวณเลข ต้องแก้เป็นNodeJS.Timeoutเป็นต้น - มี TypeScript 6.0.3 ฝังมาให้ และ
deno checkกับ LSP จะรวมlib.nodeโดยค่าเริ่มต้น ทำให้ตีความชนิดของ Node เช่นNodeJS.*,Buffer,processได้โดยไม่ต้องตั้งค่าเพิ่ม - ในด้าน การดีบัก แท็บ Network ของ Chrome DevTools จะแสดงทราฟฟิกจาก
fetch(),node:http/node:https,WebSocketของ Deno และสามารถสร้าง V8 profile, SVG flamegraph และรายงาน Markdown ได้ด้วย--cpu-prof,--cpu-prof-flamegraph,--cpu-prof-md - ในด้าน การจัดการแพ็กเกจและ workspace มีการเพิ่มโปรโตคอล
catalog:,deno install --os --arch,--prod,nodeModulesLinker: "hoisted",min-release-ageใน.npmrcและ--package-jsonเพื่อช่วยเรื่องการทำเวอร์ชันให้เป็นมาตรฐานเดียวกันใน monorepo, การติดตั้งข้ามแพลตฟอร์ม, การติดตั้งแบบ production และการย้ายจากโปรเจ็กต์ Node เดิม deno compileสามารถตรวจจับโปรเจ็กต์ Next.js, Astro, Fresh, Remix, SvelteKit, Nuxt, SolidStart, TanStack Start, Vite SSR แล้วรันdeno task buildพร้อมสร้าง entry point ที่เหมาะสม และยังแสดงความคืบหน้าระหว่างประมวลผล dependency tree ของ npm ขนาดใหญ่ด้วย- ในด้าน การทดสอบและ Web API ค่าเริ่มต้นของ
sanitizeOpsและsanitizeResourcesในDeno.test()เปลี่ยนเป็นfalse, มีการเพิ่มtimeoutรายเทสต์และ coverage ระดับฟังก์ชัน รวมถึงรองรับOffscreenCanvas,Headers·Request·Response·Streams ที่โอนย้ายได้, SHA3 digest และ Web Crypto แบบ P-521 - การอัปเกรดและพื้นฐานรันไทม์ คือ
deno upgradeจะลดขนาดดาวน์โหลดจากราว 48MB เหลือ 3~6MB ด้วย delta update เมื่อทำได้, สามารถติดตั้ง PR build ได้ด้วยdeno upgrade pr <number>และ V8 ถูกอัปเกรดจาก 14.6 เป็น 14.9
1 ความคิดเห็น
ความเห็นจาก Hacker News
Deno มีโมเดลสิทธิ์แบบพื้นฐานมาให้จึงมีประโยชน์ เขียนด้วย Rust และรองรับ TypeScript แบบเนทีฟ
ผมไม่ได้คลุกอยู่ลึกกับ ecosystem ของเว็บดีเวลอปเมนต์/Node/Bun แต่ตลอดหลายปีที่ผ่านมาก็ใช้ Deno กับเซอร์วิสเล็ก ๆ อย่างพอใจ เลยสงสัยว่าทำไม Bun ถึงดูเหมือนเติบโตเร็วมาก ไม่แน่ใจว่าคนใช้มันเป็น bundler เป็นหลักและใช้เป็น JavaScript runtime น้อยกว่าหรือเปล่า
แค่ระบบสิทธิ์อย่างเดียวก็ทำให้ Deno น่าสนใจแล้ว เลยไม่ค่อยเข้าใจว่าทำไมคนย้ายจาก Node ไป Bun แต่ไม่ไป Deno
อยู่นานทีเดียวที่ dependency และ framework จำนวนมากทำงานบน Deno ได้ไม่ดี และในช่วงแรก ๆ มันยังติดตั้ง dependency จาก npm ไม่ได้ด้วยซ้ำ มองย้อนกลับไปที่การโจมตี supply chain ของ npm หลายครั้ง Ryan อาจจะตัดสินใจถูกก็ได้
เพราะงั้น Bun เลยดูเหมือน Node ที่ดีกว่าและใช้งานสะดวกกว่า มีของอำนวยความสะดวกเยอะ และแทบไม่ต้องตั้งค่าอะไรเพิ่มก็ใช้ได้เลย ดูเหมือนทีม Deno เองก็รู้ว่าถ้าจะสำเร็จต้องมีความเข้ากันได้กับ Node และช่วงไม่กี่ปีที่ผ่านมาก็โฟกัสตรงนั้น ตอนนี้ผมมองว่า Deno เข้ากันได้กับ Node มากกว่า Bun แล้ว
อนึ่ง ในรายชื่อพวกนั้นมีบางส่วนเท่านั้นที่เป็นท่าไม้ตายโปเกมอน ที่เหลือคือเครื่องมือจริงใน ecosystem ของ JS/TS
เวลาที่ไม่อยากไปยุ่งกับการตั้งค่าเทสต์, tsconfig หรือ ES modules มันก็มักจะใช้งานได้เลย ส่วน Deno มี standard library ที่ดีมาก รองรับ CLI ยอดเยี่ยม และเมื่อก่อนผมก็ชอบ deno deploy มาก แต่เดี๋ยวนี้มันค่อนข้างจุกจิกแล้ว
มันทำงานด้วยแล้วดีมาก เลยน่าเสียดายที่ยังไม่แพร่หลายในหมู่คนสาย JS มากกว่านี้
สุดท้ายเลยย้ายไป Bun แล้วทุกอย่างลื่นขึ้นมาก
สงสัยว่าเดี๋ยวนี้ Deno อยู่ในสภาพไหนแล้ว
Node เป็นทางออกที่มั่นคงและคงจะอยู่ต่อไปอีกนาน ตอนนี้ก็ใช้ TypeScript ได้แล้ว และดูเหมือนอีกไม่นานจะสร้างแอปเป็นไฟล์ executable เดี่ยวได้ รวมถึง native dependency ด้วย
Bun ดูวุ่น ๆ แต่เร็ว และแนวทางที่รวมทุกอย่างไว้ใน standard library ก็น่าสนใจ แถมยังถูก Anthropic ซื้อกิจการไปแล้ว
Deno เคยมีเรื่องเล่าที่ดีเกี่ยวกับ sandbox และการดึง dependency ภายนอกที่ง่าย แต่ตอนนี้ sandbox ดูจะกลายเป็นของทั่วไปไปพอสมควรแล้ว และวิธี import ของมันสุดท้ายก็ไม่แน่ใจว่าดีกว่า
npm addมากขนาดนั้นไหมDeno ยอดเยี่ยมมาก ผมเขียนเว็บเซอร์วิสขนาดเล็กและขนาดกลางด้วย Deno
มันทำงานได้เป๊ะเหมือนนาฬิกาสวิส และปรัชญาของโปรเจกต์ก็เข้ากับแนวคิดแบบ Unix มาก
ส่วนตัวผมคิดว่าคนทำ Deno ค่อนข้างถ่อมตัวไปหน่อย ถึงขนาดมีผู้ใช้ที่ซาบซึ้งอยากบริจาคให้โปรเจกต์แต่ก็ปฏิเสธอย่างสุภาพ ผมเข้าใจเหตุผลนะ แต่ระยะยาวมันอาจสร้างแรงกดดันทางการเงินที่ไม่จำเป็นให้โปรเจกต์ได้
การมีสมาชิกแบบรายเดือนแนว “ได้โปรดรับเงินผมเถอะ” สำหรับผู้ใช้ที่พึ่งพาความสำเร็จระยะยาวของโปรเจกต์ น่าจะเหมาะดีทีเดียว
มันเร็ว ยืดหยุ่น มีการจัดการแพ็กเกจที่มีสติกว่าและทรงพลังกว่าทางเลือก JS/TS อื่น ๆ มีโมเดลความปลอดภัยที่ดีกว่า มี standard library ที่ดีกว่า และยังเร็วมากด้วย
เผื่อคนที่ไม่คุ้นชื่อ Deno, Deno คือ JavaScript และ TypeScript runtime
มีรีวิวเปรียบเทียบ Deno 2.6 กับคู่แข่งอย่าง Bun 1.3 และ Node.js 25: https://www.devtoolreviews.com/reviews/bun-vs-node-vs-deno-2...
คล้ายกันคือ แม้บทความจะไม่ได้พูดชัด แต่ Bun ดูเหมือนรันในสถานะแคชแพ็กเกจอุ่นแล้ว เลยสงสัยว่ารันไทม์อื่น ๆ มีแคชเหมือนกันหรือเปล่า
รอบการออกรุ่นที่สม่ำเสมอ ของ Deno น่าประทับใจ อยากรู้ว่าเวอร์ชันนี้มีการปรับปรุงประสิทธิภาพอะไรบ้าง
คำสั่ง
deno packใหม่เป็นส่วนเสริมที่ดีสำหรับการแพ็กแบบปลอดภัยและเรียบง่ายถ้าใช้ Node.js ก็มีคำสั่งเดี่ยวที่คล้ายกันได้ผ่าน https://www.npmjs.com/package/ts-node-pack
ตอนนี้ Node.js รองรับการ import โมดูล
.tsแล้ว ดังนั้น repository มากขึ้นน่าจะใช้แนวทางนี้ได้โดยไม่ต้องมีขั้นตอน build หรือใส่ build output ลงไปใน checkoutdeno packอาจแทน workflownpm publishเดิมของแพ็กเกจโอเพนซอร์สผมได้ และอาจช่วยให้ผมขยับงานไปทาง Deno-first / Deno-centric ต่อได้ในทางกลับกัน การที่ Node รองรับ TypeScript มากขึ้นก็ทำให้รู้สึกว่าการเปลี่ยนไปเป็น npm package สำหรับ TypeScript โดยเฉพาะ อาจเป็นสัญญาณเล็ก ๆ ที่ส่งถึง ecosystem ได้เหมือนกัน
ถึงอย่างนั้นก็ยังดีใจที่ JSR มีตัวตนอยู่ในฐานะ ecosystem ที่ค่อนข้างสะอาดกว่า
เพียงแต่พอมาอยู่ใน Deno CLI แล้ว การมองเห็น ก็มากขึ้นอย่างชัดเจน
ถ้า Deno ยึดคุณค่าเริ่มต้นของตัวเองไว้นานกว่านี้อีกหน่อย แรงกดดันเรื่องความเข้ากันได้กับ Node อาจถูก AI agent ช่วยอุดช่องว่างได้พอสมควร
เพราะแรงกดดันส่วนใหญ่เกิดจากเรื่องความคุ้นชิน ถ้าคุณรู้แค่วิธีตั้งค่าด้วย express.js คุณก็จะรู้สึกว่าเครื่องมือหรือ runtime ใด ๆ หลังจากนั้นควรมี abstraction คล้ายกันเพื่อให้การย้ายผ่านเป็นไปอย่าง “ลื่นไหล” โดยไม่เกี่ยวเลยว่าทางแก้แรกเริ่มนั้นแย่แค่ไหน
ทุกวันนี้เราสามารถส่งมอบชุดเทคโนโลยีที่จำเป็นไปพร้อมกับผลิตภัณฑ์และแนะนำเทคโนโลยีใหม่ให้ดีเวลอปเปอร์ได้ ซึ่งบางครั้งแทนเอกสารได้จริง และค่อนข้างดีในการแสดงให้เห็นแนวทางทางเลือกที่ดีกว่า
จากที่ลองใช้ Deno กับโปรเจกต์งานอดิเรกหลายตัว ผมมั่นใจว่า Deno คือทิศทางที่ ecosystem JS ควรไป
แค่จะให้แนะนำใช้ในงานจริงนอกเหนือจาก use case เฉพาะและค่อนข้างแคบส่วนใหญ่แล้วมันซับซ้อน เพราะพอถึงจุดหนึ่งถ้าโปรเจกต์ต้องเปลี่ยนทิศทางด้วยเหตุผลทางธุรกิจ สุดท้ายก็ต้องกลับไปหา Node อยู่ดี
หลังการเปิดตัว Edge.js [1] ก็ดีที่ได้เห็น Deno เริ่มจริงจังกับ ความเข้ากันได้กับ Node.js มากขึ้น
ในเวลาแค่ประมาณ 2 เดือน มันขยับจากช่วง 40% กว่า ๆ ไปเป็นราว 75% ไม่ว่าจะบังเอิญหรือไม่ก็ตาม นี่เป็นก้าวที่ชัดเจนในทิศทางที่ถูกต้อง
ทีม Deno ทุกคนทำได้ดีมาก
[1] https://edgejs.org/
ผมห่อหุ้มแนวปฏิบัติแบบ Node ส่วนใหญ่ไว้แล้วใช้ Deno เป็น runtime มันทำงานได้ดี
ถ้าโปรเจกต์เป็น TypeScript ล้วน ผมก็รันด้วย Deno ไปเลย ตัวเลือกเสริมด้านความปลอดภัยก็ดี และผมก็ชอบที่สคริปต์ติดตั้งถูกปิดไว้เป็นค่าเริ่มต้น
ถ้าคุณยังใช้ Node ตรง ๆ อยู่ ผมว่าเลิกเถอะ อย่างน้อยใช้ Bun ก็ยังดีกว่า
สำหรับงานแบบ agent-based แทบไม่มีเหตุผลจะใช้ภาษาอื่นนอกจาก Rust กับ TypeScript จะเถียงก็ได้ แต่เรื่อง type safety, memory safety และคอร์ปัสงานขนาดมหาศาลนั้นสำคัญมาก เอเจนต์จะสำรวจได้ง่ายเมื่อมีข้อผิดพลาดที่จุกจิกและมีแพตเทิร์นฝังอยู่ ส่วนฝั่ง UI นั้น TypeScript สมเหตุสมผลที่สุดเพราะมีตัวอย่างดีไซน์อยู่มหาศาล