Emscripten 3.0, một chuỗi công cụ xây dựng cho WebAssembly sử dụng LLVM

Gần đây việc phát hành phiên bản mới của trình biên dịch Emscripten 3.0 đã được công bố, có đặc điểm là cho phép mã được biên dịch bằng C / C ++ và các ngôn ngữ khác có giao diện người dùng dựa trên LLVM, trong một WebAssembly phổ quát cấp thấp.

Chức năng chính của bộ biên dịch này là để tích hợp sau này với các Dự án JavaScript, chạy trong trình duyệt web, sử dụng trong Node. Js hoặc tạo các ứng dụng độc lập đa nền tảng chạy với thời gian chạy wasm.

Giới thiệu về Emscripten

Mục tiêu chính phát triển dự án Emscripten là tạo một công cụ cho phép bạn chạy mã trên Web, không phụ thuộc vào ngôn ngữ lập trình mà nó được viết.

Các ứng dụng đã biên dịch có thể sử dụng các lệnh gọi thư viện C và C ++ tiêu chuẩn (libc, libcxx), phần mở rộng C ++, đa luồng dựa trên pthreads, API POSIX và nhiều thư viện đa phương tiện. Các API để tích hợp với API web và mã JavaScript được cung cấp riêng.

Đăng ký hỗ trợ phát trực tuyến đầu ra thư viện SDL2 qua Canvasvà cũng cung cấp hỗ trợ OpenGL và EGL thông qua WebGL, cho phép bạn chuyển đổi các ứng dụng và trò chơi đồ họa sang WebAssembly.

Hầu như bất kỳ cơ sở mã C hoặc C ++ di động nào đều có thể được biên dịch thành WebAssembly bằng EmscriptenTừ các trò chơi hiệu suất cao cần kết xuất đồ họa, phát âm thanh, tải và xử lý tệp, đến các khung ứng dụng như Qt. Emscripten đã được sử dụng để chuyển đổi một danh sách rất dài các cơ sở mã trong thế giới thực sang WebAssembly, bao gồm các cơ sở mã thương mại như Unreal Engine 4 và Unity Engine.

Ngoài việc biên dịch mã C / C ++, các dự án được phát triển riêng để đảm bảo rằng trình thông dịch và máy ảo cho Lua, C #, Python, Ruby và Perl bắt đầu trong trình duyệt. Cũng có thể áp dụng giao diện không Clang cho LLVM có sẵn cho các ngôn ngữ như Swift, Rust, D và Fortran.

Cần lưu ý rằng có sự khác biệt giữa thời gian chạy gốc và Emscripten, có nghĩa là, nói chung, eCần thực hiện một số thay đổi đối với mã gốc. Điều đó nói rằng, nhiều ứng dụng sẽ chỉ cần thay đổi cách chúng xác định vòng lặp chính của chúng và cũng sửa đổi việc xử lý tệp của chúng để phù hợp với các giới hạn của trình duyệt / JavaScript.

Cũng có những hạn chế có thể làm cho một số mã di chuyển dễ dàng hơn - hãy đọc Nguyên tắc về tính di động để xác định nơi bạn có thể cần phải nỗ lực nhiều hơn.

Các tính năng mới chính của Emscripten 3.0

Trong phiên bản mới này được trình bày, thư viện musl C được sử dụng trong emscripten đã được cập nhật lên phiên bản 1.2.2 (phiên bản 1.1.15 được sử dụng trong nhánh Emscripten 2.x).

Từ thư viện parseTools.js, một phần của các hàm đã bị xóa, chủ yếu được sử dụng trong dự án: removePointing, trỏLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralType _IntileToHpe, CompiletimeType, Biên dịch, IEEEUtimeType.

Trong khi trong các mẫu shell.html và shell_minimal.html, đầu ra của các thông báo lỗi xảy ra trong hoạt động emscripten và được cấp bởi ứng dụng thông qua stderr nó được thay đổi theo mặc định để sử dụng console.warn thay vì console.error.

Nó cũng được nhấn mạnh rằng đã thêm khả năng chỉ định một mã hóa văn bản cụ thể được sử dụng trong tên tệp. Mã hóa có thể được chỉ định dưới dạng hậu tố khi chuyển tên tệp, ví dụ: "a.rsp.utf-8" hoặc "a.rsp.cp1251").

Cuối cùng, nếu bạn muốn biết thêm về nó về Emscripten, bạn có thể tham khảo thông tin chi tiết của dự án trong Trang web chính thức.

Và theo cách tương tự, bạn có thể tham khảo tài liệu trên web về cách sử dụng Emscripten, một trang web tham khảo mà chúng tôi có thể giới thiệu là trang web của nhà phát triển Mozilla: https://developer.mozilla.org.

Ngoài ra, điều quan trọng cần đề cập là mã dự án được phân phối theo giấy phép MIT. Trình biên dịch sử dụng các phát triển từ dự án LLVM và thư viện Binaryen được sử dụng để tạo WebAssembly và tối ưu hóa. Bạn có thể kiểm tra mã của mình nguồn trên GitHub.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: AB Internet Networks 2008 SL
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.