Автор (ы) оригинала | Команда Microsoft Dynamic Language Runtime Team |
---|---|
Разработчики) | .NET Foundation |
Первый выпуск | 16 апреля 2010 г . |
Стабильный выпуск | 1.3.0 / 16 ноября 2020 г . [1] |
Репозиторий | github |
Написано в | C # |
Операционная система | Windows , macOS , Linux ( Debian , Ubuntu ) |
Платформа | Общая языковая инфраструктура |
Тип | Системная платформа |
Лицензия | Лицензия Apache 2.0 |
Веб-сайт | docs |
Среда выполнения динамического языка ( DLR ) от Microsoft работает поверх среды CLR и предоставляет услуги компьютерного языка для динамических языков . Эти услуги включают:
- Система динамического типа для всех языков, использующих службы DLR.
- Отправка динамического метода
- Генерация динамического кода
- Хостинг API
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
Ссылки [ править ]
- ^ «Релизы» . IronLanguages / dlr. GitHub . Проверено 30 ноября 2020 .
- ^ a b Хугунин, Джим. «Среда выполнения на динамическом языке (DLR)» . Проверено 21 июня 2007 .
В краткосрочной перспективе мы сосредоточимся на использовании небольшого количества языков для стимулирования первой волны разработки DLR, где мы можем работать в тесном контакте и лицом к лицу с разработчиками, чтобы сгладить худшие изломы в дизайне DLR.
После этого начального этапа мы хотим обратиться к более широкому языковому сообществу.
- ^ Viehland, Dino (2008-01-15). «Дорожная карта для IronPython 2.0» . Архивировано из оригинала на 2008-09-06 . Проверено 9 февраля 2008 .
У нас действительно нет такого документа, но общая цель - выпустить IronPython 2.0 к концу года.
Что касается самого DLR, то планируется выпустить версию 1.0 примерно в то же время, что и IronPython 2.0.
- ^ http://www.codeplex.com/dlr
- ^ http://dlr.codeplex.com/license
- ^ https://msdn.microsoft.com/en-us/library/dd233052.aspx
- ^ «Шины Microsoft IronRuby; Джимми Шементи прыгает с корабля» . rubyinside.com. 2010-08-07 . Проверено 26 февраля 2012 .
Год назад команда сократилась вдвое, и наша маневренность была сильно ограничена.
[..] В целом, я вижу серьезное отсутствие приверженности IronRuby и динамическому языку [языкам] для .NET в целом.
- ^ «Динамические языки Microsoft умирают» . i-programmer.info. 2010-08-10 . Проверено 26 февраля 2012 .
Без последнего толчка к тому, чтобы языки работали в Visual Studio и интегрировались с конструктором, оба языка Iron, вероятно, мертвы - и Microsoft, похоже, потеряла желание сделать их успешными.
- ^ "Объявлен управляемый JScript" . Проверено 4 мая 2007 .
- ^ "Что, черт возьми, такое" VBx "?" . 2007-05-01 . Проверено 12 августа 2009 .
В новом DLR у нас есть поддержка IronPython, IronRuby, Javascript и новой динамической компиляции VBx.
- ^ «Помещение Mix, Silverlight, CoreCLR и DLR в контекст» . 2007-05-01 . Проверено 12 августа 2008 .
- ^ «Знакомство с Visual Basic 10» . infoq.com. 2007-05-04 . Проверено 12 августа 2009 .
VB 10 использует функцию Silverlight, называемую динамической языковой средой или DLR.
- ^ Чили, Билл (2009-06-01). "Будущее управляемого JScript (IronJScript)?" . Проверено 12 августа 2009 .
DLR JScript был экспериментальным для информирования проектирования DLR (деревья выражений, взаимодействие, сайты вызовов, хостинг и т. Д.).
JS, который мы выпустили с asp Futures и Silverlight dynamic sdk, стал очень старым и непригодным для использования, поскольку DLR продолжал развиваться для выпуска в CLR 4.0.
К сожалению, в настоящее время нет планов по разработке и выпуску JScript, поддерживающего DLR.
- ^ «Что нового в Visual Basic 2010» . Microsoft . 2009 . Проверено 12 августа 2009 .
Visual Basic привязывается к объектам из динамических языков, таких как IronPython и IronRuby.
- ^ https://msdn.microsoft.com/en-us/library/ee461504.aspx#Y480
- ^ "Архивная копия" . Архивировано из оригинала на 2012-04-28 . Проверено 30 марта 2012 .CS1 maint: archived copy as title (link)
- ^ http://www.codeplex.com/IronScheme
- ^ "Есть ли какой-нибудь образец Silverlight?" . 2009-05-11 . Проверено 26 июля 2009 .
К сожалению, моя ветка DLR очень не синхронизирована с веткой Silverlight.
Я просто подумал, возможно мне ДЛР не надо, разберусь.
Проблема в том, что DLR как есть, недостаточно хорош для поддержки большинства требований схемы.
- ^ Хугунин, Джим (2007-05-15). «Деревья DLR (Часть 1)» . Проверено 23 февраля 2008 .
Ключевой трюк реализации в DLR заключается в использовании этих видов деревьев для передачи кода в виде данных и сохранения кода в легко анализируемой и изменяемой форме как можно дольше.
- ^ Наттер, Чарльз (2008-01-28). «Lang.NET 2008: Мысли первого дня» . Проверено 23 февраля 2008 .
Идея состоит в том, что существует быстро сглаживающаяся асимптотическая кривая количества узлов дерева выражений, необходимых для реализации каждого нового языка.
Так ли это, еще предстоит увидеть.
- ^ Билл Чайлс (октябрь 2007 г.). «CLR Inside Out: IronPython и среда выполнения динамического языка» . Журнал MSDN . Проверено 10 августа 2007 .
- ↑ Роуз, Джон ( 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]
Wikibooks has a book on the topic of: .NET Development Foundation |
- Dynamic Language Runtime Overview
- dlr on GitHub