LINUX.ORG.RU

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

 


7

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 ()

Опять он годноту делает! Оказывается, можно без лишних понтов делать просто хороший открытый и свободный софт.

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

V8 слишком жирный для встраивания.

Deleted ()

Почти полностью поддерживает спецификацию ES2019

Всегда почти, зачем вообще пишут эти спеки, Когда никто них полностью не поддерживает

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

Для тех, кто поддерживает намного хуже. Например, MSIE.

question4 ★★★★★ ()

Чем оно лучше, например, duktape?

А, понятно, ES2019. Ну чё, наконец-то polkit не будет тащить форк SpiderMonkey?

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

Больше рекламы на тех же мощностях?

Erepb ★★★ ()

математик
Сборщик мусора со счётчиком ссылок

Где-то здесь противоречие

anonymous ()

Исходники - это хорошо, но почему он не выложил код на какой-нибудь гитхаб/битбакет/гитлаб?

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

А для браузеров годится? Получится прикрутить его к Dillo, например?

В смысле? Все браузерные штуки придётся своими руками делать, querySelector там и всё такое.

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

Исходники - это хорошо, но почему он не выложил код на какой-нибудь гитхаб/битбакет/гитлаб?

математики, сэр…

но автору респект.

MyTrooName ★★★★★ ()

Может компилировать Джаваскрипт в WebAssembly.

На оригинальном сайте упоминание о таком функционале движка не увидел.

microbash ()

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

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

Мне интересно другое: можно ли встроить его в браузер вместо того что есть и насколько это снизит требования к памяти на вкладку?

kirill_rrr ★★★★★ ()

вот бы он допилил tcc до компилятора плюсов)))

в продакшн не пойдет а вот для разработки будет незаменимо)

Slackware_user ★★★★★ ()
Ответ на: комментарий от 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 ()

«Профессор, Шарик разовьётся в чрезвычайно высокую психическую личность» (C)

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

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

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

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

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

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

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

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

question4 ★★★★★ ()

подскажите как в tcc статически скомпилить? флаг -static не работает

anonymous ()

> на языке C

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

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

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

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

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

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

Ждём браузера, свободного от телеметрии

Когда старина Билл откроет сырцы Экплорера.

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

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

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

Ну и вообще есть palemoon.

Deleted ()

а ардуине запускали?

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

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

Нужен ещё отдельный WebAssembler, коли про браузеры речь зашла.

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

Не умеет

Обожди, сейчас местные хперты набегут рассказывать тебе сказки, что С кроссплатформенный.

anonymous ()
Ответ на: удаленный комментарий

TCC хоть что нибудь собирает? Зачем им вообще что то собирать, есть же нормальные компиляторы.

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

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

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

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

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

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

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

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

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

Учитывая, кто автор, а также то, что запрос на перемены есть - будет. Говорить что 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 ()
Ответ на: комментарий от Deleted

потому что ваши гцц кланги это bloated. Настолько bloated, что после них даже .NET не таким раздутым кажется.

anonymous ()
Ответ на: комментарий от GlazoK

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

ZenitharChampion ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.