Jump to content

Динамическая языковая среда выполнения

Среда динамического языка (DLR)
Оригинальный автор(ы) Команда Microsoft Dynamic Language Runtime
Разработчик(и) Фонд .NET
Первоначальный выпуск 16 апреля 2010 г .; 14 лет назад ( 16 апреля 2010 г. )
Стабильная версия
1.3.1 / 2 декабря 2021 г .; 2 года назад ( 2021-12-02 ) [1]
Репозиторий github /IronLanguages /длр
Написано в С#
Операционная система Windows , macOS , Linux ( Debian , Ubuntu )
Платформа Общая языковая инфраструктура
Тип Системная платформа
Лицензия Лицензия Апач 2.0
Веб-сайт документы .microsoft /en-нас /дотнет /рамки /reflection-and-codedom /динамический-язык-обзор времени выполнения

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

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

Поскольку реализации динамического языка используют общую базовую систему, им должно быть проще взаимодействовать друг с другом. Например, должна быть возможность использовать библиотеки любого динамического языка на любом другом динамическом языке. Кроме того, API-интерфейс хостинга обеспечивает взаимодействие со статически типизированными языками CLI , такими как 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 года ведется регулярная деятельность, которая привела к ряду улучшений и обновлений.

Языковые реализации

[ редактировать ]

В 2007 году Microsoft первоначально планировала использовать DLR для будущих версий Visual Basic 2010 (VB 10.0) и Managed JScript ( ECMAScript 3.0), а также Python и Ruby. [2] [9] [10] [11] [12]

Результатом работы DLR над Ruby и Python стали IronRuby , .NET-реализация языка Ruby , и IronPython . [2]

К августу 2009 года Microsoft объявила, что больше не планирует внедрять Managed JScript в DLR. [13] Позже Фредрик Хольмстрем независимо разработал реализацию JavaScript для DLR, которую он назвал «IronJS» в соответствии с традицией именования IronPython и IronRuby.

Как и 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 (без каких-либо зависимостей) или Da Vinci Machine (построенная на основе Java JVM путем добавления новых байт-кодов в набор инструкций JVM ), DLR построена поверх существующей среды Common Language Runtime , . NET Framework виртуальная машина. [22]

См. также

[ редактировать ]
  1. ^ «Выпуски» . IronLanguages/длр. Гитхаб . Проверено 27 января 2022 г.
  2. ^ Jump up to: а б с Хугунин, Джим. «Среда выполнения динамического языка (DLR)» . Проверено 21 июня 2007 г. В краткосрочной перспективе мы сосредоточены на использовании небольшого количества языков для запуска первой волны разработки DLR, где мы сможем тесно и лично сотрудничать с разработчиками, чтобы сгладить худшие недостатки в конструкции DLR. После этого начального этапа мы хотим обратиться к более широкому языковому сообществу.
  3. ^ Виланд, Дино (15 января 2008 г.). «Дорожная карта IronPython 2.0» . Архивировано из оригинала 6 сентября 2008 г. Проверено 9 февраля 2008 г. На самом деле у нас нет такого документа, но общая цель — выпустить IronPython 2.0 к концу года. Что касается самой DLR, то планируется выпустить версию 1.0 примерно в то же время, что и IronPython 2.0.
  4. ^ «Архив CodePlex» .
  5. ^ «Архив CodePlex» . Архивировано из оригинала 14 августа 2011 г. Проверено 27 июля 2010 г.
  6. ^ «Обзор среды выполнения динамического языка — .NET Framework» .
  7. ^ «Microsoft Tyres of IronRuby; Джимми Шементи покидает корабль» . Rubyinside.com. 07.08.2010 . Проверено 26 февраля 2012 г. Год назад команда сократилась вдвое, и наша гибкость была сильно ограничена. [..] В целом, я вижу серьезный недостаток приверженности IronRuby и динамическим языкам в .NET в целом.
  8. ^ «Динамические языки Microsoft умирают» . i-programmer.info. 10 августа 2010 г. Проверено 26 февраля 2012 г. Без окончательного толчка к тому, чтобы языки работали в Visual Studio и интегрировались с дизайнером, оба языка Iron, вероятно, мертвы - и Microsoft, похоже, потеряла желание добиться их успеха.
  9. ^ «Объявлен управляемый JScript» . Проверено 4 мая 2007 г.
  10. ^ «Что, черт возьми, такое «VBx»?» . 01.05.2007. Архивировано из оригинала 25 мая 2009 г. Проверено 12 августа 2009 г. В новой DLR появилась поддержка IronPython, IronRuby, Javascript и новой динамической компиляции VBx.
  11. ^ «Введение Mix, Silverlight, CoreCLR и DLR в контекст» . 01.05.2007 . Проверено 12 августа 2008 г.
  12. ^ «Знакомство с Visual Basic 10» . infoq.com. 04 мая 2007 г. Проверено 12 августа 2009 г. VB 10 использует преимущества функции Silverlight, называемой средой выполнения динамического языка или DLR.
  13. ^ Чайлз, Билл (1 июня 2009 г.). «Будущее управляемого JScript (IronJScript)?» . Архивировано из оригинала 31 августа 2009 г. Проверено 12 августа 2009 г. JScript DLR был экспериментальным для разработки дизайна DLR (деревья выражений, взаимодействие, сайты вызовов, хостинг и т. д.). JS, который мы выпустили с ASP Futures, и динамический пакет Silverlight стал очень старым и непригодным для использования, поскольку DLR продолжал развиваться для выпуска в CLR 4.0. К сожалению, в настоящее время нет планов по разработке и выпуску JScript, размещаемого в DLR.
  14. ^ «Что нового в Visual Basic 2010» . Майкрософт . 2009 . Проверено 12 августа 2009 г. Visual Basic привязывается к объектам динамических языков, таких как IronPython и IronRuby.
  15. ^ «Пошаговое руководство. Создание и использование динамических объектов (C# и Visual Basic)» .
  16. ^ «PowerShell 3 – наконец-то в DLR!» . Архивировано из оригинала 28 апреля 2012 г. Проверено 30 марта 2012 г.
  17. ^ «Архив CodePlex» .
  18. ^ «Есть ли образец серебряного света?» . 11 мая 2009 г. Архивировано из оригинала 19 января 2013 года . Проверено 26 июля 2009 г. К сожалению, моя ветка DLR сильно не синхронизирована с веткой Silverlight. Я как раз об этом подумал, возможно мне ДЛР лично не нужен, разберусь. Проблема в том, что DLR как есть недостаточно хорош для поддержки большинства требований схемы.
  19. ^ Хугунин, Джим (15 мая 2007 г.). «Деревья DLR (Часть 1)» . Проверено 23 февраля 2008 г. Ключевой трюк реализации в DLR заключается в использовании такого рода деревьев для передачи кода в виде данных и сохранения кода в легко анализируемой и изменяемой форме как можно дольше.
  20. ^ Наттер, Чарльз (28 января 2008 г.). «Lang.NET 2008: Мысли первого дня» . Проверено 23 февраля 2008 г. Идея состоит в том, что существует быстро сглаживающаяся асимптотическая кривая количества узлов дерева выражений, необходимых для реализации каждого нового языка. Так ли это, еще предстоит выяснить.
  21. ^ Билл Чайлс (октябрь 2007 г.). «CLR наизнанку: IronPython и среда выполнения динамического языка» . MSDN Журнал . Проверено 10 августа 2007 г.
  22. ^ Роуз, Джон (2 февраля 2008 г.). «Браво за динамичное исполнение!» . Архивировано из оригинала 6 февраля 2008 г. Проверено 23 февраля 2008 г. Интересно отметить различия между расширениями CLR и JVM. Они работают совершенно выше уровня CLR, существенно его не расширяя, в то время как мы разрабатываем JVM и библиотеки одновременно.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: cb7398225643b77497fd6d32f36fd7a9__1709615940
URL1:https://arc.ask3.ru/arc/aa/cb/a9/cb7398225643b77497fd6d32f36fd7a9.html
Заголовок, (Title) документа по адресу, URL1:
Dynamic Language Runtime - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)