Francuski matematyk Fabrice Bellard, który kiedyś założył projekty QEMU i FFmpeg, a także stworzył najszybszą formułę obliczania pi i opracował format obrazu
Implementacja JavaScriptu
Bench-v8 wyprzedza silnik
Oprócz biblioteki do osadzania silnika w aplikacjach, projekt oferuje również interpreter qjs, za pomocą którego można uruchamiać kod JavaScript z wiersza poleceń. Ponadto dostępny jest kompilator qjsc, zdolny do generowania samodzielnych plików wykonywalnych, które nie wymagają zewnętrznych zależności.
Najważniejsze cechy:
- 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 zbudowania. Skompilowana prosta aplikacja zajmuje około 190 KB;
- Bardzo wysoka wydajność i krótki czas uruchamiania. Przejście 56 tysięcy testów kompatybilności z ECMAScript zajmuje około 100 sekund, gdy jest wykonywane na jednym rdzeniu typowego komputera stacjonarnego. Inicjalizacja środowiska wykonawczego zajmuje mniej niż 300 mikrosekund;
- Prawie pełne wsparcie dla specyfikacji ES2019 i pełne wsparcie dla Annex B, który definiuje komponenty pod kątem kompatybilności ze starszymi aplikacjami webowymi;
- Całkowite zaliczenie wszystkich testów z pakietu ECMAScript Test Suite;
- Obsługa kompilacji kodu Javascript do plików wykonywalnych bez zewnętrznych zależności;
- Moduł wyrzucania elementów bezużytecznych z liczeniem odwołań bez cyklu czyszczenia, co pozwoliło 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 z powiązaniami z biblioteką C.
W ramach projektu opracowano również trzy towarzyszące biblioteki C zaangażowane w QuickJS i nadające się do osobnej aplikacji:
- libregexp to szybka implementacja wyrażeń regularnych w pełni zgodna ze specyfikacją Javascript ES 2019;
- libunicode - kompaktowa biblioteka do pracy z Unicode;
- libbf to implementacja operacji zmiennoprzecinkowych o dowolnej precyzji i funkcji przestępnych z dokładnym zaokrąglaniem.
Źródło: opennet.ru