Size: a a a

Compiler Development

2020 July 04

К

Константин in Compiler Development
MaxGraey
@eX_gd Игрушечный SpiderMonkey который объясныет очень базовые приципы jit компиляции в JS движках
https://github.com/codehag/TwitchMonkey

Кстати создательница Юлия этого репозитария - контрибутор настоящего SpiderMonkey движка
Мне бы что-то более тяжелое.
У меня на это дело всего часов 30, 20 уже просрал.
источник

M

MaxGraey in Compiler Development
Константин
Мне бы что-то более тяжелое.
У меня на это дело всего часов 30, 20 уже просрал.
За 20-30 чаов ты ничего толкового не наоптимизируешь. Тем более если не знаешь где это делать и как
источник

К

Константин in Compiler Development
Ну хотя бы 40% срез.
По хорошему нужно x4

Когда фрейм вызывается 120 ms а надо 30 - x4
Причем у меня еще комп далеко выше таргетного.
Мне по идее на тротлинге x4 нужно иметь 30ms

Я понимаю, что x4 это если вообще выкинуть виртуализацию, но по этому хотя бы 40% и по памяти влезть.
источник

К

Константин in Compiler Development
MaxGraey
За 20-30 чаов ты ничего толкового не наоптимизируешь. Тем более если не знаешь где это делать и как
Мне бы это объяснить том, кто это хочет.
Бриташки же.

Другая проблема, что для интерационного оптимизатора, мне нужно рантайм сильно править.
Чтобы менять грязные методы на более чистые на лету.
источник

К

Константин in Compiler Development
MaxGraey
@eX_gd Игрушечный SpiderMonkey который объясныет очень базовые приципы jit компиляции в JS движках
https://github.com/codehag/TwitchMonkey

Кстати создательница Юлия этого репозитария - контрибутор настоящего SpiderMonkey движка
https://github.com/codehag/TwitchMonkey/blob/master/engine.js
У нас он такой и есть, только он не инкрементальный. Он фолбекается на интрепретер, если не смог скомпилировать.

Ток JIT инородного порождает новые тяжелые инструкции поверх тех, которых нету в оригинале.
Те это транспиленный байткод на лету, которые еще нужно потом оптимизить.

Конечно можно еще добавить инструкции,  будет 2 компилятора - транспиллер байткода, оптимизатор, и уже JIT  сам, из нашего оптимизнутого байткода.
Все бы хорошо, ток это зае* тестить.
источник

SG

Serge S. Gulin in Compiler Development
Добрый день, сообщество! Пишу на TypeScript и загорелся желанием делать TypeScript -> LLVM IR компилятор. Но ничего не умею из того, чтобы делать компиляторы, вот заодно попробую по-учиться. Нашёл существующие полумертвые проекты:
https://github.com/ts-llvm/ts-llvm
https://github.com/nervosnetwork/minits
https://github.com/ovr/StaticScript

Хочу контрибьютить. Прошу вашей помощи в вопросе с чего начать, если ранее ничем с таким не связывался, а хочется сфокусироваться на этой задаче. TypeScript знаю в совершентсве. LLVM не знаю вовсе, опыта в разработке компиляторов нет.

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

К

Константин in Compiler Development
Serge S. Gulin
Добрый день, сообщество! Пишу на TypeScript и загорелся желанием делать TypeScript -> LLVM IR компилятор. Но ничего не умею из того, чтобы делать компиляторы, вот заодно попробую по-учиться. Нашёл существующие полумертвые проекты:
https://github.com/ts-llvm/ts-llvm
https://github.com/nervosnetwork/minits
https://github.com/ovr/StaticScript

Хочу контрибьютить. Прошу вашей помощи в вопросе с чего начать, если ранее ничем с таким не связывался, а хочется сфокусироваться на этой задаче. TypeScript знаю в совершентсве. LLVM не знаю вовсе, опыта в разработке компиляторов нет.

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

SG

Serge S. Gulin in Compiler Development
Да, видел, понял, что он для TypeScript -> WASM, но хочется именно LLVM, чтобы в последствии можно было запускать на мобильных платформах. Конечную суперцель вижу в том, чтобы на этом инструменте можно было собрать свой Flutter, но без Dart, а на TypeScript.
источник

К

Константин in Compiler Development
WASM для этого и придумали
источник

К

Константин in Compiler Development
В большинстве случаев
источник

M

MaxGraey in Compiler Development
wasm можно запускать на мобильных платформах)
источник

M

MaxGraey in Compiler Development
источник

M

MaxGraey in Compiler Development
Потом есть wasm2c и inNative (https://github.com/innative-sdk/innative)
источник

M

MaxGraey in Compiler Development
Все вышеперечисленные проекты и канули в лету именно из-за того что выбрали неправильный стек для фронтенда и бэкенда
источник

К

Константин in Compiler Development
Другая проблема, что TS == JS, те для него нужен JS рантайм утащить будет.
Или это уже будет не TS
источник

SG

Serge S. Gulin in Compiler Development
Мне в TS нравится сам язык, совместимость с JS-инфраструктурой мне не принципиальна на самом деле
источник

M

MaxGraey in Compiler Development
Ну поэтому AS использует сабсет
источник

M

MaxGraey in Compiler Development
Serge S. Gulin
Мне в TS нравится сам язык, совместимость с JS-инфраструктурой мне не принципиальна на самом деле
И ее вы не сможете сохранить если нацелились на LLVM
источник

SG

Serge S. Gulin in Compiler Development
Да, понимаю
источник

SG

Serge S. Gulin in Compiler Development
Из мира JS мне интересно только RxJS и fp-ts с подпроектами.
источник