Runtime dinamică a limbajului - Dynamic Language Runtime
| Autori originali | Echipa Microsoft Dynamic Language Runtime |
|---|---|
| Dezvoltatori | Fundația .NET |
| Eliberarea inițială | 16 aprilie 2010 |
| Versiune stabila | 1.3.0 / 16 noiembrie 2020
|
| Repertoriu | github |
| 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 |
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:
- Un sistem de tip dinamic , pentru a fi partajat de toate limbile folosind serviciile DLR
- Expediere dinamică a metodei
- Generarea codului dinamic
- API de găzduire
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
- Da Vinci Machine - un proiect care începe de la Sun Microsystems, care a adus suport pentru limbaje dinamice pe platforma Java la nivel de mașină virtuală Java (JVM)
- Mașină virtuală papagal
Referințe
- "MIX 07 - Silverlight strălucește mai tare!" . Adus 30-04-2007 .
- "Prezentare video MIX 07 - DEV02 - Just Glue It! Ruby and the DLR in Silverlight" . Arhivat din original la 08.05.2007 . Adus 04-05-2007 .
- „Jim Hugunin’s Thinking Dynamic - A Dynamic language runtime (DLR)” . Adus 06-02-2008 .
- "Detalii despre pachetul sursă dlr-languages în squeeze - DLR în Debian" . Adus 06.07.2010 .
- "Detalii despre pachetul sursă dlr-languages în lucid - DLR în Ubuntu" . Adus 06.07.2010 .
- „Pratap Lakshman's ox the Managed JScript Type System” . Arhivat din original la 08.12.2013 . Adus 28.01.2008 .