Введение

DotGNU — устаревшая часть проекта GNU, запущенная в январе 2001 года и нацеленная на создание свободно распространяемой альтернативы платформе .NET Framework от Microsoft. Проект DotGNU поддерживался Фондом свободного программного обеспечения. Среди других целей проекта — улучшенная поддержка не-Windows платформ и расширение поддержки процессоров. Главной целью кодовой базы DotGNU было создание библиотек классов, полностью соответствующих спецификации общего языка (CLS).

Портативный.NET

Портативный DotGNU Portable. NET, реализация ECMA 335 Common Language Infrastructure (CLI), включает программное обеспечение для компиляции и запуска приложений Visual Basic NET, C# и C, использующих библиотеки базовых классов .NET, XML и Windows Forms. Portable. NET заявляет о поддержке различных архитектур наборов команд, включая x86, PPC, ARM и SPARC.

DGEE

DotGNU Execution Environment (DGEE) - это сервер веб-сервисов.

ЛибДЖИТ

libJIT — это библиотека JIT-компиляции для разработки продвинутых систем JIT-компиляции в реализациях виртуальных машин, динамических языков программирования и скриптовых языков. Она реализует промежуточное представление, основанное на трехадресном коде, в котором переменные хранятся в форме статического одиночного присваивания. libJIT также находит применение в других проектах с открытым исходным кодом, включая GNU Emacs ILDJIT и HornetsEye.

Архитектура рамок

Портативная библиотека классов .NET предоставляет средства для разработки приложений. Она написана преимущественно на C#, но благодаря спецификации Common Language Specification (CLS) может использоваться любым языком .NET. Как и .NET, библиотека классов структурирована в пространства имен и сборки. Она включает в себя дополнительные пространства имен верхнего уровня, такие как Accessibility и DotGNU. В процессе типичной работы компилятор Portable .NET генерирует образ, соответствующий спецификации Common Language Specification (CLS), как описано в главе 6 стандарта ECMA 335, а среда выполнения Portable .NET загружает этот образ и запускает его.

Свободные программы

DotGNU отмечает, что является свободным программным обеспечением, и ставит своей целью обеспечить минимизацию зависимости всех аспектов DotGNU от проприетарных компонентов, таких как обращения к коду графического интерфейса Microsoft Windows. DotGNU был одним из проектов свободного программного обеспечения высокого приоритета с 2007 по 2008 год.

Патенты DotGNU и Microsoft

Реализация DotGNU тех компонентов стека .NET, которые не были представлены в ECMA для стандартизации, на протяжении большей части существования проекта являлась причиной опасений относительно нарушения патентных прав. В частности, обсуждалось, может ли Microsoft уничтожить проект DotGNU посредством патентных исков. Базовые технологии, представленные в ECMA, могут не вызывать проблем. Основные опасения связаны с технологиями, разработанными Microsoft на основе .NET Framework, такими как ASP.NET, ADO.NET и Windows Forms (см. Нестандартные пространства имен), то есть с частями, составляющими стек совместимости DotGNU с Windows. Эти технологии в настоящее время не полностью реализованы в DotGNU и не требуются для разработки приложений DotGNU. В 2009 году Microsoft выпустила .NET Micro Framework под лицензией Apache, версия 2.0, которая включает в себя предоставление патентных прав. Однако .NET Micro Framework является повторной реализацией CLR и ограниченным подмножеством базовых библиотек классов, предназначенным для использования на встраиваемых устройствах. Кроме того, патентное соглашение в лицензии Apache защищало бы только участников и пользователей .NET Micro Framework, а не пользователей и разработчиков альтернативных реализаций, таких как DotGNU или Mono. В 2014 году Microsoft выпустила Roslyn, официальный компилятор Microsoft C# нового поколения, под лицензией Apache. Позднее в том же году Microsoft объявила о "перезапуске" официального .NET Framework. Фреймворк будет основан на .NET Core, включая официальную среду выполнения и стандартные библиотеки, выпущенные под лицензией MIT, а также патентное соглашение, которое явно защищает получателей от патентов Microsoft, касающихся .NET Core.