Interested Article - Dynamic Language Runtime
- 2020-01-25
- 1
Dynamic Language Runtime ( DLR ; с англ. — «Среда выполнения динамического языка») от Microsoft работает поверх исполняющей среды Common Language Runtime (CLR; с англ. — «Общеязыковая среда выполнения») и предоставляет службы компьютерного языка для динамического языка . Эти услуги включают:
- Динамическая система типов , которая будет разделяться между всеми языками, использующими службы DLR.
- Метод динамического связывания
- Генерация динамического кода
- Хостинг API
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 .
См. также
- Da Vinci Machine – проект, начатый в Sun Microsystems , который обеспечил поддержку динамических языков для платформы Java на уровне виртуальной машины Java (JVM)
- виртуальная машина Parrot
Ссылки
- . GitHub . Дата обращения: 30 ноября 2020.
- ↑ Hugunin, Jim . — « В краткосрочной перспективе мы сосредоточимся на использовании небольшого количества языков для запуска первой волны разработки DLR, где мы можем работать в тесном контакте с разработчиками, чтобы сгладить худшие изломы в дизайне DLR. После этого начального этапа мы хотим обратиться к более широкому языковому сообществу. ». Дата обращения: 21 июня 2007. 9 февраля 2010 года.
- Viehland, Dino (15 января 2008). — « У нас действительно нет такого документа, но общая цель — выпустить IronPython 2.0 к концу года. Что касается самого DLR, то планируется выпустить версию 1.0 примерно в то же время, что и IronPython 2.0. ». Дата обращения: 9 февраля 2008. 6 сентября 2008 года.
- . Дата обращения: 17 апреля 2021. 28 февраля 2010 года.
- . Дата обращения: 17 апреля 2021. Архивировано из 14 августа 2011 года.
- . Дата обращения: 17 апреля 2021. 31 декабря 2016 года.
- . rubyinside.com (7 августа 2010). — « Год назад команда сократилась вдвое, и наша маневренность была сильно ограничена. [..] В целом, я вижу серьёзное отсутствие приверженности к IronRuby и динамическому/-им языку/-ам для .NET в целом. ». Дата обращения: 26 февраля 2012. 7 марта 2012 года.
- . i-programmer.info (10 августа 2010). — « Без последнего толчка, чтобы языки работали в Visual Studio и интегрировались с дизайнером, оба языка Iron, вероятно, мертвы - и Microsoft, похоже, потеряла желание сделать их успешными. ». Дата обращения: 26 февраля 2012. 10 января 2012 года.
- . Дата обращения: 4 мая 2007. 17 мая 2007 года.
- (1 мая 2007). — « В новом DLR у нас есть поддержка IronPython, IronRuby, JavaScript и новой динамической компиляции . ». Дата обращения: 12 августа 2009. 25 мая 2009 года.
- (1 мая 2007). Дата обращения: 12 августа 2008. 24 сентября 2008 года.
- . infoq.com (4 мая 2007). — « VB 10 использует функцию Silverlight, которая называется динамической языковой средой или DLR. ». Дата обращения: 12 августа 2009. 19 октября 2008 года.
- Chiles, Bill (1 июня 2009). — « DLR JScript был экспериментальным для информирования проектирования DLR (деревья выражений, взаимодействие, сайты вызовов, хостинг и т. д.). JS, который мы выпустили с ASP Futures и Silverlight Dynamic SDK, стал очень старым и непригодным для использования, поскольку DLR продолжал развиваться для выпуска в CLR 4.0. К сожалению, в настоящее время нет планов по разработке и выпуску JScript, поддерживающего DLR. ». Дата обращения: 12 августа 2009. Архивировано из 31 августа 2009 года.
- Microsoft . — « Visual Basic привязывается к объектам из динамических языков, таких как IronPython и IronRuby. ». Дата обращения: 12 августа 2009. 4 августа 2009 года.
- . Дата обращения: 17 апреля 2021. 6 мая 2016 года.
- . Дата обращения: 30 марта 2012. 28 апреля 2012 года.
- . Дата обращения: 17 апреля 2021. 29 января 2010 года.
- (недоступная ссылка — ) (11 мая 2009). — « К сожалению, моя ветка DLR плохо синхронизирована с веткой Silverlight. Я просто подумал, возможно мне DLR не нужен, разберусь. Проблема в том, что DLR как есть, недостаточно хорош для поддержки большинства требований языка Scheme. ». Дата обращения: 26 июля 2009.
- Hugunin, Jim (15 мая 2007). — « Ключевой трюк реализации в DLR заключается в использовании этих видов деревьев для передачи кода в виде данных и сохранения кода в легко анализируемой и изменяемой форме как можно дольше. ». Дата обращения: 23 февраля 2008. 30 апреля 2010 года.
- Nutter, Charles (28 января 2008). — « Идея состоит в том, что существует быстро сглаживающаяся асимптотическая кривая количества узлов дерева выражений, необходимых для реализации каждого нового языка. Так ли это, ещё предстоит увидеть. ». Дата обращения: 23 февраля 2008. 6 февраля 2008 года.
- Bill Chiles. . MSDN Magazine (октябрь 2007). Дата обращения: 10 августа 2007. 25 марта 2008 года.
- 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
- 2020-01-25
- 1