LINUX.ORG.RU

Фабрис Белар выложил движок JavaScript

 


6

6

Французский математик Фабрис Белар (Fabrice Bellard), более известный работой над ffmpeg, qemu, tcc и вычислением числа Пи, выложил в открытый доступ QuickJS — компактную реализацию JavaScript в виде библиотеки на языке C.

  • Почти полностью поддерживает спецификацию ES2019.
  • В том числе математические расширения.
  • Проходит все тесты ECMAScript Test Suite.
  • Нет зависимостей от других библиотек.
  • Малый размер статически линкуемой библиотеки — от 190 KiB на x86 для «hello world».
  • Быстрый интерпретатор — проходит 56000 тестов ECMAScript Test Suite за ~100 с на 1 ядре настольного ПК. Накладные расходы на цикл запуска и остановки < 300 мкс.
  • Может компилировать исходные файлы на JavaScript в исполняемые файлы без внешних зависимостей.
  • Может компилировать исходные файлы на JavaScript в WebAssembly.
  • Сборщик мусора со счётчиком ссылок (детерминированный, с малым потреблением памяти).
  • Интерпретатор командной строки с цветной подсветкой синтаксиса.

Согласно тестам производительности из обсуждения на Opennet.ru, скорость QuickJS в тестах в 15-40 раз меньше, чем у Node.js.

>>> Сайт автора

★★★★★

Проверено: Shaman007 ()

Ну вот как обычно в таких проектах - код есть а как его использовать можно понять только через интроспекцию исходников. Хоть бы hello world выложил, что бы не копались люди часами в поисках путей использования данного продукта.

Serbis ()
Ответ на: комментарий от gloomy

Ну документация это хорошо. Но я имел ввиду нечто вроде hello_world.c, с которым можно сделать Ctrl-C -> Ctrl-V, вслепую запустить и дальше уже читать документацию. Имхо такой способ презентации проекта позволяет ускорить процесс вхождения в него до сверхзвуковой скорости, потому что разбираться с доками при работающем примере, в сто раз проще чем без него.

А вообще у меня чувство дежавю. Я вчера весь вечер искал компактный js движок для скриптования одной программки. Опплеваля от монструозных V8 и SpiderMonkey и в итоге решил что Lua выглядит приличней всех для скриптов. А тут вот такая новость, с похоже что тем что мне нужно))

Serbis ()

Может компилировать Джаваскрипт в исполнимые файлы без внешних зависимостей.

Больше быдлокода богу быдлокода!!!

anonymous ()

То есть это очень для тонких клиентов с малым объемом памяти, но в Эстонии, способных ждать исполнение задачи в 40 раз дольше.

One ★★★ ()
Ответ на: комментарий от kirill_rrr

Ну просто ты походу не очень понимаешь что такое js движок. Js движок это просто по сути виртуальная машина для выполнения js кода. Она сама по себе не умеет делать ничего. Для того что бы она могла, делается бинд контекста выполнения на нативный код. Т е вот например в браузере ты можешь сделать такой вот вызов console.log(«bla-bla-bla»);. Объект console был создан в нативном коде браузера. В этот объект была добавлена функция log, которая связана с соответствующей функцией на си. А после этого объект console был вставлен в глобальный объект js рантайма. Т е когда ты вызываешь log, дергается сишная функция, и она уже задействует апи браузера для вывода строки в консоль текущей вкладки.

Для того что бы чистый js движок заработал в некоем браузере, необходимо изменить исходники браузера в части js вм, на запуск твоего движка и произвести полный ребинд всего окружения (window, document и global со всеми потрохами) на апи данного движка. Вот после этого титанического труда, он заработает в браузере (теоретически).

Serbis ()
Ответ на: комментарий от kirill_rrr

Бинд контекста это кстати основная фишка всех скриптовых движков. Потому что они позволяют создавать доменно-ориентированные подпрограммы. И браузер это лишь одно из возможных их применений.

Serbis ()
Ответ на: комментарий от kirill_rrr

Еще стоит отметить, что они бывают разные по толстоте. Есть например js движок V8 который в хроме используется, в котором столько всего понапихано, что можно отдельную книгу по нему написать и весит он как танк. А есть к примеру Lua, тихоходный, но зато влезает на микроконтроллер. И вот рассматриваемый в треде движок как раз из такого типа как я понимаю - он больше ориентирован на встариваемые система нежели на веб.

Serbis ()
Ответ на: комментарий от One

То есть это очень для тонких клиентов с малым объемом памяти, но в Эстонии, способных ждать исполнение задачи в 40 раз дольше.

1. Среднее соотношение ближе к 20.

2. Быстрые тяжеловесы вроде V8 обычно «долго запрягают». Если программа выполняется за 1-2 секунды, QuickJS может закончить до того, как V8 успеет стартовать :)

question4 ★★★★★ ()

> на языке C

Низя! Сжечь еретика! Нужно писать на Rust, C#, или Питоне!

А если серьёзно, то жто спасение от вездесущего Chromium. Firefox умирает, Opera умерла, а чистый WebKit/Blink никто не хочет использовать. Ждём браузера, свободного от телеметрии, и который работает на Athlon XP/Pentium 4. Спасибо автору. Жду ебилдов

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 1)

Согласно тестам производительности из обсуждения на Opennet.ru, скорость QuickJS в тестах в 15-40 раз меньше, чем Node.js.

Сие означает, что QuickJS колоссальный тормоз. Тогда зачем он?

skvitek ★★ ()
Ответ на: комментарий от VarfolomeyKote4ka

TCC хоть что нибудь собирает?

Несколько лет пользовался под Виндоуз несколькими свободными утилитами, собранными TCC. Потому что не было возможности поставить полный Cygwin.

question4 ★★★★★ ()
Ответ на: комментарий от VarfolomeyKote4ka

>> Ждём браузера

> Так ты представь как на этом гугл карты будут тормозить и gmail.

Это только пока. Открывая любую новость о мажорном релизе LLVM, V8 или nodeJS, там же всегда пишут, что они офигеть как подняли производительность. Показывают бенчмарки, в которых предыдущая версия - страшный тормоз, а новая прям ваще огонь. Сабжу пока только предстоит оптимизация

Это напоминает мне релизы новых процессоров. Сначала тормозно и греется, и процент брака с конвейера большой. Потом новую архитектуру оптимизировали, выпустили процы в 10 раз быстрее, и процент брака низкий, и цена на сам проц маленькая. Если хардварный опыт вообще может ассоциироваться с софтварным.

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от VarfolomeyKote4ka

Учитывая, кто автор, а также то, что запрос на перемены есть - будет. Говорить что JS-движок от автора FFmpeg никогда не оптимизируют, это всё равно что в момент появления FFmpeg сказать, что он всегда будет поддерживать только первый MPEG

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 2)
Ответ на: комментарий от ZenitharChampion

немного сорян. Athlon XP @ SSE only - оно на базе фф38еср. *большинство сайтов еще более менее работает.*

Ну а на Pentium 4 (есть SSE2) можно использовать стоковую луну при наличии более менее современной OC.

System requirements

Pale Moon is specifically optimized for current-day processors and as such requires a reasonably modern system to run properly.

A modern Linux distribution. The browser may not work well on old or LTS releases of Linux.

  • A modern processor (must have SSE2 support as the absolute minimum).
  • 1GB of RAM (2GB or more recommended for heavy use).
  • GTK+ v2.24
  • GLib 2.22 or higher
  • Pango 1.14 or higher
  • libstdc++ 4.6.1 or higher
GlazoK ()
Ответ на: комментарий от GlazoK

Меня радуют такие точные требования. Видно, что сборка под Linux существует не «на отвяжись». Но выше писали, что бывают сборки не под SSE2. Это и логично, учитывая что бывает ARM.

ZenitharChampion ★★★★★ ()