Доступен (https://github.com/svaarala/duktape/releases/tag/v2.2.0) выпуск JavaScript-движка Duktape 2.2.0 (http://duktape.org/), ориентированного на встраивание в кодовую базу проектов на языке C/C++. Движок отличается компактным размером, высокой переносимостью и низким потреблением ресурсов. Исходные тексты движка написаны на языке Си и распространяются (https://github.com/svaarala/duktape) под лицензией MIT.
Код Duktape занимает около 160 kB и потребляет всего 48kB ОЗУ, а в режиме низкого потребления памяти 26kB ОЗУ. Для интеграции Duktape в код на C/C++ достаточно (http://duktape.org/guide.html#gettingstarted) добавить в проект файлы duktape.c и duktape.h, и использовать Duktape API (http://duktape.org/api.html) для вызова функций на JavaScript из кода на C/C++ или наоборот. Для освобождения неиспользуемых объектов из памяти применяется сборщик мусора с финализатором, построенный на основе комбинации алгоритма (https://ru.wikipedia.org/wiki/%D0%A1%D0%... подсчёта ссылок с алгоритмом пометок (Mark and Sweep).
Обеспечивается полная совместимость со спецификациями Ecmascript 5.1 и частичная поддержка (http://wiki.duktape.org/PostEs5Features.html) Ecmascript 2015 и 2016 (E6 и E7), в том числе поддержка объекта Proxy для виртуализации свойств, типизированные массивы, ArrayBuffer, Node.js Buffer, Encoding API, объект Symbol и т.п. В состав входит встроенный отладчик, движок для выполнения регулярных выражений и подсистема для поддержки Unicode. Также предоставляются специфичные расширения, такие как поддержка сопрограмм, встроенный фреймворк для журналирования, механизм загрузки модулей на основе CommonJS, система кэширования байткода, позволяющая сохранять и загружать скомпилированные функции.
В новой версии появилась (https://github.com/svaarala/duktape/blob/master/RELEASES.rst... поддержка функций Math.clz32(), Math.imul() и Math.sign() из ES2015, существенно расширена поддержка элементов Object.prototype из стандарта ES2017, добавлены обработчики 'apply' и 'construct' для объекта Proxy, расширен внутренний API, проведена оптимизация производительности RegExp.URL: https://github.com/svaarala/duktape/releases/tag/v2.2.0
Новость: http://www.opennet.me/opennews/art.shtml?num=47270
Его можно использовать, как альтернативу Electron?
А рисовать как?
А рисовать вот так https://lexborisov.github.io/myhtml/ и вот так https://github.com/lexborisov/mycss
Приятно когда твои проекты вспоминают.
Как автор myhtml и mycss могу сказать следующее:
Для рисования этого не достаточно. Есть проект Modest (https://github.com/lexborisov/Modest) вот к нему можно было бы прикрутить этот JSE, но я смотрю в сторону Chakra от MS.
Более того, даже Modest не достаточно для рисования, он ещё пилится, но, к слову, скоро намечается большой апдейт где всё станет намного краше и лучше. Плюс мы грант получили на разработку браузера Modest, скоро совсем весело пойдет разработка.
Может не надо браузер? :((Пока так всё хорошо получается...
Но если уж будете делать, сделайте чтоли кнопку "вкл/откл js нафиг"
Почему не надо?Браузер и Браузерный движок разные вещи. Итог разработки будет браузер.
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/my....
Как добавить свой модуль: https://github.com/lexborisov/Modest/wiki/Add-new-module
Как создать свой порт (для своей ОС): https://github.com/lexborisov/Modest/wiki/Add-new-port
> но подавляющему большинству пользователей браузер нужен полноценныйсамое главное adblock.
> разве существует интернет без JS?Интернет существует даже без веба. ;)
Мне одно интересно. Нафига кому-то может прийти в голову делать браузер? Вам делать нечего или деньги некуда девать? Или вы студенты и у вас много свободного времени?Нет более полезных задач для решения?
> Мне одно интересно. Нафига кому-то может прийти в голову делать браузер?Это пришло в голову мне.
> Вам делать нечего или деньги некуда девать?
Денег то у нас как раз и нет.
> Или вы студенты и у вас много свободного времени?
> Нет более полезных задач для решения?Времени у нас свободного тоже нет, всё уходит на написание движка/браузера.
Браузер пилить крайне увлекательное занятие. Там свод всех технологий. Надо знать очень много, вот прям крайне много. Тут студент вряд ли потянет.Сейчас полноценных браузерных движков не много, по пальцам можно пересчитать. Все они имеют свои лицензии, у кого-то это целая солянка из лицензий (привет вебкит, блинк).
Все лицензии накладывают ограничения в той или иной области.Сейчас всеми открытыми движками, которые идут в ногу со спецификациями, обладают несколько компаний: Google, Apple, Mozilla. Можно смело сказать, что только гиганты.
Собственно, они захватили рынок и продвигают "своё". Кто-то жаждет собирать информацию о пользователях, кто-то хочет встроить свои рекламо-резки (чужих реклам) и так далее.Да, можно взять их открытые движки и создать "свой" браузер на их основе, но в случаи чего вам быстро по рукам дадут, смотрите выше о лицензиях. То есть, жизнь вам испортить в этом месте будет им легко.
Вносить изменения в чужой движок вы не сможете, он быстро обновляется. В какой-то момент вы просто устанете накатывать текущую версию на свою. Или если закроют исходники то вы не сможете их развивать. И там такого много.Или вот попробуйте встроить вебкит в своё приложение. Или собрать его не на x86/64. Или запустить браузер на телевизоре/интернет вещах. Примеров много.
Мы же делаем быстрый, энергоэффективный, встраиваемый браузер, собственный движок.
>> Почему не надо?Волнительно.
>> Он всё так же будет независимый и легко собираемый/встраиваемый.
Да будет так. И не постигнет судьба оперы.
>> Но разве существует интернет без JS? Вопрос скорее риторический. Я не уверен, и возможно вы меня поправите, но подавляющему большинству пользователей браузер нужен полноценный.
Да. Опциональная кнопка, не видная по дефолту решает. :)
NetSurf (http://www.netsurf-browser.org/) — тоже легкий браузер на C, даже уже юзабельный для несложных сайтов. Там, кстати, Ducktape используется. И у них тоже свои пригодные для отдельного использования библиотеки для разбора HTML и CSS и прочего. Как оно соотносится с вашими проектами? (Не поймите неправильно: я только за то, чтобы было больше разных независимых реализаций веб-движков, т. к. это препятствует монополизации Веба и мотивирует разработчиков ориентироваться на стандарты, а не на конкретные браузеры).
$ 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хм... попробовать что ли
> Описание:
> a free, open source
> web browser
> хм... попробовать что ли[U] Лицензия GPLv2= [/U]
Ещё лет пять подожди. Пока что не совсем пермисиивно.
> Ещё лет пять подожди. Пока что не совсем пермисиивно.Зато уже опенсорсно. Ну и да, ты уже выпилил с десктопов и серверов софт с пермиссивными лицензиями? везде GPLv3? и как оно?
>> Ещё лет пять подожди. Пока что не совсем пермисиивно.
> Зато уже опенсорсно. Ну и да, ты уже выпилил с десктопов и
> серверов софт с пермиссивными лицензиями? везде GPLv3? и как оно?http://www.opennet.me/openforum/vsluhforumID3/108152.html#77 Всё
http://www.opennet.me/openforum/vsluhforumID3/103238.html#57 совсем без
http://www.opennet.me/openforum/vsluhforumID3/103238.html#54 изменений,
http://www.opennet.me/openforum/vsluhforumID3/103565.html#43 , чапай.Я ж говорил, "я вычистил со своей машины все, что...".
Как там у тебя? Все GCC clang-ом и VS/icc позаменял? Порадуй. Или тож
http://www.opennet.me/openforum/vsluhforumID3/111743.html#140 без перемен?---http://www.opennet.me/openforum/vsluhforumID3/103565.html#29 и да, есть разница.
ну т.е. не выпилил. а как дышал, как дышал.
> ну т.е. не выпилил.Нет. Зачем это тебе?
https://ru.wikipedia.org/wiki/%D0%94%D0%...
https://ru.wikipedia.org/wiki/%D0%9B%D0%...
> а как дышал, как дышал.
> Нет. Зачем это тебе?Какой странный вопрос. BSD лицензию ругаешь ты, а "нужно это" мне. Мне - не нужно, чтобы ты выпиливал. Нужно тебе - быть последовательным.
И наоборот: GPL лицензия опенсорсная, с чего ты решил, что я должен её выпиливать - неясно.
Собственно всякий раз (несмотря на то, что это я уже объяснял тебе неоднократно), когда ты из своих соображений ожидаешь, что я буду что-то там выпиливать, я интересуюсь, а ты вообще последователен ли? Ожидая, что я выпиливаю у себя софт под GPL, распрощался ли ты с софтом под BSD? И каждый раз оказывается - нет. У тебя двойные стандарты. То, что ты рекомендуешь другим, сам применять не собираешься. Смешной такой.
>> Нет. Зачем это тебе?
> Какой странный вопрос. BSD лицензию ругаешь ты, а "нужно это" мне. Мне
> - не нужно, чтобы ты выпиливал. Нужно тебе - быть последовательным.Мне? Зачем тебе, чтобы я каким-то там был?
И , кроме того, ты всё опять перепутал. Я не лицензию ругаю, а страюсь понять её выбирающих и, сюрприз, ругающих gpl. Вот тебя, да. А ты партизанишь и косоглазишь, не поддаёшься пониманию.
> И наоборот: GPL лицензия опенсорсная, с чего ты решил, что я должен
> её выпиливать - неясно.Я просто перепутал, кто у тебя начальнки. По взаимодействию с вендорями -- не твой, да?
Ты просто показался похожим. Виноват, попробую исправиться. Жду.
> Мне? Зачем тебе, чтобы я каким-то там был?Ну ожидается что собеседник а) вменяем б) логичен в) последователен. Но я не настаиваю, нет. Не умеешь в последовательность - ну не умеешь, бывает.
> Я не лицензию ругаю, а страюсь понять её выбирающих и, сюрприз, ругающих gpl.
Это могут быть разные люди. И это точно не ко мне. Я указываю на различния, на плюсы и минусы. Они есть и там и там. И в разных точках отсчёта - разные.
> да. А ты партизанишь и косоглазишь, не поддаёшься пониманию.
Есть подозрение, что у тебя проблема с пониманием. И причина тому - нежелание понимать.
> Я просто перепутал, кто у тебя начальнки. По взаимодействию с вендорями -- не твой, да?
> Ты просто показался похожим. Виноват, попробую исправиться. Жду.Сложно понять, что ты имеешь в виду.
Оу, как-то пропустил это, когда просматривал ваши репозитории.
Видел вашу статью на хабре, с тех пор руки чешутся как раз сабж из новости объединить с вашим браузерным движком, и юзать либо на самом девайсе (nokia n900 что-то стал сдавать уже в плане веб серфинга), либо к боту прикрутить своему и передавать изображения отрендеренных страничек.
В процессе допиливания твой проект разрастется до еще одной ноды/электрона?
Electron - это работа через chromium. Каждое новое запущенное приложение, это ещё один chromium с кучей приблуд сверху. Всё это жрёт ресурсы неимоверно. Вот если бы была адекватная альтернатива, тогда ещё можно подумать об js-приложениях на декстопе.
Вам не кажется что это принципе не очень хорошая идея, и не важно на что тут менять хром?
Мне кажется, что очень не хватает чего-то вроде Android Webview в десктоп системах. Когда у нас одна среда на всю систему и через неё запускаются веб-приложения. Для некоторых задач - было бы очень удобно. А так, приходиться городить костыли в виде Электрона, который никуда не годится в таком виде, как сейчас.
Было уже такое. Называлось mshtml.dll и iexplore.exe. Чем закончилось вы помните.
эээ, закончилось троллингом оной технологии и саботажа из разряда "смотрите мы можем лучше"... Ну и да не хватило гибкости MS... Но пока Edge радует
Но так-то ничего не мешает взять GObject Introspection и WebKitGTK.
GNOME gjs ? На нём написаны Documents, Polari... правда документации практически нет.
Он же только для Гнома? Тогда не очень подойдёт. Нужно кросс-платформенное решение, хотя бы хоть для GNU/Linux систем, а лучше для всех.
Не только для Гнома, для GTK3, у него еще есть привязки к WebKitGTK, примеры смотрел под XFCE. Про Вин/МакОС не знаю, скорее всего - в пролете.
А как насчет Qt QML или JavaScript-привязок к GTK? И неужели писать веб-интерфейс проще, чем использовать нормальный десктопный тулкит? Да и JavaScript — не тот язык, который стоило бы использовать при наличии выбора. Или все это просто от нежелания учиться: "выучил JavaScript и мне хватит"? Как только человек прекращает учиться, он начинает деградировать: не ограничивайте себя Джаваскриптом и Вебом.
можно, только тормозить будет как ie6 - jit-компиляции нет, это интерпретатор.
> Его можно использовать, как альтернативу Electron?Напиши обёртку для своего любимого тулкита да используй.
Примеры задач, где эта штука может пригодиться?
Наверное там, где сейчас используется Lua. Возможно для кого-то ЯваСкрипт роднее.
> там, где сейчас используется LuaВ ядре NetBSD?
> Примеры задач, где эта штука может пригодиться?"Эта штука" используется в браузере Netsurf.
Было ещё обсуждение прикрутить её к Polkit вместо мозиловского JavaScript-движка.
Gerbera ещё использует (видимо, для веб-интерфейса). Больше пока что не попадалось пакетов, где используется duktape.
Скорее для плагинов.
Хоть куда, где надо добавить к либе скриптуху.
Bytecode is generated directly without an intermediate
representation (tree), at the cost of needing two (and sometimes
three) passes over each function.Печально.
mruby более впечатляющий если lua не устраивает.
Я согласен. Но толпа хомячков, умеющих только js, не согласна.
Интересная вещь. Есть идея встроить этот движок в компилятор (например языка D) для выполнения скриптов, модифицирующих и генерирующих синтаксическое дерево во время компиляции.
Почему не какую нибудь минималистичную scheme?
> Почему не какую нибудь минималистичную scheme?Заветов Гринспена шугаются. https://duckduckgo.com/?q=%D0%B3%D1%80...