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 ()
Последнее исправление: Virtuos86 (всего исправлений: 1)
Ответ на: комментарий от Zenom

С тех пор, как динамическую типизацию не пытаются называть «серьёзной» системой типов.

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

Ваньку тут валяешь ты.

Python uses duck typing and has typed objects but untyped variable names. Type constraints are not checked at compile time; rather, operations on an object may fail, signifying that the given object is not of a suitable type. Despite being dynamically typed, Python is strongly typed, forbidding operations that are not well-defined (for example, adding a number to a string) rather than silently attempting to make sense of them.

А те, кто не различает сильную/слабую и статическую/динамическую типизацию, лишаются права на мнение просто автоматически.

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

Он наверное подразумевает что языки с утиной типизацией какие-то не такие, но это чушь. Добрая половина нынешних языков с утиной типизацией.

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

Ну-ну, и что же из сказанного мной в этом треде является моей фантазией? И какова же на самом деле реальность? Ты рассказывай, рассказывай. Не стесняйся.

Zenom ★★★
()
Ответ на: комментарий от quantum-troll

Если верить автору, нетипизированные языки вроде си каким-то образом более типизированы? Хотя я видимо согласен с тем, что динамическая типизация даёт больше ограничений, чем свободы.

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

Тут автор занимается тем, что переопределяет термины с устоявшимся значением так, чтобы они совпадали с его выкладками.

Since every value in a dynamic language is classified in this manner, what we are doing is agglomerating all of the values of the language into a single, gigantic (perhaps even extensible) type.

Этот трюк не только с динамическими языками проходит. Иными словами, если переопределить термины так, как предлагает автор, то классификация языков по системе типизации вообще теряет смысл.

То есть автор явно гораздо умнее того шута, который тут в лужи газ пускает, но пользуется типично маркетоидными приёмами чтобы протолкнуть свою мысль. Сама мысль при этом верная, кстати. Просто приёмы сомнительны.

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

Ну уж нет. У меня по плану не более одной беседы с придурками за раз, и эта квота уже исчерпана разговором с тобой. Так что со своими соседями по палате разбирайся сам.

Zenom ★★★
()
Ответ на: комментарий от quantum-troll

Динамически типизированные языки это статически типизированные языки с единственным типом.

Контрпример: FastScript. У переменной может быть 1 из 4 типов: integer, extended, string, pointer. (Внутри всё обрабатывается через дельфийский variant.)

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

Результат — несовместимость типов. При «единственном» типе :)

question4 ★★★★★
() автор топика
Ответ на: комментарий от quantum-troll

Очень отличается, потому что умеет выдавать несоответствие типов как ошибку, а также проверять типы и приводить типы однозначным образом. Я тебе больше скажу, Питон имеет значительно более сильную типизацию, чем Си, а, значит, и Си++, потому что он обратно совместим с Си. Другой вопрос --- можно одному и тому же значку (по недоразумению до сих пор именующемуся переменною) последовательно присваивать выражения разных типов. Но это и в OCaml можно, хотя тот совсем строго типизированный. Настолько, что там для сложения целых и действительных чисел разные значки используются.

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

Питон имеет значительно более сильную типизацию, чем Си, а, значит, и Си++, потому что он обратно совместим с Си.

C++ обратно совместим с C? я надеюсь, ты не программист, потому что иначе ты полностью профнепригоден. с другой стороны, чего ещё ожидать от лоровских специалистов?

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