Size: a a a

Compiler Development

2019 October 09

AK

Andrei Kurosh in Compiler Development
Михаил Бахтерев
Речь не о реализации, а о спецификации языка. Когда другой поток не может изменить форму переменной или объекта это существенно упрощает статический анализ и вывод типов.
эээ, а есть системы, которые позволяют менять шейп переменной и при этом там работает вывод типов с учетом многопоточности? )
источник

M

MaxGraey in Compiler Development
Михаил Бахтерев
Речь не о реализации, а о спецификации языка. Когда другой поток не может изменить форму переменной или объекта это существенно упрощает статический анализ и вывод типов.
Ну вперед, я хочу на это посмотреть, если js даже Typescript и Flow до конца не могут формализировать (не то, что вывести типы). Советую например это почитать:
https://www.kylesletten.com/2019/01/25/type-inference-in-javascript.html
источник

M

MaxGraey in Compiler Development
Михаил Бахтерев
Речь не о реализации, а о спецификации языка. Когда другой поток не может изменить форму переменной или объекта это существенно упрощает статический анализ и вывод типов.
Возьмем даже не полиморфный код, обычный const foo = JSON.parse(nestedObjOrNumOrArray). Какой тип у foo если входной аргумент приходит из вне (скажем по сети)?
источник

AK

Andrei Kurosh in Compiler Development
MaxGraey
Возьмем даже не полиморфный код, обычный const foo = JSON.parse(nestedObjOrNumOrArray). Какой тип у foo если входной аргумент приходит из вне (скажем по сети)?
any ;)
источник

МБ

Михаил Бахтерев in Compiler Development
MaxGraey
Ну вперед, я хочу на это посмотреть, если js даже Typescript и Flow до конца не могут формализировать (не то, что вывести типы). Советую например это почитать:
https://www.kylesletten.com/2019/01/25/type-inference-in-javascript.html
Повторю вопрос: а зачем до конца?
источник

M

MaxGraey in Compiler Development
Михаил Бахтерев
Повторю вопрос: а зачем до конца?
То есть ты предлагаешь частичную AOT компиляцию? И вместе с рантаймом и скомпилированным кодом тащить интерпретатор? Во первых это не эффективно хотя бы по разходу памяти. Ради чего? Код на V8 JIT всего в 1.2-2 раза мебленее аналогичного на C (не факт что такой гибрид будет работать быстрее, я более чем уверен что медленее). И вот ради этого ты предлагаешь сделать тяжеловестного франкенштейна?=)
источник

M

MaxGraey in Compiler Development
Вон даже не всегда WebAssembly может потягаться с V8 JIT. А там AOT
источник

А

Алексей in Compiler Development
Михаил Бахтерев
Речь не о реализации, а о спецификации языка. Когда другой поток не может изменить форму переменной или объекта это существенно упрощает статический анализ и вывод типов.
зато всё остальное может поменять шейп объекта, но в один поток, да
источник

МБ

Михаил Бахтерев in Compiler Development
MaxGraey
То есть ты предлагаешь частичную AOT компиляцию? И вместе с рантаймом и скомпилированным кодом тащить интерпретатор? Во первых это не эффективно хотя бы по разходу памяти. Ради чего? Код на V8 JIT всего в 1.2-2 раза мебленее аналогичного на C (не факт что такой гибрид будет работать быстрее, я более чем уверен что медленее). И вот ради этого ты предлагаешь сделать тяжеловестного франкенштейна?=)
Про аналогичный код - не очевидно, мне кажется. Если на Си писать парсер того же JSON выйдет вся та же самая динамика, не факт, что он будет быстрее.

А преимущество с системной точки зрения - это KaiOS. Можно обойтись только движком JS (HTML 5) для полноценной операционки. И она будет менее ресурсоёмкой, чем аналогичная Си-based система, типа, iOS.
источник

МБ

Михаил Бахтерев in Compiler Development
Алексей
зато всё остальное может поменять шейп объекта, но в один поток, да
Один поток можно проанализировать. Не всегда, конечно, но в гнёздах циклов, которые и требуют основной оптимизации, вполне.
источник

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in Compiler Development
источник

M

MaxGraey in Compiler Development
Михаил Бахтерев
Про аналогичный код - не очевидно, мне кажется. Если на Си писать парсер того же JSON выйдет вся та же самая динамика, не факт, что он будет быстрее.

А преимущество с системной точки зрения - это KaiOS. Можно обойтись только движком JS (HTML 5) для полноценной операционки. И она будет менее ресурсоёмкой, чем аналогичная Си-based система, типа, iOS.
На Rust есть кодогенерация, если известен тип объекта, что очень сильно ускоряет десереализацию. Собственно есть SAX и DOM способ разбора JSON. Так вот, зная предпологаемый тип можно нагенерить аксессоров для SAX заранее и из 5мб-ного JSON объекта хирургически выделить и прочитать только те поля что заданы в сигнатуре, вместо всего объекта / json-данных целиком
источник

M

MaxGraey in Compiler Development
Это на какой архитектуре там 1 инструкция выходит?
https://godbolt.org/z/_Yu4a8
источник

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in Compiler Development
на какой-то самсунговской?
источник

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in Compiler Development
(хз, читать патент надо)
источник

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in Compiler Development
так мб поэтому там и не одна?
источник

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in Compiler Development
¯\_(ツ)_/¯
источник

PS

Peter Sovietov in Compiler Development
Godbolt уже стал поддерживать DSP и ASIP процессоры? ;)
источник

M

MaxGraey in Compiler Development
Ну как я понял там про аппаратную реализацию шла речь.
источник

PS

Peter Sovietov in Compiler Development
Патент касается специализированной инструкции. В каком-то самсунговском чипе она, очевидно, присутствует.
источник