LINUX.ORG.RU

QuickJS

 ,


1

6

Как всем уже известно по новости с опеннета, разработчик ffmpeg и qemu выкатил javascript движок поддерживающий почти всё ES2019 + запили туда перегрузку операторов и библиотеку для математики с bigint и bigfloat. Всё это работает быстрее и лучше duktape и также легко встраивается в сишный код. Можно собирать самодостаточный бинарник прямо из js скрипта. x86 поддерживается, заявляется небольшая стоимость вызова нативного кода из js.
Итак, теперь js можно встраивать почти везде. В Duktape есть только ES5 + несколько фич ES6, нода жирновата и только под x64, остальные движки тоже или заброшены или кто куда.

Ответ на: комментарий от Deleted

Вот бы кто запилил компилер строгого подмножества ts

Всрался вам этот ts. Пишите на яве/плюсах/русте/чём угодно.

crutch_master ★★★★★
() автор топика

Какое-то странное обсуждение возможности использования QuickJS ...
ИМХНО неплохо бы эти три страницы отправить в /dev/null

Владимир 123456

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

Типы есть.

QuickJS (комментарий)

Их не может не быть.

Вполне может.

Оно вполне явное.

Нет, оно неявное. Явное — когда ты пишешь условное «to_string».

Я также и про плюсы могу сказать, то они там чего-то наперегружали и не понятно что выходит при сложении 2д координаты со сторкой.

Не спорю.

Это всё заставляют юзать? «===» вообще нужен только в случае жестких извращений когда в одной переменной может быть всё.

Без npm, например, никуда. А если сам не пользуешься, но оно появилось в чужом коде, то придётся страдать?

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

Типы есть. Их не может не быть

Ну ты тот ещё анскилл, поэтому не удивлён

Оно [приведение типов] вполне явное. Надо знать язык и всё будет ожидаемо

Это всё заставляют юзать?

Там в соседнем тхреде регистрант сказал, что проспал момент, когда C начали защищать методами CL и tcl. А я вот проспал момент, когда JS начали защищать методами крестов

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

Хрен его знает, но подозреваю, что сильно хуже. Да и с -O2 у меня бинарник - 3мб, что не намного меньше ноды. С другой стороны это используется как клей и производительность тут не критична, главное, чтобы его можно было просто взять и прикрутить.

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

Нет, оно неявное. Явное — когда ты пишешь условное «to_string».

Ну если нравится, бери жабку и пиши там везде стихи про еахл toString() через toInt().

Без npm, например, никуда.

А в пистоне без pip никуда. И?

А если сам не пользуешься, но оно появилось в чужом коде, то придётся страдать?

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

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

https://news.ycombinator.com/item?id=20411154

Вы спрашиваете это, чтобы знать, является ли он реальным парнем
или AI или псевдо для группы лиц, таких как https://en.wikipedia.org/wiki/Nicolas_Bourbaki ?

Я немного знаю Фабрис. Он определенно настоящий, умный и скромный.

Посетил его на рабочем месте около десяти лет назад, когда он работал в Netgem.

У нас также есть общий друг, которого мы навещаем с супругом и 
детьми, где мы открываем и обсуждаем новые гаджеты (основанные на физике, дроны, механические головоломки и т. Д.).
Однажды мы играли с неким замком, где процедура блокировки подразумевала перемещение своего рода джойстика в четырех направлениях.
Хитрость была в том, что вы могли сделать любое количество ходов, чтобы заблокировать его.
Казалось, что это позволило хранить произвольную длинную последовательность чисел в конечной механической системе.
Прибыл Фабрис, услышал, как мы объяснили, подумал и сказал: «Механика, вероятно, реализует какой-то алгоритм хеширования». 
Это был ответ.

Владимир 123456

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

У меня есть небольшой, интенсивно использующий процессор тест, который показывает, что производительность QuickJS сопоставима с другими интерпретаторами, написанными на C. Он наравне с MicroPython и последними версиями Ruby, и немного быстрее, чем CPython и Lua. Однако он все еще в 2-3 раза медленнее, чем оптимизированные специфичные для процессора интерпретаторы, используемые в LuaJIT и V8 (с отключенными JIT), и в 20-100 раз медленнее, чем компиляторы LuaJIT, V8 и PyPy JIT.

Владимир 123456

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

Не мои тесты ...

Владимир 123456

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

Как всегда все зависит от решаемой задачи и объемов, обрабатываемых данных.
Много задач на которых «все летает» /супер-пупер средства не всегда и нужны/.

Владимир 123456

anonymous
()

Чел написал на сишке виртуальную машину для ES8 (JavaScript), и тут бомбануло! И сишники и фронтендеры и пхп-шники сбежались кусать друг друга за жопы 😂😂

menangen ★★★★★
()

и только под x64

И с какого перепуга это проблема-то?

WitcherGeralt ★★
()

Запилите мне теперь его в питон, а то там с этим некоторые проблемы. Что, нет желающих? Ну, как обычно.

anonymous
()

Итак, теперь js можно встраивать почти везде

А где это нужно? Если только геймдев, но там у них lua в фаворите, насколько я знаю.

Для каких целей он был разработан автором, в каких он проектах его использует? Или это программирование ради программирования?

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

Автор просто весёлый чувак, его bpg до сих пор криво кодирует и ничем не поддерживается. Я думаю если бы он поспособствовал его внедрению в gwenview (там уже полно говнокода) или в ту либу которую gwenview утилизирует, пользователей у него бы прибавилось. А то 5 лет прошло, тот же AVIF уже через месяц после появления в продакшен пошёл (несмотря на сырость). Впрочем, HEIF в линуксе тоже ничто не поддерживает.

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

gwenview

В первую очередь, надо пихать в браузеры /не в виде яваскрипта/. Я не знаю, пытались ли его туда запихать, предоставлю право поискать по багтрекеру тебе.

Во вторую очередь, bpg под жирным вопросом потому, что там вроде как были какие-то траблы с патентами на код. Это плохо.

В принципе, VNC ещё один режим не помешал бы. Особенно, если поработать и над скоростью сжатия /как с этим у bpg обстоит, я не в курсе/.

Владимир

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

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

Владимир, гомосексуалист.

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

По сути-то Lua есть js frozen right back then.

Fixed. Дичь же дичью. Одна только индексация массивов с 1 чего стоит. Попытка портировать один полезный скрипт с человеческого ES6 на Lua 5.2 сопровождалась отборным матом.

Если в этом самом QuickJS будет, как в ноде, вменяемое взаимодействие с ФС на уровне стандартной библиотеки, а также будет возможность без костылей собрать её статически под ARMv7 (или, на крайний случай, динамически под armv7-bionic), то я незамедлительно выкину спидаплуповскую ноду в пользу этого движка из своей прошивки.

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

По сути-то Lua есть js frozen right back then.

Иногда вместо того, чтобы писать код без оглядки, надо взять, обернуться и спросить себя: «На кой чёрт? Нафига я это делаю? Может, можно по-другому? Может, можно не делать?». Ну, знаешь, чтобы не увязнуть.

Одна только индексация массивов с 1 чего стоит.

Это разве что один из минусов, в JS их всё-таки будет больше. По крайней мере, leftpad.io и оверинжиниринга на Lua мы в таких масштабах не увидим.

Попытка портировать один полезный скрипт с человеческого ES6 на Lua 5.2 сопровождалась отборным матом.

А кто тебе сказал, что JS и LUA — один и тот же язык? Они и на то разные языки, что надо брать и портировать, а не копипастить. Я вот, отборно матерясь, тоже портировал скрипты с одного языка на другой. Из этого не выходит, что язык первый — плохой язык второй. Идиомы просто разные. А ты, похоже, принял идиомы JS за эталон. Иди поплюйся на Lua за то, что он в браузере не работает.

Если … будет

Не напишешь — не будет.

вменяемое взаимодействие с ФС на уровне стандартной библиотеки

Есть такая штука, называется FFI. С её помощью, говорят, можно и GTK прикрутить. Прикинь?

Владимир, гомосексуалист.

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

Одна только индексация массивов с 1 чего стоит.

Тупее минуса придумать не мог? То на Go не хочешь из за := писать, то на lua из за массивов с единицы. Твой уровень эт синтаксис сравнить? Ну в принципе то вопрос риторический, судя по тому что ты топишь за ту убогую поделку - да.

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

Цирковой номер, только у нас:

То на Go не хочешь из за := писать, то на lua из за массивов с единицы.

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

P.S. Да, если бы не безальтернативность Lua в той сфере, куда тот скрипт надо было совать, я бы к этой унылоте на километр не подошёл бы.

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

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

У тебя какие то нарушения или ты рильно пьешь постоянно? Я же вроде по простому все тебе написал, все твои сравнения онли по синтаксису, и ничего нормального ты так и не сказал за все время что я тебя тут вижу, твои серьезные разработки это видимо кнопка с приветом на реде, впиши себе лучше это в профиль, и перестань повторять эту дичь. Хотел кст написать «ты бы еще про возраст начал», но такое ж было, ахах:

школиё

Правда провалы в памяти тебе мешают дать правильную оценку.

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

Ну, знаешь, чтобы не увязнуть.

Хорошо, что стандарты не мамкины аналитики уровня /lor/ разрабатывают. Иначе бы точно увязли.

в JS их всё-таки будет больше

Например?

По крайней мере, leftpad.io и оверинжиниринга на Lua мы в таких масштабах не увидим.

То, что разные поехавшие не умеют использовать инструмент по назначению, не делает его хуже.

А ты, похоже, принял идиомы JS за эталон.

Нет, для меня эталоном является то, что требует меньше буковок для решения одной и той же задачи. Lua оказался куда вербознее на ровном месте, чем ES6. И вот здесь-то Грязный Билли оказался прав со своим “There’s only really one metric to me for future software development, which is — do you write less code to get the same thing done?”

Иди поплюйся на Lua за то, что он в браузере не работает.

Да плевал я на тот браузер. В данном контексте, по крайней мере.

Есть такая штука, называется FFI. С её помощью, говорят, можно и GTK прикрутить. Прикинь?

Давай, прикрути на armv7-bionic в B2G-окружение. Мир десктопом не ограничивается, прикинь?

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

То на Go не хочешь из за := писать

Правильно, как и любой адекватный человек.

то на lua из за массивов с единицы.

Аналогично.

Твой уровень эт синтаксис сравнить?

Я зык - это и есть синтаксис. Синтаксис первичен, а всё остальное вторично.

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

Не удивлюсь если ребфорсер думает точно так же.

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

все твои сравнения онли по синтаксису

А по чему ещё сравнивать одну императивщину с другой, отщепенец? Особенно в контексте скриптика, задача которого — патчить NVRAM.

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

А по чему ещё сравнивать одну императивщину с другой

))))))

Особенно в контексте скриптика

Не оправдывайся, ты не только про lua vs js говорил. Ладна, иди свои кружки на реде рисуй, мне седня лениво.

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

))))))

Типичный слив среднешкольника в изгнании, которому даже слово «парадигма» неизвестно. Иди со своими птичками отдыхай.

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

Например?

Например, издевательство над системой типов и нетранзитивные варианты «=», что ты как маленький?

То, что разные поехавшие не умеют использовать инструмент по назначению, не делает его хуже.

Делает, если основная ЦА инструмента — разные поехавшие. Судя по той статье «JS в 2016» или как её там.

Нет, для меня эталоном является то, что требует меньше буковок для решения одной и той же задачи. Lua оказался куда вербознее на ровном месте, чем ES6. И вот здесь-то Грязный Билли оказался прав со своим “There’s only really one metric to me for future software development, which is — do you write less code to get the same thing done?”

Тебе следовало бы писать на Perl, но ты не пишешь на Perl. Ты знаешь, что тебе делать. А по факту, вербозность Lua для меня с твоих слов говорит в первую очередь, что ты знаешь js лучше lua. Я могу ошибаться, но это скорее всего так. Что-то подсказывает.

Давай, прикрути на armv7-bionic в B2G-окружение. Мир десктопом не ограничивается, прикинь?

А что, там FFI не, нет? Или хозяин ничего кроме JS не разрешил? Как же так-то, а?

Владимир, гомосексуалист.

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

Ты не из тех жабаскриптеров, которые форсят «функциональное программирование» на javascript?

anonymous
()
10 марта 2021 г.

накой оно вообще нужно. уже есть node, куда еще лепить этот JS. куда не плюнь, везде эти макакаи с JS.

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

Так уже известно, что он самый простой. А кодить хотят все. Вон, уже на ЛОРе собрались sh скрипты переписывать на javascript

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

Типов нет.

Типы есть везде, и в жс в том числе.

Неявное приведение типов там, где этого не ожидаешь.

В моем коде не происходит никакого поведения, которого я не ожидаю.

Отвратительное коммьюнити.

Самое огромное комьюнити.

Огромная каша из фреймворков.

Каша только в головах.

Безумный npm.

Выбери себе другой pm, или не используй pm вовсе. В чем твоя проблема?

«==» и «===» — это же цирк.

Тебе смешно все, в чем ты не разбираешься, верно я понял?

Да даже феерический «const».

Жс не единственный язык с подобным поведением неизменяемых переменных. см. котлин, например. Так может ты просто утенок:

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

Ты вообще иди метапрог пиши, а то @metaprog и его карманный цирк жить без тебя там не могут.

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