LINUX.ORG.RU

Duktape 1.5.0 — встраиваемый движок JavaScript

 , ,


3

3

Состоялся релиз Duktape 1.5.0 — легковесного встраиваемого JavaScript-движка (полностью поддерживается ECMAScript 5, частично — шестая версия), который может работать на платформах с 64КБ системной RAM и 256 КБ flash. Среди преимуществ можно отнести также и простоту встраивания в программы на C/C++ (для этого нужно добавить в проект всего 3 файла — duktape.c, duktape.h и duk_config.h); имеется встроенный отладчик, поддержка Unicode, встроенный движок регулярных выражений. Всё это требует минимального числа зависимостей.

В новой версии улучшен отладчик и снижено потребление памяти.

Официальный сайт

>>> Подробности

★★★★★

Проверено: Falcon-peregrinus ()
Последнее исправление: cetjs2 (всего исправлений: 1)

для прототипирования и дальнейшего профилирования - самое оно.

Pm7vLB
()

может работать на платформах с 64КБ системной RAM и 256 КБ flash

И полностью их занимать.

anonymous
()

У меня такое вот неожиданное предложение: давайте в браузеры встроим, всё летать будет

zolden ★★★★★
()

Он наверное без JIT? Но все равно забавно.

Vit ★★★★★
()

Хороший движок, адекватное api в отличие от v8. Довольно шустрый на реальных задачах.

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

Не будет. Браузеры жрут память не от хорошей жизни, а потому что так быстрее.

anonymous
()

Лёгкий!

Хватит уже писать этот варваризм «легковесный». В английском языке приходится писать lightweight чтобы дать понять, что речь идёт именно о весе, а не о яркости.

Те кому нравится писать «легковесный» пусть за одно пишут «зелёноцветный» вместо «зелёный».

Camel ★★★★★
()

версия вышла больше месяца назад. вы бы ещё спустя год написали.

so_much_light
()
Ответ на: Лёгкий! от Camel

Боксер-тяжеловес с интересом выслушает твои нелепые рассуждения. Может даже пожалеет убогого. А может и нет.

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

Отбитый могз

Боксер-тяжеловес с интересом выслушает твои нелепые рассуждения. Может даже пожалеет убогого. А может и нет.

Боксёр-тяжеловес, но не тяжеловесный боксёр.

Camel ★★★★★
()
Ответ на: Лёгкий! от Camel

Лёгкий!

Хватит уже писать этот варваризм «легковесный». В английском языке приходится писать lightweight чтобы дать понять, что речь идёт именно о весе, а не о яркости.

В русском это пишут с похожей целью — чтобы дать понять, что речь идёт именно о весе, а не о сложности/трудности. Например игра SQRxZ легковесная (всего 1.5 мб), но никак не лёгкая, потому что хардкор тот ещё. JS-движок тоже может быть лёгким в плане освоения, а может быть легковесным. Да, в первом случае употребили бы «простой» скорее, но тем не менее.

Боксёр-тяжеловес, но не тяжеловесный боксёр.

Принципиальной разницы в контексте такого словообразования (прибавления «вес» к оценочному суждению оного) нет. А именно «тяжеловесными» при этом могут быть, например, железнодорожные составы

Отбитый могз

Впрочем да, это всё объясняет.

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

Интерестно, а его можно пользовать на старых смартах с Symbian9 (NokiaN82)? Или под ARM нужно еще доработать?

atsym ★★★★★
()

Таки, а почему не сделать браузер для десктопа?

anonymous
()

Всё хорошо, но вот это

Всё это требует минимального числа зависимостей.

разочаровало. Хотелось бы что-бы оно либо само в себе(предпочтительней), либо без отсебятины вообще. Что-то в последнее время тяжеловато стало встраивать языки в приложения.

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

Можно везде, где получится скомпилять. Авторы страются избегать непереносимых и потребляющих ресурсы техник(JIT и прочие способы компиляции кроме байткода). По сути это классический компилятор в байткод и маленькая vm исполняющая его в одном флаконе, с акцентом на минимальное потребление ресурсов.

ixrws ★★★
()
Ответ на: Всё хорошо, но вот это от FeyFre

Ну оно почти ни от чего не зависит, так что скорее можно назвать это вещью в себе. Но да, в ряде случаев можно будет найти что-то по легче, особенно если речь про всякие микроконтроллеры. С другой стороны найти по легче реализацию javascript едва ли получится. Всё таки duktape ещё и хорошее качество имеет, не какой-то там студенческий примерчик.

ixrws ★★★
()

какой смысл 64КБ RAM и 256 КБ ROM для x86 или x86_64 ? такое нужно сразу под ARM926 портировать;)

zudwa
()

Зачем это ненужно?

Он совсем медленный, на порядок медленнее lua и на два порядка медленнее lua-jit, явно не для эмбеддед:

https://github.com/r-lyeh/scriptorium

Для браузеров тоже не подходит, потому что на порядок медленнее V8

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

Чем оно лучше lua

Ответ в названии. Javascript is the duct tape of the internet. Конечный (опытный) пользователь IoT-вундерфафли скорее всего уже знает js. И скорее всего не захочет учить lua

и как быть с С99

А что не так?

makoven ★★★★★
()
Ответ на: Зачем это ненужно? от anonymous

https://github.com/r-lyeh/scriptorium

Там вместо gcc используют visualstudio.

Для браузеров тоже не подходит, потому что на порядок медленнее V8

И тем не менее используется в netsurf:

NetSurf 3.4 released 17 Feb 2016
NetSurf 3.4 features many optimisations to improve performance over previous releases. It also contains many bug fixes, including improvements to page layout. This is also the first release to contain the Duktape JavaScript engine. While our JavaScript bindings have seen a lot of development for this release, JavaScript remains disabled by default as the support is incomplete.

gag ★★★★★
()
Последнее исправление: gag (всего исправлений: 2)
Ответ на: Лёгкий! от Camel

чтобы дать понять, что речь идёт именно о весе, а не о яркости.

Но ведь в реальности она ни о том, ни о другом.

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

В netsurf появилась поддержка JS? Последний раз, когда я его последний раз смотрел, там был только HTML 4 и тех же времён CSS.

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

Там вместо gcc используют visualstudio.

С gcc результат ещё хуже, лол. Можешь проверить сам.

И тем не менее используется в netsurf:

ССЗБ. К тому же, нужность netsurf тоже спорна

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

И тем не менее используется в netsurf

Я вот что с выключенной галочкой js, что с включенной — нигде разницы не вижу, тот же Acid3 орёт, что надо включить js, хотя он и так включен. Он хоть как-нибудь себя проявляет?

andreymal
()
Ответ на: Лёгкий! от Camel

Те кому нравится писать «легковесный» пусть за одно пишут «зелёноцветный» вместо «зелёный».

Уровень знания родного языка у лор-овцев катастрофически падает. Так, все завтра же садимся писать диктант.

За порядком будут следить двое из моих слуг. Это Шоман и Тылгуннер.

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

«while(1){}» показало, что js таки работает :D

Кое-как навелосипедил console.log с выводом в страницу, сижу изучаю теперь

andreymal
()
Ответ на: Лёгкий! от Camel

Те кому нравится писать «легковесный» пусть за одно пишут «зелёноцветный» вместо «зелёный».

«Красноглазый» тебя устроит?

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

Всё никак руки не доходят собрать все либы для netsurf и его самого, чтобы проверить.

Вообще было бы неплохо, если бы firefox, chromium да остальные сделали бы API для DOM, а интерпретатор языка шёл бы плагином. js, lua,.. На чём хочешь - на том и пиши. Интересно, как duktape подключен в netsurf. Можно было бы вместо js использовать lua?..

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

сделали бы API для DOM, а интерпретатор языка шёл бы плагином

И еще отключаемые в compile-time фишки. Например, создаешь очередной текстовый редактор: собрал «браузер», ограниченный в CSS только flexbox'ами, html - несколькими тегами. И lua вместо js. Безо всяких WebRTC, WebGL

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

собрать все либы для netsurf и его самого

PACKAGE=«netsurf» VERSION=«3.5» ... DEPENDS=«gtk+ libssl libpng jpeg lcms libcurl libglade librsvg libgsf libmng zlib libxml2»

BUILD_DEPENDS=«$DEPENDS gtk+-dev libglade-dev openssl-dev libpng-dev jpeg-dev lcms-dev re2c lemon librsvg-dev curl-dev pango-dev libmng-dev zlib-dev libxml2-dev libcroco expat-dev gperf flex bison perl-html-parser perl-html-tagset»

# Rules to configure and make the package. compile_rules() { make install DESTDIR=$DESTDIR PREFIX=/usr \ TARGET=gtk \ NETSURF_USE_WEBP=NO \ NETSURF_GTK_MAJOR=2 \ NETSURF_USE_VIDEO=NO \ NETSURF_USE_DUKTAPE=YES }

anonymous
()
Ответ на: комментарий от anonymous
DEPENDS="gtk+ libssl libpng jpeg lcms libcurl libglade librsvg libgsf libmng zlib libxml2"

BUILD_DEPENDS="$DEPENDS gtk+-dev libglade-dev openssl-dev libpng-dev jpeg-dev lcms-dev \
re2c lemon librsvg-dev curl-dev pango-dev libmng-dev zlib-dev libxml2-dev libcroco \
expat-dev gperf flex bison perl-html-parser perl-html-tagset"

# Rules to configure and make the package.
compile_rules()
{
	make install DESTDIR=$DESTDIR PREFIX=/usr \
		TARGET=gtk \
		NETSURF_USE_WEBP=NO \
		NETSURF_GTK_MAJOR=2 \
		NETSURF_USE_VIDEO=NO \
		NETSURF_USE_DUKTAPE=YES
}
anonymous
()
Ответ на: комментарий от anonymous

https://github.com/cesanta/v7

Но это коммерческий продукт, который также предоставляется под GPL. А чтобы отослать им патч, нужно сообщить через гугл не только свои настоящие ФИО, но и домашний адрес и даже телефон!

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

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

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

Прост. Неприглядная особенность json. Понадобится передать sparse array - а фиг там

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

Зачем эти тормоза, когда для встроенных систем есть компактный и быстрый Lua и Luajit, позволяющие напрямую цеплять библиотеки на C.

anonymous
()

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

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

Javascript is the duct tape of the internet.

По-моему, мы все знаем, название какого ЯП стоит в начале этой фразы на самом деле

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