Какие изменения были внесены в CLR для поддержки динамического? - PullRequest
0 голосов
/ 23 марта 2011

Насколько я понимаю, в CLR .net 4.0 нужно было внести изменения для поддержки динамического языка Runtime.

Есть ли способ узнать, что это были за изменения? Я заметил, что в стандарте .net не упоминаются такие вещи, как DynamicObject - все эти вещи, похоже, являются частью DLR. Но если DLR - это «просто библиотека», тогда для запуска .net 4 не потребуется.

Так что мне просто любопытно, что изменилось в .net 4 для поддержки DLR.

1 Ответ

3 голосов
/ 23 марта 2011

Без изменений, это просто библиотека. .NET 4.0 CLR не требовалось, DLR работал на IronPython и IronRuby в версии 2.0. Вы можете взглянуть на то, что делает галочку в этой версии, вы можете скачать исходный код отсюда . Этот код был перемещен в System.Core.dll в основном без изменений.

Остерегайтесь, что их довольно много. Это все прямо C #. Он использует существующую поддержку в CLR для динамического связывания через Reflection и COM-взаимодействие. Он претендует на славу в том, что он может сделать это, заплатив за эту стоимость только один раз. Он кэширует результаты привязки, поэтому в последующих привязках он доступен по низкой цене.

Добавление клея интерфейса DLR в C # версии 4 само по себе было значительным усилием, встроенным в Microsoft.CSharp.dll, с большим количеством работы в компиляторе. Этот исходный код недоступен, но вы можете прослушать его с помощью Reflector.

...