Dynamic Language Runtime

Dynamic Language Runtime (DLR)
Тип System platform[прояснить]
Автор Microsoft Dynamic Language Runtime Team
Разработчик .NET Foundation[англ.]
Написана на C#
Операционные системы Windows, macOS, Linux (Debian, Ubuntu)
Первый выпуск 16 апреля 2010; 14 лет назад (2010-04-16)
Аппаратная платформа Common Language Infrastructure
Последняя версия 1.3.0 (16 ноября 2020; 3 года назад (2020-11-16)[1])
Репозиторий github.com/IronLanguages/dlr
Лицензия Apache License 2.0
Сайт docs.microsoft.com/en-us/dotnet/framework/reflection-and-codedom/dynamic-language-runtime-overview

Dynamic Language Runtime (DLR; с англ. — «Среда выполнения динамического языка») от Microsoft работает поверх исполняющей среды Common Language Runtime (CLR; с англ. — «Общеязыковая среда выполнения») и предоставляет службы компьютерного языка для динамического языка. Эти услуги включают:

DLR используется для реализации динамических языков в .NET Framework, включая проекты IronPython и IronRuby.

Поскольку реализации динамического языка используют общую базовую систему, им должно быть проще взаимодействовать друг с другом. Например, должна быть возможность использовать библиотеки любого динамического языка на любом другом динамическом языке. Кроме того, хостинг API позволяет взаимодействовать со статически типизированными языками интерфейса командной строки, такими как C# и Visual Basic .NET.

История

Проект Microsoft Dynamic Language Runtime был анонсирован Microsoft на MIX[англ.] в 2007 году[2][3].

Microsoft выпустила бета-версию .NET DLR 0.9 в ноябре 2008 года[4] и последнюю версию 0.9 в декабре 2008 года. Версия 1.0 выпущена в апреле 2010 года. В июле 2010 года фирма Microsoft изменила лицензию DLR с Microsoft Public License на Apache License 2.0[5]. С выпуском .NET Framework 4, также в апреле 2010 года, DLR была включена в саму .NET Framework[6].

Проект DLR с открытым исходным кодом, размещённый на GitHub, имеет несколько дополнительных функций для разработчиков языка. После выпуска в июле 2010 года в течение нескольких лет деятельность по проекту велась незначительно. Это было интерпретировано разработчиком Microsoft, работавшим над IronRuby, как недостаток приверженности Microsoft к динамическим языкам в платформе .NET Framework[7][8]. Тем не менее, с 2016-2017 годов ведётся регулярная деятельность, которая привела к ряду улучшений и обновлений.

Поддерживаемые языки

В настоящее время службы DLR используются в разрабатываемой версии IronRuby, .NET-реализации языка Ruby, а также для IronPython[2].

В 2007 году Microsoft планировала использовать DLR для следующих Visual Basic 2010 (VB 10.0) и Managed JScript (ECMAScript 3.0)[9][10][11][12]. Однако по состоянию на август 2009 года Microsoft больше не планирует внедрять управляемый JScript в DLR[13]. Подобно C#, Visual Basic может получать доступ к объектам из динамических языков, построенных на DLR, таких как IronPython и IronRuby[14][15].

PowerShell 3.0, выпущенный в Windows 8, был обновлён для использования DLR[16].

IronScheme, реализация Scheme[17], планировали построить на основе DLR. От этой идеи отказались, потому что ветвь DLR, используемая проектом, рассинхронизировалась с магистралью, а также потому, что (по словам координатора проекта) текущая версия DLR в то время не могла поддерживать большинство требований Scheme[18].

Архитектура

Среда выполнения динамического языка (DLR) построена на идее, что можно реализовать особенности языка поверх общей языковой независимости абстрактного синтаксического дерева, узлы которого соответствуют определённой функциональности, которая является общим для многих динамических языков[19]. В основе этой архитектуры лежит идея о том, что количество элементарных языковых конструкций, которые должны быть реализованы в универсальном стеке, должно быть по своей сути ограничено[20]. DLR динамически генерирует код, соответствующий функциональным возможностям, выраженным этими узлами. Компилятор любого динамического языка, реализованного поверх DLR, должен генерировать абстрактные деревья DLR и передавать их библиотекам DLR.

DLR предоставляет динамически обновляемые объекты DynamicSite, которые кэшируют задачу привязки методов к объектам. Поскольку тип объекта, а также содержащиеся в нем члены в динамических языках могут изменяться в течение жизненного цикла программы, вызов метода должен проверять список методов, чтобы увидеть, является ли вызов допустимым. Объекты DynamicSite представляют и кэшируют состояние объекта и его методов; любое обновление объекта также отражается в объектах DynamicSite. DLR направляет все вызовы методов через объекты DynamicSite, которые затем выполняют быстрый поиск и привязку[англ.] метода с фактической реализацией[21].

В отличие от других проектов, таких как виртуальная машина Parrot (без зависимостей) или Da Vinci Machine[англ.] (построенная на JVM Java путём добавления новых байт-кодов в набор инструкций JVM) DLR создаётся на основе существующей виртуальной машины .NET Framework от Common Language Runtime[22].

См. также

Ссылки

  1. Релизы  (неопр.). GitHub. Дата обращения: 30 ноября 2020.
  2. 1 2 Hugunin, Jim Среда выполнения динамического языка ([[Английский язык|англ.]]A Dynamic Language Runtime (DLR))  (неопр.). — «В краткосрочной перспективе мы сосредоточимся на использовании небольшого количества языков для запуска первой волны разработки DLR, где мы можем работать в тесном контакте с разработчиками, чтобы сгладить худшие изломы в дизайне DLR. После этого начального этапа мы хотим обратиться к более широкому языковому сообществу.». Дата обращения: 21 июня 2007. Архивировано 9 февраля 2010 года.
  3. Viehland, Dino Дорожная карта для IronPython 2.0  (неопр.) (15 января 2008). — «У нас действительно нет такого документа, но общая цель — выпустить IronPython 2.0 к концу года. Что касается самого DLR, то планируется выпустить версию 1.0 примерно в то же время, что и IronPython 2.0.». Дата обращения: 9 февраля 2008. Архивировано 6 сентября 2008 года.
  4. CodePlex Archive  (неопр.). Дата обращения: 17 апреля 2021. Архивировано 28 февраля 2010 года.
  5. CodePlex Archive  (неопр.). Дата обращения: 17 апреля 2021. Архивировано из оригинала 14 августа 2011 года.
  6. Dynamic Language Runtime Overview | Microsoft Docs  (неопр.). Дата обращения: 17 апреля 2021. Архивировано 31 декабря 2016 года.
  7. Шины IronRuby от Microsoft; Джимми Скементи прыгает с корабля  (неопр.). rubyinside.com (7 августа 2010). — «Год назад команда сократилась вдвое, и наша маневренность была сильно ограничена. [..] В целом, я вижу серьёзное отсутствие приверженности к IronRuby и динамическому/-им языку/-ам для .NET в целом.». Дата обращения: 26 февраля 2012. Архивировано 7 марта 2012 года.
  8. Динамические языки Microsoft умирают  (неопр.). i-programmer.info (10 августа 2010). — «Без последнего толчка, чтобы языки работали в Visual Studio и интегрировались с дизайнером, оба языка Iron, вероятно, мертвы - и Microsoft, похоже, потеряла желание сделать их успешными.». Дата обращения: 26 февраля 2012. Архивировано 10 января 2012 года.
  9. Объявлен управляемый JScript  (неопр.). Дата обращения: 4 мая 2007. Архивировано 17 мая 2007 года.
  10. Что, чёрт возьми, такое "VBx"?  (неопр.) (1 мая 2007). — «В новом DLR у нас есть поддержка IronPython, IronRuby, JavaScript и новой динамической компиляции VBx[англ.].». Дата обращения: 12 августа 2009. Архивировано 25 мая 2009 года.
  11. Включение Mix, Silverlight, CoreCLR и DLR в контекст  (неопр.) (1 мая 2007). Дата обращения: 12 августа 2008. Архивировано 24 сентября 2008 года.
  12. Введение в Visual Basic 10  (неопр.). infoq.com (4 мая 2007). — «VB 10 использует функцию Silverlight, которая называется динамической языковой средой или DLR.». Дата обращения: 12 августа 2009. Архивировано 19 октября 2008 года.
  13. Chiles, Bill Будущее управляемого JScript (IronJScript)?  (неопр.) (1 июня 2009). — «DLR JScript был экспериментальным для информирования проектирования DLR (деревья выражений, взаимодействие, сайты вызовов, хостинг и т. д.). JS, который мы выпустили с ASP Futures и Silverlight Dynamic SDK, стал очень старым и непригодным для использования, поскольку DLR продолжал развиваться для выпуска в CLR 4.0. К сожалению, в настоящее время нет планов по разработке и выпуску JScript, поддерживающего DLR.». Дата обращения: 12 августа 2009. Архивировано из оригинала 31 августа 2009 года.
  14. Что нового в Visual Basic 2010?  (неопр.) Microsoft. — «Visual Basic привязывается к объектам из динамических языков, таких как IronPython и IronRuby.». Дата обращения: 12 августа 2009. Архивировано 4 августа 2009 года.
  15. Walkthrough: Creating and Using Dynamic Objects (C# and Visual Basic) | Microsoft Docs  (неопр.). Дата обращения: 17 апреля 2021. Архивировано 6 мая 2016 года.
  16. Архивная копия  (неопр.). Дата обращения: 30 марта 2012. Архивировано 28 апреля 2012 года.
  17. CodePlex Archive  (неопр.). Дата обращения: 17 апреля 2021. Архивировано 29 января 2010 года.
  18. Есть ли какой-либо образец Silverlight?  (неопр.) (недоступная ссылка — история) (11 мая 2009). — «К сожалению, моя ветка DLR плохо синхронизирована с веткой Silverlight. Я просто подумал, возможно мне DLR не нужен, разберусь. Проблема в том, что DLR как есть, недостаточно хорош для поддержки большинства требований языка Scheme.». Дата обращения: 26 июля 2009.
  19. Hugunin, Jim Деревья DLR (Часть 1)  (неопр.) (15 мая 2007). — «Ключевой трюк реализации в DLR заключается в использовании этих видов деревьев для передачи кода в виде данных и сохранения кода в легко анализируемой и изменяемой форме как можно дольше.». Дата обращения: 23 февраля 2008. Архивировано 30 апреля 2010 года.
  20. Nutter, Charles Lang.NET 2008: мысли первого дня  (неопр.) (28 января 2008). — «Идея состоит в том, что существует быстро сглаживающаяся асимптотическая кривая количества узлов дерева выражений, необходимых для реализации каждого нового языка. Так ли это, ещё предстоит увидеть.». Дата обращения: 23 февраля 2008. Архивировано 6 февраля 2008 года.
  21. Bill Chiles. CLR наизнанку: IronPython и среда выполнения динамического языка  (неопр.). MSDN Magazine (октябрь 2007). Дата обращения: 10 августа 2007. Архивировано 25 марта 2008 года.
  22. Rose, John Браво за динамичную работу!  (неопр.) (2 февраля 2008). — «Интересно отметить различия между расширениями CLR и JVM. Они работают полностью выше уровня CLR без значительного улучшения, в то время как мы разрабатываем JVM и библиотеки одновременно.». Дата обращения: 23 февраля 2008. Архивировано 6 февраля 2008 года.
  • MIX 07 - Silverlight сияет ярче!  (неопр.) Дата обращения: 30 апреля 2007.
  • Видеопрезентация MIX 07 - DEV02 - Просто приклей! Ruby и DLR в Silverlight  (неопр.). Дата обращения: 4 мая 2007. Архивировано 8 мая 2007 года.
  • Динамическое мышление Джима Хугунина - Среда выполнения динамического языка (DLR)  (неопр.). Дата обращения: 6 февраля 2008.
  • Подробная информация об исходном пакете DLR-языков в сжатии - DLR в Debian  (неопр.). Дата обращения: 6 июля 2010.
  • Подробная информация о DLR-языках с исходным кодом проясняется – DLR в Ubuntu  (неопр.). Дата обращения: 6 июля 2010.
  • Управляемая система типов JScript от Пратапа Лакшмана  (неопр.). Дата обращения: 28 января 2008. Архивировано 8 декабря 2013 года.

Внешние ссылки

Логотип Викиучебника Имеется викиучебник по теме «.NET Development Foundation»
  • docs.microsoft.com/en-us/dotnet/framework/reflection-and-codedom/dynamic-language-runtime-overview — официальный сайт Dynamic Language Runtime Overview
  • Проект Dynamic Language Runtime на сайте GitHub
Перейти к шаблону «.NET»
.NET
Реализации
Архитектура
Инфраструктура
Языки Microsoft
Другие языки
Windows Foundations
Компоненты
Сравнения
Будущие технологии
Информационные ресурсы
Перейти к шаблону «Свободное и открытое программное обеспечение Microsoft»
Общая информация
Программное
обеспечение
Приложения
Игры
  • Allegiance[англ.]
Языки
программирования
Фреймворки и
средства разработки
Операционные
системы
Прочее
  • ChronoZoom
  • Project Mu
  • SILK
  • TLAPS
  • TPM 2.0 Reference Implementation
  • WikiBhasha
Лицензии
Связанные темы
  • .NET Foundation
  • F Sharp Software Foundation
  • Microsoft Open Specification Promise
  • Outercurve Foundation
Категория Категория