Emscripten
Logo programu | |
Autor | Alon Zakai |
---|---|
Aktualna wersja stabilna | 3.1.69 (11 października 2024) [±] |
Rodzaj | kompilator |
Strona internetowa |
Emscripten – kompilator 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]- ↑ Main — Emscripten 1.37.22 documentation [online], kripken.github.io [dostęp 2017-11-17] (ang.).
- ↑ Building to WebAssembly. [dostęp 2021-09-23]. (ang.).
- ↑ 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.).
- ↑ Mozilla and Epic Preview Unreal Engine 4 Running in Firefox.
- ↑ Wiki - emscripten-qt - Redmine [online], vps2.etotheipiplusone.com:30176 [dostęp 2017-11-17] (ang.).
- ↑ Open Source License — Emscripten 1.37.22 documentation [online], kripken.github.io [dostęp 2017-11-17] (ang.).
- ↑ Building to WebAssembly — Emscripten 3.1.26-git (dev) documentation [online], emscripten.org [dostęp 2023-01-04] .