Search
Write a publication
Pull to refresh

Comments 6

В общем-то интересная статья - относительно подробная.

Но применение оператора "if_coro_advance( )" меня просто убивает своей грязностью! Неужели никак иначе нельзя было построить обработку потоков данных из генераторов без такого топорного ветвления! Вон, в том же C# всё обходится без таких диких конструкций (но да - я понимаю - это управляемый ЯП, но там всё-таки JIT фронтэнд компилятор из IL в native-код, а не просто виртуальный движок; хотя промежуточный язык IL очень хорош).

И так и не понял тему про деинициализацию - рассмотрите пример с генератором данных из файла (потока-ресурса), где файл открывается внутри генератора. Как происходит деинициализация (и закрытие ресурса файла) при прерывании генератора, и как происходит само прерывание!

Были идеи вместо такого ветвления сделать получение результата через какой-нибудь optional. Но я отверг такой способ, т. к. он бы требовал создания зависимости компилятора от стандартной библиотеки, что я считаю неправильным.
При этом всё ещё можно написать библиотечную функцию-обёртку, которая бы основывалась на операторе if_coro_advance и заворачивала бы результат в optional. Таким образом можно считать этот оператор строительным блоком для реализации более высокоуровневой конструкции.

Помню ваш проект и первую статью о нём. Рад, что затея жива. Наметились ли какие-нибудь применения языка? Или продолжаете чисто для собственного удовольствия и прокачки навыков?

В основном всё делается ради собственного развлечения. При этом язык всё же уже достаточно продвинутый, чтобы что-то на нём можно было писать. Но не хватает сопутствующей инфраструктуры (поддержка в IDE, библиотеки) и сообщества.

А были какие-то планы по туллингу? По тем же плагинам для IDE, по отладчику (в рамках IDE, разумеется), по профиляторам и прочему? Полагаю, что какой-то туллинг есть у llvm, но, возможно, нужно его ещё как-то прикрутить к языку

Отладка работает - компилятор генерирует отладочную информацию.
Остального нету, в виду сложности разработки. Для полноценной поддержке IDE нужны language сервер и какая-то интеграция с системой сборки. Всё это сделать весьма трудоёмко.

Sign up to leave a comment.

Articles