Pulumi chính thức hỗ trợ Runtime Bun đầy đủ

18 tháng 4, 2026·4 phút đọc

Pulumi đã công bố Bun hiện là một runtime được hỗ trợ đầy đủ, không chỉ giới hạn ở vai trò quản lý gói. Với bản phát hành Pulumi 3.227.0, nhà phát triển có thể cấu hình để Bun thực thi toàn bộ chương trình cơ sở hạ tầng mà không cần cài đặt Node.js.

Pulumi chính thức hỗ trợ Runtime Bun đầy đủ

Pulumi vừa thông báo rằng Bun giờ đây đã trở thành một runtime (thời gian chạy) được hỗ trợ đầy đủ, đánh dấu bước tiến vượt bậc so với vai trò trước đây chỉ là một tùy chọn quản lý gói. Trong bản phát hành mới Pulumi 3.227.0, các nhà phát triển chỉ cần thiết lập runtime: bun trong file Pulumi.yaml để Bun có thể thực thi toàn bộ chương trình hạ tầng mà hoàn toàn không yêu cầu cài đặt Node.js.

Bun: Runtime JavaScript tốc độ cao

Khi ra mắt lần đầu vào năm 2022, Bun được định vị là một runtime JavaScript nhanh hơn, được xây dựng trên nền tảng JavaScriptCore thay vì V8. Dự án đã phát triển mạnh mẽ dưới sự dẫn dắt của Jarred Sumner và phiên bản 1.0 được ra mắt vào tháng 9 năm 2023. Bun nổi bật vì tích hợp sẵn trình quản lý gói (package manager), bundler và test runner trong một tệp nhị phân duy nhất, được viết bằng ngôn ngữ Zig và sử dụng JavaScriptCore—cơ chế của WebKit từ Apple.

Dự án này đã nhận được sự hậu thuẫn mạnh mẽ từ institution khi bị Anthropic (công ty đứng sau Claude) mua lại. Anthropic cam kết Bun sẽ vẫn là phần mềm mã nguồn mở với giấy phép MIT và tiếp tục phát triển cho cộng đồng lập trình viên JavaScript/TypeScript. Về hiệu năng, Bun cung cấp tốc độ khởi động nhanh hơn 4 lần và cài đặt các gói phụ thuộc nhanh hơn 6-35 lần so với Node.js.

Tại sao Bun lại phù hợp với Pulumi?

Việc tích hợp Bun là một trong những tính năng được yêu cầu nhiều nhất trên GitHub của Pulumi kể từ khi Bun ra mắt phiên bản 1.0. Có ba khả năng chính khiến Bun trở nên hấp dẫn đối với người dùng Pulumi:

  • Thực thi TypeScript gốc: Bun có thể chạy các tệp TypeScript trực tiếp mà không cần ts-node hay bước biên dịch (compile step) riêng biệt, giúp giảm thiểu sự phức tạp trong quy trình làm việc với Pulumi.
  • Cài đặt phụ thuộc nhanh hơn: Tốc độ cài đặt gói nhanh chóng giúp đẩy nhanh quá trình khởi tạo (bootstrapping) các chương trình hạ tầng trong các pipeline CI/CD.
  • Tương thích cao: Bun hướng tới sự tương thích 100% với Node.js, do đó các gói npm hiện có đang sử dụng với Pulumi sẽ hoạt động trơn tru mà không cần thay đổi.

Cải tiến trải nghiệm và cách sử dụng

Khi cấu hình runtime: bun, Pulumi sẽ sử dụng Bun cho cả việc chạy chương trình lẫn quản lý gói, loại bỏ nhu cầu cấu hình riêng cho trình quản lý gói. Một mẫu dự án mới cũng đã có sẵn thông qua lệnh pulumi new bun.

Một cải tiến nổi bật về trải nghiệm dùng liên quan đến mã bất đồng bộ (async code). Trong các chương trình Pulumi sử dụng CommonJS, việc chờ một nguồn dữ liệu trước khi khai báo tài nguyên cần phải bọc chương trình trong một hàm nhập (entrypoint function) bất đồng bộ. Nhờ hỗ trợ đầy đủ ESM của Bun, tính năng "top-level await" hoạt động ngay ở cấp độ module mà không cần bất kỳ lớp bao bọc (wrapper) nào, giúp cấu trúc chương trình đơn giản hóa đáng kể.

Các nhóm có dự án Pulumi dựa trên Node.js hiện tại có thể chuyển đổi sang Bun bằng cách cập nhật trường runtime trong Pulumi.yaml, điều chỉnh tsconfig.json để sử dụng các tùy chọn trình biên dịch được Bun khuyến nghị (bao gồm module: "Preserve"moduleResolution: "bundler"), và thêm "type": "module" vào package.json để chuyển sang ESM.

Các giới hạn hiện tại

Bản phát hành này vẫn có hai hạn chế đáng chú ý. Các hàm callback của Pulumi, đôi khi được gọi là "magic lambdas", chưa được hỗ trợ dưới runtime Bun vì chúng phụ thuộc vào việc tuần tự hóa hàm dựa trên các module v8inspector của Node.js—những thứ chưa có đầy đủ trong Bun. Tương tự, các nhà cung cấp động (dynamic providers) cũng không được hỗ trợ vì lý do này. Các nhóm phụ thuộc vào các tính năng này nên giữ nguyên runtime: nodejs, mặc dù họ vẫn có thể hưởng lợi từ tốc độ quản lý gói của Bun bằng cách đặt packagemanager: bun trong cấu hình runtime Node.js.

Để sử dụng tính năng hỗ trợ runtime Bun, người dùng cần cài đặt Bun phiên bản 1.3 trở lên và Pulumi phiên bản 3.227.0 trở lên.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗