10 คะแนน โดย GN⁺ 2026-03-04 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 ความคิดเห็น

 
tsboard 2026-03-04

ความรู้สึกที่ได้จากการเฝ้าดูการพัฒนามาเป็นเวลาค่อนข้างนาน และได้ลองใช้เป็นระยะตั้งแต่ช่วงแรก ๆ ก็คือ นักพัฒนา Bun ต้องการอย่างจริงจังให้โลกของ JS/TS เดินไปได้เร็วขึ้นจริง ๆ น่าทึ่งมาก จริง ๆ...