6 điểm bởi GN⁺ 2024-04-02 | 1 bình luận | Chia sẻ qua WhatsApp

Hỗ trợ Windows

  • Có thể chạy Bun trên Windows 10 trở lên
  • Vượt qua 98% bộ test của Bun trên macOS và Linux
  • Bao gồm trình quản lý gói tương thích npm tích hợp, khi cài ứng dụng Vite React nhanh hơn yarn 18 lần và nhanh hơn npm 30 lần
  • Hỗ trợ thực thi script nhanh hơn trên Windows với định dạng tệp .bunx
  • Tối ưu hóa API Node.js bằng cách sử dụng các system call nhanh nhất trên Windows
    • Ví dụ: fs.readdir() nhanh hơn Node.js 58%

Bun là một JavaScript runtime

  • Hỗ trợ JavaScript, TypeScript, JSX
  • Các công cụ dòng lệnh như tsc nhanh hơn tối đa 2 lần so với Bun 1.0
  • Bun Shell giờ đã trở thành shell đa nền tảng có thể dùng cả trên Windows
    • Bao gồm các utility cốt lõi như ls, rm, cat
    • Có thể chạy shell từ JavaScript và TypeScript bằng API Bun.$
  • Bun.Glob
    • Cung cấp API Glob tích hợp để khớp tệp và chuỗi
    • Tương tự fast-globmicromatch nhưng khớp chuỗi nhanh hơn 3 lần
  • Bun.Semver
  • API Semver mới để phân tích và sắp xếp chuỗi semver
    • Tương tự gói node-semver nhưng nhanh hơn 20 lần
  • Bun.stringWidth()
    • API mới để đo độ rộng hiển thị của chuỗi trong terminal
    • Hỗ trợ mã thoát ANSI, ký tự toàn chiều rộng, grapheme, emoji
  • server.url: có thể lấy URL của máy chủ HTTP được tạo bằng Bun.serve() thông qua thuộc tính server.url
  • server.requestIP(): có thể lấy địa chỉ IP của yêu cầu HTTP bằng phương thức server.requestIP()
  • subprocess.resourceUsage(): có thể truy cập mức sử dụng CPU và bộ nhớ của tiến trình con được tạo bằng Bun.spawn() qua phương thức resourceUsage()
  • Cải thiện khả năng tương thích Node.js
    • Cải tiến nhiều API như API client node:http2, khả năng tương thích Date.parse(), hỗ trợ fs.readdir() đệ quy, v.v.
    • Có thể IPC giữa Bun và Node.js
    • Cũng hỗ trợ một số API Node.js không được tài liệu hóa
  • Web API: hỗ trợ các API tiêu chuẩn Web như WebSocket, performance.mark(), fetch() dùng nén Brotli, URL.canParse()

Bun là trình quản lý gói tương thích npm

  • Có thể cài đặt gói npm nhanh hơn tối đa 29 lần bằng bun install
  • Cải thiện các tính năng như lifecycle script, trustedDependencies, bun pm trust

Bun là trình bundler JavaScript

  • Hỗ trợ bundle mã có thể chạy trên Node.js bằng bun build --target=node
  • Có thể biên dịch tệp TypeScript và JavaScript thành file thực thi đơn bằng cờ --compile

Bun là test runner

  • Cung cấp module test tích hợp hỗ trợ cùng API như Jest
  • Thêm matcher expect() mới và hỗ trợ module mocking

Hỗ trợ SQLite tích hợp

  • Hỗ trợ SQLite với API lấy cảm hứng từ better-sqlite3
  • Cải thiện truy vấn nhiều câu lệnh, thông báo lỗi chi tiết, import cơ sở dữ liệu và hỗ trợ tích hợp

Ý kiến của GN⁺

  • Bun là bộ công cụ JavaScript cải thiện mạnh về hiệu năng trong khi vẫn giữ khả năng tương thích với Node.js, và nhờ hỗ trợ Windows nên giờ có thể tiếp cận cộng đồng nhà phát triển rộng hơn.
  • Test runner tích hợp và hỗ trợ SQLite giúp nhà phát triển làm việc hiệu quả mà không cần thêm công cụ phụ trợ.
  • Hiệu năng nhanh và trải nghiệm lập trình được cải thiện của Bun có thể đặc biệt nổi bật trong các dự án quy mô lớn hoặc ứng dụng nhạy cảm với hiệu năng.
  • Dù Bun cung cấp nhiều tính năng và cải tiến, để đạt được khả năng tương thích hoàn toàn với hệ sinh thái gói phong phú của Node.js thì vẫn cần phát triển liên tục và phản hồi từ cộng đồng.
  • Cần thêm phân tích về cách các tính năng mới của Bun có thể cạnh tranh hoặc phối hợp với các công cụ hiện có dựa trên Node.js.

1 bình luận

 
GN⁺ 2024-04-02
Ý kiến Hacker News
  • Danh sách thay đổi ấn tượng của Bun

    • Bun có vẻ là một giải pháp thay thế lý tưởng cho Node.js, và việc dành thời gian hỗ trợ Windows là điều thường bị bỏ qua trong thế giới phát triển web.
    • Có câu hỏi liệu câu "Bun on Windows passes 98% of our own test suite for Bun on macOS and Linux." có nghĩa là bản Windows đã được phát hành dù vẫn còn các bài kiểm thử thất bại, hay chỉ là cách diễn đạt dễ gây hiểu nhầm.
  • Tính năng macro của Bun

    • Có người nhận ra Bun có tính năng macro cơ bản cho phép chạy mã ở thời điểm bundling. Đây là một tính năng rất thú vị.
  • Nghi vấn về lý do dùng Bun và Deno

    • Có người nhận thấy Bun và Deno cần khả năng tương thích với Node.js là điều bắt buộc, nhưng vẫn đặt câu hỏi về tính bền vững của sản phẩm khi còn có vốn VC hậu thuẫn.
    • Dù Bun và Deno đều thuộc hệ sinh thái kiểu Node.js (dù có phần chưa hoàn thiện), vẫn chưa rõ lý do thuyết phục để phải dùng chúng.
  • Người hâm mộ nhiệt thành của Bun

    • Ban đầu họ dùng Bun vì khả năng tương thích với TypeScript, và tiếp tục dùng vì hiệu năng.
    • Họ đã thử Deno nhưng thấy khó dùng, trong khi Bun dễ tích hợp và mang lại trải nghiệm rất dễ chịu.
  • Đánh giá về bản phát hành mới của Bun

    • Có người đã xem video về Bun, nhưng biểu đồ không đủ rõ để biết đang so sánh với phiên bản Bun trước đó hay với Node.js.
    • Trải nghiệm dùng Bun cho các dự án phụ là tích cực, và các API tích hợp sẵn hoạt động tốt. Họ mong Deno và Node.js cũng sẽ áp dụng một phần các API này.
    • Bun mặc định thu thập một số telemetry. Điều này không được thông báo trong script cài đặt mà chỉ được nhắc đến trong tài liệu Bunfile.
    • Họ muốn người dùng được hướng dẫn cách tắt telemetry trong quá trình cài đặt, đồng thời biến nó thành tính năng opt-in.
    • Bun cung cấp tùy chọn đóng gói entry point .js của dự án cùng runtime để tạo ra file thực thi không có phụ thuộc. Điều này hữu ích khi muốn phân phối một binary duy nhất cho người dùng, nhưng hiện tại kích thước file vẫn còn khá lớn (trên 90MB với dự án nhỏ trên GNU/Linux).
    • Có người thắc mắc liệu Bun có cung cấp tùy chọn tắt một số tính năng để tạo binary nhỏ hơn hay không.
    • Có người đang thử dùng Bun làm target cho Haxe, và đây có thể là lựa chọn đáng cân nhắc nếu bạn thích Haxe hơn TypeScript hoặc muốn thêm web server vào dự án Haxe hiện có.
  • Yêu cầu gửi tới nhóm Bun

    • Có đề nghị cung cấp chính sách hỗ trợ/lộ trình vòng đời rõ ràng. Sự minh bạch về cam kết ổn định giữa các phiên bản và module cũng rất quan trọng.
  • Sự tham gia của nhà phát triển Bun

    • Một nhà phát triển Bun cho biết họ sẵn sàng trả lời câu hỏi. Họ cũng nói rằng Bun v1.1 vẫn đang được biên dịch và sẽ mất thêm khoảng 20 phút nữa để hoàn tất.
  • Câu hỏi về độ ổn định của Bun

    • Có người cho biết đã thử Bun ba lần trong nhiều dự án, nhưng gặp lỗi segmentation fault khi chạy runtime hoặc cài đặt package.
  • Mô hình doanh thu và vốn VC của Bun

    • Có câu hỏi về mô hình doanh thu của Bun và điều gì sẽ xảy ra khi nguồn vốn VC cạn kiệt.