В Nemerle есть фоновый вывод типов и анализ ошибок при наборе кода в редакторе. А не планируется ли фоновый codegen?
То есть как только в теле метода нет ошибок, для него в фоновом потоке генерируется IL и сохраняется в каком-нибудь кеше. При необходимости — инвалидируется. Как только закончили набирать код — у нас уже готова сборка.
Здравствуйте, nikov, Вы писали:
N>В Nemerle есть фоновый вывод типов и анализ ошибок при наборе кода в редакторе. А не планируется ли фоновый codegen?
Я думал об этом. Сделать это можно. Но на сегодня качество кода компилятора слишком низкое для подобных доработок. Я думал сделать это в 2.0. Не знаю только хватит ли сил.
N>То есть как только в теле метода нет ошибок, для него в фоновом потоке генерируется IL и сохраняется в каком-нибудь кеше. При необходимости — инвалидируется. Как только закончили набирать код — у нас уже готова сборка.
В приципе сейчас почти так и делается. Только после стадии T3 дальнейшая обработка останавливается.
Но есть и проблемы. Основная — компиляция все же живет немного иначе. У нее нет проблем со временем. Так некоторые макросы в дизайн-тайме ведут себя иначе. Они не генерят код, а только лишь делают проверки. Если это не далеть, то IDE начнет тормозить.
Так что потенциально — это возможно, но реально ли сказать не берусь.
Вот во время отладки наверно это можно было бы сделать. Только надо научиться менять тела методов в рантайме.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, hardcase, Вы писали:
VD>>Я думал об этом. Сделать это можно.
H>А вообще было бы круто: нажал F5 и софта мигом запустилась.
Вот это ваше "F5" циганьщиной отдает (с))
Круто было бы тупо жить в рантайме... поменял код и он уже работает. Но это просто реализовать только для скриптов (с вытекающими последствиями для производительности и надежности).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Круто было бы тупо жить в рантайме... поменял код и он уже работает. Но это просто реализовать только для скриптов (с вытекающими последствиями для производительности и надежности).
"Тупо жить в рантайме" — это REPL называется
Это реализуемо для интерпретируемых языков. Производительность — да, но надежность тут не причем. Интерпретируемость сама по себе никаких ограничений на язык не накладывает, а строго наоборот. Вот если бы у Немерле был интерпретатор, то при разработке его и можно было бы использовать, чтобы "тупо жить в рантайме", а на продакшин — уже скомпилированный код.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, hardcase, Вы писали:
VD>>>Я думал об этом. Сделать это можно.
H>>А вообще было бы круто: нажал F5 и софта мигом запустилась.
VD>Вот это ваше "F5" циганьщиной отдает (с))
VD>Круто было бы тупо жить в рантайме... поменял код и он уже работает. Но это просто реализовать только для скриптов (с вытекающими последствиями для производительности и надежности).
А если каждый файл компилить в свой dll? Соответсвенно при изменении нужно всего ничего сделать.
Здравствуйте, dotneter, Вы писали:
D>А если каждый файл компилить в свой dll? Соответсвенно при изменении нужно всего ничего сделать.
Все не так просто как может показаться с первого взгляда.
При изменении АСТ верхнего уровня придется пересобирать все эти сборки. Делать суровый инкрементальный режим очень не просто.
Плюс будут проблемы с временем загрузки и областями видимости.
Потом еще раз повторюсь, некоторые макры делают большой объем работы. Например, макрос PerGrammar может, на больших грамматиках, работать по 30 секунд. Для работы в режиме IDE это не приемлемо.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.