เปิดตัว Bun 1.3
(bun.sh)- Bun 1.3 เป็นรีลีสครั้งใหญ่ที่พัฒนาต่อยอดเป็น รันไทม์ JavaScript แบบฟูลสแตกที่รองรับทั้งการพัฒนาฝั่งฟรอนต์เอนด์และแบ็กเอนด์
- รวมความสามารถสำคัญไว้ในตัว เช่น เซิร์ฟเวอร์พัฒนาฟรอนต์เอนด์ในตัว ที่มี React และ CSS bundling รวมถึง ไคลเอนต์สำหรับ MySQL·PostgreSQL·SQLite·Redis
- รองรับ การคอมไพล์เป็นไฟล์รันได้ไฟล์เดียว ผ่าน
bun buildพร้อม code signing และ cross compilation เพื่อให้การดีพลอยสะดวกขึ้น - ตัวจัดการแพ็กเกจเพิ่มความสามารถสำหรับโมโนรีโปขนาดใหญ่ เช่น isolated installs, Security Scanner API, และ catalog ของ dependency
- มีการปรับปรุงครั้งใหญ่แทบทุกด้าน ไม่ว่าจะเป็น test runner, Web API, ความปลอดภัย, ความเข้ากันได้กับ Node.js และประสิทธิภาพ ทำให้ก้าวสู่การเป็น “แพลตฟอร์มรันไทม์ที่สมบูรณ์”
การรวมรันไทม์แบบฟูลสแตก
- Bun 1.3 รวมความสามารถสำหรับการพัฒนาแบบฟูลสแตก เช่น การรัน HTML, routing, hot reload และ WebSocket เข้าไว้ใน
Bun.serve()- รองรับ React Fast Refresh และ native HMR
- รวมเซิร์ฟเวอร์แบ็กเอนด์และฟรอนต์เอนด์ไว้ในโปรเซสเดียว เพื่อ แก้ปัญหา CORS ที่ต้นเหตุ
- ใช้
bun build --compileเพื่อ bundle ฟรอนต์เอนด์และแบ็กเอนด์เป็นไฟล์รันได้ไฟล์เดียว ได้
รองรับฐานข้อมูลและ Redis
- Bun.SQL รวมการรองรับ MySQL·MariaDB·PostgreSQL·SQLite ไว้ภายใต้ API เดียว
- ใช้งาน PostgreSQL array type ได้สะดวกผ่าน helper
sql.array - ปรับปรุงรายละเอียดเพิ่มเติม เช่น การเชื่อมต่อผ่าน Unix domain socket, simple query protocol และการจัดการ null
- ใช้งาน PostgreSQL array type ได้สะดวกผ่าน helper
- เพิ่ม Redis client ในตัว, ประสิทธิภาพสูงกว่า ioredis ได้สูงสุด 7.9 เท่า และรองรับ Pub/Sub อย่างสมบูรณ์
ความสามารถด้าน bundler และการ build
- ใช้ API
Bun.build()เพื่อ สร้างไฟล์รันได้จากภายในโค้ด ได้ - รองรับ code signing (macOS·Windows), cross compilation (Linux/macOS/Windows) และ การกำหนด metadata
- มี minifier ที่ฉลาดขึ้น สำหรับลบโค้ดที่ไม่ได้ใช้ รองรับตัวเลือกการตั้งค่า JSX และรูปแบบ Glob
ขยายความสามารถของการจัดการแพ็กเกจ
- เปิดใช้ Isolated installs เป็นค่าเริ่มต้น โดยแต่ละ workspace จะเข้าถึงได้เฉพาะ dependency ของตนเอง
- ฟีเจอร์ Catalog สำหรับจัดการเวอร์ชัน dependency แบบศูนย์กลางภายในโมโนรีโป
- เพิ่ม Security Scanner API และ minimumReleaseAge เพื่อเสริมการป้องกันการโจมตีซัพพลายเชน
- มีเครื่องมือจัดการระดับ npm·pnpm ครบถ้วน เช่น
bun why,bun update --interactive,bun info,bun audit
การปรับปรุงด้านการทดสอบและดีบัก
bun testเพิ่ม การเชื่อมต่อกับ VS Code Test Explorer, การทดสอบแบบขนาน (test.concurrent), การรันแบบสุ่ม และ type test (expectTypeOf)- รองรับ chain
.failing,.serial,.eachและ คงการเยื้องของ snapshot อัตโนมัติ - ป้องกันการใช้ test.only ในสภาพแวดล้อม CI และ เพิ่มความสม่ำเสมอของลำดับการทดสอบ
เสริมมาตรฐาน Web API และรันไทม์
- มี YAML parsing/serialization ในตัว และสามารถ import ไฟล์
.yamlได้โดยตรง - รองรับ การจัดการคุกกี้อัตโนมัติ ผ่าน API
request.cookies - รองรับ stream helper เช่น ReadableStream .text()/.json(), การบีบอัด Zstandard และ การโหลด WebAssembly แบบสตรีมมิง
- ติดตั้งใช้งาน DisposableStack/AsyncDisposableStack เพื่อให้การจัดการและคืนทรัพยากรง่ายขึ้น
ความปลอดภัยและความสามารถระดับระบบ
- ใช้
Bun.secretsเพื่อเข้าถึง secure storage ของระบบปฏิบัติการ (เช่น Keychain) ได้ - มี
Bun.CSRFสำหรับ API สร้างและตรวจสอบ CSRF token - โมดูล crypto เร็วขึ้น 400 เท่า, พร้อมการปรับปรุง Diffie-Hellman, HKDF และการคำนวณ Prime
ความเข้ากันได้กับ Node.js ที่ดีขึ้น
- ผ่านการทดสอบของ Node.js เพิ่มอีกกว่า 800 รายการ และขยายการรองรับ
node:test,node:vm,worker_threads,fs,http2อย่างมาก - รองรับคอร์โมดูลส่วนใหญ่ได้สมบูรณ์ เช่น require.extensions, process.binding(), การควบคุม native addon, perf_hooks, tls, cluster
- ความเข้ากันได้ของ N-API สูงกว่า 98% และระบุรันไทม์ในระดับเดียวกับ Node.js 24.3.0
การปรับปรุงประสบการณ์นักพัฒนา
- เปลี่ยนค่าตั้งต้นของ TypeScript (
"module": "Preserve") - เพิ่มการควบคุมรันไทม์ผ่าน ตัวแปรสภาพแวดล้อม
BUN_OPTIONS,--console-depth,--user-agent - รองรับ preload script (
BUN_INSPECT_PRELOAD) และ SQL Preconnect - ปรับปรุง
bunxให้รันได้แม้ชื่อแพ็กเกจกับชื่อไบนารีไม่ตรงกัน
ประสิทธิภาพและความเสถียร
- ลดการใช้ CPU ขณะ idle, เพิ่มประสิทธิภาพ GC, ลดหน่วยความจำ 10~30%, เพิ่มความเร็วการ build 60%
postMessageเร็วขึ้นสูงสุด 500 เท่า,bun installเร็วขึ้น 2.5 เท่า,Array.includesเร็วขึ้น 2.8 เท่า- การปรับแต่งระดับ WebKit·Zig ช่วยเพิ่มความเร็วโดยรวมของรันไทม์
- แก้ไข บั๊กหลายร้อยรายการ และ memory leak ทำให้เสถียรภาพดีขึ้นอย่างมาก
การเปลี่ยนแปลงสำคัญ
- โครงสร้าง type ของ
Bun.serve()เปลี่ยน และเปลี่ยนชื่อจากstaticเป็นroutes - รูปแบบการเรียกใช้ SQL client เปลี่ยนจาก แบบฟังก์ชัน → tagged template
- สัญญาณ GC บน Linux เปลี่ยนเป็น SIGPWR
- เปลี่ยนการแสดงเวอร์ชัน Node.js จาก 22.x → 24.3.0
Bun 1.3 เป็นจุดเปลี่ยนจากการเป็นเพียงรันไทม์ สู่ “แพลตฟอร์มแบบบูรณาการที่ครอบคลุม Node·Deno·Vite·pnpm”
5 ความคิดเห็น
แม้จะลองใช้แค่แป๊บเดียว แต่จากที่ได้ใช้มาตั้งแต่ช่วงแรกก็รู้สึกว่าพัฒนาไปไกลมาก จนทำให้นึกเลยว่า หรือจะลองใช้อีกสักรอบดีนะ 555
หวังว่าถ้าพัฒนาต่อไปได้ดี ก็น่าจะดีนะครับ
มีแผนแบบนี้อยู่ด้วยสินะ!!
ชอบที่อินเทอร์เฟซ SQL ถูกทำให้เป็นแบบเดียวกัน
น่าจะมีเหตุผลที่ Vite ยังไม่รวมเข้าด้วยกัน เลยอยากรู้ว่า Bun มีฟีดแบ็กจากการใช้งานจริงเป็นอย่างไรบ้างครับ