1 điểm bởi GN⁺ 2025-01-25 | 1 bình luận | Chia sẻ qua WhatsApp

Cập nhật Bun 1.2

  • Bun 1.2 cải thiện đáng kể khả năng tương thích với Node.js, đồng thời tích hợp sẵn API lưu trữ đối tượng S3 và client Postgres. bun install giờ đây sử dụng bun.lock dạng văn bản. Hiệu năng của Express được tăng gấp 3 lần.

Khả năng tương thích Node.js

  • Bun được thiết kế như một giải pháp thay thế cho Node.js và cải thiện khả năng tương thích bằng cách chạy bộ kiểm thử của Node.js.
  • Bằng cách xử lý các khác biệt trong API nội bộ và thông báo lỗi, Bun vượt qua được các bài kiểm thử của hơn 90% module Node.js.

Máy chủ HTTP/2 và các module khác

  • Có thể tạo máy chủ HTTP/2 bằng node:http2, và điều này cũng cần thiết cho máy chủ gRPC.
  • Có thể bind và kết nối socket UDP bằng node:dgram.
  • Có thể dùng node:cluster để tạo nhiều instance Bun nhằm xử lý công việc song song.
  • Module node:zlib đã được viết lại bằng mã native để tăng hiệu năng lên gấp 2 lần.

Hỗ trợ S3

  • Bun 1.2 tích hợp sẵn API S3 để đọc, ghi và xóa tệp.
  • Client S3 của Bun được viết bằng mã native và nhanh hơn Node.js 5 lần.

Hỗ trợ Postgres

  • Có thể dùng Bun.sql để thực thi truy vấn SQL, giúp ngăn chặn SQL injection.
  • Bun.sql nhanh hơn 50% so với các client Postgres khác.

Trình quản lý gói

  • bun install giờ đây sử dụng bun.lock dạng văn bản để nhanh hơn và giảm xung đột khi merge.
  • Có thể dùng chú thích và dấu phẩy cuối trong package.json.
  • Có thể đọc tệp .npmrc để cấu hình npm registry.

Trình chạy kiểm thử

  • Bun cung cấp sẵn trình chạy kiểm thử tích hợp, giúp việc viết và chạy kiểm thử trở nên dễ dàng.

1 bình luận

 
GN⁺ 2025-01-25
Ý kiến trên Hacker News
  • Một số người dùng đặt câu hỏi về việc đưa thư viện bên ngoài vào thư viện cốt lõi, và cho rằng sẽ tốt hơn nếu để chúng ở dạng thư viện tùy chọn

    • Runtime cần rất thận trọng khi đưa thứ gì đó vào thư viện chuẩn, vì những gì đã được thêm vào cũng có thể khiến dự án trở nên phức tạp hơn
  • Có ý kiến cho rằng trải nghiệm sử dụng Bun rất tốt

    • Việc cấu hình TypeScript, Jest, React, Webpack từng rất phiền phức, nhưng Bun thì đơn giản và hiệu quả
    • Không thể bình luận về việc tích hợp thư viện bên ngoài, nhưng nhìn chung Bun đang tập trung vào những gì được yêu cầu nhiều nhất
  • Có ý kiến cho rằng hành vi mặc định quá mang tính "ma thuật"

    • Ví dụ, việc cung cấp cho người dùng presigned URL thay vì tải file S3 xuống là một lựa chọn gây bất ngờ
    • Không rõ cách tắt hành vi này
  • Có ý kiến cho rằng các tính năng tích hợp sẵn tạo ra khác biệt lớn

    • Họ thích việc Web API được tích hợp mặc định trong runtime của V8 và Webkit
    • Tuy nhiên, S3 có thể là một bước đi quá xa; còn SQL driver thì có thể hiểu được, nhưng vẫn cần cân nhắc nên tích hợp đến mức nào
    • Việc thêm các API nhạy cảm có thể khiến các vấn đề bảo mật bị bỏ sót
  • Có ý kiến cho rằng một khách hàng đang dùng Bun trong production và trải nghiệm phát triển rất tốt

    • Trải nghiệm phát triển có thể đóng vai trò rất lớn về lâu dài
    • Nếu codebase hoặc quy trình không tốt, có thể sẽ mất đi nhân sự giỏi
  • Có ý kiến cho rằng danh sách tính năng của Bun quá dài nên khó tin rằng mọi thứ đều vững chắc và không có lỗi

    • Xét từ góc độ quản lý dự án, họ không hiểu vì sao lại dành thời gian cho hỗ trợ S3
    • Thu hút khách hàng Next.js có lẽ sẽ là cách tăng trưởng tốt hơn
  • Bun 1.2 đã bổ sung hỗ trợ HTML import

    • Có thể thay thế toàn bộ toolchain frontend chỉ với một câu lệnh import duy nhất
    • Có ý kiến cho rằng đây là một tính năng rất đáng kinh ngạc và tuyệt vời
  • Có ý kiến cho rằng lần đầu dùng Bun là một trải nghiệm rất ấn tượng

    • Việc cấu hình Webpack hay Vite từng rất phiền phức, nhưng Bun thì chạy ngay lập tức
    • Trước đây không đáng để cấu hình cho các script nhỏ, nhưng Bun hoạt động rất xuất sắc
  • Có ý kiến cho rằng ban đầu họ nghĩ Bun sẽ thất bại với vai trò thay thế Node.js, nhưng sau khi dùng thử thì thấy hài lòng

    • Họ có thể dễ dàng tạo các script độc lập để xử lý TypeScript và cập nhật SQLite DB
    • Họ cũng đã thử dùng nó trong các dự án JS/TypeScript mới, và mọi thứ đều chạy rất nhanh
  • Có ý kiến cho rằng quy trình đảm bảo chất lượng chỉ mang tính hình thức

    • Có vẻ như các thay đổi đã được merge và phát hành ngay cả khi build chưa pass
    • Nếu test không ổn định thì sẽ rất khó theo dõi các lỗi hồi quy