รองรับ Windows
- สามารถรัน Bun บน Windows 10 ขึ้นไปได้
- ผ่าน 98% ของชุดทดสอบ Bun บน macOS และ Linux
- มาพร้อมตัวจัดการแพ็กเกจที่เข้ากันได้กับ npm ในตัว ทำให้ติดตั้งแอป Vite React ได้เร็วกว่า
yarn 18 เท่า และเร็วกว่า npm 30 เท่า
- รองรับการรันสคริปต์บน Windows ได้เร็วขึ้นด้วยรูปแบบไฟล์
.bunx
- ปรับแต่ง Node.js API ให้เหมาะกับ Windows โดยใช้ system call ที่เร็วที่สุด
- ตัวอย่าง:
fs.readdir() เร็วกว่า Node.js 58%
Bun คือ JavaScript runtime
- รองรับ JavaScript, TypeScript และ JSX
- เครื่องมือบรรทัดคำสั่งอย่าง
tsc เร็วกว่า Bun 1.0 ได้สูงสุด 2 เท่า
- ตอนนี้ Bun Shell กลายเป็นเชลล์ข้ามแพลตฟอร์มที่ใช้งานได้บน Windows ด้วย
- มี core utility เช่น
ls, rm, cat
- สามารถรันเชลล์จาก JavaScript และ TypeScript ได้ผ่าน API
Bun.$
Bun.Glob
- มี Glob API ในตัวสำหรับจับคู่ไฟล์และสตริง
- คล้ายกับ
fast-glob และ micromatch แต่จับคู่สตริงได้เร็วกว่า 3 เท่า
Bun.Semver
- API Semver ใหม่สำหรับแยกวิเคราะห์และจัดเรียงสตริง semver
- คล้ายกับแพ็กเกจ
node-semver แต่เร็วกว่า 20 เท่า
Bun.stringWidth()
- API ใหม่สำหรับวัดความกว้างที่มองเห็นได้ของสตริงในเทอร์มินัล
- รองรับ ANSI escape code, อักขระ full-width, grapheme และอีโมจิ
server.url : สามารถรับ URL ของ HTTP server ที่สร้างด้วย Bun.serve() ได้ผ่านพร็อพเพอร์ตี server.url
server.requestIP() : สามารถรับ IP address ของคำขอ HTTP ได้ผ่านเมธอด server.requestIP()
subprocess.resourceUsage() : สามารถเข้าถึงการใช้ CPU และหน่วยความจำของ subprocess ที่สร้างด้วย Bun.spawn() ได้ผ่านเมธอด resourceUsage()
- ปรับปรุงความเข้ากันได้กับ Node.js
- ปรับปรุง API หลายส่วน เช่น
node:http2 client API, ความเข้ากันได้ของ Date.parse(), การรองรับ fs.readdir() แบบ recursive เป็นต้น
- ทำ IPC ระหว่าง Bun และ Node.js ได้
- รองรับ Node.js API บางส่วนที่ไม่มีเอกสารด้วย
- Web API : รองรับ Web standard API เช่น
WebSocket, performance.mark(), fetch() ที่ใช้การบีบอัด Brotli และ URL.canParse()
Bun คือ npm-compatible package manager
- ใช้
bun install เพื่อติดตั้งแพ็กเกจ npm ได้เร็วขึ้นสูงสุด 29 เท่า
- ปรับปรุงฟีเจอร์อย่าง lifecycle script,
trustedDependencies, bun pm trust เป็นต้น
Bun คือ JavaScript bundler
- รองรับการ bundle โค้ดที่รันบน Node.js ได้ด้วย
bun build --target=node
- สามารถคอมไพล์ไฟล์ TypeScript และ JavaScript เป็นไฟล์ executable เดี่ยวได้ด้วยแฟล็ก
--compile
Bun คือ test runner
- มีโมดูลทดสอบในตัวที่รองรับ API เดียวกับ Jest
- เพิ่ม matcher ใหม่ให้
expect() และรองรับการ mock โมดูล
รองรับ SQLite ในตัว
- รองรับ SQLite ด้วย API ที่ได้แรงบันดาลใจจาก
better-sqlite3
- ปรับปรุงการรองรับ multi-statement query, ข้อความแสดงข้อผิดพลาดแบบละเอียด, การนำเข้าฐานข้อมูล และความสามารถในตัว
ความเห็นจาก GN⁺
- Bun เป็นชุดเครื่องมือ JavaScript ที่เพิ่มประสิทธิภาพอย่างมากพร้อมคงความเข้ากันได้กับ Node.js และการรองรับ Windows ทำให้เข้าถึงชุมชนนักพัฒนาได้กว้างขึ้น
- test runner และการรองรับ SQLite ในตัวช่วยให้นักพัฒนาทำงานได้อย่างมีประสิทธิภาพโดยไม่ต้องพึ่งเครื่องมือเพิ่มเติม
- ประสิทธิภาพที่รวดเร็วและประสบการณ์นักพัฒนาที่ดีขึ้นของ Bun อาจโดดเด่นเป็นพิเศษในโปรเจกต์ขนาดใหญ่หรือแอปพลิเคชันที่ไวต่อประสิทธิภาพ
- แม้ Bun จะมีฟีเจอร์และการปรับปรุงหลากหลาย แต่การทำให้เข้ากันได้อย่างสมบูรณ์กับแพ็กเกจจำนวนมหาศาลใน ecosystem ของ Node.js ยังต้องอาศัยการพัฒนาอย่างต่อเนื่องและฟีดแบ็กจากชุมชน
- จำเป็นต้องมีการวิเคราะห์เพิ่มเติมว่าฟีเจอร์ใหม่ของ Bun จะสามารถแข่งขันหรือทำงานร่วมกับเครื่องมือเดิมที่อิง Node.js ได้อย่างไร
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
รายการการเปลี่ยนแปลงที่น่าประทับใจของ Bun
ฟีเจอร์มาโครของ Bun
ข้อสงสัยเกี่ยวกับเหตุผลในการใช้ Bun และ Deno
แฟนตัวยงของ Bun
การประเมินรีลีสใหม่ของ Bun
.jsของโปรเจกต์เข้ากับ runtime เพื่อสร้าง executable ที่ไม่มี dependencies ซึ่งมีประโยชน์เมื่ออยากแจกจ่ายไบนารีไฟล์เดียวให้ผู้ใช้ แต่ตอนนี้ขนาดไฟล์ยังค่อนข้างใหญ่ (มากกว่า 90MB สำหรับโปรเจกต์เล็กบน GNU/Linux)คำขอต่อทีม Bun
การมีส่วนร่วมของนักพัฒนา Bun
คำถามเกี่ยวกับเสถียรภาพของ Bun
โมเดลรายได้และเงินทุน VC ของ Bun