- REPL ถูกเขียนใหม่ทั้งหมดด้วย Zig มอบการเริ่มใช้งานได้ทันทีและ UI เทอร์มินัลที่หลากหลาย พร้อมรองรับฟังก์ชันต่าง ๆ เช่น คัดลอกไปคลิปบอร์ด, เติมคำอัตโนมัติด้วยแท็บ, บันทึกประวัติ
- คำสั่ง คอมไพล์สำหรับเบราว์เซอร์ สามารถสร้าง ไฟล์ HTML เดียวที่อินไลน์ทุกอย่างไว้แล้ว จึงรันได้โดยไม่ต้องมีเซิร์ฟเวอร์
- รองรับ ES decorators มาตรฐาน TC39 อย่างสมบูรณ์ ทำให้ใช้งานไวยากรณ์ล่าสุดอย่าง
accessor, Symbol.metadata, addInitializer ได้
- มีการปรับปรุงแพลตฟอร์มและประสิทธิภาพหลายด้าน เช่น รองรับ Windows ARM64, การเพิ่มประสิทธิภาพ barrel import, ตัวเลือก retry สำหรับการทดสอบ, เอนจิน JavaScriptCore ที่เร็วขึ้น
- โดยรวมเป็นรีลีสที่ยกระดับ ประสบการณ์นักพัฒนา·ประสิทธิภาพ·ความเข้ากันได้ ของ Bun อย่างมาก
REPL ใหม่
- REPL ถูกเปลี่ยนเป็น การติดตั้งแบบเนทีฟบน Zig ทำให้เริ่มใช้งานได้ทันทีโดยไม่ต้องพึ่งพาแพ็กเกจ npm ภายนอก
- รองรับ syntax highlighting, คีย์ไบน์ดิงแบบ Emacs, การเติมคำด้วยแท็บ, การบันทึกประวัติ, การป้อนข้อมูลหลายบรรทัด
- มี คำสั่งในตัว เช่น
.copy, .help, .exit, .editor
- คงค่าการประกาศ
const/let, รองรับทั้ง top-level await และ import/require
--compile --target=browser
bun build --compile --target=browser สร้าง HTML ที่อินไลน์ JavaScript·CSS·assets
- แท็ก
<script src="..."> และ <link rel="stylesheet"> จะถูกแปลงเป็นโค้ดอินไลน์ตามลำดับ
- รันได้แม้ในสภาพแวดล้อม
file:// โดยไม่ติดข้อจำกัด CORS
- รองรับ TypeScript, JSX, React, CSS, ESM, CJS ทั้งหมด
ES decorators มาตรฐาน TC39
- รองรับ standard decorators ระดับ Stage-3 อย่างสมบูรณ์
- ติดตั้งสเปกล่าสุด เช่น คีย์เวิร์ด
accessor, Symbol.metadata, ClassMethodDecoratorContext
- รองรับ field·method·class decorators และ initializer (
addInitializer)
- experimental decorators เดิมของ TypeScript (
experimentalDecorators) ยังคงทำงานต่อไป
รองรับ Windows ARM64
- สามารถรันและบิลด์ Bun บน Windows ที่ใช้ ARM64 เช่น Snapdragon ได้
- รองรับ cross-compile ไปยังเป้าหมาย
bun-windows-arm64
- ใช้งานได้เหมือนกันทั้งจาก CLI และ API
การเพิ่มประสิทธิภาพ barrel import
- ตรวจจับ โครงสร้าง re-export ของไฟล์ barrel แบบ
import { Button } from 'antd' ได้โดยอัตโนมัติ
- ปรับแต่งอัตโนมัติเมื่อกำหนด
"sideEffects": false
- ระบุได้อย่างชัดเจนด้วยตัวเลือก
optimizeImports
- พาร์สเฉพาะซับโมดูลที่จำเป็น ทำให้ความเร็วในการบิลด์ดีขึ้นได้สูงสุด 2 เท่า
การเพิ่มประสิทธิภาพเอาต์พุต bundle
- ใน bundle แบบ ESM/CJS มีการ ลดจำนวน closure และการใช้หน่วยความจำ heap
- จำนวนออบเจ็กต์ลดลง 11%, ขนาด heap ลดลง 4MB, จำนวนฟังก์ชันและ environment object ลดลงอย่างมาก
- ถูกนำไปใช้โดยอัตโนมัติโดยไม่ต้องแก้โค้ด
bun test --retry
- สามารถตั้งค่า จำนวน retry เริ่มต้นสำหรับทั้งชุดทดสอบ ได้ (
--retry N)
- ตัวเลือก
{ retry: N } ของแต่ละเทสต์จะมีลำดับความสำคัญสูงกว่า
- ใน JUnit XML reporter จะบันทึกแต่ละครั้งที่ลองใหม่เป็น
<testcase> แยกกัน
การปรับปรุง Bun.generateHeapSnapshot("v8")
- ตัวเลือก
"arraybuffer" ช่วย คืนค่า heap snapshot ในรูปแบบ ArrayBuffer
- ตัด overhead จากการแปลงเป็นสตริงเมื่อจัดการ snapshot ขนาดใหญ่
อัปเดต TLS และใบรับรอง
- รองรับ keepalive สำหรับการเชื่อมต่อ mTLS·custom CA เพื่อเพิ่มประสิทธิภาพ
- การตั้งค่า TLS ที่เหมือนกันจะถูก dedupe ใน global registry
- root certificates ได้รับการอัปเดตเป็น NSS 3.119 (Firefox 147.0.3)
- ลบ root certificate ของ CommScope ออก 4 รายการ
อัปเกรดเอนจิน JavaScriptCore
- มี การเพิ่มประสิทธิภาพ หลายด้าน เช่น string slicing เร็วขึ้น 168 เท่า,
endsWith 10.5 เท่า, การเข้าถึงแฟล็ก RegExp 1.6 เท่า, path.parse() สูงสุด 7 เท่า
structuredClone เร็วขึ้นสูงสุด 25 เท่า กับ array และ array ของ object
Buffer.slice() และ subarray() ดีขึ้นประมาณ 1.8 เท่า
- มีการปรับแต่งภายในสำหรับ
BigInt, string iterator, การคำนวณจำนวนเต็ม เป็นต้น
การแก้บั๊กสำคัญ
- แก้ปัญหาความเข้ากันได้ของ pipe กับ Python asyncio MCP server (
Bun.spawn)
- ความเข้ากันได้กับ Node.js: แก้หลายจุดใน
AsyncLocalStorage, fs.watch, การจัดการเฮดเดอร์ http, ปัญหา crash ที่เกี่ยวข้องกับ GC เป็นต้น
- Bun API: แก้ crash และ memory leak ที่เกี่ยวข้องกับ
spawn, plugin, sql, build
- ปรับปรุงเสถียรภาพโดยรวมของ WebSocket, bun install, CSS parser, bun shell, สภาพแวดล้อม Windows
- ช่องโหว่ด้านความปลอดภัย: แก้ปัญหา HTTP header injection, tarball path traversal, S3 stream leak เป็นต้น
1 ความคิดเห็น
ความรู้สึกที่ได้จากการเฝ้าดูการพัฒนามาเป็นเวลาค่อนข้างนาน และได้ลองใช้เป็นระยะตั้งแต่ช่วงแรก ๆ ก็คือ นักพัฒนา Bun ต้องการอย่างจริงจังให้โลกของ JS/TS เดินไปได้เร็วขึ้นจริง ๆ น่าทึ่งมาก จริง ๆ...