9 điểm bởi GN⁺ 2025-04-09 | 2 bình luận | Chia sẻ qua WhatsApp
  • Hyperlight Wasm là phiên bản mở rộng mới nhất của công nghệ máy ảo siêu nhẹ (VM) Hyperlight do Microsoft đóng góp cho CNCF, dùng để chạy các workload WebAssembly (dựa trên Component Model) một cách nhanh chóng và an toàn
  • Khác với VM truyền thống, nó chỉ phơi bày lát cắt bộ nhớ và CPU mà không cần OS hay thiết bị ảo, mang lại thời gian khởi động nhanh 1~2ms
  • Có thể chạy các component wasm được viết bằng nhiều ngôn ngữ khác nhau (C, Rust, Go, Python, JS, v.v.) dưới sự bảo vệ của hypervisor

Các đặc điểm chính của Hyperlight Wasm

  • Hiệu năng nhanh hơn so với VM truyền thống

    • VM truyền thống: khởi tạo thiết bị → nạp kernel → khởi động OS → chạy ứng dụng (khoảng 125ms)
    • Hyperlight Wasm: có thể chạy chỉ với việc tạo lát cắt bộ nhớ + nạp Wasm (1~2ms, mục tiêu tương lai là <1ms)
    • Tốc độ thực thi nhanh rất phù hợp cho chạy serverless theo nhu cầu hoặc duy trì warm pool ở mức tối thiểu
  • Chạy nhiều ngôn ngữ mà không cần hệ điều hành

    • Dựa trên chuẩn WASI và WebAssembly Component Model, có thể chạy các component được viết từ hầu hết ngôn ngữ
    • Tích hợp runtime wasmtime, nên các ngôn ngữ thông dịch như Python, JavaScript, C# cũng có thể chạy ở dạng kèm runtime
    • Ở góc độ nhà phát triển, chỉ cần biên dịch tới target wasm32-wasip2 là có thể chạy trên Hyperlight
  • Tăng cường bảo mật (sandbox kép)

    • Cấu trúc bảo vệ hai lớp gồm sandbox Wasm + sandbox VM dựa trên hypervisor
    • Ngay cả khi kẻ tấn công thoát được khỏi wasm, vẫn phải vượt qua thêm sandbox VM

Ví dụ phát triển: chạy máy chủ UDP Echo dựa trên Rust

  • Dùng CLI wkg để tải xuống và biên dịch binary wasm
  • Chuyển tệp định nghĩa giao diện WASI (.wit) thành binary để tạo binding
  • Thông qua hyperlight_component_macrohost_bindgen! để tự động tạo binding cho giao diện import/export của Wasm
  • Định nghĩa logic máy chủ echo thông qua việc hiện thực giao diện UdpSocket
  • Tạo sandbox hyperlight-wasm để nạp và chạy component wasm
  • Biên dịch Ahead-of-Time

    • Dùng công cụ hyperlight-wasm-aot để biên dịch AOT cho wasm, giúp giảm thời gian chạy
    • Có thể chạy máy chủ bằng cargo run và kiểm tra UDP bằng lệnh nc -u

Khả năng mở rộng và kế hoạch sắp tới

  • Hyperlight Wasm dự kiến hỗ trợ không chỉ x86 mà cả kiến trúc Arm64
  • Hiện tại vẫn cần tự hiện thực giao diện WASI, nhưng trong tương lai sẽ cung cấp binding mặc định
  • Có kế hoạch giúp sandbox nhanh các dịch vụ đơn giản như máy chủ HTTP

Hướng dẫn tham gia cộng đồng mã nguồn mở

  • Hyperlight là dự án mã nguồn mở của Microsoft được phát hành theo giấy phép Apache 2.0 và đã được đăng ký trong CNCF Sandbox
  • Hyperlight Wasm hướng tới cung cấp môi trường thực thi nhanh và an toàn phù hợp với điện toán cloud-native
  • Có thể xem mã nguồn và đóng góp thông qua kho GitHub

👉 Kho GitHub: hyperlight-wasm

2 bình luận

 
GN⁺ 2025-04-09
Ý kiến trên Hacker News
  • Vài tháng trước, tôi đã bắt đầu nghiêm túc sử dụng WebAssembly để xây dựng một thư viện xác thực backend chạy được trên nhiều ngôn ngữ

    • Dựa trên Extism để giảm độ phức tạp của giao diện
    • Đây là một trải nghiệm gần như kỳ diệu
    • WASM đang ở một vị trí rất thú vị
    • Nó đã chứng minh được giá trị với đặc tả lõi tối thiểu
    • Giờ đây đang có một làn sóng thúc đẩy lớn nhằm hiện thực hóa bề mặt API rộng hơn cho WASI và Component Model
    • Nhiều người trong cộng đồng đang lo ngại về hướng đi này
    • Cá nhân tôi hy vọng WASM sẽ không trở nên quá phức tạp và đi vào vết xe đổ của trình duyệt web, nơi chỉ các tập đoàn công nghệ lớn mới có thể triển khai và thử nghiệm
  • Vài tháng trước, chúng tôi đã công bố Hyperlight, một VMM siêu nhẹ

    • Có thể tạo một VM mới chỉ trong khoảng 1 mili giây
    • Hôm nay tôi rất vui được công bố Hyperlight Wasm guest dựa trên runtime Wasmtime
    • Giờ đây có thể chạy binary Wasm Component trên giao diện WASI mà không cần guest OS trong VM
    • Bài viết này giải thích cách nó hoạt động và minh họa bằng ví dụ
  • Rất đáng mong đợi

    • Tôi hy vọng WASM/WASI sẽ phát triển thành giấc mơ JVM của thập niên 90
    • Nó có thể trở thành một đích phát triển an toàn bộ nhớ, dễ dàng port và kiểm thử trên nhiều nền tảng
    • Tôi hy vọng WASM có thể được dùng cho nhiều thứ vượt ra ngoài trình duyệt
  • Trông khá thú vị

    • Đây có phải là trường hợp có thể dùng khi bạn muốn tự triển khai thứ gì đó như Cloudflare Workers hay Lambda bằng WASM không?
  • Rất tuyệt

    • Tôi đang cố hiểu giá trị gia tăng ở đây là gì
    • Nó khác gì so với việc chạy qua wasmtime?
  • Có cảm giác rằng mọi dự án ngầu và thú vị đều cho thấy WASM thành công ở mọi nơi trừ trình duyệt

    • Có lẽ nên bỏ chữ Web khỏi Web Assembly và đặt một cái tên khác
  • Có ai có ý tưởng làm sao để đưa cái này vào thiết lập Proxmox không?

    • Tôi hiểu là nó được thiết kế để chạy trên bare metal
    • Tôi không có sẵn máy x86 bare metal dư thừa nên hơi khó xử
    • Có lẽ sẽ phải đưa nó vào một VM và chấp nhận ảo hóa lồng nhau
  • Các instance được khởi động và quản lý như thế nào?

    • Thông qua API nào?
    • Liệu có thể cung cấp khả năng chạy cây các Wasm Component được liên kết với binary Wasm Component, ủy quyền chức năng và quản lý vòng đời của chúng không?
  • Về cơ bản, có một VM (wasm) để sandbox chương trình bên trong VM phần cứng, vốn là một lớp trừu tượng dùng để cô lập chương trình trong tiến trình không gian người dùng (tiến trình Linux)

    • Bạn đã từng cân nhắc việc dùng tiến trình Unix để cô lập chương trình chưa?
  • Đây có phải là unikernel/library OS không?