Interested Article - Dynamic Language Runtime

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

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

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

История

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

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

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

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

В настоящее время службы 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 в то время не могла поддерживать большинство требований Scheme .

Архитектура

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

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

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

См. также

Ссылки

  1. . GitHub . Дата обращения: 30 ноября 2020.
  2. Hugunin, Jim . — « В краткосрочной перспективе мы сосредоточимся на использовании небольшого количества языков для запуска первой волны разработки DLR, где мы можем работать в тесном контакте с разработчиками, чтобы сгладить худшие изломы в дизайне DLR. После этого начального этапа мы хотим обратиться к более широкому языковому сообществу. ». Дата обращения: 21 июня 2007. 9 февраля 2010 года.
  3. Viehland, Dino (15 января 2008). — « У нас действительно нет такого документа, но общая цель — выпустить IronPython 2.0 к концу года. Что касается самого DLR, то планируется выпустить версию 1.0 примерно в то же время, что и IronPython 2.0. ». Дата обращения: 9 февраля 2008. 6 сентября 2008 года.
  4. . Дата обращения: 17 апреля 2021. 28 февраля 2010 года.
  5. . Дата обращения: 17 апреля 2021. Архивировано из 14 августа 2011 года.
  6. . Дата обращения: 17 апреля 2021. 31 декабря 2016 года.
  7. . rubyinside.com (7 августа 2010). — « Год назад команда сократилась вдвое, и наша маневренность была сильно ограничена. [..] В целом, я вижу серьёзное отсутствие приверженности к IronRuby и динамическому/-им языку/-ам для .NET в целом. ». Дата обращения: 26 февраля 2012. 7 марта 2012 года.
  8. . i-programmer.info (10 августа 2010). — « Без последнего толчка, чтобы языки работали в Visual Studio и интегрировались с дизайнером, оба языка Iron, вероятно, мертвы - и Microsoft, похоже, потеряла желание сделать их успешными. ». Дата обращения: 26 февраля 2012. 10 января 2012 года.
  9. . Дата обращения: 4 мая 2007. 17 мая 2007 года.
  10. (1 мая 2007). — « В новом DLR у нас есть поддержка IronPython, IronRuby, JavaScript и новой динамической компиляции . ». Дата обращения: 12 августа 2009. 25 мая 2009 года.
  11. (1 мая 2007). Дата обращения: 12 августа 2008. 24 сентября 2008 года.
  12. . infoq.com (4 мая 2007). — « VB 10 использует функцию Silverlight, которая называется динамической языковой средой или DLR. ». Дата обращения: 12 августа 2009. 19 октября 2008 года.
  13. Chiles, Bill (1 июня 2009). — « DLR JScript был экспериментальным для информирования проектирования DLR (деревья выражений, взаимодействие, сайты вызовов, хостинг и т. д.). JS, который мы выпустили с ASP Futures и Silverlight Dynamic SDK, стал очень старым и непригодным для использования, поскольку DLR продолжал развиваться для выпуска в CLR 4.0. К сожалению, в настоящее время нет планов по разработке и выпуску JScript, поддерживающего DLR. ». Дата обращения: 12 августа 2009. Архивировано из 31 августа 2009 года.
  14. Microsoft . — « Visual Basic привязывается к объектам из динамических языков, таких как IronPython и IronRuby. ». Дата обращения: 12 августа 2009. 4 августа 2009 года.
  15. . Дата обращения: 17 апреля 2021. 6 мая 2016 года.
  16. . Дата обращения: 30 марта 2012. 28 апреля 2012 года.
  17. . Дата обращения: 17 апреля 2021. 29 января 2010 года.
  18. (недоступная ссылка — ) (11 мая 2009). — « К сожалению, моя ветка DLR плохо синхронизирована с веткой Silverlight. Я просто подумал, возможно мне DLR не нужен, разберусь. Проблема в том, что DLR как есть, недостаточно хорош для поддержки большинства требований языка Scheme. ». Дата обращения: 26 июля 2009.
  19. Hugunin, Jim (15 мая 2007). — « Ключевой трюк реализации в DLR заключается в использовании этих видов деревьев для передачи кода в виде данных и сохранения кода в легко анализируемой и изменяемой форме как можно дольше. ». Дата обращения: 23 февраля 2008. 30 апреля 2010 года.
  20. Nutter, Charles (28 января 2008). — « Идея состоит в том, что существует быстро сглаживающаяся асимптотическая кривая количества узлов дерева выражений, необходимых для реализации каждого нового языка. Так ли это, ещё предстоит увидеть. ». Дата обращения: 23 февраля 2008. 6 февраля 2008 года.
  21. Bill Chiles. . MSDN Magazine (октябрь 2007). Дата обращения: 10 августа 2007. 25 марта 2008 года.
  22. Rose, John (2 февраля 2008). — « Интересно отметить различия между расширениями CLR и JVM. Они работают полностью выше уровня CLR без значительного улучшения, в то время как мы разрабатываем JVM и библиотеки одновременно. ». Дата обращения: 23 февраля 2008. 6 февраля 2008 года.
  • Дата обращения: 30 апреля 2007.
  • . Дата обращения: 4 мая 2007. 8 мая 2007 года.
  • . Дата обращения: 6 февраля 2008.
  • . Дата обращения: 6 июля 2010.
  • . Дата обращения: 6 июля 2010.
  • . Дата обращения: 28 января 2008. 8 декабря 2013 года.

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

  • — официальный сайт Dynamic Language Runtime Overview
  • на сайте GitHub
Источник —

Same as Dynamic Language Runtime