Bun v1.3.10
(bun.com)- 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
- รองรับ cross-compile ไปยังเป้าหมาย
การเพิ่มประสิทธิภาพ 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 เท่า,
endsWith10.5 เท่า, การเข้าถึงแฟล็กRegExp1.6 เท่า,path.parse()สูงสุด 7 เท่าstructuredCloneเร็วขึ้นสูงสุด 25 เท่า กับ array และ array ของ objectBuffer.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 เดินไปได้เร็วขึ้นจริง ๆ น่าทึ่งมาก จริง ๆ...