Среда динамического языка

редактировать
Среда динамического языка (DLR)
Автор (ы) оригинала Microsoft Dynamic Language Runtime Team
Разработчик (и) .NET Foundation
Первоначальный выпуск16 апреля 2010 г.; 10 лет назад (16.04.2010)
Стабильный выпуск 1.2.3 / 27 апреля 2020 г.; 5 месяцев назад (2020-04-27)
Репозиторий github.com / IronLanguages ​​/ dlr
Написано вC#
Операционной системе Windows, macOS, Linux (Debian, Ubuntu )
Platform Common Language Infrastructure
Тип Системная платформа
Лицензия Лицензия Apache 2.0
Веб-сайтdocs.microsoft.com / en-us / dotnet / framework / Reflection-and -codedom / dynamic-language-runtime-overview

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

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

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

Содержание

  • 1 История
  • 2 Поддерживаемые языки
  • 3 Архитектура
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки

История

Проект Microsoft Dynamic Language Runtime был анонсирован Microsoft на MIX 2007.

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

Проект DLR с открытым исходным кодом, размещенный на GitHub, имеет несколько дополнительных функций для разработчиков языка. После выпуска в июле 2010 года в течение нескольких лет над проектом было мало активности. Это было интерпретировано разработчиком Microsoft, работавшим над IronRuby, как недостаток приверженности Microsoft к динамическим языкам в.NET Framework. Однако с 2016/17 года ведется регулярная деятельность, которая привела к ряду улучшений и обновлений.

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

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

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

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

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

Архитектура

Среда выполнения динамического языка построена на идее, что можно реализовать особенности языка поверх общего языка- agnostic абстрактное синтаксическое дерево, узлы которого соответствуют определенной функциональности, которая является общей для многих динамических языков. Эта архитектура основана на идее о том, что количество элементарных языковых конструкций, которые должны быть реализованы в универсальном стеке, должно быть ограничено по своей сути. DLR динамически генерирует код, соответствующий функциональным возможностям, выраженным этими узлами. Компилятор любого динамического языка, реализованного поверх DLR, должен генерировать абстрактные деревья DLR и передавать их библиотекам DLR.

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

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

См. также

  • Free and open- портал исходного программного обеспечения
  • Da Vinci Machine - проект, начатый в Sun Microsystems, который обеспечил поддержку динамических языков для платформы Java на уровне виртуальной машины Java (JVM)
  • виртуальной машины Parrot

Ссылки

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

dlr на GitHub

Последняя правка сделана 2021-05-18 07:26:05
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте