Wasmer 2.0, một bộ công cụ để xây dựng các ứng dụng dựa trên WebAssugging, đã có sẵn

Dự án Wasmer đã phát hành bản phát hành lớn thứ hai, phát triển thời gian chạy để thực thi các mô-đun WebAssembly có thể được sử dụng để tạo các ứng dụng phổ quát có thể chạy trên các hệ điều hành khác nhau, cũng như chạy riêng các mã không đáng tin cậy. Mã dự án được viết bằng Rust và được phân phối theo giấy phép MIT.

Tính di động đạt được bằng cách biên dịch mã ứng dụng thành mã trung gian WebAssugging cấp thấp, mã này có thể chạy trên mọi hệ điều hành hoặc được nhúng vào các chương trình bằng ngôn ngữ lập trình khác. Các chương trình này là các thùng chứa nhẹ chạy mã giả WebAssugging. Các vùng chứa này không bị ràng buộc với hệ điều hành và có thể bao gồm mã được viết ban đầu bằng bất kỳ ngôn ngữ lập trình nào. Bộ công cụ Emscripten có thể được sử dụng để biên dịch sang WebAssembly. Để dịch WebAssembly thành mã máy của nền tảng hiện tại, nó hỗ trợ kết nối nhiều chương trình phụ trợ biên dịch khác nhau (Singlepass, Cranelift, LLVM) và các công cụ (sử dụng JIT hoặc tạo mã máy).

Kiểm soát truy cập và tương tác với hệ thống được cung cấp bằng API WASI (Giao diện hệ thống WebAssugging), cung cấp giao diện lập trình để làm việc với các tệp, ổ cắm và các chức năng khác do hệ điều hành cung cấp. Các ứng dụng được cách ly khỏi hệ thống chính trong môi trường hộp cát và chỉ có quyền truy cập vào chức năng đã khai báo (cơ chế bảo mật dựa trên quản lý khả năng - đối với các hành động với từng tài nguyên (tệp, thư mục, ổ cắm, lệnh gọi hệ thống, v.v.), ứng dụng phải được trao quyền hạn thích hợp).

Để khởi chạy bộ chứa WebAssembly, chỉ cần cài đặt Wasmer trong hệ thống thời gian chạy, hệ thống này không có phần phụ thuộc bên ngoài (“curl https://get.wasmer.io -sSfL | sh”) và chạy tệp cần thiết (“wasmer test.wasm” ). Các chương trình được phân phối dưới dạng mô-đun WebAssugging thông thường, có thể được quản lý bằng trình quản lý gói WAPM. Wasmer cũng có sẵn dưới dạng thư viện có thể được sử dụng để nhúng mã WebAssembly vào các chương trình Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir và Java.

Nền tảng này cho phép bạn đạt được hiệu suất thực thi ứng dụng gần với các tập hợp gốc. Bằng cách sử dụng Công cụ đối tượng gốc cho mô-đun WebAssembly, bạn có thể tạo mã máy ("wasmer biên dịch -native" để tạo các tệp đối tượng .so, .dylib và .dll được biên dịch trước), yêu cầu thời gian chạy tối thiểu để chạy nhưng vẫn giữ lại tất cả sự cô lập của hộp cát đặc trưng. Có thể cung cấp các chương trình được biên dịch sẵn với Wasmer tích hợp. API Rust và Wasm-C-API được cung cấp để tạo các tiện ích bổ sung và tiện ích mở rộng.

Một thay đổi đáng kể về số phiên bản của Wasmer có liên quan đến việc đưa ra các thay đổi không tương thích đối với API nội bộ, theo các nhà phát triển, điều này sẽ không ảnh hưởng đến 99% người dùng nền tảng. Trong số những thay đổi làm gián đoạn tính tương thích, còn có sự thay đổi về định dạng của các mô-đun Wasm được tuần tự hóa (các mô-đun được tuần tự hóa trong Wasmer 1.0 sẽ không thể sử dụng được trong Wasmer 2.0). Những thay đổi khác:

  • Hỗ trợ các lệnh SIMD (Single Manual, Multiple Data), cho phép thực hiện song song các thao tác dữ liệu. Các lĩnh vực mà việc sử dụng SIMD có thể cải thiện đáng kể hiệu suất bao gồm học máy, mã hóa và giải mã video, xử lý hình ảnh, mô phỏng quy trình vật lý và thao tác đồ họa.
  • Hỗ trợ các loại tham chiếu, cho phép các mô-đun Wasm truy cập thông tin trong các mô-đun khác hoặc trong môi trường cơ bản.
  • Tối ưu hóa hiệu suất đáng kể đã được thực hiện. Tốc độ chạy LLVM với số dấu phẩy động đã tăng khoảng 50%. Các lệnh gọi hàm đã được tăng tốc đáng kể bằng cách giảm các tình huống yêu cầu quyền truy cập vào kernel. Hiệu suất của trình tạo mã Cranelift đã tăng 40%. Giảm thời gian khử lưu lượng dữ liệu.
    Wasmer 2.0, một bộ công cụ để xây dựng các ứng dụng dựa trên WebAssugging, đã có sẵn
    Wasmer 2.0, một bộ công cụ để xây dựng các ứng dụng dựa trên WebAssugging, đã có sẵn
  • Để phản ánh chính xác hơn bản chất, tên của các công cụ đã được thay đổi: JIT → Universal, Native → Dylib (Thư viện động), Tệp đối tượng → StaticLib (Thư viện tĩnh).

Nguồn: opennet.ru

Thêm một lời nhận xét