- Tiêu chuẩn Wasm 3.0 được công bố chính thức, bao gồm các tính năng quy mô lớn đã được chuẩn bị trong 6–8 năm
- Các tính năng như không gian địa chỉ 64-bit, garbage collection, typed reference, tail call, xử lý ngoại lệ giúp việc biên dịch các ngôn ngữ bậc cao sang Wasm trở nên dễ dàng hơn
- Những tính năng cốt lõi mới hỗ trợ ứng dụng hiệu năng cao, runtime cho nhiều ngôn ngữ khác nhau, tính an toàn và khả năng mở rộng
- Phù hợp với các trường hợp ngoài môi trường web, cả trong hệ sinh thái phi web nơi cần xử lý dung lượng và tập dữ liệu lớn hơn
- Đã được hỗ trợ trên các trình duyệt web lớn và cũng sắp hoàn thiện trên các engine độc lập như Wasmtime, qua đó củng cố thêm vị thế của Wasm như một nền tảng thực thi đa dụng
Tổng quan phát hành Wasm 3.0
- Phiên bản 3.0 của tiêu chuẩn WebAssembly được phát hành vào ngày 17/09/2025
- Đây là bản cập nhật lớn sau 3 năm kể từ phiên bản 2.0 (hoàn tất năm 2022), vốn đã giới thiệu lệnh vector, thao tác bulk memory, nhiều giá trị trả về và các kiểu tham chiếu đơn giản
- Nhóm cộng đồng và nhóm công tác của W3C tiếp tục phát triển chuẩn này, và bản phát hành lần này là một thay đổi quy mô đáng kể bao gồm các tính năng lớn đã được chuẩn bị trong 6–8 năm
- Wasm vẫn giữ tinh thần của một ngôn ngữ cấp thấp, đồng thời tăng cường hệ thống bộ nhớ và kiểu dữ liệu để hỗ trợ tốt hơn cho việc biên dịch ngôn ngữ bậc cao
- Các tính năng được phát triển sau phiên bản 2.0 đã hoàn tất và trở thành tiêu chuẩn Live, với mức hỗ trợ ngày càng mở rộng trên trình duyệt web và các engine độc lập
Các thay đổi chính và tính năng mới
- Không gian địa chỉ 64-bit
- Có thể khai báo bộ nhớ và bảng bằng kiểu i64
- Không gian địa chỉ của ứng dụng Wasm có thể mở rộng từ khoảng 4GB lên tới giới hạn vật lý (về lý thuyết là 16 exabyte)
- Trên web, giới hạn 16GB được áp dụng, nhưng trong hệ sinh thái phi web điều này hữu ích cho việc hỗ trợ ứng dụng và tập dữ liệu quy mô lớn
- Đa bộ nhớ
- Có thể khai báo và truy cập trực tiếp nhiều đối tượng bộ nhớ trong một module duy nhất
- Có thể dùng cho nhiều mục đích như hợp nhất module, tách biệt không gian địa chỉ, buffering, bảo mật
- Các công cụ liên kết tĩnh như wasm-merge giờ có thể áp dụng cho mọi module Wasm
- Garbage collection (GC)
- Ngoài linear memory, còn hỗ trợ vùng lưu trữ do runtime Wasm tự động quản lý
- Trình biên dịch có thể trực tiếp khai báo bố cục dữ liệu như kiểu struct/array và các số nguyên unboxed
- Chỉ cung cấp các khối xây dựng cơ bản cho quản lý bộ nhớ; còn hệ thống đối tượng bậc cao hoặc closure có thể được thiết kế riêng tùy theo ngôn ngữ triển khai
- Typed reference
- Hệ thống kiểu của Wasm được mở rộng để mô tả chính xác hơn hình dạng của giá trị heap và tham chiếu hàm
- Hỗ trợ subtyping, đệ quy kiểu, và với lệnh
call_ref mới có thể gọi hàm gián tiếp an toàn mà không cần kiểm tra kiểu lúc chạy
- Tail call
- Hỗ trợ cấu trúc tail call trả về ngay mà không dùng thêm không gian stack của hàm hiện tại
- Có thể được dùng cho ngôn ngữ hàm hoặc các tối ưu hóa bên trong runtime
- Xử lý ngoại lệ
- Đưa vào một hệ thống xử lý ngoại lệ native bên trong Wasm
- Hỗ trợ khai báo thẻ ngoại lệ và payload, bắt ngoại lệ có chọn lọc, cùng trình xử lý ngoại lệ theo khối
- Có thể cải thiện tính di động và hiệu năng mà không cần dùng các cách vòng qua JS kém hiệu quả như trước
- Lệnh vector relaxed
- Để thích ứng với khác biệt phần cứng của các lệnh SIMD, chuẩn cung cấp biến thể relaxed cho phép một số chi tiết hành vi của lệnh do từng implementation tự quyết định
- Nhờ đó có thể thực hiện nhiều tối ưu hóa khác nhau trong phạm vi các hành vi hợp lệ
- Deterministic profile
- Ngay cả trong các tình huống mà kết quả của cùng một lệnh vốn có thể phi xác định (như phép toán dấu chấm động, relaxed SIMD), chuẩn vẫn định nghĩa cách thực thi mang tính quyết định giữa các nền tảng
- Điều này giúp đảm bảo khả năng tái lập và tính di động cho blockchain, hệ thống có thể phát lại và các trường hợp tương tự
- Cú pháp custom annotation
- Bổ sung cú pháp annotation mà con người có thể đọc và viết trực tiếp trong mã nguồn
- Chuẩn không tự diễn giải chúng, nhưng có thể được dùng cho các tiêu chuẩn hoặc phần mở rộng trong tương lai
Kết nối với JavaScript và khả năng tương thích
- JS string builtins
- Có thể truyền và thao tác giá trị chuỗi của JS trong Wasm dưới dạng externref
- Bằng cách import các hàm built-in mới, Wasm có thể trực tiếp sử dụng các chuỗi JS bên ngoài từ bên trong module
Giá trị và triển vọng của Wasm 3.0
- Cung cấp nền tảng thiết yếu cho biên dịch nhắm mục tiêu Wasm của các ngôn ngữ lập trình nâng cao
- Các ngôn ngữ chính như Java, OCaml, Scala, Kotlin, Scheme, Dart cũng đã bắt đầu tích cực tận dụng tính năng GC
Tình hình xây dựng đặc tả và triển khai
- Wasm 3.0 là tiêu chuẩn đầu tiên được xây dựng bằng chuỗi công cụ mới SpecTec
- Hầu hết các trình duyệt web lớn đã hỗ trợ Wasm 3.0, và các engine độc lập như Wasmtime cũng sắp hoàn tất hỗ trợ
- Có thể kiểm tra tình trạng hỗ trợ của từng engine tại trang Wasm feature status
Chưa có bình luận nào.