Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Wasm
1.
2. WASM - WEB ASSEMBLY KẺ
HUỶ DIỆT JS HAY NGƯỜI
BẠN HỮU LÂU DÀI
NGUYỄN DUY ĐỨC
3. WASM - WEB ASSEMBLY KẺ HUỶ DIỆT JS HAY NGƯỜI BẠN HỮU LÂU
DÀI
WASM - WEB ASSEMBLY
1. Giới thiệu sơ lược về WASM.
2. LLVM, ASM.js, PNaCL và Emscripten.
3. Cấu trúc chi tiết của WASM.
4. Tương lai nào cho WASM trên nền tảng Web.
5. Liệu WASM có thay thế Javascript.
6. Ứng dụng của WASM qua một số demo.
7. Q&A.
5. WASM - WEB ASSEMBLY KẺ HUỶ DIỆT JS HAY NGƯỜI BẠN HỮU LÂU
DÀI
ĐÔI CHÚT VỀ WASM
▸ WASM - WAST.
▸ 17 tháng 6 năm 2015.
▸ 15 tháng 3 năm 2016.
▸ Tạo ra trải nghiệm tốt hơn JS hiện tại.
▸ Hướng tới việc có thể viết ứng dụng
nền cho web bằng bất kì ngôn ngữ nào
(Hiện tại C/C++ đã hỗ trợ việc chuyển
đổi).
▸ Việc triển khai WASM hỗ trợ trên trình
duyệt dựa trên ASM.js và PNaCL.
6. WASM - WEB ASSEMBLY KẺ HUỶ DIỆT JS HAY NGƯỜI BẠN HỮU LÂU
DÀI
TIÊU CHÍ CỦA WASM
▸ Nhanh và Hiệu quả.
▸ An toàn.
▸ Mở và Dễ dàng trong xử lý lỗi.
▸ Trở thành cốt yếu trong nền tảng
web nguồn mở.
8. WASM - WEB ASSEMBLY KẺ HUỶ DIỆT JS HAY NGƯỜI BẠN HỮU LÂU
DÀI
LLVM
▸ Máy ảo cấp thấp.
▸ Năm 2000 (Vikram Adve và Chris
Lattner).
▸ Mã nguồn mở.
▸ Đa dụng và đang trở thành trình biên
dịch đa dụng tiêu chuẩn do không phụ
thuộc nền tảng (Ứng dụng: CUDA -
NVIDIA, ByteCode, Swift - Apple…).
▸ Trở thành dự án tổ hợp.
9. WASM - WEB ASSEMBLY KẺ HUỶ DIỆT JS HAY NGƯỜI BẠN HỮU LÂU
DÀI
LLVM
10. WASM - WEB ASSEMBLY KẺ HUỶ DIỆT JS HAY NGƯỜI BẠN HỮU LÂU
DÀI
ASM.JS
▸ Do Firefox phát hành và ứng dụng trong nhiều trình duyệt và V8 engine.
▸ ASM.js là một tập hợp con của Javascript được sử dụng như một ngôn
ngữ cấp thấp, hiệu quả nhằm tối ưu trình biên dịch. Nó mô tả lại một
phần tập lệnh nhỏ của thư viện C/C++ giúp tối ưu máy ảo và cho phép
việc kết hợp nhuần nhuyễn từ những ngôn ngữ static type và dynamic
type như C/C++ được tối ưu trước khi chạy và chuyển qua Javascript.
11. WASM - WEB ASSEMBLY KẺ HUỶ DIỆT JS HAY NGƯỜI BẠN HỮU LÂU
DÀI
12. WASM - WEB ASSEMBLY KẺ HUỶ DIỆT JS HAY NGƯỜI BẠN HỮU LÂU
DÀI
PORTABLE NATIVE
CLIENT
▸ Được Google phát hành.
▸ Máy ảo giúp việc các dev không phụ thuộc vào nền tảng chỉ cần quan
tâm đến việc lập trình và PNaCl sẽ giúp thực thi những mã lệnh đó trên
mọi trình duyệt mà vẫn đảm bảo được tính bảo mật - hiệu năng và tính
mềm dẻo (khả chuyển).
13. WASM - WEB ASSEMBLY KẺ HUỶ DIỆT JS HAY NGƯỜI BẠN HỮU LÂU
DÀITEXT
14. WASM - WEB ASSEMBLY KẺ HUỶ DIỆT JS HAY NGƯỜI BẠN HỮU LÂU
DÀI
EMSCRIPTEN
▸ Là một máy ảo chuyển đổi mã C/C++ thành Javascript dựa trên máy ảo
bậc thấp LLVM, Clang, llvm-gcc và tập lệnh tối ưu ASM.js.
20. WASM - WEB ASSEMBLY KẺ HUỶ DIỆT JS HAY NGƯỜI BẠN HỮU LÂU
DÀI
TRIỆU GỌI WASM TRONG JAVASCRIPT
fetch('memory.wasm').then(response =>
response.arrayBuffer()
).then(bytes =>
WebAssembly.instantiate(bytes)
).then(results => {
// add your code here
});
Nhanh và Hiệu quả:
Dựa vào máy ảo cấp thấp được thiết kế để tối ưu kích thước cũng như thời gian tải của tệp tin dạng nhị phân.
2. An toàn
WASM cung cấp một môi trường chạy an toàn trên thanh ghi, có thể triển khai bằng các máy ảo Javascript hiện có. Khi được nhúng vào nền tảng web, WASM sẽ tuần theo các chính sách bảo mật đã tồn tại trên trình duyệt.
3. Tính mở và dễ dàng bắt lỗi
WASM được thiết kế đơn giản dưới dạng tệp văn bản giúp cho việc tìm lỗi, kiểm thử, thử nghiệm cũng như quá trình tối ưu hoá bằng tay. Định dạng văn bản của tệp tin này sẽ được sử dụng để xem mã nguồn của các module wasm trên nền web.
4. Trở thành cốt yếu trong nền tảng web nguồn mở:
WASM được thiết kế để duy trì tính tương thích ngược (cho phép phần mềm chạy trên phần cứng mới) trên nền tảng web. Các module WASM có thể được sử dụng thông qua Javascript và truy cập vào các chức năng tương tự nhau trên các trình duyệt thông qua Javascript Web API. WASM có thể chạy được mà không cần nhúng vào web.
• Front-ends
• AST
• IR
• LLVM Optimizer
• LLVM Code Generator
• Backends
• assembly code
• byte code (object code)
• Linker
• Platform Architecture
• The LLVM project/infrastructure: This is an umbrella for several projects that, together, form a complete compiler: frontends, backends, optimizers, assemblers, linkers, libc++, compiler-rt, and a JIT engine. The word "LLVM" has this meaning, for example, in the following sentence: "LLVM is comprised of several projects".
• An LLVM-based compiler: This is a compiler built partially or completely with the LLVM infrastructure. For example, a compiler might use LLVM for the frontend and backend but use GCC and GNU system libraries to perform the final link. LLVM has this meaning in the following sentence, for example: "I used LLVM to compile C programs to a MIPS platform".
• LLVM libraries: This is the reusable code portion of the LLVM infrastructure. For example, LLVM has this meaning in the sentence: "My project uses LLVM to generate code through its Just-in-Time compilation framework".
• LLVM core: The optimizations that happen at the intermediate language level and the backend algorithms form the LLVM core where the project started. LLVM has this meaning in the following sentence: "LLVM and Clang are two different projects".
• The LLVM IR: This is the LLVM compiler intermediate representation. LLVM has this meaning when used in sentences such as "I built a frontend that translates my own language to LLVM".