Отчитываюсь о проделанной работе. Мы завершили Milestone 2. Теперь на Nitra можно создавать расширяемые парсеры и производить связывание имен (простую типизацию не завязанную на вывод типов) для языков общего назначения и DSL-ей.
Все это не означает, что работа завершена. Нужно еще многое сделать. Но уже можно начинать делать какие-то свои языки и DSL-и.
В качестве подопытного языка мы использовали C#. Он был выбран как один из наиболее сложных из современных мэйнстрим-языков и из-за того, что у него есть полноценная спецификация. Еще одной предпосылкой являлось то, что я хочу сделать расширяемую версию C#. На новой подсистеме связывания сделана типизация C# в плоть до тел методов. При этом результат получился очень компактным, легким в понимании и поддержке (после освоения наших DSL-ей), и очень легко расширяемым. Что реализация Nemerle, что Roslyn на ее фоне выглядят переусложненными монстрами и при этом поддерживают очень скудную расширяемость. Нитровский вариант на против может легко расширяться и при этом на порядок проще в поддержке.
В тестах, у нас уже есть C# с JSON-ом в качестве расширения. В этом примере C#-выражения внедряется JSON-выражения, которые в свою очередь, может содержать C#-выражения (рекурсивно). Причем расширения добавляются, как и в Nemerle, директивой usung.
Если для языка имеется код связывания, то для него можно генерировать плагин к ReSharper-у, который будет предоставлять базовые сервисы IDE. Потенциально можно создать генератор для любой IDE (включая VS без ReSharper-а). Просто сделать расширение для ReSharper-а было проще.
Подсистем генерации кода и бэкэндов пока нет, но код можно генерировать и вручную. Символы получаемые нашей подсистемой связывания можно обрабатывать из любого дотнет-кода (на C#, Nemerle или чем угодно).
В ближайшее время я сделаю статью, в которой расскажу о подсистеме связывания и прочих возможностях появившихся в Nitra за последний год, а так же постараюсь сделать скринкасты.
ЗЫ
Я подправил стартовую страницу проекта. Просьба зайти на нее и оценить насколько она понятная для не посвященных в детали проекта. Приветствуется любая конструктивная критика.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
А можете выложить новый билд?
Здесь http://nemerle.org/nitra-builds/ все еще старый.
VD>Если для языка имеется код связывания, то для него можно генерировать плагин к ReSharper-у, который будет предоставлять базовые сервисы IDE. Потенциально можно создать генератор для любой IDE (включая VS без ReSharper-а). Просто сделать расширение для ReSharper-а было проще.
Значит ли это, что для студии без решарпера не будет поддержки даже в том объеме в каком она была по итогам MS1? (подсветка синтаксиса, фолдинг, проверка синтаксиса?) А есть ли в планах?
Зэто, что для студии без решарпера не будет поддержки даже в том объеме в каком она была по итогам MS1? (подсветка синтаксиса, фолдинг, проверка синтаксиса?)
Да. На сегодня генеринуются только плагины к Решарперу.
_> А есть ли в план
Планы есть, но они не самые приоритетные.
В принципе мы все делаем так, чтобы не зависить от реализаций, так что сделать интеграцию для чистой Студии можно. Но этотопределенный объем работ. В Студии значительно более низкоуровневые интерфейсы.
У нас же еще очень много чего надо сделать.
Возможно студийным расширением займется кто–то извне.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Я подправил стартовую страницу проекта. Просьба зайти на нее и оценить насколько она понятная для не посвященных в детали проекта. Приветствуется любая конструктивная критика.
Для непосвященных самое лучшее увидеть пару строк кода C# со встроенным джейсоном. И ссылку на туториал, как это сделать.
Скриншот тоже лучше сделать не с демонстрацией максимума возможностей, а с чистым, понятным и красивым куском понятного непосвященному кода. Например грамматика калькулятора.
P.S. Молодцы, расширяемый C# это просто супер.
P.P.S. Ссылку на гитаб надо поместить куда-то в заметное место.
Такой вопрос. У нас тут стоит задача сделать нормальный дизайнер/редактор на базе XAML для UI-фреймворка. В планах так же сделать трансляцию XAML в шарповый код. Соответственно, по всей видимости, нужна таки нормальная поддержка AST и восстановления после ошибок, чтобы отлавливать вещи типа предполагаемого DataContext-а в конкретном элементе. Насколько Nitra сейчас готова к созданию таких инструментов на её базе?
Здравствуйте, kekekeks, Вы писали:
K>Такой вопрос. У нас тут стоит задача сделать нормальный дизайнер/редактор на базе XAML для UI-фреймворка. В планах так же сделать трансляцию XAML в шарповый код. Соответственно, по всей видимости, нужна таки нормальная поддержка AST и восстановления после ошибок, чтобы отлавливать вещи типа предполагаемого DataContext-а в конкретном элементе. Насколько Nitra сейчас готова к созданию таких инструментов на её базе?
Вполне пригоден. Есть некоторые вопросы с производительностью редактора на больших файлах (выкинули старые оптимизации из-за их глючности, а новые не написали еще), но это мы со временем починим.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, _NN_, Вы писали:
_NN>Хотелось бы видеть эти анонсы также в блоге: http://blog.jetbrains.com/blog/tag/nitra/ _NN>Не все знают русский, а многим интересен проект.
Все будет, со временем.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Ziaw, Вы писали:
Z>Для непосвященных самое лучшее увидеть пару строк кода C# со встроенным джейсоном. И ссылку на туториал, как это сделать.
Z>Скриншот тоже лучше сделать не с демонстрацией максимума возможностей, а с чистым, понятным и красивым куском понятного непосвященному кода. Например грамматика калькулятора.
Легко!
И зачем в каком-то дохлом калькуляторе, когда можно прямо в шарповской грамматике?
Я постараюсь показать пример расширения Шарпа Джейсоном на презентации и описать это в статье.
Z>P.S. Молодцы, расширяемый C# это просто супер.
Спасибо! Но чтобы это слало полноценным решением нужно еще не мало сделать: создать движек типизации для выражений (с выводом типов), создать генераторы кода и/или бэкэд для этмита бинарных сборок.
Z>P.P.S. Ссылку на гитаб надо поместить куда-то в заметное место.
Ну, вот скажи куда (после чего или перед чем).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, DarthSidius, Вы писали:
DS>А я бы увидев в подписи VladD2 "Вышел Nemerle 2.0 и интеграция с Visual Studio" просто был невороятно доволен. Даже бухнул бы недюже.
Будет и Nemerle 2.0, и расширяемый C#. Теперь мы это можем легко себе позволить. Все же разница между C# и Nemerle в основном лежит внутри методов (на уровне выражений).
Вопрос в том чтобы у нас хватило на все времени и кредита доверия. Мы же все таки проект исследовательский.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
> Не только РСДН... Из общения и выдаваемой информации создается впечатление, что разработчики варятся строго в двух средах:... — РСДН. Все, что отвечается или выкладывается про Нитру, выкладывается только на РСДН
Я предлагаю тебе, да и любому другому человеку, догадаться с одного раза, написал ты хоть слово про то, что работа над Milestone 2 завершена, в официальный твиттер Нитры. Всего-то два месяца с отчета на РСДН прошло.