Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ENHANCEMENT] Добавить JavaScript в качестве языка для скриптинга #397

Open
movpushmov opened this issue Dec 2, 2024 · 11 comments
Labels
enhancement New feature or request

Comments

@movpushmov
Copy link

Связан ли ваш запрос на добавление функции с проблемой? Пожалуйста, опишите.
нет

Опишите желаемое решение
Можно использовать V8 с libuv и встроенной поддержкой TypeScript для комфортной разработке на JavaScript, это расширит круг людей, которые могут создавать контент

Так же судя по тестам JS намного быстрее

Опишите альтернативы, которые вы рассматривали
можно было бы попытаться использовать node api или bun, но они node тяжёлый, а bun не стабильный

Дополнительный контекст

@movpushmov movpushmov added the enhancement New feature or request label Dec 2, 2024
@0xbkaker
Copy link

0xbkaker commented Dec 2, 2024

И питона питон

@MihailRis
Copy link
Owner

Половина всего кода движка - интеграция с LuaJIT с соответствующими оптимизациями, обеспечивающими максимальную производительность при правильном использовании. В представленном по ссылке сравнении я не вижу никаких упоминаний LuaJIT, что используется в движке и демонстрирует крайне высокую производительность, в сравнении с обычным Lua. Так что пока не вижу убедительных причин рассматривать предложенный вариант.

@MihailRis
Copy link
Owner

MihailRis commented Dec 2, 2024

Просто напомню, чистый Lua, без JIT, в проекте тоже не рассматривается, как и не поддерживается на уровне API проекта.

@movpushmov
Copy link
Author

movpushmov commented Dec 2, 2024

Половина всего кода движка - интеграция с LuaJIT с соответствующими оптимизациями, обеспечивающими максимальную производительность при правильном использовании.

не понял смысла этого тейка) работа разных машин исполнения едва ли будет аффектить друг друга

стоит упомянуть, что я не предлагаю вырезать и сжечь всю часть с луа, просто задался вопросом, могу ли я попытаться интегрировать JS)

Так что пока не вижу убедительных причин рассматривать предложенный вариант.

не разобран тейк с популярностью JS'a на рынке, что явно поспособствует притоку аудитории

Ну, если нет, то ок + можешь закрывать)

@movpushmov
Copy link
Author

Попытка №2

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

image

источник

полностью не читал, только циферки глянул, поэтому мог неправильно интерпретировать информацию

@MihailRis
Copy link
Owner

MihailRis commented Dec 2, 2024

Это к тому, что интеграцию каждой существующей скриптовой функции нужно будет продублировать для интерпретатора JS + введение ряда дополнительных уровней абстракции для скриптинга, что только в идеальном мире не приведёт к ухудшению производительности в обоих языках.
А в последнем скриншоте Попытка №2 почему-то приведена Java, которая, как-бы не JavaScript, а другой язык, причём старой версии, что совсем не является скриптовым ЯП. Node JS же является браузерным движком.

@movpushmov
Copy link
Author

Это к тому, что интеграцию каждой существующей скриптовой функции нужно будет продублировать для интерпретатора JS + введение ряда дополнительных уровней абстракции для скриптинга, что только в идеальном мире не приведёт к ухудшению производительности в обоих языках.

тут не уверен, что имею достаточную экспертизу, чтобы поспорить с тейком или поддержать его

насколько я слышал от знающих, можно наколдовать с LLVM и будет сильно проще подключить любой из огромного множества языков (вроде как)

А в последнем скриншоте Попытка №2 почему-то приведена Java, которая, как-бы не JavaScript, а другой язык, причём старой версии, что совсем не является скриптовым ЯП.

а node.js 16.4 это не JS?) причём нода намного тяжелее, чем чистый V8

@movpushmov
Copy link
Author

ну типо можем сделать в отдельной ветке и проверить, насколько это будет хуже)

если при норм перфе у этого есть шансы заехать в основную репу

если нет, то как бы и нет смысла как будто обсуждать

@MihailRis
Copy link
Owner

В любом случае, почему бы и не попробовать. Я и сам постоянно пробую различные оптимизации, так как производительность - это один из основных приоритетов проекта.
Просто не нужно забывать про то, что проект уже требует обеспечения совместимости с прошлыми версиями, а лишнее легаси замедляет движение разработку проекта.

@movpushmov
Copy link
Author

В любом случае, почему бы и не попробовать. Я и сам постоянно пробую различные оптимизации, так как производительность - это один из основных приоритетов проекта. Просто не нужно забывать про то, что проект уже требует обеспечения совместимости с прошлыми версиями, а лишнее легаси замедляет движение разработку проекта.

тогда как будет время и силы я попытаюсь занести ПР, а там глянем)

есть конкретные методички, как замерять производительность?

@MihailRis
Copy link
Owner

Сейчас из средств замера производительности есть лишь класс timeutil::ScopeLogTimer - хедер util/timeutil.hpp.

На ближайшие обновления я планирую ввести в движок Unit-тесты, имеющие полный доступ к API движка, которые можно выполнять в headless режиме GitHub Actions, что буду реализовывать самостоятельно.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants