Runtime dinamică a limbajului - Dynamic Language Runtime

Dynamic Language Runtime (DLR)
Autori originali Echipa Microsoft Dynamic Language Runtime
Dezvoltatori Fundația .NET
Eliberarea inițială 16 aprilie 2010 ; Acum 11 ani ( 16.04.2010 )
Versiune stabila
1.3.0 / 16 noiembrie 2020 ; Acum 11 luni ( 16.11.2020 )
Repertoriu github .com / IronLanguages / dlr
Scris in C #
Sistem de operare Windows , macOS , Linux ( Debian , Ubuntu )
Platformă Infrastructură de limbă comună
Tip Platforma sistemului
Licență Licență Apache 2.0
Site-ul web docs .microsoft .com / en-us / dotnet / framework / reflect-and-codedom / dynamic-language-runtime-overview

Language Runtime dinamic ( DLR ) de la Microsoft ruleaza pe partea de sus a Common Language Runtime (CLR) și oferă limbaj de computer servicii pentru limbi dinamice . Aceste servicii includ:

DLR este utilizat pentru a implementa limbaje dinamice pe .NET Framework , inclusiv proiectele IronPython și IronRuby .

Deoarece implementările dinamice ale limbajului împărtășesc un sistem de bază comun, ar trebui să le fie mai ușor să interacționeze între ele. De exemplu, ar trebui să fie posibilă utilizarea bibliotecilor din orice limbaj dinamic în orice alt limbaj dinamic. În plus, API-ul de găzduire 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 2007.

Microsoft a livrat .NET DLR 0.9 beta în noiembrie 2008 și final 0.9 în decembrie 2008. Versiunea 1.0 a fost livrată în aprilie 2010. În iulie 2010, Microsoft a schimbat licența DLR de la Microsoft Public License la Apache License 2.0 . Odată cu lansarea .NET 4 , tot în aprilie 2010, DLR a fost încorporat în .NET Framework în sine.

Proiectul open source DLR găzduit pe GitHub are câteva caracteristici suplimentare pentru implementatorii de limbă. După lansarea din iulie 2010, a existat puțină activitate pe proiect timp de câțiva ani. Acest lucru a fost interpretat de un dezvoltator Microsoft care a lucrat la IronRuby ca o lipsă de angajament din partea Microsoft față de limbajele dinamice din .NET Framework. Cu toate acestea, au existat activități regulate din 2016/17, 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 , o implementare .NET a limbajului Ruby și pentru IronPython .

În 2007, Microsoft a planificat să utilizeze DLR pentru viitorul Visual Basic 2010 (VB 10.0) și Managed JScript ( ECMAScript 3.0). Cu toate acestea, începând din august 2009, Microsoft nu mai intenționează să implementeze Managed JScript pe DLR. La fel ca C # , Visual Basic poate accesa obiecte din limbaje dinamice construite pe DLR, cum ar fi IronPython și IronRuby .

PowerShell 3.0, lansat în Windows 8 , a fost actualizat pentru a utiliza DLR.

IronScheme , o implementare Scheme , plănuia să se bazeze pe DLR. Această idee a fost abandonată deoarece ramura DLR utilizată de proiect a devenit neconectată cu trunchiul și, de asemenea, deoarece (conform coordonatorului de proiect) versiunea curentă a DLR la acel moment nu putea suporta majoritatea cerințelor Scheme.

Arhitectură

Dynamic Language Runtime este construit pe ideea că este posibilă implementarea specificităților de limbă deasupra unui arbore de sintaxă abstractă limbaj-agnostic abstract , ale cărui noduri corespund unei funcționalități specifice, care este comună multor limbaje dinamice. Această arhitectură este susținută de ideea că numărul construcțiilor de limbaj elementar care ar trebui implementate în stiva generică ar trebui să fie în mod inerent limitat. DLR generează dinamic cod corespunzător funcționalității exprimate de aceste noduri. Compilatorul pentru orice limbaj dinamic implementat deasupra DLR trebuie să genereze arbori abstracti DLR și să-l predea bibliotecilor DLR.

DLR furnizează DynamicSiteobiecte actualizate dinamic , care memorează în cache sarcina de legare a metodelor la obiecte. Deoarece tipul unui obiect - precum și membrii pe care îi conține - în limbi dinamice se pot schimba în timpul duratei de viață a programului, o invocare a metodei trebuie să verifice lista metodelor pentru a vedea dacă invocarea este una validă. DynamicSiteobiectele reprezintă și memorează în cache starea obiectului și metodele acestuia; orice actualizare a obiectului se reflectă și în DynamicSiteobiecte. DLR direcționează toate invocațiile metodei prin DynamicSiteobiecte, care apoi efectuează o căutare rapidă și legarea metodei cu implementarea efectivă.

Spre deosebire de alte eforturi , cum ar fi aparatul Parrot virtuale (fără dependențe) sau Da Vinci Masina (construit pe Java JVM prin adăugarea de noi bytecodes în setul de instrucțiuni JVM ), DLR este construit pe partea de sus a existente Common Language Runtime , The . Mașină virtuală NET Framework .

Vezi si

Referințe

linkuri externe