Dynamic Language Runtime

Dynamic Language Runtime (DLR)
Type System platform[ ryd op ]
Forfatter Microsoft Dynamic Language Runtime Team
Udvikler Foundation
Skrevet i C#
Operativ system Windows , macOS , Linux ( Debian , Ubuntu )
Første udgave 16. april 2010  ( 2010-04-16 )
Hardware platform Fælles sproginfrastruktur
nyeste version 1.3.0 (16. november 2020 [1] ) ( 16-11-2020 )
Licens Apache-licens 2.0
Internet side docs.microsoft.com/en-us/dotnet/framework/reflection-and-codedom/dynamic-language-runtime-overview

Dynamic Language Runtime ( DLR ; fra  engelsk  -  "Dynamic Language Runtime") fra Microsoft kører oven på Common Language Runtime (CLR; fra  engelsk  - "Common Language Runtime") og  leverer computersprogtjenester til dynamisk sprog . Disse tjenester omfatter:

DLR bruges til at implementere dynamiske sprog i .NET Framework , herunder IronPython og IronRuby projekterne .

Fordi dynamiske sprogimplementeringer deler et fælles basissystem, burde det være lettere for dem at interagere med hinanden. For eksempel bør det være muligt at bruge bibliotekerne i ethvert dynamisk sprog i et hvilket som helst andet dynamisk sprog. Derudover tillader API-hosting interoperabilitet med statisk indtastede CLI-sprog såsom C# og Visual Basic .NET .

Historie

Microsoft Dynamic Language Runtime-projektet blev annonceret af Microsoft på MIX i 2007 [2] [3] .

Microsoft udgav .NET DLR 0.9 beta i november 2008 [4] og den seneste version 0.9 i december 2008. Version 1.0 blev udgivet i april 2010. I juli 2010 ændrede Microsoft DLR-licensen fra Microsoft Public License til Apache License 2.0 [5] . Med udgivelsen af ​​.NET Framework 4 , også i april 2010, blev DLR inkluderet i selve .NET Framework [6] .

Open source DLR-projektet hostet på GitHub har flere ekstra funktioner til sprogudviklere. Efter udgivelsen i juli 2010 var der ringe aktivitet på projektet i flere år. Dette blev tolket af en Microsoft-udvikler, der arbejder på IronRuby, som en mangel på Microsofts engagement i dynamiske sprog i .NET Framework [7] [8] . Der har dog været regelmæssig aktivitet siden 2016-2017, hvilket har resulteret i en række forbedringer og opdateringer.

Understøttede sprog

DLR-tjenester bruges i øjeblikket i udviklingsversionen af ​​IronRuby , .NET-implementeringen af ​​Ruby -sproget , og til IronPython [2] .

I 2007 planlagde Microsoft at bruge DLR til følgende Visual Basic 2010 (VB 10.0) og Managed JScript ( ECMAScript 3.0) [9] [10] [11] [12] . Fra august 2009 planlægger Microsoft dog ikke længere at implementere administreret JScript i DLR [13] . Ligesom C# kan Visual Basic få adgang til objekter fra dynamiske DLR-baserede sprog som IronPython og IronRuby [14] [15] .

PowerShell 3.0, udgivet med Windows 8 , er blevet opdateret til at bruge DLR [16] .

IronScheme , en implementering af Scheme [17] , var planlagt til at blive bygget oven på DLR. Denne idé blev opgivet, fordi den gren af ​​DLR, som projektet brugte, var ude af sync med rygraden , og også fordi (ifølge projektkoordinatoren) den nuværende version af DLR på det tidspunkt ikke kunne understøtte de fleste af kravene i ordningen [18] .

Arkitektur

Dynamic Language Runtime (DLR) er bygget på ideen om, at det er muligt at implementere sprogfunktioner oven på den generelle sproguafhængighed af et abstrakt syntakstræ, hvis noder svarer til en bestemt funktionalitet, der er fælles for mange dynamiske sprog [19] . Denne arkitektur er baseret på ideen om, at antallet af elementære sprogkonstruktioner, der skal implementeres på den universelle stak, i sagens natur bør være begrænset [20] . DLR genererer dynamisk kode svarende til funktionaliteten udtrykt af disse noder. Compileren af ​​ethvert dynamisk sprog implementeret oven på DLR skal generere DLR abstrakte træer og videregive dem til DLR bibliotekerne.

DLR leverer dynamisk opdaterede objekter DynamicSite, der cacher opgaven med at binde metoder til objekter. Fordi typen af ​​et objekt, såvel som de medlemmer, det indeholder, i dynamiske sprog kan ændre sig i løbet af et programs livscyklus, skal et metodekald kontrollere metodelisten for at se, om opkaldet er gyldigt. Objekter DynamicSiterepræsenterer og cacher et objekts tilstand og dets metoder; enhver opdatering af et objekt afspejles også i objekterne DynamicSite. DLR dirigerer alle metodekald gennem objekter DynamicSite, som derefter laver et hurtigt opslag og binder metoden med den faktiske implementering [21] .

I modsætning til andre projekter såsom Parrot Virtual Machine (ingen afhængigheder) eller Da Vinci Machine (bygget på Java JVM ved at tilføje nye bytekoder til JVM instruktionssættet ), er DLR bygget oven på Commons eksisterende . NET Framework Virtual Machine Language Runtime [22] .

Se også

Links

  1. Udgivelser . GitHub . Dato for adgang: 30. november 2020.
  2. 1 2 Hugunin, Jim A Dynamic Language Runtime (DLR ) . " På kort sigt vil vi fokusere på at bruge et lille antal sprog til at lancere den første bølge af DLR-udvikling, hvor vi kan arbejde tæt sammen med udviklere om at udjævne de værste knæk i DLR-design. Efter denne indledende fase ønsker vi at nå ud til det bredere sprogsamfund. ". Hentet 21. juni 2007. Arkiveret fra originalen 9. februar 2010.
  3. Viehland, Dino Roadmap for IronPython 2.0 (15. januar 2008). “ Vi har ikke rigtig sådan et dokument, men det overordnede mål er at frigive IronPython 2.0 inden årets udgang. Hvad angår selve DLR, er version 1.0 planlagt til at blive frigivet omkring samme tid som IronPython 2.0. ". Hentet 9. februar 2008. Arkiveret fra originalen 6. september 2008.
  4. CodePlex-arkiv . Hentet 17. april 2021. Arkiveret fra originalen 28. februar 2010.
  5. CodePlex-arkiv (downlink) . Hentet 17. april 2021. Arkiveret fra originalen 14. august 2011. 
  6. Dynamic Language Runtime Oversigt | Microsoft docs . Hentet 17. april 2021. Arkiveret fra originalen 31. december 2016.
  7. IronRuby dæk fra Microsoft; Jimmy Skementi springer skib . rubyinside.com (7. august 2010). “ For et år siden blev holdet halveret, og vores smidighed var stærkt begrænset. [..] Generelt ser jeg en alvorlig mangel på engagement i IronRuby og det/de dynamiske sprog til .NET generelt. ". Hentet 26. februar 2012. Arkiveret fra originalen 7. marts 2012.
  8. Microsofts dynamiske sprog er ved at dø . i-programmer.info (10. august 2010). “ Uden et sidste skub for at få sprogene til at fungere i Visual Studio og integrere med designeren, er begge Iron-sprog sandsynligvis døde - og Microsoft ser ud til at have mistet viljen til at få dem til at lykkes. ". Hentet 26. februar 2012. Arkiveret fra originalen 10. januar 2012.
  9. Administreret JScript annonceret . Hentet 4. maj 2007. Arkiveret fra originalen 17. maj 2007.
  10. Hvad fanden er "VBx"? (1. maj 2007). “ I det nye DLR har vi understøttelse af IronPython, IronRuby, JavaScript og den nye VBx dynamisk kompilering . ". Hentet 12. august 2009. Arkiveret fra originalen 25. maj 2009.
  11. Inklusive Mix, Silverlight, CoreCLR og DLR i kontekst (1. maj 2007). Hentet 12. august 2008. Arkiveret fra originalen 24. september 2008.
  12. Introduktion til Visual Basic 10 . infoq.com (4. maj 2007). “ VB 10 bruger en Silverlight-funktion kaldet Dynamic Language Environment eller DLR. ". Hentet 12. august 2009. Arkiveret fra originalen 19. oktober 2008.
  13. Chiles, Bill Fremtiden for administreret JScript (IronJScript)? (utilgængeligt link) (1. juni 2009). “ DLR JScript var eksperimentelt for at informere DLR-design (udtrykstræer, interaktion, opkaldssteder, hosting osv.). Den JS, vi udgav med ASP Futures, og Silverlight Dynamic SDK blev meget gammel og ubrugelig, da DLR fortsatte med at udvikle sig til udgivelse i CLR 4.0. Desværre er der i øjeblikket ingen planer om at udvikle og frigive JScript, der understøtter DLR. ". Hentet 12. august 2009. Arkiveret fra originalen 31. august 2009. 
  14. Hvad er nyt i Visual Basic 2010? . Microsoft . “ Visual Basic binder til objekter fra dynamiske sprog som IronPython og IronRuby. ". Hentet 12. august 2009. Arkiveret fra originalen 4. august 2009.
  15. Gennemgang: Oprettelse og brug af dynamiske objekter (C# og Visual Basic) | Microsoft docs . Hentet 17. april 2021. Arkiveret fra originalen 6. maj 2016.
  16. Arkiveret kopi . Dato for adgang: 30. marts 2012. Arkiveret fra originalen 28. april 2012.
  17. CodePlex-arkiv . Hentet 17. april 2021. Arkiveret fra originalen 29. januar 2010.
  18. Er der nogen prøve af Silverlight? (utilgængeligt link - historie ) (11. maj 2009). “ Desværre er min DLR-gren ude af sync med Silverlight-grenen. Jeg tænkte bare, måske har jeg ikke brug for en DLR, så finder jeg ud af det. Problemet er, at DLR, som det er, ikke er godt nok til at understøtte de fleste af kravene i Scheme-sproget. ". Hentet: 26. juli 2009. 
  19. Hugunin, Jim DLR Trees (Del 1) (15. maj 2007). " Et vigtigt implementeringstrick i DLR er at bruge disse slags træer til at videregive kode som data og holde koden i en let analyseret og foranderlig form så længe som muligt. ". Hentet 23. februar 2008. Arkiveret fra originalen 30. april 2010.
  20. Nutter, Charles Lang.NET 2008: Day One Thoughts (28. januar 2008). " Ideen er, at der er en hurtigt udfladende asymptotisk kurve for antallet af udtrykstræknuder, der er nødvendige for at implementere hvert nyt sprog. Hvorvidt det er tilfældet, skal vise sig. ". Hentet 23. februar 2008. Arkiveret fra originalen 6. februar 2008.
  21. Bill Chiles. CLR Inside Out: IronPython og Dynamic Language Runtime . MSDN Magazine (oktober 2007). Hentet 10. august 2007. Arkiveret fra originalen 25. marts 2008.
  22. Rose, John Bravo for det dynamiske arbejde! (2. februar 2008). “ Det er interessant at bemærke forskellene mellem CLR- og JVM-udvidelser. De arbejder helt over CLR uden den store forbedring, mens vi udvikler JVM og biblioteker på samme tid. ". Hentet 23. februar 2008. Arkiveret fra originalen 6. februar 2008.

Eksterne links