Francuski matematyk Fabrice Bellard, który założył projekty QEMU i FFmpeg, a także stworzył najszybszą formułę obliczania liczby Pi i opracował format obrazu BPG.
Fabrice Bellard jest najbardziej znany jako główny programista QEMU (emulator, który emuluje różne architektury sprzętowe) i Tiny C Compiler (tcc), bardzo mały, ale wszechstronny kompilator C, pierwotnie napisany, aby wygrać „Międzynarodowy konkurs na zaciemniony kod języka C”.
Teraz niedawno udostępnił publicznie pierwszą wersję swojej nowej pracy który jest w JavaScript i to jest nowy silnik o nazwie JavaScript QuickJS.
O JavaScript QuickJS
Silnik JavaScript QuickJS jest kompaktowy i zaprojektowany do integracji z innymi systemami. Kod projektu Jest napisany w C i rozpowszechniany na licencji MIT. Dostępna jest również kompilacja silnika skompilowana do WebAssembly przy użyciu Emscripten i odpowiednia do uruchamiania w przeglądarkach.
Implementacja JavaScript Obsługuje specyfikację ES2019, w tym moduły, generatory asynchroniczne i proxy.
W silniku JavaScript QuickJS obsługiwane są opcjonalne niestandardowe rozszerzenia matematyczne dla języka JavaScript, takie jak typy BigInt i BigFloat, a także przeciążanie operatorów.
Pod względem wydajności QuickJS znacznie przewyższa dostępne analogiNa przykład w teście bench-v8 silnik XS wyprzedza o 35%, DukTape ponad dwukrotnie, JerryScript trzy razy, a MuJS siedem razy.
Oprócz biblioteki do osadzania silnika w aplikacji, projekt oferuje również tłumacza qjs, którego można użyć do uruchomienia kodu JavaScript z wiersza poleceń.
Ponadto, Kompilator qjsc jest dostępny i może wyświetlać pliki wykonywalne, które można uruchomić osobno i że nie wymagają one zewnętrznych zależności.
Jedną z głównych funkcji silnika JavaScript QuickJS wyróżniają się następujące punkty:
- Kompaktowy i łatwy do zintegrowania z innymi projektami. Kod zawiera tylko kilka plików C, które nie wymagają zewnętrznych zależności do kompilacji. Prosta skompilowana aplikacja zajmuje około 190 Kb
- Bardzo wysoka wydajność i krótkie czasy uruchamiania. Przejście 56 tysięcy testów zgodności ECMAScript zajmuje około 100 sekund w przypadku normalnego pulpitu z jądrem. Inicjalizacja w czasie wykonywania zajmuje mniej niż 300 mikrosekund
- Niemal pełne wsparcie dla specyfikacji ES2019 i pełne wsparcie dla aplikacji „B”, która definiuje komponenty pod kątem kompatybilności ze starszymi aplikacjami internetowymi
- Ukończ wszystkie testy zestawu testów ECMAScript
- Wsparcie dla kompilowania kodu Javascript do plików wykonywalnych bez zewnętrznych zależności
- Moduł odśmiecania pamięci opiera się na zliczaniu referencji bez przeprowadzania cyklicznego czyszczenia, co pozwala na przewidywalne zachowanie i mniejsze zużycie pamięci
- Zestaw rozszerzeń do obliczeń matematycznych w języku JavaScript
- Powłoka do wykonywania kodu w trybie wiersza poleceń, która obsługuje kontekstowe podświetlanie kodu
- Kompaktowa biblioteka standardowa w bibliotece C.
Oprócz tego Z drugiej strony w ramach projektu powstają również trzy biblioteki C. podmioty powiązane zaangażowane w QuickJS i nadające się do użytku indywidualnego:
- freegexp: mała i szybka biblioteka wyrażeń regularnych zgodna ze specyfikacją JavaScript ES2019
- libunikod: mała biblioteka Unicode, która obsługuje konwersję wielkości liter, normalizację Unicode, żądania skryptów Unicode, zapytania dotyczące kategorii ogólnych Unicode i wszystkie właściwości binarne Unicode
- biblioteka: Jest to również mała biblioteka, która implementuje operacje zmiennoprzecinkowe IEEE 754 i funkcje transcendentalne z dokładnym zaokrągleniem. Jest utrzymywany jako osobny projekt.
Jak zdobyć SavaScript QuickJS?
Pobieranie kodu źródłowego do kompilacji można wykonać z poniższy link. Po instalacji dostarczany jest plik Makefile do skompilowania silnika w systemie Linux lub Mac OS / X.
W tym samym linku możesz zapoznać się z dokumentacją QuickJS po więcej informacji. Zawiera również informacje porównawcze pokazujące wydajność QuickJS z silnikiem V8 Google oraz porównanie między nim a innymi narzędziami z tej samej kategorii.