The OpenNET Project / Index page

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

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

26.09.2017 10:52

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

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

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

В новой версии появилась поддержка функций Math.clz32(), Math.imul() и Math.sign() из ES2015, существенно расширена поддержка элементов Object.prototype из стандарта ES2017, добавлены обработчики 'apply' и 'construct' для объекта Proxy, расширен внутренний API, проведена оптимизация производительности RegExp.

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


Обсуждение (48) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, th3m3 (ok), 11:09, 26/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Его можно использовать, как альтернативу Electron?
     
     
  • 2.2, _hide_ (ok), 11:14, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А рисовать как?
     
     
  • 3.3, anonimous (?), 11:20, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А рисовать вот так https://lexborisov.github.io/myhtml/ и вот так https://github.com/lexborisov/mycss
     
     
  • 4.10, lastmac (?), 14:19, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +13 +/
    Приятно когда твои проекты вспоминают.
    Как автор myhtml и mycss могу сказать следующее:
    Для рисования этого не достаточно. Есть проект Modest (https://github.com/lexborisov/Modest) вот к нему можно было бы прикрутить этот JSE, но я смотрю в сторону Chakra от MS.
    Более того, даже Modest не достаточно для рисования, он ещё пилится, но, к слову, скоро намечается большой апдейт где всё станет намного краше и лучше. Плюс мы грант получили на разработку браузера Modest, скоро совсем весело пойдет разработка.
     
     
  • 5.17, Аноним (-), 16:09, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Может не надо браузер? :((

    Пока так всё хорошо получается...

    Но если уж будете делать, сделайте чтоли кнопку "вкл/откл js нафиг"

     
     
  • 6.18, lastmac (?), 16:43, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Почему не надо?

    Браузер и Браузерный движок разные вещи. Итог разработки будет браузер.
    Modest же является браузерным движком для расчетов, отрисовки и прочего. Он всё так же будет независимый и легко собираемый/встраиваемый. Браузер, скорее всего, так же будет именоваться Modest. Modest Browser and Modest Engine.

    Отключить там можно будет что угодно (если это не влияет на общую работу движка). Но разве существует интернет без JS? Вопрос скорее риторический. Я не уверен, и возможно вы меня поправите, но подавляющему большинству пользователей браузер нужен полноценный, включающий в себя все современный плюшки (js, webgl, websocket and etc.)

    TL;DR
    P.S.:
    Modest Engine разрабатывается модульно. Модули можно удалять, добавлять свои. Можно создавать свои библиотеки на основе отдельных модулей Modest.

    К примеру, myhtml это mycore, myencoding, myport, myhtml взятые из Modest.
    Скачайте исходники Modest и выполните команду "make modules" и вы увидите существующие модули и зависимости между ими.

    К примеру, вы можете удалить из исходников myurl (source/myurl) и проект соберется без этого модуля. А можете удалить все модули кроме mycore,  myport, myurl и он тоже соберется.

    Я не делаю монолитную систему, мне хочется чтобы отдельные браузерные компоненты могли жить своей жизнью. К примеру, тот же myurl крайне полезен и полностью соответствует спецификации. В интернетах днём с огнём не сыщешь обработчика урлов соответствующий спецификации. А тут и готовый код и примеры (https://github.com/lexborisov/Modest/tree/master/examples/myurl).

    Как добавить свой модуль: https://github.com/lexborisov/Modest/wiki/Add-new-module
    Как создать свой порт (для своей ОС): https://github.com/lexborisov/Modest/wiki/Add-new-port


     
     
  • 7.23, trdm (ok), 18:16, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > но подавляющему большинству пользователей браузер нужен полноценный

    самое главное adblock.

     
  • 7.26, Аноним (-), 18:32, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > разве существует интернет без JS?

    Интернет существует даже без веба. ;)

     
  • 7.28, Мать драконов (?), 18:53, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Мне одно интересно. Нафига кому-то может прийти в голову делать браузер? Вам делать нечего или деньги некуда девать? Или вы студенты и у вас много свободного времени?

    Нет более полезных задач для решения?

     
     
  • 8.29, lastmac (?), 20:59, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Это пришло в голову мне Денег то у нас как раз и нет Времени у нас свободного ... текст свёрнут, показать
     
  • 7.30, Аноним (-), 23:18, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >> Почему не надо?

    Волнительно.

    >> Он всё так же будет независимый и легко собираемый/встраиваемый.

    Да будет так. И не постигнет судьба оперы.

    >> Но разве существует интернет без JS? Вопрос скорее риторический. Я не уверен, и возможно вы меня поправите, но подавляющему большинству пользователей браузер нужен полноценный.

    Да. Опциональная кнопка, не видная по дефолту решает. :)

     
  • 5.24, Аноним (-), 18:26, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    NetSurf (http://www.netsurf-browser.org/) — тоже легкий браузер на C, даже уже юзабельный для несложных сайтов. Там, кстати, Ducktape используется. И у них тоже свои пригодные для отдельного использования библиотеки для разбора HTML и CSS и прочего. Как оно соотносится с вашими проектами? (Не поймите неправильно: я только за то, чтобы было больше разных независимых реализаций веб-движков, т. к. это препятствует монополизации Веба и мотивирует разработчиков ориентироваться на стандарты, а не на конкретные браузеры).
     
     
  • 6.40, Клыкастый (ok), 16:48, 27/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    $ eix netsurf
    * www-client/netsurf
         Доступные версии:      ~3.6 {+bmp debug +duktape fbcon fbcon_frontend_able fbcon_frontend_linux fbcon_frontend_sdl fbcon_frontend_vnc fbcon_frontend_x +gif gstreamer gtk gtk2 gtk3 +javascript +jpeg +mng pdf-writer +png +psl +rosprite +svg +svgtiny truetype +webp ABI_MIPS="n32 n64 o32" ABI_PPC="32 64" ABI_S390="32 64" ABI_X86="32 64 x32"}
         Домашняя страница:     http://www.netsurf-browser.org/
         Описание:              a free, open source web browser

    хм... попробовать что ли

     
     
  • 7.41, Andrey Mitrofanov (?), 16:45, 28/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >      Описание:      
    >        a free, open source
    > web browser
    > хм... попробовать что ли

    [U] Лицензия GPLv2= [/U]

    Ещё лет пять подожди. Пока что не совсем пермисиивно.

     
     
  • 8.42, Клыкастый (ok), 17:36, 28/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Зато уже опенсорсно Ну и да, ты уже выпилил с десктопов и серверов софт с перми... текст свёрнут, показать
     
     
  • 9.43, Andrey Mitrofanov (?), 21:42, 28/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    http www opennet ru openforum vsluhforumID3 108152 html 77 Всё http www open... текст свёрнут, показать
     
     
  • 10.45, Клыкастый (ok), 12:36, 03/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    ну т е не выпилил а как дышал, как дышал ... текст свёрнут, показать
     
     
  • 11.46, Andrey Mitrofanov (?), 13:08, 03/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Нет Зачем это тебе https ru wikipedia org wiki D0 94 D0 B5 D0 BC D0 B0 D0 B... текст свёрнут, показать
     
     
  • 12.47, Клыкастый (ok), 14:57, 03/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Какой странный вопрос BSD лицензию ругаешь ты, а нужно это мне Мне - не нужн... текст свёрнут, показать
     
     
  • 13.48, Andrey Mitrofanov (?), 15:05, 03/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Мне Зачем тебе, чтобы я каким-то там был И , кроме того, ты всё опять перепута... текст свёрнут, показать
     
     
  • 14.49, Клыкастый (ok), 14:28, 06/10/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну ожидается что собеседник а вменяем б логичен в последователен Но я не нас... текст свёрнут, показать
     
  • 5.33, anonimous (?), 06:10, 27/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Оу, как-то пропустил это, когда просматривал ваши репозитории.
    Видел вашу статью на хабре, с тех пор руки чешутся как раз сабж из новости объединить с вашим браузерным движком, и юзать либо на самом девайсе (nokia n900 что-то стал сдавать уже в плане веб серфинга), либо к боту прикрутить своему и передавать изображения отрендеренных страничек.
     
  • 2.5, Аноним (-), 11:57, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    В процессе допиливания твой проект разрастется до еще одной ноды/электрона?
     
     
  • 3.7, th3m3 (ok), 12:06, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Electron - это работа через chromium. Каждое новое запущенное приложение, это ещё один chromium с кучей приблуд сверху. Всё это жрёт ресурсы неимоверно. Вот если бы была адекватная альтернатива, тогда ещё можно подумать об js-приложениях на декстопе.
     
     
  • 4.8, Atterratio (ok), 12:28, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Вам не кажется что это принципе не очень хорошая идея, и не важно на что тут менять хром?
     
     
  • 5.11, th3m3 (ok), 14:56, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мне кажется, что очень не хватает чего-то вроде Android Webview в десктоп системах. Когда у нас одна среда на всю систему и через неё запускаются веб-приложения. Для некоторых задач - было бы очень удобно. А так, приходиться городить костыли в виде Электрона, который никуда не годится в таком виде, как сейчас.
     
     
  • 6.19, Аноним (-), 17:18, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Было уже такое. Называлось mshtml.dll и iexplore.exe. Чем закончилось вы помните.
     
     
  • 7.38, Sen (?), 09:45, 27/09/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    эээ, закончилось троллингом оной технологии и саботажа из разряда "смотрите мы можем лучше"... Ну и да не хватило гибкости MS... Но пока Edge радует
     
  • 6.20, Аноним (-), 17:21, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Но так-то ничего не мешает взять GObject Introspection и WebKitGTK.
     
  • 4.13, skoro (?), 15:10, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    GNOME gjs ? На нём написаны Documents, Polari... правда документации практически нет.
     
     
  • 5.14, th3m3 (ok), 15:29, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Он же только для Гнома? Тогда не очень подойдёт. Нужно кросс-платформенное решение, хотя бы хоть для GNU/Linux систем, а лучше для всех.
     
     
  • 6.16, skoro (?), 16:05, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Не только для Гнома, для GTK3, у него еще есть привязки к WebKitGTK, примеры смотрел под XFCE. Про Вин/МакОС не знаю, скорее всего - в пролете.
     
  • 4.27, Аноним (-), 18:35, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    А как насчет Qt QML или JavaScript-привязок к GTK?  И неужели писать веб-интерфейс проще, чем использовать нормальный десктопный тулкит? Да и JavaScript — не тот язык, который стоило бы использовать при наличии выбора. Или все это просто от нежелания учиться: "выучил JavaScript и мне хватит"? Как только человек прекращает учиться, он начинает деградировать: не ограничивайте себя Джаваскриптом и Вебом.
     
  • 2.32, Аноним (-), 00:00, 27/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    можно, только тормозить будет как ie6 - jit-компиляции нет, это интерпретатор.
     
  • 2.35, Антон (??), 08:20, 27/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Его можно использовать, как альтернативу Electron?

    Напиши обёртку для своего любимого тулкита да используй.

     

  • 1.4, Пиони (?), 11:55, 26/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Примеры задач, где эта штука может пригодиться?
     
     
  • 2.6, A.Stahl (ok), 11:59, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Наверное там, где сейчас используется Lua. Возможно для кого-то ЯваСкрипт роднее.
     
     
  • 3.9, Аноним (-), 13:04, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > там, где сейчас используется Lua

    В ядре NetBSD?

     
  • 2.15, Sirob (?), 15:39, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Примеры задач, где эта штука может пригодиться?

    "Эта штука" используется в браузере Netsurf.
    Было ещё обсуждение прикрутить её к Polkit вместо мозиловского JavaScript-движка.

     
  • 2.21, Аноним (-), 17:36, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Gerbera ещё использует (видимо, для веб-интерфейса). Больше пока что не попадалось пакетов, где используется duktape.
     
     
  • 3.31, h31 (ok), 23:28, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Скорее для плагинов.
     
  • 2.34, Антон (??), 08:19, 27/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Хоть куда, где надо добавить к либе скриптуху.
     

  • 1.12, Аноним (-), 15:06, 26/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Bytecode is generated directly without an intermediate
    representation (tree), at the cost of needing two (and sometimes
    three) passes over each function.

    Печально.

     
  • 1.22, Аноним (-), 17:51, 26/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    mruby более впечатляющий если lua не устраивает.
     
     
  • 2.36, funny.falcon (?), 09:39, 27/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Я согласен. Но толпа хомячков, умеющих только js, не согласна.
     

  • 1.25, nc (ok), 18:29, 26/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Интересная вещь. Есть идея встроить этот движок в компилятор (например языка D) для выполнения скриптов, модифицирующих и генерирующих синтаксическое дерево во время компиляции.
     
     
  • 2.37, funny.falcon (?), 09:41, 27/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Почему не какую нибудь минималистичную scheme?
     
     
  • 3.39, Andrey Mitrofanov (?), 14:14, 27/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Почему не какую нибудь минималистичную scheme?

    Заветов Гринспена шугаются.  https://duckduckgo.com/?q=%D0%B3%D1%80%D0%B8

     

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



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

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