Size: a a a

Compiler Development

2019 October 09

VK

Vladimir Kazanov in Compiler Development
Трех
источник

EO

Eugene Obrezkov in Compiler Development
Vladimir Kazanov
У  jit свои проблемы: плохая предсказуемость, куча работы параллельно с программой делается, память опять же потребляет.

Обычно есть патологические программы, где он вообще тормозит...
Предсказать что либо AoT вообще сложно в жс
источник

AK

Andrei Kurosh in Compiler Development
Eugene Obrezkov
Чем код генерируемый движками типа V8. Я ж рассматриваю в контексте quickjs.

Просто в соседнем чате человек начал сильно радоваться, что он через quickjs сможет свое express приложение скомпилировать. Вот я и пытаюсь разобраться как quickjs компилирует (не интерпретирует) жс. Фиг с ним уже, с тем экспрессом и целесообразностью его компилировать)
имхо если они говорят что поддерживают полноценный js, то компилировать его невозможно, только интерпретировать, хотя бы из-за наличия eval
источник

AT

Alexander Tchitchigin in Compiler Development
Eugene Obrezkov
Чем код генерируемый движками типа V8. Я ж рассматриваю в контексте quickjs.

Просто в соседнем чате человек начал сильно радоваться, что он через quickjs сможет свое express приложение скомпилировать. Вот я и пытаюсь разобраться как quickjs компилирует (не интерпретирует) жс. Фиг с ним уже, с тем экспрессом и целесообразностью его компилировать)
Зависит от самого кода на JS. Если он весь напрочь мегаморфный, то V8 тоже не сможет ничего оптимизировать и работать будут одинаково. 😊
источник

EO

Eugene Obrezkov in Compiler Development
Это все не отвечает на вопрос, есть ли компиляция)
источник

EO

Eugene Obrezkov in Compiler Development
Andrei Kurosh
имхо если они говорят что поддерживают полноценный js, то компилировать его невозможно, только интерпретировать, хотя бы из-за наличия eval
Вот ближе к теме ответ
источник

AT

Alexander Tchitchigin in Compiler Development
Andrei Kurosh
имхо если они говорят что поддерживают полноценный js, то компилировать его невозможно, только интерпретировать, хотя бы из-за наличия eval
Можно скомпилировать всё остальное и прилинковать интерпретатор для eval. В Common Lisp так уже лет 30 или больше делают вполне успешно.
источник

VK

Vladimir Kazanov in Compiler Development
Andrei Kurosh
имхо если они говорят что поддерживают полноценный js, то компилировать его невозможно, только интерпретировать, хотя бы из-за наличия eval
А вот и нет :-P
источник

VK

Vladimir Kazanov in Compiler Development
Смотрите ответ Александра:-)
источник

EO

Eugene Obrezkov in Compiler Development
Alexander Tchitchigin
Зависит от самого кода на JS. Если он весь напрочь мегаморфный, то V8 тоже не сможет ничего оптимизировать и работать будут одинаково. 😊
Потому что “зависит от кода” так себе аргумент. Это из разряда мой скомпилируется, а коллеги нет.
источник

AT

Alexander Tchitchigin in Compiler Development
Eugene Obrezkov
Потому что “зависит от кода” так себе аргумент. Это из разряда мой скомпилируется, а коллеги нет.
Вы же про перформанс говорили. Перформанс всегда от кода зависит. 🤷‍♀
источник

AK

Andrei Kurosh in Compiler Development
Alexander Tchitchigin
Можно скомпилировать всё остальное и прилинковать интерпретатор для eval. В Common Lisp так уже лет 30 или больше делают вполне успешно.
окей, уточню - я имел в виду, что невозможно сгенерировать standalone исполняемый файл, который так или иначе не требовал бы наличия всего компилятора
источник

EO

Eugene Obrezkov in Compiler Development
Alexander Tchitchigin
Вы же про перформанс говорили. Перформанс всегда от кода зависит. 🤷‍♀
Давайте отмотаем назад немного, с чего началось обсуждение) перформанс да, от кода зависит

Я все ещё держу в голове вопрос на который не увидел (не понял) ответ. Можно ли AoT скомпилировать жс?
источник

AT

Alexander Tchitchigin in Compiler Development
Eugene Obrezkov
Это все не отвечает на вопрос, есть ли компиляция)
Для ответа на этот вопрос нужно смотреть исходники quickjs. Кто посмотрел уже отписался, что компилирует в байт-код.
источник

EO

Eugene Obrezkov in Compiler Development
Alexander Tchitchigin
Для ответа на этот вопрос нужно смотреть исходники quickjs. Кто посмотрел уже отписался, что компилирует в байт-код.
То предположение было, поэтому тема все ещё жива
источник

EO

Eugene Obrezkov in Compiler Development
Eugene Obrezkov
Давайте отмотаем назад немного, с чего началось обсуждение) перформанс да, от кода зависит

Я все ещё держу в голове вопрос на который не увидел (не понял) ответ. Можно ли AoT скомпилировать жс?
Не в байт-код, который потом интерпретировать или транслировать в рантайме, а сразу в таргет
источник

AK

Andrei Kurosh in Compiler Development
Eugene Obrezkov
Давайте отмотаем назад немного, с чего началось обсуждение) перформанс да, от кода зависит

Я все ещё держу в голове вопрос на который не увидел (не понял) ответ. Можно ли AoT скомпилировать жс?
Ставлю на то, что нельзя. Ибо даже скомпилированный jit'ом код все равно содержит проверки на шейпы, при несовпадении которых движок перекомпилирует участки заново
источник

AT

Alexander Tchitchigin in Compiler Development
Eugene Obrezkov
То предположение было, поэтому тема все ещё жива
Т.е. Вы на слово не верите? Тогда придётся самостоятельно исходники изучать. 😉
источник

EO

Eugene Obrezkov in Compiler Development
Andrei Kurosh
Ставлю на то, что нельзя. Ибо даже скомпилированный jit'ом код все равно содержит проверки на шейпы, при несовпадении которых движок перекомпилирует участки заново
Да, вот об этом и речь.
источник

AK

Andrei Kurosh in Compiler Development
А написать код, который творит вакханалию с шейпами, проще простого
источник