Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Среда выполнения динамического языка ( DLR ) от Microsoft работает поверх среды 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 4 , также в апреле 2010 года, DLR была включена в саму .NET Framework. [6]

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

Поддерживаемые языки [ править ]

В настоящее время службы 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 , реализация схемы [17], планировала основываться на DLR. От этой идеи отказались, потому что ветвь DLR, используемая проектом, рассинхронизировалась с магистралью , а также потому, что (по словам координатора проекта) текущая версия DLR в то время не могла поддерживать большинство требований Scheme. [18]

Архитектура [ править ]

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

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

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

См. Также [ править ]

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

Ссылки [ править ]

  1. ^ «Релизы» . IronLanguages ​​/ dlr. GitHub . Проверено 30 ноября 2020 .
  2. ^ a b Хугунин, Джим. «Среда выполнения на динамическом языке (DLR)» . Проверено 21 июня 2007 . В краткосрочной перспективе мы сосредоточимся на использовании небольшого количества языков для стимулирования первой волны разработки DLR, где мы можем работать в тесном контакте и лицом к лицу с разработчиками, чтобы сгладить худшие изломы в дизайне DLR. После этого начального этапа мы хотим обратиться к более широкому языковому сообществу.
  3. ^ Viehland, Dino (2008-01-15). «Дорожная карта для IronPython 2.0» . Архивировано из оригинала на 2008-09-06 . Проверено 9 февраля 2008 . У нас действительно нет такого документа, но общая цель - выпустить IronPython 2.0 к концу года. Что касается самого DLR, то планируется выпустить версию 1.0 примерно в то же время, что и IronPython 2.0.
  4. ^ http://www.codeplex.com/dlr
  5. ^ http://dlr.codeplex.com/license
  6. ^ https://msdn.microsoft.com/en-us/library/dd233052.aspx
  7. ^ «Шины Microsoft IronRuby; Джимми Шементи прыгает с корабля» . rubyinside.com. 2010-08-07 . Проверено 26 февраля 2012 . Год назад команда сократилась вдвое, и наша маневренность была сильно ограничена. [..] В целом, я вижу серьезное отсутствие приверженности IronRuby и динамическому языку [языкам] для .NET в целом.
  8. ^ «Динамические языки Microsoft умирают» . i-programmer.info. 2010-08-10 . Проверено 26 февраля 2012 . Без последнего толчка к тому, чтобы языки работали в Visual Studio и интегрировались с конструктором, оба языка Iron, вероятно, мертвы - и Microsoft, похоже, потеряла желание сделать их успешными.
  9. ^ "Объявлен управляемый JScript" . Проверено 4 мая 2007 .
  10. ^ "Что, черт возьми, такое" VBx "?" . 2007-05-01 . Проверено 12 августа 2009 . В новом DLR у нас есть поддержка IronPython, IronRuby, Javascript и новой динамической компиляции VBx.
  11. ^ «Помещение Mix, Silverlight, CoreCLR и DLR в контекст» . 2007-05-01 . Проверено 12 августа 2008 .
  12. ^ «Знакомство с Visual Basic 10» . infoq.com. 2007-05-04 . Проверено 12 августа 2009 . VB 10 использует функцию Silverlight, называемую динамической языковой средой или DLR.
  13. ^ Чили, Билл (2009-06-01). "Будущее управляемого JScript (IronJScript)?" . Проверено 12 августа 2009 . DLR JScript был экспериментальным для информирования проектирования DLR (деревья выражений, взаимодействие, сайты вызовов, хостинг и т. Д.). JS, который мы выпустили с asp Futures и Silverlight dynamic sdk, стал очень старым и непригодным для использования, поскольку DLR продолжал развиваться для выпуска в CLR 4.0. К сожалению, в настоящее время нет планов по разработке и выпуску JScript, поддерживающего DLR.
  14. ^ «Что нового в Visual Basic 2010» . Microsoft . 2009 . Проверено 12 августа 2009 . Visual Basic привязывается к объектам из динамических языков, таких как IronPython и IronRuby.
  15. ^ https://msdn.microsoft.com/en-us/library/ee461504.aspx#Y480
  16. ^ "Архивная копия" . Архивировано из оригинала на 2012-04-28 . Проверено 30 марта 2012 .CS1 maint: archived copy as title (link)
  17. ^ http://www.codeplex.com/IronScheme
  18. ^ "Есть ли какой-нибудь образец Silverlight?" . 2009-05-11 . Проверено 26 июля 2009 . К сожалению, моя ветка DLR очень не синхронизирована с веткой Silverlight. Я просто подумал, возможно мне ДЛР не надо, разберусь. Проблема в том, что DLR как есть, недостаточно хорош для поддержки большинства требований схемы.
  19. ^ Хугунин, Джим (2007-05-15). «Деревья DLR (Часть 1)» . Проверено 23 февраля 2008 . Ключевой трюк реализации в DLR заключается в использовании этих видов деревьев для передачи кода в виде данных и сохранения кода в легко анализируемой и изменяемой форме как можно дольше.
  20. ^ Наттер, Чарльз (2008-01-28). «Lang.NET 2008: Мысли первого дня» . Проверено 23 февраля 2008 . Идея состоит в том, что существует быстро сглаживающаяся асимптотическая кривая количества узлов дерева выражений, необходимых для реализации каждого нового языка. Так ли это, еще предстоит увидеть.
  21. ^ Билл Чайлс (октябрь 2007 г.). «CLR Inside Out: IronPython и среда выполнения динамического языка» . Журнал MSDN . Проверено 10 августа 2007 .
  22. Роуз, Джон ( 2 февраля 2008 г.). "Браво динамичной среде выполнения!" . Архивировано из оригинала на 2008-02-06 . Проверено 23 февраля 2008 . Интересно отметить различия между расширениями CLR и JVM. Они работают полностью выше уровня CLR без значительного улучшения, в то время как мы разрабатываем JVM и библиотеки одновременно.
  • "MIX 07 - Silverlight светит ярче!" . Проверено 30 апреля 2007 .
  • «Видеопрезентация MIX 07 - DEV02 - Просто приклейте! Ruby и DLR в Silverlight» . Архивировано из оригинала на 2007-05-08 . Проверено 4 мая 2007 .
  • «Динамическое мышление Джима Хьюгунина - динамическая языковая среда (DLR)» . Проверено 6 февраля 2008 .
  • «Подробная информация об исходном пакете dlr-languages ​​в squeeze - DLR в Debian» . Проверено 6 июля 2010 .
  • «Подробная информация о исходном пакете dlr-languages ​​в lucid - DLR в Ubuntu» . Проверено 6 июля 2010 .
  • "Pratap Lakshman's o.x the Managed JScript Type System". Archived from the original on 2013-12-08. Retrieved 2008-01-28.

External links[edit]

  • Dynamic Language Runtime Overview
  • dlr on GitHub