Русская Википедия:Dynamic Language Runtime
Шаблон:Infobox software Dynamic Language Runtime (DLR; Шаблон:Tr) от Microsoft работает поверх исполняющей среды Common Language Runtime (CLR; Шаблон:Tr) и предоставляет службы компьютерного языка для динамического языка. Эти услуги включают:
- Динамическая система типов, которая будет разделяться между всеми языками, использующими службы DLR.
- Метод динамического связывания
- Генерация динамического кода
- Хостинг API
DLR используется для реализации динамических языков в .NET Framework, включая проекты IronPython и IronRuby.
Поскольку реализации динамического языка используют общую базовую систему, им должно быть проще взаимодействовать друг с другом. Например, должна быть возможность использовать библиотеки любого динамического языка на любом другом динамическом языке. Кроме того, хостинг API позволяет взаимодействовать со статически типизированными языками интерфейса командной строки, такими как C# и Visual Basic .NET.
История
Проект Microsoft Dynamic Language Runtime был анонсирован Microsoft на Шаблон:Нп5 в 2007 году[1][2].
Microsoft выпустила бета-версию .NET DLR 0.9 в ноябре 2008 года[3] и последнюю версию 0.9 в декабре 2008 года. Версия 1.0 выпущена в апреле 2010 года. В июле 2010 года фирма Microsoft изменила лицензию DLR с Microsoft Public License на Apache License 2.0[4]. С выпуском .NET Framework 4, также в апреле 2010 года, DLR была включена в саму .NET Framework[5].
Проект DLR с открытым исходным кодом, размещённый на GitHub, имеет несколько дополнительных функций для разработчиков языка. После выпуска в июле 2010 года в течение нескольких лет деятельность по проекту велась незначительно. Это было интерпретировано разработчиком Microsoft, работавшим над IronRuby, как недостаток приверженности Microsoft к динамическим языкам в платформе .NET Framework[6][7]. Тем не менее, с 2016-2017 годов ведётся регулярная деятельность, которая привела к ряду улучшений и обновлений.
Поддерживаемые языки
В настоящее время службы DLR используются в разрабатываемой версии IronRuby, .NET-реализации языка Ruby, а также для IronPython[1].
В 2007 году Microsoft планировала использовать DLR для следующих Visual Basic 2010 (VB 10.0) и Managed JScript (ECMAScript 3.0)[8][9][10][11]. Однако по состоянию на август 2009 года Microsoft больше не планирует внедрять управляемый JScript в DLR[12]. Подобно C#, Visual Basic может получать доступ к объектам из динамических языков, построенных на DLR, таких как IronPython и IronRuby[13][14].
PowerShell 3.0, выпущенный в Windows 8, был обновлён для использования DLR[15].
IronScheme, реализация Scheme[16], планировали построить на основе DLR. От этой идеи отказались, потому что ветвь DLR, используемая проектом, рассинхронизировалась с магистралью, а также потому, что (по словам координатора проекта) текущая версия DLR в то время не могла поддерживать большинство требований Scheme[17].
Архитектура
Среда выполнения динамического языка (DLR) построена на идее, что можно реализовать особенности языка поверх общей языковой независимости абстрактного синтаксического дерева, узлы которого соответствуют определённой функциональности, которая является общим для многих динамических языков[18]. В основе этой архитектуры лежит идея о том, что количество элементарных языковых конструкций, которые должны быть реализованы в универсальном стеке, должно быть по своей сути ограничено[19]. DLR динамически генерирует код, соответствующий функциональным возможностям, выраженным этими узлами. Компилятор любого динамического языка, реализованного поверх DLR, должен генерировать абстрактные деревья DLR и передавать их библиотекам DLR.
DLR предоставляет динамически обновляемые объекты DynamicSite
, которые кэшируют задачу привязки методов к объектам. Поскольку тип объекта, а также содержащиеся в нем члены в динамических языках могут изменяться в течение жизненного цикла программы, вызов метода должен проверять список методов, чтобы увидеть, является ли вызов допустимым. Объекты DynamicSite
представляют и кэшируют состояние объекта и его методов; любое обновление объекта также отражается в объектах DynamicSite
. DLR направляет все вызовы методов через объекты DynamicSite
, которые затем выполняют быстрый поиск и Шаблон:Нп5 метода с фактической реализацией[20].
В отличие от других проектов, таких как виртуальная машина Parrot (без зависимостей) или Шаблон:Нп5 (построенная на JVM Java путём добавления новых байт-кодов в набор инструкций JVM) DLR создаётся на основе существующей виртуальной машины .NET Framework от Common Language Runtime[21].
См. также
- Da Vinci Machine – проект, начатый в Sun Microsystems, который обеспечил поддержку динамических языков для платформы Java на уровне виртуальной машины Java (JVM)
- виртуальная машина Parrot
Ссылки
Внешние ссылки
Шаблон:.NET Шаблон:Свободное и открытое программное обеспечение Microsoft
- ↑ 1,0 1,1 Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- Русская Википедия
- Программные интерфейсы Microsoft
- Программное обеспечение с лицензией Apache Software License
- Программное обеспечение, разработанное в 2010 году
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Википедия
- Статья из Википедии
- Статья из Русской Википедии