24 điểm bởi GN⁺ 2023-11-17 | 1 bình luận | Chia sẻ qua WhatsApp

Giới thiệu về WebAssembly (Wasm)

  • WebAssembly (Wasm) là bytecode low-level đa dụng chạy trên web
  • Đây là đích biên dịch của nhiều ngôn ngữ khác nhau như Rust, AssemblyScript (tương tự Typescript), Emscripten (C/C++), TinyGo (Go)
  • Hiện đã có mặt trên tất cả các trình duyệt lớn, đồng thời có runtime để chạy trên server hoặc giao tiếp với hệ thống bằng WASI
  • Wasm cung cấp định dạng nhị phân nhỏ gọn, cùng hiệu năng có thể dự đoán và tính di động để chạy cùng JavaScript và các ngôn ngữ host khác

'Wasm By Example' là gì?

  • 'Wasm By Example' mang đến phần giới thiệu ngắn gọn và thực tiễn về WebAssembly thông qua các đoạn mã mẫu và các chương trình ví dụ WebAssembly có chú thích
  • Bao gồm các ví dụ giải thích những khái niệm cơ bản của WebAssembly và các ví dụ cho thấy cách xây dựng các chức năng phổ biến của ứng dụng lớn hơn bằng cách tận dụng chúng

Các ví dụ về khái niệm chính của WebAssembly (Wasm)

  • Cung cấp các ví dụ thể hiện những khái niệm nền tảng quan trọng của WebAssembly.
  • Những ví dụ này có thể không phải là cách thuận tiện hay hiệu quả nhất để xây dựng dự án bằng WebAssembly, nhưng phù hợp cho việc học hoặc phát triển các phần đơn giản hay low-level của ứng dụng.
    • Hello World
    • Exports
    • WebAssembly Linear Memory
    • Importing Javascript Functions Into WebAssembly

Ví dụ áp dụng các khái niệm

  • Mở rộng các ví dụ mang tính khái niệm để cho thấy những ví dụ đơn giản này có thể được dùng như thế nào để xây dựng các chức năng phổ biến trong ứng dụng lớn hơn
    • Reading and Writing Graphics
    • Reading and Writing Audio

Ví dụ về công cụ hệ sinh thái và tính năng ngôn ngữ

  • Cung cấp các ví dụ nhấn mạnh công cụ, thư viện và tính năng của ngôn ngữ lập trình được chọn
    • Passing High Level Data Types with wasm-bindgen
  • Các thành phần trong hệ sinh thái này có thể hỗ trợ rất nhiều trong việc xây dựng các ứng dụng mạnh mẽ.

Ví dụ về WebAssembly (Wasm) bên ngoài trình duyệt web

  • Cung cấp các ví dụ nhấn mạnh WebAssembly System Interface (WASI), các runtime WebAssembly độc lập, công cụ cho ứng dụng dùng WASI, cùng các trường hợp sử dụng cho điện toán đám mây, thiết bị Internet vạn vật (IoT) và nhiều tác vụ khác
  • WebAssembly có các đặc tính cốt lõi rất phù hợp với web trên trình duyệt, và những đặc tính này cũng khiến nó trở thành lựa chọn phổ biến bên ngoài trình duyệt
    • WASI Introduction
    • WASI Hello World

Ý kiến của GN⁺

Điểm quan trọng nhất của bài viết này là WebAssembly (Wasm) là một đích biên dịch cho nhiều ngôn ngữ lập trình khác nhau, đồng thời có tính đa dụng để sử dụng không chỉ trong trình duyệt web mà còn trên server và nhiều hệ thống khác. 'Wasm By Example' cho thấy rõ vì sao công nghệ này hấp dẫn và đáng chú ý bằng cách cung cấp những ví dụ thực tiễn giúp các kỹ sư phần mềm mới vào nghề dễ hiểu và có thể áp dụng WebAssembly vào thực tế. Tính di động và hiệu năng của WebAssembly là những yếu tố quan trọng trong phát triển web hiện đại, và bài viết này mang lại thông tin hữu ích cho những ai muốn tìm hiểu công nghệ đó.

1 bình luận

 
GN⁺ 2023-11-17
Ý kiến trên Hacker News
  • Đây là một ví dụ thú vị về việc dùng WASM để tạo các thư viện được viết bằng nhiều ngôn ngữ khác nhau, rồi nhập và sử dụng chúng từ ngôn ngữ khác.
  • Tập lệnh WASM được mọi trình duyệt lớn hỗ trợ là điểm hấp dẫn, nhưng cũng có ý kiến đặt câu hỏi về việc ngay cả một bản demo hello_world đơn giản cũng tạo ra trang có dung lượng tới vài megabyte.
  • Có ý kiến cho rằng nên cung cấp phần tổng quan và giải thích về cấu trúc cũng như cách sử dụng WASM kèm theo ví dụ. Ngoài ra, cũng nhắc đến việc Cloudflare Workers có thể chạy WASM trên máy chủ edge, và cộng đồng Swift cũng hỗ trợ biên dịch sang WASM.
  • Có đề xuất rằng việc thêm hạng mục liên quan đến cú pháp S-expr của WebAssembly sẽ hữu ích để giúp người đọc hiểu rõ hơn.
  • Có người đã viết hướng dẫn về cách làm cho việc debug WASM hoạt động trong VSCode, sử dụng tiện ích mở rộng debug DWARF mới cho WASM.
  • Cuốn sách đang được thực hiện mang tên WASM from the Ground Up, dạy WASM bằng cách tự xây dựng trình biên dịch, và cho đến nay được đánh giá là cung cấp thông tin hữu ích.
  • Có ý kiến thắc mắc liệu một ngày nào đó WASM có thay thế JavaScript trong trình duyệt hay không.
  • Một ví dụ về bản demo Unity chạy bằng WASM và WebGPU đã được đăng trên Hacker News.
  • Có người đang gặp khó khăn trong việc tìm thông tin về trình biên dịch assembler cho WASM.
  • Có người bày tỏ sự ngạc nhiên khi một ví dụ add đơn giản viết bằng ngôn ngữ không phải JavaScript sử dụng WASM lại có chức năng tương tác nhận tham số trong thời gian chạy.