Size: a a a

Compiler Development

2020 March 10

M

MaxGraey in Compiler Development
Стандартная библиотека там совершенно своя. Wasm ничего не предоставляет, в нем нету ни строк ни массивов, а из мат функций только sqrt, floor, ceil, nearest, сложение, деление и умножение. Все!
источник

M

MaxGraey in Compiler Development
wasm это просто виртуальная ISA
источник

АВ

Александр Вольнов in Compiler Development
MaxGraey
Это отдельный единственный модуль да. Просто он генериться динамически исходя из информации полученной от интерпретаптора. Такой себе PGO
У меня немного по другой схеме язык будет работать. Модуль с кодом на моём языке содержит дерево выражений. Пользователь открывает модуль и произвольно вычисляет одно или несколько из них, причём скорее всего только один раз. Если в модуле, к примеру, 1000 выражений, а пользователя интересует только одно, не нужно оптимизировать их все при загрузке модуля. Нужно оптимизировать только одно из них, причём сразу по требованию, потому что оно считается только один раз. Да и вообще пользователь не хочет ждать.
Интерпретатор обладает достаточной информацией ещё перед вычислением выражения о том, требует ли оно оптимизации. Но оптимизировать надо только те выражения, которые запросит пользователь, о чём интерпретатор заранее знать не может.
источник

А

Андрей in Compiler Development
Александр Вольнов
У меня немного по другой схеме язык будет работать. Модуль с кодом на моём языке содержит дерево выражений. Пользователь открывает модуль и произвольно вычисляет одно или несколько из них, причём скорее всего только один раз. Если в модуле, к примеру, 1000 выражений, а пользователя интересует только одно, не нужно оптимизировать их все при загрузке модуля. Нужно оптимизировать только одно из них, причём сразу по требованию, потому что оно считается только один раз. Да и вообще пользователь не хочет ждать.
Интерпретатор обладает достаточной информацией ещё перед вычислением выражения о том, требует ли оно оптимизации. Но оптимизировать надо только те выражения, которые запросит пользователь, о чём интерпретатор заранее знать не может.
держи в курсе
источник

МБ

Михаил Бахтерев in Compiler Development
Вопрос: какое бы вы ожидали поведение от такого вот кода let a = b; b = a + 1 in a + b при энергичном исполнении?
источник

p

polunin.ai in Compiler Development
in a + b это как?
источник

AK

Andrei Kurosh in Compiler Development
Михаил Бахтерев
Вопрос: какое бы вы ожидали поведение от такого вот кода let a = b; b = a + 1 in a + b при энергичном исполнении?
int a = 0
int b = 0
a = b // 0
b = a + 1 // 1
return a + b // 1
источник

Ɖ

Ɖrēw in Compiler Development
Это типо let ... in?
источник

МБ

Михаил Бахтерев in Compiler Development
Ɖrēw
Это типо let ... in?
Ну, да.
источник

M

MaxGraey in Compiler Development
Михаил Бахтерев
Вопрос: какое бы вы ожидали поведение от такого вот кода let a = b; b = a + 1 in a + b при энергичном исполнении?
fn (a = b, b = a + 1) ->  a + b
источник

МБ

Михаил Бахтерев in Compiler Development
MaxGraey
fn (a = b, b = a + 1) ->  a + b
Дефолтные аргументы?
источник

M

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

E

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

C

Constantine in Compiler Development
👍 классный профессор, много всякого интересного пишет
источник

M

MaxGraey in Compiler Development
На самом деле большинство техник (fast paths) там не ново и применялись в том же RapidJSON и до этого тоже, просто это все собрано в одном репозитарии
источник

E

EgorBo in Compiler Development
так у него все работы по сути основаны на других
источник

M

MaxGraey in Compiler Development
ну и strtod никуда не делся как fallback
источник
2020 March 11

KR

K R in Compiler Development
Михаил Бахтерев
Вопрос: какое бы вы ожидали поведение от такого вот кода let a = b; b = a + 1 in a + b при энергичном исполнении?
Безумно обманчивое 😞. Первое впечатление

let a = b in let b = a + 1 in a + b

Но второе -

let (a, b) = (b, a + 1) in a + b

И выбрать что-то одно чувствами/интуицией не могу. Крайне неудачная конструкция.
источник

DP

Dmitry Ponyatov in Compiler Development
Александр Вольнов
У меня немного по другой схеме язык будет работать. Модуль с кодом на моём языке содержит дерево выражений. Пользователь открывает модуль и произвольно вычисляет одно или несколько из них, причём скорее всего только один раз. Если в модуле, к примеру, 1000 выражений, а пользователя интересует только одно, не нужно оптимизировать их все при загрузке модуля. Нужно оптимизировать только одно из них, причём сразу по требованию, потому что оно считается только один раз. Да и вообще пользователь не хочет ждать.
Интерпретатор обладает достаточной информацией ещё перед вычислением выражения о том, требует ли оно оптимизации. Но оптимизировать надо только те выражения, которые запросит пользователь, о чём интерпретатор заранее знать не может.
интерактивная система с динамической компиляцией?
источник

МБ

Михаил Бахтерев in Compiler Development
Очередной вопрос к опытным участникам: а насколько реально проследить происхождение каждой инструкции в результате компиляции прямо до исходного текста? Имеется в виду, чтобы предоставить программисту комментарии в ассемблерном коде, что вот эти инструкции сгенерированы конкретно из такого-то выражения. Подразумевается, что ассемблер получен после нескольких проходов оптимизатора и планирования инструкций.

При этом, наверное, не важно, в каком формате эта информация собрана. Допустим, в некотором инструменте будет возможность подвести к инструкции курсор, и этот инструмент покажет связанный блок инструкций и выражение в исходном тексте, к которому они относятся.

Какая-то такая фантазия. Это возможно? И дополнительный вопрос: не знает ли кто-нибудь какую-нибудь внятную реализацию Source Maps? А то в ClojureScript трындец.
источник