Założyciel QEMU i FFmpeg opublikował silnik JavaScript QuickJS

Francuski matematyk Fabrice Bellard, który w swoim czasie założył projekty QEMU i FFmpeg oraz stworzył najszybszą formułę obliczania liczby Pi i opracował format obrazów BPG, opublikował pierwszy wydanie nowego silnika JavaScript QuickJS. Silnik wyróżnia się kompaktowością i jest przeznaczony do wbudowywania w inne systemy. Kod projektu napisano w języku C i jest rozpowszechniany na licencji MIT. Dostępna jest również kompilacja silnika, skompilowana do WebAssembly za pomocą Emscripten, która nadaje się do uruchamiania w przeglądarkach.

Implementacja JavaScript wspiera specyfikację ES2019, w tym moduły, asynchroniczne generatory i proxy. Opcjonalnie wspierane są niestandardowe rozszerzenia matematyczne dla JavaScript, takie jak typy BigInt i BigFloat, a także przeciążanie operatorów . Pod względem wydajności QuickJS znacznieprzewyższa istniejące analogi, na przykład w teście bench-v8 przewyższa silnik
XS o 35%, DukTape ponad dwa razy, JerryScript trzy razy, a MuJS siedem razy. Oprócz biblioteki do wbudowywania silnika w aplikacje, projekt oferuje również interpreter qjs, który można wykorzystać do uruchamiania kodu JavaScript z wiersza poleceń. Co więcej, dostępny jest kompilator qjsc, który jest w stanie generować samodzielne pliki wykonywalne, nie wymagające zewnętrznych zależności.

Główne cechy:

Kompaktowość i łatwość wbudowania w inne projekty. Kod składa się jedynie z kilku plików w języku C, które nie wymagają do kompilacji zewnętrznych zależności. Skompilowana najprostsza aplikacja zajmuje około 190 KB;

  • Bardzo wysoka wydajność i krótki czas uruchamiania. Przebieg 56 tysięcy testów zgodności z ECMAScript zajmuje około 100 sekund przy wykonywaniu na jednym rdzeniu standardowego komputera PC. Inicjalizacja runtime trwa mniej niż 300 mikrosekund;
  • Prawie pełne wsparcie dla specyfikacji ES2019 oraz pełne wsparcie dla aplikacji «B», określającej komponenty dla zgodności ze starszymi aplikacjami webowymi;
  • Prawie pełne wsparcie dla specyfikacji ES2019 oraz pełne wsparcie dla aplikacji „B”, określającej komponenty zapewniające zgodność ze starszymi aplikacjami webowymi;
  • Wsparcie dla kompilacji kodu w języku JavaScript do plików wykonywalnych bez zewnętrznych zależności;
  • Garbage collector oparty na liczeniu odniesień bez cyklicznego wykonywania czyszczenia, co pozwoliło osiągnąć przewidywalne zachowanie i zmniejszenie zużycia pamięci;
  • Zbieracz śmieci oparty na liczeniu referencji, który pozwolił osiągnąć przewidywalne zachowanie i zmniejszenie zużycia pamięci;
  • Zestaw rozszerzeń do obliczeń matematycznych w języku JavaScript;
  • Powłoka do wykonywania kodu w trybie wiersza poleceń, wspierająca kontekstowe podświetlanie kodu;
  • Kompaktowa standardowa biblioteka z opakowaniami nad biblioteką C.

Projekt rozwija również trzy towarzyszące biblioteki C, wykorzystywane w QuickJS i nadające się do indywidualnego zastosowania:

  • libregexp — szybka implementacja wyrażeń regularnych, w pełni zgodna ze specyfikacją Javascript ES 2019;
  • libunicode — kompaktowa biblioteka do obsługi Unicode;
  • libbf — implementacja operacji na liczbach zmiennoprzecinkowych o dowolnej precyzji oraz funkcji transcendentnych z dokładnym zaokrąglaniem.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster