Tiểu ban WASI vừa chính thức phê chuẩn WASI 0.3.0. Phiên bản này đưa các nguyên thủy async vào WebAssembly Component Model, giúp đơn giản hóa chữ ký hàm và làm cho các binding async trở nên tự nhiên hơn so với WASI 0.2.
WebAssembly Component Model có gì mới?
Trong WASI 0.2, mỗi component phải tự quản lý event loop riêng, dẫn đến khó khăn khi kết hợp nhiều component với nhau. Với WASI 0.3, host đóng vai trò trung tâm điều phối một event loop duy nhất cho tất cả component. Điều này nhờ vào việc đưa stream<T>, future<T> và async thành các cấu trúc nguyên thủy trong canonical ABI. Runtime, chứ không phải từng component, sẽ quản lý việc lập lịch, khi một giá trị được chuyển qua future, runtime lập tức kích hoạt tác vụ đang chờ, bất kể nó nằm ở component nào.
Tác động đến người dùng thông thường
Đối với lập trình viên, WASI 0.3 giúp viết mã async đơn giản hơn, giống như làm việc với các API hiện đại. Ví dụ, thay vì phải thực hiện ba bước start-foo/finish-foo/subscribe rườm rà, giờ đây chỉ cần gọi trực tiếp hàm async. Về mặt kỹ thuật, mô hình dựa trên hoàn tất, như Linux io_uring và Windows IOCP/IoRing, thay thế mô hình dựa trên sẵn sàng cũ. Một API kiểu epoll/kqueue vẫn có thể được mô phỏng trên nền tảng này để bảo đảm tương thích.





