Nemerle 2.0
Nemerle 2.0 - это язык общего назначения для платформы Microsoft .Net/Linux Mono. Поддерживаемые парадигмы:
- Объектно ориентированное программирование (ООП)
- Функциональное программирование (ФП)
- Мета-программирование (МП) - макросы времени компиляции.
- Языко-ориентировнное программирование (ЯОП).
- Компонентно-ориентированное программирование (КОП).
Описание проекта Nemerle 2.0
Nemerle 2.0 - это вторая версия языка программирования Nemerle, разрабатываемая "с нуля" с использованием предыдущих наработок.
Вторая версия создаётся преимущественно силами русскоязычного сообщества http://rsdn.ru, примкнуть к которому может любой желающий.
Мы охотно рассмотрим предложения о спонсорской помощи, том или ином виде коммерциализации проекта или помощи в использовании его в коммерческих проектах.
Отличия от Nemerle 1.0
- Снятие ограничений на расширение синтаксиса. Nemerle 2.0 будет позволять почти безгранично расширять синтаксис. Сам компилятор Nemerle 2.0 будет создан методом самораскрутки (bootstrapping-а) с использованием новой версии макросов.
- Макросы будут работать с единым AST. В большинстве случаев, больше не будет потребности обращаться к низкоуровневому типизированному AST - типы будут доступны прямо из базового AST.
- Упростится разработка внутренних DSL-ей.
- Появится возможность создания внешних DSL-ей. По сути, Nemerle 2.0 будет фрэймворком для разработки новых языков. В качестве внешних DSL-ей смогут выступать не только простейшие HTML/XML, но даже полноценные языки программирования вроде VB, Delphi или C#. При этом для внешних DSL-ей будет обеспечена автоматическая поддержка IDE (подсветка, подсказки и т.п.).
- Поддержка компиляции для любых версий (начиная с .Net 2.0) и рантаймов .Net/Mono. Так, среди прочего, будет поддерживаться .NET Framework 2.0, .NET Framework 4.0, Silverlight, .NET Compact Framework.
- Возможность замены модулей чтения метаданных и генерации MSIL-а (сменные back-end-ы).
- Ускорение компиляции. Компилятор станет многопоточным. Кроме того мы постараемся оптимизировать алгоритм вывода типов. Возможно, удастся реализовать инкрементальную компиляцию с использованием данных получаемых в процессе работы модуля интеграции с IDE.
- Улучшится поддержка IDE.
Цели второй версии
- Улучшение качества реализации компилятора.
- Сделать бóльшую часть структур компилятора неизменяемыми или, по крайней мере, потокобезопасными.
- Реализовать новую систему синтаксических макросов на основе PEG и разработанного нами улучшенного алгоритма генерации расширяемых парсеров на основе PEG-грамматики.
- Изначальное проектирование компилятора с учетом того, что он будет использоваться и при интеграции с IDE (VisualStudio).
- Сменные генераторы кода (вплоть до использования не .net-бэкэндов вроде LLVM).
- Модульность компилятора с четким разделением интерфейса отдельных модулей.