- REPL đã được viết lại hoàn toàn bằng Zig, mang lại khả năng khởi chạy tức thì và giao diện terminal phong phú, hỗ trợ nhiều tính năng như sao chép vào clipboard, hoàn thành bằng phím Tab, lưu lịch sử, v.v.
- Với lệnh biên dịch cho mục tiêu trình duyệt, có thể tạo ra một tệp HTML duy nhất với mọi thứ được inline, nên có thể chạy mà không cần server
- ES decorator chuẩn TC39 được hỗ trợ đầy đủ, cho phép sử dụng cú pháp mới nhất như
accessor, Symbol.metadata, addInitializer
- Bao gồm nhiều cải tiến về nền tảng và hiệu năng như hỗ trợ Windows ARM64, tối ưu barrel import, tùy chọn thử lại khi test, engine JavaScriptCore cải thiện hiệu năng
- Nhìn chung, đây là bản phát hành giúp cải thiện đáng kể trải nghiệm lập trình viên, hiệu năng và khả năng tương thích của Bun
REPL mới
- REPL được thay thế bằng triển khai native dựa trên Zig, có thể chạy ngay mà không phụ thuộc vào các gói npm bên ngoài
- Hỗ trợ syntax highlighting, phím tắt Emacs, hoàn thành bằng Tab, lưu lịch sử, nhập nhiều dòng, v.v.
- Cung cấp các lệnh tích hợp sẵn như
.copy, .help, .exit, .editor
- Giữ nguyên khai báo
const/let, đồng thời hỗ trợ cả top-level await và import/require
--compile --target=browser
bun build --compile --target=browser tạo ra HTML với JavaScript, CSS và tài nguyên được inline
- Các thẻ
<script src="..."> và <link rel="stylesheet"> lần lượt được chuyển thành mã inline
- Có thể chạy mà không bị ràng buộc CORS ngay cả trong môi trường
file://
- Hỗ trợ TypeScript, JSX, React, CSS, ESM, CJS
ES decorator chuẩn TC39
- Hỗ trợ đầy đủ decorator chuẩn Stage-3
- Triển khai các đặc tả mới nhất như từ khóa
accessor, Symbol.metadata, ClassMethodDecoratorContext
- Hỗ trợ field, method, class decorator và initializer (
addInitializer)
- Decorator thử nghiệm cũ của TypeScript (
experimentalDecorators) vẫn tiếp tục hoạt động
Hỗ trợ Windows ARM64
- Có thể chạy và build Bun trên Windows chạy ARM64 như Snapdragon
- Hỗ trợ cross-compile với target
bun-windows-arm64
- Dùng giống nhau ở cả CLI và API
Tối ưu barrel import
- Tự động phát hiện cấu trúc tái xuất từ barrel file như
import { Button } from 'antd'
- Tự động tối ưu khi đặt
"sideEffects": false
- Có thể chỉ định rõ bằng tùy chọn
optimizeImports
- Chỉ parse các submodule cần thiết, giúp tốc độ build tăng tối đa gấp 2 lần
Tối ưu đầu ra bundle
- Giảm số lượng closure và mức dùng heap memory trong bundle ESM/CJS
- Số object giảm 11%, kích thước heap giảm 4MB, số object hàm và object môi trường giảm mạnh
- Tự động áp dụng mà không cần thay đổi mã
bun test --retry
- Có thể đặt số lần thử lại mặc định cho toàn bộ test (
--retry N)
- Tùy chọn
{ retry: N } của từng test riêng sẽ được ưu tiên
- Trong reporter JUnit XML, mỗi lần thử được ghi thành một
<testcase>
Cải tiến Bun.generateHeapSnapshot("v8")
- Với tùy chọn
"arraybuffer", có thể trả về heap snapshot dưới dạng ArrayBuffer
- Loại bỏ overhead chuyển đổi sang chuỗi khi xử lý snapshot lớn
Cập nhật TLS và chứng chỉ
- Hỗ trợ keepalive cho kết nối mTLS và CA tùy chỉnh giúp cải thiện hiệu năng
- Các thiết lập TLS giống nhau được khử trùng lặp trong global registry
- Chứng chỉ gốc được cập nhật lên NSS 3.119 (Firefox 147.0.3)
- Đã loại bỏ 4 chứng chỉ gốc CommScope
Nâng cấp engine JavaScriptCore
- Nhiều cải thiện hiệu năng như cắt chuỗi nhanh hơn 168 lần,
endsWith nhanh hơn 10,5 lần, truy cập cờ RegExp nhanh hơn 1,6 lần, path.parse() nhanh hơn tối đa 7 lần
structuredClone nhanh hơn tối đa 25 lần với mảng và mảng object
Buffer.slice() và subarray() cải thiện khoảng 1,8 lần
- Tối ưu nội bộ cho
BigInt, trình lặp chuỗi, phép toán số nguyên, v.v.
Các bản sửa lỗi chính
- Khắc phục vấn đề tương thích pipe với máy chủ Python asyncio MCP (
Bun.spawn)
- Tương thích Node.js: sửa nhiều lỗi ở
AsyncLocalStorage, fs.watch, xử lý header http, lỗi crash liên quan GC, v.v.
- Bun API: khắc phục crash và rò rỉ bộ nhớ liên quan đến
spawn, plugin, sql, build
- WebSocket, bun install, CSS parser, bun shell, môi trường Windows và nhiều thành phần khác được cải thiện độ ổn định toàn diện
- Lỗ hổng bảo mật: đã khắc phục chèn header HTTP, directory traversal trong tarball, rò rỉ stream S3, v.v.
1 bình luận
Điều tôi cảm nhận được sau khi theo dõi quá trình phát triển của Bun trong một khoảng thời gian khá dài và thỉnh thoảng sử dụng nó từ những ngày đầu là các nhà phát triển Bun thực sự, thật sự muốn làm cho thế giới JS/TS vận hành nhanh hơn. Thật đáng kinh ngạc. Thật sự...