Dynamic Language Runtime

Dynamic Language Runtime (DLR)
Tip de Platforma de sistem[ clarifica ]
Autor Echipa Microsoft Dynamic Language Runtime
Dezvoltator Fundația
Scris in C#
Sistem de operare Windows , macOS , Linux ( Debian , Ubuntu )
Prima editie 16 aprilie 2010  ( 16.04.2010 )
Platformă hardware Infrastructura limbajului comun
ultima versiune 1.3.0 (16 noiembrie 2020 [1] ) ( 2020-11-16 )
Licență Licență Apache 2.0
Site-ul web docs.microsoft.com/en-us/dotnet/framework/reflection-and-codedom/dynamic-language-runtime-overview

Dynamic Language Runtime ( DLR ; din  engleză  -  „Dynamic Language Runtime”) de la Microsoft rulează pe lângă Common Language Runtime (CLR; din  engleză  - „Common Language Runtime”) și oferă  servicii de limbaj computerizat pentru limbaj dinamic . Aceste servicii includ:

DLR este folosit pentru a implementa limbaje dinamice în .NET Framework , inclusiv proiectele IronPython și IronRuby .

Deoarece implementările de limbaj dinamic au un sistem de bază comun, ar trebui să fie mai ușor pentru ele să interacționeze între ele. De exemplu, ar trebui să fie posibilă utilizarea bibliotecilor oricărei limbi dinamice în orice altă limbă dinamică. În plus, găzduirea API permite interoperabilitatea cu limbaje CLI tipizate static , cum ar fi C# și Visual Basic .NET .

Istorie

Proiectul Microsoft Dynamic Language Runtime a fost anunțat de Microsoft la MIX în 2007 [2] [3] .

Microsoft a lansat .NET DLR 0.9 beta în noiembrie 2008 [4] și cea mai recentă versiune 0.9 în decembrie 2008. Versiunea 1.0 a fost lansată în aprilie 2010. În iulie 2010, Microsoft a schimbat licența DLR de la Microsoft Public License la Apache License 2.0 [5] . Odată cu lansarea .NET Framework 4 , tot în aprilie 2010, DLR a fost inclus în .NET Framework propriu-zis [6] .

Proiectul DLR open source găzduit pe GitHub are câteva funcții suplimentare pentru dezvoltatorii de limbi. După lansarea în iulie 2010, a existat puțină activitate pe proiect timp de câțiva ani. Acest lucru a fost interpretat de un dezvoltator Microsoft care lucrează la IronRuby ca o lipsă a angajamentului Microsoft față de limbaje dinamice în .NET Framework [7] [8] . Cu toate acestea, a existat activitate regulată din 2016-2017, ceea ce a dus la o serie de îmbunătățiri și actualizări.

Limbi acceptate

Serviciile DLR sunt utilizate în prezent în versiunea de dezvoltare a IronRuby , implementarea .NET a limbajului Ruby și pentru IronPython [2] .

În 2007, Microsoft a planificat să utilizeze DLR pentru următoarele Visual Basic 2010 (VB 10.0) și Managed JScript ( ECMAScript 3.0) [9] [10] [11] [12] . Cu toate acestea, din august 2009, Microsoft nu mai plănuiește să implementeze JScript gestionat în DLR [13] . La fel ca C#, Visual Basic poate accesa obiecte din limbaje dinamice bazate pe DLR, cum ar fi IronPython și IronRuby [14] [15] .

PowerShell 3.0, lansat cu Windows 8 , a fost actualizat pentru a utiliza DLR [16] .

IronScheme , o implementare a Scheme [17] , a fost planificată să fie construită deasupra DLR. Această idee a fost abandonată deoarece ramura DLR utilizată de proiect nu era sincronizată cu coloana vertebrală și, de asemenea, pentru că (conform coordonatorului proiectului) versiunea actuală a DLR-ului la momentul respectiv nu putea suporta majoritatea cerințelor Scheme. [18] .

Arhitectură

Dynamic Language Runtime (DLR) este construit pe ideea că este posibil să se implementeze caracteristici de limbaj pe lângă independența generală a limbajului a unui arbore de sintaxă abstractă ale cărui noduri corespund anumitor funcționalități care sunt comune multor limbaje dinamice [19] . Această arhitectură se bazează pe ideea că numărul de constructe de limbaj elementare care trebuie implementate pe stiva universală ar trebui limitat în mod inerent [20] . DLR generează în mod dinamic codul corespunzător funcționalității exprimate de aceste noduri. Compilatorul oricărui limbaj dinamic implementat deasupra DLR trebuie să genereze arbori abstracti DLR și să le transmită bibliotecilor DLR.

DLR furnizează obiecte actualizate dinamic DynamicSitecare memorează în cache sarcina de legare a metodelor la obiecte. Deoarece tipul unui obiect, precum și membrii pe care îi conține, în limbaje dinamice se pot schimba în timpul ciclului de viață al unui program, un apel de metodă trebuie să verifice lista de metode pentru a vedea dacă apelul este valid. Obiectele DynamicSitereprezintă și memorează în cache starea unui obiect și metodele acestuia; orice actualizare a unui obiect se reflectă și în obiecte DynamicSite. DLR direcționează toate apelurile de metodă prin obiecte DynamicSite, care apoi fac o căutare rapidă și leagă metoda cu implementarea efectivă [21] .

Spre deosebire de alte proiecte, cum ar fi Mașina Virtuală Parrot (fără dependențe) sau Mașina Da Vinci (construită pe Java JVM prin adăugarea de coduri de octet noi la setul de instrucțiuni JVM ), DLR este construit pe deasupra celor existente Common . NET Framework Virtual Machine Language Runtime [22] .

Vezi și

Link -uri

  1. Lansări . GitHub . Data accesului: 30 noiembrie 2020.
  2. 1 2 Hugunin, Jim A Dynamic Language Runtime (DLR ) . „ Pe termen scurt, ne vom concentra pe utilizarea unui număr mic de limbi pentru a lansa primul val de dezvoltare DLR, unde putem colabora strâns cu dezvoltatorii pentru a remedia cele mai grave probleme în designul DLR. După această etapă inițială, dorim să ajungem la comunitatea lingvistică mai largă. ". Consultat la 21 iunie 2007. Arhivat din original pe 9 februarie 2010.
  3. Viehland, Dino Roadmap pentru IronPython 2.0 (15 ianuarie 2008). „ Nu avem cu adevărat un astfel de document, dar obiectivul general este să lansăm IronPython 2.0 până la sfârșitul anului. În ceea ce privește DLR-ul în sine, versiunea 1.0 este programată să fie lansată aproximativ în același timp cu IronPython 2.0. ". Consultat la 9 februarie 2008. Arhivat din original pe 6 septembrie 2008.
  4. Arhiva CodePlex . Consultat la 17 aprilie 2021. Arhivat din original pe 28 februarie 2010.
  5. Arhiva CodePlex (link în jos) . Preluat la 17 aprilie 2021. Arhivat din original la 14 august 2011. 
  6. Prezentare generală a timpului de rulare a limbajului dinamic | Microsoft docs . Consultat la 17 aprilie 2021. Arhivat din original la 31 decembrie 2016.
  7. Anvelope IronRuby de la Microsoft; Jimmy Skementi sare pe navă . rubyinside.com (7 august 2010). „ Cu un an în urmă, echipa a fost redusă la jumătate, iar agilitatea noastră a fost sever limitată. [..] În general, văd o lipsă gravă de angajament față de IronRuby și limbajele dinamice pentru .NET în general. ". Consultat la 26 februarie 2012. Arhivat din original pe 7 martie 2012.
  8. Limbile dinamice ale Microsoft sunt pe moarte . i-programmer.info (10 august 2010). „ Fără un impuls final pentru a face ca limbajele să funcționeze în Visual Studio și să se integreze cu designerul, ambele limbaje Iron sunt probabil moarte - iar Microsoft pare să fi pierdut voința de a le face să aibă succes. ". Preluat la 26 februarie 2012. Arhivat din original la 10 ianuarie 2012.
  9. JScript gestionat anunțat . Consultat la 4 mai 2007. Arhivat din original pe 17 mai 2007.
  10. Ce dracu este „VBx”? (1 mai 2007). „ În noul DLR, avem suport pentru IronPython, IronRuby, JavaScript și noua compilație dinamică VBx . ". Preluat la 12 august 2009. Arhivat din original la 25 mai 2009.
  11. Inclusiv Mix, Silverlight, CoreCLR și DLR în context (1 mai 2007). Consultat la 12 august 2008. Arhivat din original la 24 septembrie 2008.
  12. Introducere în Visual Basic 10 . infoq.com (4 mai 2007). „ VB 10 folosește o caracteristică Silverlight numită Dynamic Language Environment sau DLR. ". Consultat la 12 august 2009. Arhivat din original la 19 octombrie 2008.
  13. Chiles, Bill Viitorul JScript-ului gestionat (IronJScript)? (link indisponibil) (1 iunie 2009). „ DLR JScript a fost experimental pentru a informa designul DLR (arbori de expresie, interacțiune, site-uri de apeluri, găzduire etc.). JS-ul pe care l-am lansat cu ASP Futures și Silverlight Dynamic SDK a devenit foarte vechi și inutilizabil, deoarece DLR-ul a continuat să evolueze pentru lansare în CLR 4.0. Din păcate, în prezent nu există planuri de dezvoltare și lansare JScript care acceptă DLR. ". Consultat la 12 august 2009. Arhivat din original la 31 august 2009. 
  14. Ce este nou în Visual Basic 2010? . Microsoft . „ Visual Basic se leagă de obiecte din limbaje dinamice, cum ar fi IronPython și IronRuby. ". Preluat la 12 august 2009. Arhivat din original la 4 august 2009.
  15. Tutorial: Crearea și Utilizarea obiectelor dinamice (C# și Visual Basic) | Microsoft docs . Preluat la 17 aprilie 2021. Arhivat din original la 6 mai 2016.
  16. Copie arhivată . Data accesului: 30 martie 2012. Arhivat din original la 28 aprilie 2012.
  17. Arhiva CodePlex . Preluat la 17 aprilie 2021. Arhivat din original la 29 ianuarie 2010.
  18. Există vreo mostră de Silverlight? (link inaccesibil - istoric ) (11 mai 2009). „ Din păcate, filiala mea DLR nu este sincronizată cu filiala Silverlight. M-am gândit, poate nu am nevoie de un DLR, o să-mi dau seama. Problema este că DLR nu este suficient de bun pentru a suporta majoritatea cerințelor limbajului Scheme. ". Preluat: 26 iulie 2009. 
  19. Hugunin, Jim DLR Trees (Partea 1) (15 mai 2007). „ Un truc cheie de implementare în DLR este să folosiți acest tip de arbori pentru a transmite codul ca date și pentru a păstra codul într-o formă ușor de analizat și mutabil pentru cât mai mult timp posibil. ". Consultat la 23 februarie 2008. Arhivat din original la 30 aprilie 2010.
  20. Nutter, Charles Lang.NET 2008: Day One Thoughts (28 ianuarie 2008). „ Ideea este că există o curbă asimptotică care se aplatizează rapid pentru numărul de noduri de arbore de expresie necesare pentru implementarea fiecărui limbaj nou. Rămâne de văzut dacă este așa. ". Consultat la 23 februarie 2008. Arhivat din original pe 6 februarie 2008.
  21. Bill Chiles. CLR Inside Out: IronPython și Dynamic Language Runtime . Revista MSDN (octombrie 2007). Preluat la 10 august 2007. Arhivat din original la 25 martie 2008.
  22. Rose, John Bravo pentru munca dinamică! (2 februarie 2008). „ Este interesant de observat diferențele dintre extensiile CLR și JVM. Ele funcționează complet peste CLR fără prea multe îmbunătățiri, în timp ce dezvoltăm JVM și biblioteci în același timp. ". Consultat la 23 februarie 2008. Arhivat din original pe 6 februarie 2008.

Link- uri externe