แพลตฟอร์ม Node.js 25.0.0 เปิดตัวแล้ว

Node.js 25.0.0 ซึ่งเป็นแพลตฟอร์มสำหรับการรันแอปพลิเคชันเครือข่ายใน JavaScript ได้เปิดตัวแล้ว Node.js 25.0 เป็นสาขาย่อยระดับกลาง ซึ่งได้รับการสนับสนุนเป็นเวลาเจ็ดเดือน (จนถึงเดือนมิถุนายน 2569) การปรับปรุงเสถียรภาพของ Node.js 24 จะเสร็จสมบูรณ์ในอีกไม่กี่วันข้างหน้า และจะได้รับสถานะ LTS ในปลายเดือนตุลาคม และจะได้รับการสนับสนุนจนถึงเดือนเมษายน 2571 ส่วนสาขา LTS ก่อนหน้า ได้แก่ Node.js 22.x และ 20.x จะยังคงได้รับการสนับสนุนจนถึงเดือนเมษายน 2570 และ 2569 ตามลำดับ

การปรับปรุงหลัก:

  • เอ็นจิ้น V8 ได้รับการอัปเดตเป็นเวอร์ชัน 14.1 ซึ่งใช้ใน Chromium 141 การปรับปรุงจาก Node.js รุ่นก่อนหน้า ได้แก่ การเพิ่มประสิทธิภาพอย่างมากสำหรับวิธี JSON.stringify, การเพิ่มประสิทธิภาพ WebAssembly และ JIT และการนำวิธีการต่างๆ สำหรับการแปลงระหว่าง Uint8Array กับข้อมูลฐาน 64 หรือเลขฐานสิบหกมาใช้
  • กลไกของ Permission Model ที่อนุญาตให้จำกัดการเข้าถึงทรัพยากรบางส่วนในระหว่างการรันไทม์ ได้รับการอัปเดตเพื่อรวมตัวเลือก "--allow-net" เพื่ออนุญาตการเข้าถึงเครือข่าย (ถ้าไม่ได้ระบุตัวเลือก "--allow-net" การรัน Node.js ในโหมด "--permission" จะส่งกลับข้อผิดพลาด ERR_ACCESS_DENIED เมื่อพยายามดำเนินการเครือข่าย)
  • เปิดใช้งานตามค่าเริ่มต้น ใช้งานได้กับเบราว์เซอร์ต่างๆ Web Storage API ออกแบบมาเพื่อจัดเก็บข้อมูลแบบถาวร (คลาส localStorage) หรือชั่วคราว (คลาส sessionStorage) ในรูปแบบคีย์/ค่า ป้ายกำกับ "อยู่ในระหว่างการพัฒนาทดลอง" ของ Web Storage API ได้ถูกลบออกแล้ว
  • คลาส ErrorEvent ซึ่งจัดให้มีอินเทอร์เฟซที่เข้ากันได้กับเบราว์เซอร์สำหรับการจัดการเหตุการณ์ที่มีข้อมูลข้อผิดพลาด ได้รับการย้ายไปยังหมวดหมู่ที่สามารถเข้าถึงได้ทั่วโลก (สามารถใช้ได้โดยไม่ต้องนำเข้าอย่างชัดเจน)
  • ปัจจุบัน WebAssembly รองรับ JavaScript Promise Integration (JSPI) API ซึ่งช่วยให้สามารถเข้าถึง Web API แบบอะซิงโครนัสจากโค้ดที่ดำเนินการตามลำดับที่คอมไพล์ไปยัง WebAssembly ได้
  • เพิ่มตัวเลือก "NODE_COMPILE_CACHE_RELATIVE_PATH" สำหรับการใช้งานแคชอ็อบเจ็กต์ที่คอมไพล์แล้วแบบพกพา ในโหมดนี้ แฮชสำหรับการระบุอ็อบเจ็กต์จะถูกคำนวณโดยใช้เส้นทางไฟล์สัมพัทธ์ ซึ่งช่วยให้สามารถย้ายและฝังเนื้อหาของไดเร็กทอรีโค้ดไปพร้อมกับแคชได้
  • เพิ่มความสามารถในการกำหนดโปรไฟล์โหลด CPU
  • ตัวจัดการแพ็กเกจ NPM ได้รับการอัปเดตเป็นเวอร์ชัน 11.6.2
  • เพิ่มการรองรับ Python 3.14
  • เวอร์ชันที่รองรับขั้นต่ำคือ Clang 19 และ Xcode 16.4
  • วัตถุ SlowBuffer ซึ่งก่อนหน้านี้ถูกยกเลิกการใช้งานเนื่องจากปัญหาด้านความปลอดภัยที่อาจเกิดขึ้น ได้ถูกยกเลิกการใช้งานแล้ว ให้ใช้เมธอด Buffer.allocUnsafeSlow() แทน

แพลตฟอร์ม Node.js สามารถใช้ได้ทั้งสำหรับการสนับสนุนฝั่งเซิร์ฟเวอร์ของเว็บแอปพลิเคชัน และสำหรับการสร้างโปรแกรมเครือข่ายมาตรฐานทั้งฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์ เพื่อขยายฟังก์ชันการทำงานของแอปพลิเคชัน Node.js จึงมีการเตรียมโมดูลจำนวนมากไว้ รวมถึงโมดูลที่ใช้งานฟังก์ชันต่างๆ เซิร์ฟเวอร์ และไคลเอ็นต์ของ HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, โมดูลสำหรับการผสานรวมกับเฟรมเวิร์กเว็บต่างๆ, ตัวจัดการ WebSocket และ Ajax, ตัวเชื่อมต่อกับ DBMS (MySQL, PostgreSQL, SQLite, MongoDB), เอ็นจิ้นเทมเพลต, เอ็นจิ้น CSS, การใช้งานอัลกอริธึมการเข้ารหัสลับและระบบการอนุญาต (OAuth), ตัวแยกวิเคราะห์ XML

ในการจัดการคำขอพร้อมกันจำนวนมาก Node.js จะใช้โมเดลการดำเนินการโค้ดแบบอะซิงโครนัสโดยอิงตามการจัดการเหตุการณ์ที่ไม่บล็อกและการกำหนดตัวจัดการการโทรกลับ วิธีการที่รองรับสำหรับการเชื่อมต่อแบบมัลติเพล็กซ์ได้แก่ epoll, kqueue, /dev/poll และ select ในการมัลติเพล็กซ์การเชื่อมต่อ จะใช้ไลบรารี libuv ซึ่งเป็นซูเปอร์เซ็ตของ libev บนระบบ Unix และ IOCP บน Windows ไลบรารี libeio ถูกใช้เพื่อสร้างพูลเธรด และ c-ares จะถูกรวมเข้าเพื่อดำเนินการสอบถาม DNS ในโหมดที่ไม่บล็อค การเรียกระบบการบล็อกทั้งหมดจะดำเนินการภายในพูลเธรด จากนั้นเช่นเดียวกับตัวจัดการสัญญาณ จะส่งผลลัพธ์ของงานกลับผ่านท่อที่ไม่ได้ตั้งชื่อ

มั่นใจในการรันโค้ด JavaScript ผ่านการใช้เอ็นจิ้น V8 ที่พัฒนาโดย Google (นอกจากนี้ Microsoft กำลังพัฒนาเวอร์ชันของ Node.js ด้วยเอ็นจิ้น Chakra-Core) โดยพื้นฐานแล้ว Node.js นั้นคล้ายคลึงกับ Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks และการใช้งานเหตุการณ์ใน Tcl แต่เหตุการณ์วนซ้ำใน Node.js ถูกซ่อนจากนักพัฒนาและคล้ายกับการประมวลผลเหตุการณ์ในเว็บแอปพลิเคชัน ทำงานในเบราว์เซอร์

ที่มา: opennet.ru

เพิ่มความคิดเห็น