The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск встраиваемого JavaScript-движка Duktape 2.4.0

05.08.2019 09:53

Опубликован выпуск JavaScript-движка Duktape 2.4.0, ориентированного на встраивание в кодовую базу проектов на языке C/C++. Движок отличается компактным размером, высокой переносимостью и низким потреблением ресурсов. Исходные тексты движка написаны на языке Си и распространяются под лицензией MIT.

Код Duktape занимает около 160 kB и потребляет всего 70kB ОЗУ, а в режиме низкого потребления памяти 27kB ОЗУ. Для интеграции Duktape в код на C/C++ достаточно добавить в проект файлы duktape.c и duktape.h, и использовать Duktape API для вызова функций на JavaScript из кода на C/C++ или наоборот. Для освобождения неиспользуемых объектов из памяти применяется сборщик мусора с финализатором, построенный на основе комбинации алгоритма подсчёта ссылок с алгоритмом пометок (Mark and Sweep). Движок применяется для обработки JavaScript в браузере NetSurf.

Обеспечивается полная совместимость со спецификациями Ecmascript 5.1 и частичная поддержка Ecmascript 2015 и 2016 (ES6 и ES7), в том числе поддержка объекта Proxy для виртуализации свойств, типизированные массивы, ArrayBuffer, Node.js Buffer, Encoding API, объект Symbol и т.п. В состав входит встроенный отладчик, движок для выполнения регулярных выражений и подсистема для поддержки Unicode. Также предоставляются специфичные расширения, такие как поддержка сопрограмм, встроенный фреймворк для журналирования, механизм загрузки модулей на основе CommonJS, система кэширования байткода, позволяющая сохранять и загружать скомпилированные функции.

В новом выпуске реализованы новые вызовы duk_to_stacktrace() и duk_safe_to_stacktrace() для получения трассировок стека, duk_push_bare_array() для добавления независимых экземпляров массивов. В число публичных переведены функции duk_require_constructable() и duk_require_constructor_call(). Улучшена совместимость со спецификацией ES2017. Оптимизирована работа с массивами и объектами. В CLI-интерфейс duk добавлена опция "--no-auto-complete" для отключения аводополнения ввода.

  1. Главная ссылка к новости (https://github.com/svaarala/du...)
  2. OpenNews: Facebook открыл код JavaScript-движка Hermes
  3. OpenNews: Основатель QEMU и FFmpeg опубликовал JavaScript-движок QuickJS
  4. OpenNews: Microsoft портировал JavaScript-движок ChakraCore для Linux и maсOS
  5. OpenNews: Компания Oracle намерена выпустить открытый JavaScript-движок на базе виртуальной машины Java
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/51220-duktape
Ключевые слова: duktape, javascript
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (42) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, proninyaroslav (ok), 10:11, 05/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Мне вот одно интересно, где эти самописные движки реально применяются.
     
     
  • 2.3, Аноним (3), 10:22, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Во-первых, не самописные. Во-вторых, radare2.
     
  • 2.8, trdm (ok), 11:51, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +12 +/
    Все движки - самописные.
    Исключения - только программы, написанные искусственным интеллектом.
     
     
  • 3.11, proninyaroslav (ok), 12:05, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • –10 +/
    Имелось ввиду те которые разрабатывают на коленке, а не гуглами и фаирфоксами.
     
     
  • 4.17, trdm (ok), 12:29, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Вы что эбокситкой умываетесь? Когда научитесь различать суть и иллюзию?
    Качество продукта зависит исключительно от профессионализма и добросовестности автора,
    а не от его корпоративной принадлежности.
     
     
  • 5.19, proninyaroslav (ok), 12:33, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Вот мне и интересно кто пользуется этими продуктами (или велосипедами, как вам хочется), в эпоху электронов на движке хрома)
     
     
  • 6.21, тщт (?), 13:01, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я пользовался, когда-то давно, в какой-то поделке, что это вам дает?
     
     
  • 7.22, тщт (?), 13:03, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    И поделка загнулась, именно потому, что не было легковесного движка, а тот что был протух и разложился на атомы
     
  • 7.49, Аноним (49), 01:10, 08/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Используют:

    1. Во встраиваемых системах где основной язык Си
    2. Используют в системах развертывания этих же систем
    3. Используют в системах тестирования - легко можно написать деяточек асинхронных тестов на базе каких-то сишных библиотек (экономия огромная времени)

    В целом зависит от стека компании в компаниях где стек Linux почти в любой области может быть использовано.

    Конечно много сейчас еще стеков Java и С#, но они все лезут в контейнеры и в Linux.

     
  • 6.48, Egor Mamontov (?), 23:51, 06/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    вот тебе пример использования мною QScriptEngine (текущий нужно протестировать на скорость). Задача ставилась создать бэк для обработки большого кол-ва запросов и расчетов. Бэк писался на сpp, для асинхронных ответов (работа с потоками) применялся epoll. Особенно критичные вычисления писались на с++. для доработки функционала применил движок js. получился очень быстрый бэк с возможностью расширить функционал на js
     
  • 5.31, Аноим (?), 14:59, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это понятно. Вы объясните это манагеру из конторы уровня сотового оператора большой тройки.
    Что вот эту прекрасную прогу можно включить в продакшн-среду и ничего не упадет или никто не сольёт данные на сторону. Пробовали такое сделать?
     
     
  • 6.33, Аноним (33), 15:54, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > и ничего не упадет

    Мне кажется, оратор выше требует принести ему на блюдечке _доказательство отсутствия_.

     
  • 6.37, trdm (ok), 18:50, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Это понятно. Вы объясните это манагеру из конторы уровня сотового оператора большой тройки.

    мне до них дела нет, у меня свои обязанности и компетенции.
    мне за травлю чужих тараканов не платят.

     
  • 6.42, ETO KTO (?), 20:12, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Кажется у корпораций собственный мирок и там принадлежность к гуглу действительно может иметь значение (я считаю).
    Но не потому, что им важно как работает, людям просто важно найти крайнего (наверное), именно по этому (думаю) в корпорациях процветают (вроде бы) угрёбищные решения All In One втридорога.
    Выбирая такое решение можно быть несколько более уверенным в том, что тебя не назначат виноватым за его выбор и положиться на поддержку, а так же одинаковость важна для заменяемости людей.

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

     
  • 6.45, Hewlett Packard (?), 07:01, 06/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это зависит от того кто объясняет в большей степени.
     
  • 6.46, А (??), 23:14, 06/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > уровня сотового оператора большой тройки.

    Те ещё быдло-кодеры. Не поголовно. Но работать туда не надо.

     
  • 5.43, Человечек (?), 21:52, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Справедливости ради, такие программы да, могут быть гораздо качественнее, безопаснее и надёжнее гугловых и прочих, но как-никак для написания документации, сопровождения репозиториев и архитектур, форумов для коммунити нужны большие ресурсы (в людях). К тому же коммерцию никто не отменял - помимо того чтобы ему доверился какой-нибудь билайн как сказали выше, довериться должны так же производители популярных фреймворков и ЯП, хостинги и тд.
    Но и обратное справедливо - если он станет достаточно популярным и крутым то сможет сам закрутить маховик вот этой всей коммерции и юридической фигни.
     
  • 4.39, th3m3 (ok), 19:32, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А чем это отличается от Гугла? Там так же, человек может взять запилить что-то. Возможно даже в нерабочее время. А тот же Гугл, может потом с ним договориться и завернуть так, якобы это разработка Гугла. Но код пишется конкретным человеком или несколькими. Чем это написанное на коленке, отличается от другого? У того же Гугла, куча проектов с приставкой Beta.
     
  • 4.47, Egor Mamontov (?), 23:25, 06/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    не удивляйтесь если услышите в свой адрес гадкие слова
     
  • 3.53, otmuenbg (?), 20:10, 09/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    скайнет, матрица?
     
  • 2.40, забыл (?), 19:37, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    я знаю два места в системе где нужен джаваскрипт и где я бы не хотел видеть ни в8 ни спайдерманки:

    1) правила полисикита. зачем-то пишутся на джаваскрипте.

    2) парсинг файлов автоконфигурации прокси-сервера. исторически сложилось так что они на джаваскрипте.

     

  • 1.2, Аноним (2), 10:16, 05/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    Он мёртвый, к сожалению. Автор не хочет ковырять компилятор и доводить язык до ecma-2018
     
     
  • 2.4, Аноним (3), 10:23, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Ничего, тут недавно Фабри Беллард движок выпустил ...
     
     
  • 3.51, Аноним (49), 01:11, 08/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Что за движек как называеться
     
     
  • 4.52, Аноним (52), 01:13, 08/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Что за движек как называеться

    https://bellard.org/quickjs/

     
  • 2.5, имя (?), 10:41, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +6 +/
    >мёртвый
    >Выпуск встраиваемого JavaScript-движка Duktape 2.4.0

    тебе не кажется, что здесь что-то не сходится?

     
     
  • 3.10, Аноним (10), 12:01, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Хот фиксит можно хоть сколько времени а 2018 так и не появится.
     
     
  • 4.16, Crazy Alex (ok), 12:20, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    а зачем?
     
     
  • 5.23, Аноним (-), 13:12, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    зачем развиваются яп? ясно, понятно
     
     
  • 6.26, Аноним (10), 13:57, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну в данном случае это приведет к большим тормозам и больше размеру. Да и в других языках тоже.
     
     
  • 7.36, Аноним (-), 18:50, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    откуда это следует? развитие яп направлено в том числе на уменьшение потребления ресурсов
     
  • 6.29, Crazy Alex (ok), 14:49, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Для встроенных скриптов это развитие на фиг не нужно. А ducktape - это ж тебе не V8, его дело - обеспечить простенькую автоматизацию.
     
     
  • 7.38, Аноним (-), 18:51, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    для встроеных скриптов это как раз нужно - новые старндарты ecma позволяют использовать новые патерны, которые в свою очередь писать более компактный код, а его исполнение более эффективно
     
     
  • 8.41, Crazy Alex (ok), 20:03, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Если вам надо хоть какое-то эффективное исполнение - это не к ducktape, а к V8 с... текст свёрнут, показать
     
     
  • 9.44, Аноним (-), 21:59, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    причем тут ускорение речь идет возможностях языка, внедряемых через новые станд... текст свёрнут, показать
     
  • 5.27, Аноним (10), 13:57, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Зачем делать хотфиксы? Ну хотя бы для того чтобы делать вид что все ОК.
     
     
  • 6.28, Crazy Alex (ok), 14:47, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Зачем фиксы - понятно, и они делаются. А вот зачем для встроенного движка поддержка распоследней версии ECMAScript - непонятно. Это ж не вебчик, применение совсем другое.
     
     
  • 7.34, Аноним84701 (ok), 16:20, 05/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А вот зачем для встроенного
    > движка поддержка распоследней версии ECMAScript - непонятно. Это ж не вебчик, применение совсем другое.

    Видимо, по примеру одной системной софтины [не будем называть имен, но название оканчивается на d], от Красной Шляпы.
    Там тянется полноценный движок JS от мозиллы, mozjs 60.
    > Rules files are written in the JavaScript programming language and interface with

    [...]
    > While the JavaScript interpreter used in particular versions [...] may support non-standard features [...] rules must conform to ECMA-262 edition 5 (in other words, the JavaScript interpreter used may change in future versions

    И вообще, что-то они долго ждут с переходом на Electron. Стесняются наверное :)

     
  • 5.50, Аноним (49), 01:11, 08/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Классы там появились вот зачем ж)
     

  • 1.6, Аноним (6), 11:06, 05/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    к питону можно прикрутить?
     
  • 1.32, Аноним (32), 15:49, 05/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    К гтк3, чтобы оно перестало жрать по 3гб озу, где qt жрет пару сотен мб, это прикрутить можно?
     
  • 1.35, alexgluck (?), 18:21, 05/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Этот движок в заббикс 4.2 впилили. Пока до ограничений не дошёл. Работает и ладно
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру