- Bài viết về dự án của tác giả tại Hackweek 22 của SUSE, nơi tác giả đã xây dựng một unikernel chạy WebAssembly.
- Tác giả chọn dự án này vì nhiều lý do, bao gồm những lợi ích tiềm năng khi kết hợp unikernel và WebAssembly.
- Từ góc nhìn của lập trình viên ứng dụng, việc chuyển hoặc viết ứng dụng cho unikernel có thể khó khăn vì ứng dụng và các phần phụ thuộc của nó phải được unikernel đích hỗ trợ.
- Các nhà duy trì unikernel cũng gặp khó khăn trong việc đảm bảo mọi ứng dụng có thể chạy trơn tru trên nền tảng của họ do các primitive hệ thống chưa được biết đến mà ứng dụng người dùng có thể tận dụng.
- Tuy nhiên, khi nhắm mục tiêu tới nền tảng WebAssembly, ứng dụng có một tập chức năng rõ ràng mà runtime WebAssembly phải cung cấp.
- Tác giả sử dụng dự án RustyHermit, một unikernel được viết bằng Rust, làm nền tảng cho ứng dụng unikernel.
- Tác giả cũng gặp khó khăn liên quan đến runtime WebAssembly vì Wasmtime, runtime ưa thích của họ, không được xây dựng trên RustyHermit. Cuối cùng, họ đã tìm và sử dụng wasmi, một runtime WebAssembly thuần Rust.
- Tác giả cũng thảo luận về việc sử dụng đề xuất WebAssembly Component Model trong Spiderlightning, cho phép cung cấp khả năng cho guest WebAssembly và giúp host sử dụng các khả năng do guest WebAssembly cung cấp.
- Tác giả phải mở rộng
wit-bindgen, công cụ CLI tạo mã host/guest từ các tệp .wit, để hỗ trợ runtime WebAssembly wasmi.
- Tác giả kết thúc bài viết bằng bản ghi lại ứng dụng unikernel chạy demo
http-server của Spiderlightning, đồng thời hứa sẽ đề cập đến Rust async, Redis và một số lỗi trong phần tiếp theo của hành trình này.
1 bình luận
Ý kiến trên Hacker News