Common Language Runtime (CLR) - это основной набор сервисов, предлагаемых .NET - система типов, JIT, сборщик мусора и т. Д. Они доступны для всех языков .NET, поэтому «общая» часть.
Dynamic Language Runtime (DLR) строит поверх этого и предлагает услуги для динамических языков: динамические типы, динамическая диспетчеризация методов, генерация кода и т. Д. Идея состоит в том, чтобы сделать эти вещи единообразными и разделить их между динамическими языками, чтобы они работали предсказуемо и схожим образом, точно так же, как вещи в CLR распространяются также на все языки.
В каком-то смысле это сопоставимо: «нормальный» язык в .NET использует CLR, динамический язык должен использовать DLR, но также будет использовать CLR. Они представляют собой базовые наборы функций, которые дизайнеры считают хорошими, когда они распространены среди языков. IronPython и IronRuby были реализованы поверх DLR, как и функция C # 4 dynamic
.