Emscripten 3.0, łańcuch narzędzi do kompilacji dla WebAssembly przy użyciu LLVM

Ostatnio ogłoszono wydanie nowej wersji kompilatora Emscripten 3.0, który charakteryzuje się umożliwieniem kompilacji kodu w C/C++ i innych językach, dla których dostępne są frontendy oparte na LLVM, w niskopoziomowym, uniwersalnym oprogramowaniu pośredniczącym WebAssembly.

Główną funkcją tej kompilacji jest jej późniejsza integracja z Projektami JavaScript, uruchamianymi w przeglądarce internetowej, używanymi w Node. Js lub twórz wieloplatformowe samodzielne aplikacje, które działają ze środowiskiem wykonawczym wasm.

O Emscripten

Główny cel rozwój projektu Emscripten jest stworzenie narzędzia umożliwiającego uruchamianie kodu w sieci, niezależnie od języka programowania, w którym jest napisane.

Skompilowane aplikacje mogą korzystać ze standardowych wywołań bibliotek C i C++ (libc, libcxx), rozszerzenia C++, wielowątkowość oparta na pthreads, POSIX API i wiele bibliotek multimedialnych. Interfejsy API do integracji z internetowym interfejsem API i kodem JavaScript są dostarczane oddzielnie.

Zapisz obsługuje strumieniowe wyjście biblioteki SDL2 przez Canvas, a także zapewnia obsługę OpenGL i EGL za pośrednictwem WebGL, umożliwiając konwersję aplikacji graficznych i gier do WebAssembly.

Praktycznie każdą przenośną bazę kodu C lub C++ można skompilować do WebAssembly za pomocą EmscriptenOd gier o wysokiej wydajności, które muszą renderować grafikę, odtwarzać dźwięki oraz ładować i przetwarzać pliki, po frameworki aplikacji, takie jak Qt. Emscripten został już wykorzystany do konwersji bardzo długiej listy rzeczywistych baz kodu do WebAssembly, w tym komercyjnych baz kodu, takich jak Unreal Engine 4 i Unity Engine.

Oprócz kompilacji kodu C/C++, projekty są opracowywane osobno, aby zapewnić uruchamianie w przeglądarkach interpreterów i maszyn wirtualnych dla Lua, C#, Python, Ruby i Perl. Możliwe jest również zastosowanie interfejsów innych niż Clang do LLVM dostępnych dla języków takich jak Swift, Rust, D i Fortran.

Należy zauważyć, że istnieją różnice między natywnym środowiskiem wykonawczym a Emscripten, co oznacza, że ​​ogólnie eKonieczne jest wprowadzenie pewnych zmian w kodzie natywnym. To powiedziawszy, wiele aplikacji będzie musiało tylko zmienić sposób, w jaki definiują swoją główną pętlę, a także zmodyfikować obsługę plików, aby uwzględnić ograniczenia przeglądarki / JavaScript.

Istnieją również ograniczenia, które mogą ułatwić migrację niektórych kodów — przeczytaj Wytyczne dotyczące przenoszenia, aby określić, na co być może trzeba włożyć więcej wysiłku.

Główne nowe funkcje Emscripten 3.0

W tej nowej wersji, która jest prezentowana, biblioteka musl C używana w emscripten została zaktualizowana do wersji 1.2.2 (wersja 1.1.15 była używana w gałęzi Emscripten 2.x).

Z biblioteki parseTools.js usunięto część funkcji, które są głównie wykorzystywane w projekcie: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralType _IntToHex, IEEEUnHex, Compiletime.isPointerType, CompileTileType, CompiletimeType, CompiletimeType.

Podczas w szablonach shell.html i shell_minimal.html, wyjście komunikatów o błędach które występują podczas operacji emscripten i są wydawane przez aplikację poprzez stderr domyślnie zmienia się na użycie console.warn zamiast console.error.

Podkreśla się również, że dodano możliwość określenia konkretnego kodowania tekstu używanego w nazwach plików. Kodowanie można określić jako przyrostek podczas przekazywania nazwy pliku, na przykład „a.rsp.utf-8” lub „a.rsp.cp1251”).

Wreszcie, jeśli chcesz dowiedzieć się więcej na temat Emscripten, możesz zapoznać się ze szczegółami projektu w jego oficjalna strona internetowa.

W ten sam sposób możesz zapoznać się z dokumentacją internetową dotyczącą korzystania z Emscripten, strony referencyjnej, którą możemy polecić, jest witryna programistów Mozilli: https://developer.mozilla.org.

Należy również wspomnieć, że kod projektu jest rozpowszechniany na licencji MIT. Kompilator wykorzystuje rozwiązania z projektu LLVM, a biblioteka Binaryen służy do generowania WebAssembly i optymalizacji. Możesz sprawdzić swój kod źródło na GitHub.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.