Обновить

Комментарии 38

Не очень понятно, а какую цель преследовали, зачем именно отказываться от v8? Может лучше было сделать фреймворк для биндингов, чтобы можно было легко вызывать ts код. В v8, емнип, довольно хорошо эта история должна быть проработана.

Ну и вопрос сравнений перфа, наверное, тоже не осветили. Хотя набор бенчиакров здесь сложновато найти, конечно.

Почему не смогли поддержать any? Его же можно в условный AnyJsValue транслировать и использовать динамические возможности... Смотрели в эту сторону?

ну V8 брать запарно, надо самому ивентлуп дописывать будет, а вот условный Bun тут зашёл бы хорошо кмк

Ну, bun или v8 не так уж и важно. Это в любом случае меньше работы, чем написать комплиятор

Тут либо крестик снимите, либо трусы наденьте. Либо полная динамика и V8, либо статика и LLVM. Гибриды обычно получаются монструозными

Понятное дело, что динамика медленная. Но в качестве фоллбэка вполне себе норм. Потому что просто выкинуть существенно часть языка — решение такое себе.

Было приложение на С++. Решили попробовать часть приложения писать на Typescript/Javascript. Попробовали, не получилось. Про V8 речь не шла. Если что то я в подкасте задавал подобные вопросы, можно посмотреть здесь https://vkvideo.ru/video-119450242_456240507

Понятно, что пробовали писать приложение на смеси c++ и TS. Вопрос в том, почему взялись за компиляцию, а не за интеграцию условного v8?

Спасибо за интересный обзор. Можете раскрыть подробнее вашу мотивацию на примере какие-нибудь реальных юз-кейсов?

На сколько производительность вашего решения в итоге отличается от классического Native+V8+JS, и почему для вашего UI это критично? Смотрели-ли вы в сторону WebAssembly, WebGL (WebGPU)?

Просто сейчас масса UI пишется с использованием или чисто WebView, или как гибриды. Критичные функции реализуются на компилируемых языках и прокидываются в JS.

Первая — лицензионные ограничения: новые версии Qt, на которых мог бы жить десктопный интерфейс, становятся недоступны по санкционным причинам

Ох, понимаю, у меня проект на Qt под Android, и он не собирался с 2019 года... От одной мысли о настройке на свежей ОС страшно, поэтому ищу сейчас способ организовать сборку с помощью контейнеров. Рассматривали такой вариант?

Сорри, я не автор, но стало интересно, а как сборка в контейнере поможет с лицензионными ограничениями?

Круто! Всё ждал когда же будет подобное, хоть самому писать😁

Только не совсем понял что по итогу с event loop, на с++ уже не будет?

Когда смотрю в сторону всяких подобных вещей, всегда прихожу к выводу что условный v8 плюс автоматическая генерация биндингов всегда будет лучше.

Планируете ли добавить поддержку Profile-Guided Optimization (PGO) в ваш компилятор (возможно переиспользуя LLVM инфраструктуру для этого) для повышения производительности итоговых программ?

Производительность и джава(тайп)скрипт - не особо совместимые вещи

Как раз наоборот. Динамика обычно требует pro, чтобы работать не прям совсем медленно.

Одно другого не отменяет: да, будет всё ещё ужас, но есть (не очень большой) шанс, что уже не ужас-ужас-ужас.

Первая — лицензионные ограничения: новые версии Qt, на которых мог бы жить десктопный интерфейс, становятся недоступны по санкционным причинам

По каким таким санкционным причинам вам не доступен выложенный в открытый доступ под лицензией LGPL код?

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

Но, например, на тех же мобилках LGPL бесполезна - вам придётся заворачивать QT в один пакет вместе с приложением и у юзера не будет возможности заменить библиотеку, как того требует лицензия. Значат, вы либо раскрываете все исходники своего приложения, и в этом смысле нет отличий от GPL. Либо покупаете коммерческую лицензию, что в текущих условиях из РФ сделать не получится.

Причем тут мобилки, если речь в посте про десктопный интерфейс?

Ядро на плюсах, поверх него работают несколько UI: десктопный интерфейс, веб и мобильное приложение

Еще раз, для десктопного использования Qt не попадает ни под какие лицензионные ограничения. Фраза в тексте не верна и ваодит в заблуждение читателя.

для десктопного использования Qt не попадает ни под какие лицензионные ограничения

Серьёзно?

Абсолютно. Лицензия LGPL не запрещает даже коммерческое использование. Или вы думаете, что все российские линуксы нарушают лицензию Qt при использовании?

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

Почему? В смысле, с ним не больше боли, чем в самом тс.

P.S. ну понятное дело, что в идеале any должен значить unknown, а реальный any должен называться untyped/typehole. Но это отдельный разговор, т.к. на уровне самого кодгена несложно заменить any на unknown.

А зачем в целом пытаться решать проблему биндинга с js, если есть dart с flutter, у которого есть возможность вызывать c++ код из коробки и делать единый кросс платформенный ui?

Так и у JS есть такая возможность на ноде. А если очень хочется то и на фронте с WebAssembly.

И люди ещё говорят, что ИИ неэффективный и делает не пойми что

Можно взять gpuui который использует редактор zed, писать просто, интерфейсы получаются очень быстрыми

есть фреймворк nativescript. Теперь есть компилятор TSNative. Мне интересно, а насколько проще будет работать с TSNative? Насколько это проще чем использовать wasm/ffi или организовать RPC? Будет ли дружить AOT со сложными типами typescript и как влияет на дебагинг?

Респект за инженерное безумие конечно, но бизнес-обоснование звучит как "мы решили сэкономить на спичках, купив завод по производству серы"))

мы решили сэкономить на спичках, купив завод по производству серы

организовав поставки прямо в инженерный ад.

Вы пока не думали заменять макро биндинги на рефлексию ? И что у вас с поддержкой С++ модулей?

Есть же всякие Flutter и прочие кроссплатформенные OpenSource UI фреймворки...

Bun:jsc достаточно.

Ну это прикольно. Особенно круто будет, если вы до чуть более юзабельного состояния осилите это допилить.

enum как runtime-объекты

Без вот этого будет крайне не удобно, например, ну и т.п.

Any в помойку.

Ещё вопрос — что с кросс-платформенностью? Это только для винды? Для какой версии?

Отдельно у меня вопрос к тем кто спрашивает "зачем" — сколько из вас вообще реально пробовали V8 в свои программы встроить? Понятно, что можно это сделать, непонятно чем хуже иметь альтернативу в виде того что предлагают авторы из статьи.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Информация

Сайт
myoffice.ru
Дата регистрации
Дата основания
2013
Численность
1 001–5 000 человек
Местоположение
Россия
Представитель
vvanomad