Điều gì khiến Bun.sh trở nên đáng gờm với Node.js?

Điều gì khiến Bun.sh trở nên đáng gờm với Node.js?

Những mẩu tin ngắn hàng ngày dành cho bạn
  • Mọi người đã nghe nói đến Jujutsu - jj - một dạng quản lý phiên bản cho mã nguồn (version control system) chưa? Có vẻ như nó đang nhận được nhiều sự quan tâm.

    Chờ xíu! Chẳng phải git đã quá tốt rồi sao? Thế thì chế ra thằng jj để làm gì nữa? Cũng hơi khó trả lời nhỉ? Mỗi công cụ sinh ra chắc chắn phải cải thiện hoặc khắc phục được nhược điểm của cái trước. Cho nên jj ắt hẳn phải làm được điều gì đó mà git chưa làm được nên mới nổi lên như vậy.

    Thật ra mình đã nghe nói đến jj từ vài tháng trước rồi, nhưng vào đọc thì toàn kiến thức cao siêu. Hoặc là đang mang nặng cái lối suy nghĩ của git vào trong đầu rồi nên chưa lĩnh hội ra được điều gì cả.

    Mình hay có kiểu cái gì đọc lần 1 mà không hiểu thì đọc tiếp lần 2, lần 2 không hiểu thì đọc tiếp lần 3... đến lần thứ n mà vẫn không hiểu thì bỏ. Cơ mà không phải là từ bỏ mà một thời gian sau đó quay lại đọc tiếp. Đến một lúc nào đó khả năng mình sẽ hiểu ra một ít vấn đề, thế mới tài 😆.

    Thì cái jj này có vẻ như nó đang mở ra được tính linh hoạt trong việc "cam kết" mã. Tưởng tượng bạn đang làm việc trên một dự án, đang ở nhánh này, muốn sang nhánh khác để sửa, nhưng mà lại đang viết dở ở nhánh này, thế là phải stash, rồi checkout, rồi commit, rồi merge hoặc rebase lại vào nhánh cũ... nhìn chung quá trình làm việc với git nghiêm ngặt đến mức cứng nhắc, cần nhiều thao tác để giải quyết một vấn đề, chưa kể cái cây commit (commit-tree) nữa thì ôi thôi, khỏi xem cho đỡ nhức mắt. Thế nên ông jj này đang làm cách nào đó để bạn khỏi cần phải quan tâm đến các nhánh luôn, sửa trực tiếp vào commit. Nghe ảo nhỉ 😂.

    Đấy mới lĩnh hội được đến đấy, hy vọng sau n lần đọc lại nữa mình sẽ viết được một bài chi tiết hơn về công cụ này.

    » Xem thêm
  • Gòi gòi tới công chiện gòi 🤤🤤🤤

    » Xem thêm
  • Không biết blog được dẫn nguồn từ trang cà phê nào hay sao mà vài ba hôm trở lại đây thấy nhiều người tìm kiếm cà phê thế không biết 🤔.

    Tìm cả cách pha với tìm cả loại hạt, khổ nỗi họ tìm lại không ra bài viết nào vì mình chưa có viết đến mấy trường hợp đó. Phải chăng là ý trời 😀🙏

    » Xem thêm

Vấn đề

Node.js nổi tiếng với vai trò là môi trường chạy mã Javascript trên máy chủ. Nhắc đến Node không thể không nhắc đến V8 Engine cho khả năng xử lý JS mạnh mẽ, cộng với sức mạnh của C++ vốn là ngôn ngữ tạo nên nó. Node.js được cung cấp miễn phí, dễ dàng cài đặt và triển khai. Cộng đồng dùng Node rất đông cũng góp phần tạo nên sự nổi tiếng và tin tưởng.

Tuy nhiên gần đây một cái tên khác nổi lên như một hiện tượng "đe doạ" đến Node.js chính là Bun.sh. Vậy thì Bun.sh là gì và tại sao lại khiến Node.js phải dè chừng thì mời các bạn hãy đọc tiếp bài viết dưới đây.

Bun.sh là gì?

Trước tiên phải nói rằng Bun.sh cũng chính là môi trường chạy mã Javascript tương tự như Node.js. Mục tiêu của Bun là chạy được hầu hết mã JavaScript "bên ngoài trình duyệt", mang lại những cải tiến về hiệu suất và độ phức tạp cho cơ sở hạ tầng tương lai, cũng như năng suất của các nhà phát triển thông qua một công cụ tốt hơn, đơn giản hơn.

Bun.sh có gì mới và khác biệt so với Node.js?

Bun.sh không sử dụng V8 làm Javascript Engine như Node mà nó dùng JavascriptCore vốn là Engine của trình duyệt Safari. Ngoài ra Bun được viết bằng Ziglang mà họ giới thiệu là một ngôn ngữ bậc thấp (low-level) với quản lý bộ nhớ thủ công. Điều này giúp cho chi phí sử dụng tài nguyên của Bun thấp và hiệu năng cũng tăng thêm đáng kể.

Bun.sh triển khai lại hầu hết các thứ như trình biên dịch JSX/TypeScript, npm client, bundler, SQLite client, HTTP client, WebSocket client... Và tất cả đều là cây nhà lá vườn do họ tự tay phát triển.

Ngoài ra Bun cũng triển khai thuật toán phân giải modules của Node bao gồm cả node_modules nên bạn có thể cài đặt và sử dụng các gói có trên npm giống như Node. ESM và CommonJS đều được hỗ trợ tuy nhiên Bun sử dụng ESM làm mặc định.

Bun triển khai đến 90% các API của Node (N-API) nên hầu như các module hoặc native module viết cho Node đều sẽ hoạt động với nó.

Tại sao Bun.sh đáng gờm so với Node.js

Bun trở nên đáng gờm bởi tốc độ. Ngoài việc tận dụng được hầu hết các tính năng giống như của Node nên Bun giúp bạn gần như có thể chạy được hầu hết ứng dụng viết bằng Node, nhưng Bun còn cho tốc độ tốt hơn cả.

Theo lời nhà phát triển Bun, sử dụng lệnh bun run thay cho npm run sẽ tiết kiệm được 160ms cho mỗi lần chạy. bun install cũng nhanh hơn 20x lần so với yarm là do Bun sử dụng "the fastest system calls" mà họ tự triển khai.

Bun.sh benchmarks

Ngoài ra là một vài hình ảnh Benchmarks so sánh tốc độ HTTP request Bun với hai môi trường chạy mã JS thông dụng là Node và Deno thì nó cũng cho con số ấn tượng.

Điều hạn chế của Bun đó là một công cụ mới đang còn trong giai đoạn phát triển, chưa có bản phát hành ổn định nên việc sử dụng Bun trong môi trường Production là hoàn toàn có thể xảy ra rủi ro. Tuy nhiên với những lợi ích mà Bun mang lại thì nó rất đáng giá để trải nghiệm. Hãy thử dùng Bun biết đâu bạn sẽ lưu được thêm một công cụ đáng giá cho mình thì sao?

Kết luận

Tuy là một công cụ mới tuy nhiên Bun.sh đã và đang gây sự chú ý trong cộng đồng phát triển Node.js. Hy vọng rằng vào một ngày không xa Bun sẽ phát hành phiên bản ổn định, đồng thời giữ vững tốc độ này thậm chí là hơn nữa để cộng đồng ngày càng lớn mạnh hơn.

Cao cấp
Hello

Bí mật ngăn xếp của Blog

Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào ngay!

Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào ngay!

Xem tất cả

Đăng ký nhận thông báo bài viết mới

hoặc
* Bản tin tổng hợp được gửi mỗi 1-2 tuần, huỷ bất cứ lúc nào.

Bình luận (0)

Nội dung bình luận...
Bấm hoặc cuộn mạnh để sang bài mới