Source code
The Dynamic Language Runtime enables language developers to more easily create dynamic languages for the .NET platform. In addition to being a pluggable back-end for dynamic language compilers, the DLR provides language interop for dynamic operations on objects. The DLR has common hosting APIs for using dynamic languages as libraries or for scripting in your .NET applications. This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information see the .NET Foundation Code of Conduct. The best way to install the DLR is through the NuGet DynamicLanguageRuntime package. The best current documentation is in the docs/ directory, in Word and PDF format (it was a Microsoft project, after all). If you have any questions, open an issue, even if it's not an actual bug. The issues are an acceptable discussion forum as well. You will need to have Visual Studio 2022 17.14.26 or later (Windows only) and .NET 10.0 SDK installed on your machine. Engineering build assets such as framework props and CI templates live under eng/. Since the main development is on .NET, Mono bugs may inadvertently be introduced — please report them!
Excerpt from the source-code README · 3,051 chars · not written by Vinony
Article · Polski
Dynamic Language Runtime (DLR) to projekt firmy Microsoft mający na celu stworzenie zestawu usług zbudowanych na bazie Common Language Runtime (CLR) wspomagających tworzenie i wykonywanie różnych dynamicznych języków programowania oraz ich integrację z platformą .NET Framework. Usługi te to: * Dynamiczny system typów, współdzielony pomiędzy wszystkie implementacje języków wykorzystujących DLR. * Expression Trees, czyli dynamiczne drzewa wyrażeń reprezentujące semantykę danego języka. * Call Site Caching, czyli mechanizm pamięci podręcznej przyspieszający operacje wykonywane na obiektach o dynamicznych typach danych, zazwyczaj poprzez zapamiętywanie cech tych obiektów (najczęściej ich typów danych). * Dynamic Object Interoperability, to zestaw klas i interfejsów reprezentujących dynamiczny obiekt i operacje na nim, które mogą być użyte przez programistów implementujących kolejne dynamiczne języki programowania. * API pozwalające na osadzanie (hosting) dynamicznych języków we własnych aplikacjach. Główne zalety DLR: * Uproszczenie tworzenia kolejnych implementacji dynamicznych języków programowania wykonywanych poprzez CLR. * Rozszerzenie istniejących statycznie typowanych języków programowania, takich jak C#, czy Visual Basic .NET, o wybrane cechy dynamicznych języków programowania. * Niezależność od środowiska uruchomieniowego CLR. Jeżeli w przyszłej wersji platformy .NET zostanie usprawniony np. garbage collector, wszystkie języki uruchamiane na tej platformie automatycznie będą mogły skorzystać z tego usprawnienia. * Możliwość współdzielenia bibliotek i obiektów. Dzięki DLR każdy typ danych stworzony w dowolnym języku programowania wykonywanym za pomocą środowiska uruchomieniowego CLR jest ze sobą kompatybilny. Obiekt stworzony w języku IronPython może być wykorzystany w języku C# bez żadnych dodatkowych warstw pośredniczących oraz konwersji typów danych. * DLR przyczyniło się do stworzenia na platformie .NET Framework szybkich implementacji mechanizmów typu oraz , zapewniających wydajne wykonywanie dynamicznych operacji poprzez zastosowanie polimorficznej pamięci podręcznej. Mechanizmy zawarte w DLR zostały użyte do tej pory przy implementacjach języków IronPython oraz IronRuby. DLR jest również częścią platformy .NET Framework w wersji 4.0, oferując wsparcie dla wybranych możliwości dynamicznych języków programowania w sztandarowych, statycznie typowanych językach, takich jak , czy . Najnowsza wersja bibliotek DLR została przez firmę Microsoft przekazana w ręce społeczności i jest rozprowadzana na licencji Apache License, v2.0. DLR będzie również rozwijany niezależnie przez zespół odpowiedzialny za rozwój platformy .NET Framework, w celu zapewnienia wsparcia dla większej ilości możliwości, oferowanych przez dynamiczne języki programowania. Przykład integracji dynamicznego języka IronPython oraz statycznie typowanego języka C#: using System;using System.Linq;using IronPython.Hosting;using Microsoft.Scripting.Hosting;namespace CallingPythonLib{ class Program { static void Main(string[] args) { // ustawienie ścieżki do bibliotek języka Python System.IO.Directory.SetCurrentDirectory(@"C:\Program Files (x86)\IronPython 2.7\Lib\"); ScriptRuntime py = Python.CreateRuntime; // utworzenie obiektu reprezentującego typ danych zdefiniowany w języku Python dynamic random = py.UseFile("random.py"); int[] items = Enumerable.Range(1, 7).ToArray; // wywołanie metody dynamicznego typu Random random.shuffle(items); foreach (int item in items) { Console.WriteLine(item); } } }}
Abstract from DBpedia / Wikipedia · CC BY-SA