Przejdź do zawartości

Emscripten

Z Wikipedii, wolnej encyklopedii
Emscripten
Logo Emscripten
Logo programu
Autor Alon Zakai
Aktualna wersja stabilna 3.1.72
(18 listopada 2024) [±]
Rodzaj kompilator
Strona internetowa

Emscriptenkompilator kodu LLVM do Javascriptu[1] lub WebAssembly[2]. Skompilowane programy działają z szybkością dochodzącą do 2/3 szybkości programów natywnych[3]. Kompilacja odbywa się przez skompilowanie kodu źródłowego do kodu bajtowego LLVM (zwykle kodu C lub C++ z użyciem Clanga). Następnie w zależności od wersji narzędzi do kodu asm.js z wykorzystaniem HTML5 do obsługi multimediów (do wersji 2.0) lub bezpośrednio do binarnego formatu WebAssembly (od wersji 2.0). Emscripten stworzono do przenoszenia gier (implementuje SDL, OpenGL i inne popularne API) i przeniesiono nań silnik Unreal Engine 4[4]. Działają w nim jednak praktycznie dowolne aplikacje, czego przykładem jest środowisko Qt[5]. Licencja Emscripten umożliwia bezpłatne wykorzystanie komercyjne[6].

Zastosowanie i rozwiązania alternatywne

[edytuj | edytuj kod]

Mniej więcej od 2010 r. znacznie poprawiono wydajność maszyn wirtualnych Javascript, dodano optymalizację języka (asm.js i jego rozszerzenia SIMD), a w przeglądarkach ustandaryzowano obsługę nowoczesnych multimediów (HTML5). Proces poprawiania wydajności ewoluował poprzez możliwość łączenia interpretowanych fragmentów kodu Javascript z szybszym binarnym formatem WebAssembly. W związku z tym pojawiła się możliwość tworzenia dużych aplikacji w całości lub w znacznym stopniu działających po stronie przeglądarki, a także próby przenoszenia istniejących programów (głównie gier) i wynikające z tego zapotrzebowanie na kompilatory różnych języków do formatu wspieranego przez przeglądarki internetowe.

Format docelowy kompilacji

[edytuj | edytuj kod]

Aktualnie domyślnym formatem wyjściowym dla kompilacji jest WebAssembly. Jest to format binarny, zoptymalizowany pod kątem szybkości wykonywania programu. Jedynie wstawki JavaScriptu są pozostawiane jako kod tegoż języka. W celu zachowania kompatybilności ze starszymi przeglądarkami, zgodnymi z EcmaScript 5 można jednak włączyć kompilację do asm.js[7] poprzez ustawienie flagi -sWASM=0.

Przypisy

[edytuj | edytuj kod]
  1. Main — Emscripten 1.37.22 documentation [online], kripken.github.io [dostęp 2017-11-17] (ang.).
  2. Building to WebAssembly. [dostęp 2021-09-23]. (ang.).
  3. Gap between asm.js and native performance gets even narrower with float32 optimizations – Mozilla Hacks – the Web developer blog [online], hacks.mozilla.org [dostęp 2017-11-17] (ang.).
  4. Mozilla and Epic Preview Unreal Engine 4 Running in Firefox.
  5. Wiki - emscripten-qt - Redmine [online], vps2.etotheipiplusone.com:30176 [dostęp 2017-11-17] (ang.).
  6. Open Source License — Emscripten 1.37.22 documentation [online], kripken.github.io [dostęp 2017-11-17] (ang.).
  7. Building to WebAssembly — Emscripten 3.1.26-git (dev) documentation [online], emscripten.org [dostęp 2023-01-04].