Dynamisk språkkörning
Dynamic Language Runtime ( DLR ; från engelska - "Dynamic Language Runtime") från Microsoft körs ovanpå Common Language Runtime (CLR; från engelska - "Common Language Runtime") och tillhandahåller datorspråktjänster för dynamiskt språk . Dessa tjänster inkluderar:
DLR används för att implementera dynamiska språk i .NET Framework , inklusive IronPython- och IronRuby- projekten .
Eftersom dynamiska språkimplementationer delar ett gemensamt bassystem borde det vara lättare för dem att interagera med varandra. Till exempel bör det vara möjligt att använda biblioteken för vilket dynamiskt språk som helst i vilket annat dynamiskt språk som helst. Dessutom tillåter API-värd interoperabilitet med statiskt skrivna CLI-språk som C# och Visual Basic .NET .
Historik
Microsoft Dynamic Language Runtime-projektet tillkännagavs av Microsoft vid MIX 2007 [2] [3] .
Microsoft släppte betaversionen av .NET DLR 0.9 i november 2008 [4] och den senaste versionen 0.9 i december 2008. Version 1.0 släpptes i april 2010. I juli 2010 ändrade Microsoft DLR-licensen från Microsoft Public License till Apache License 2.0 [5] . Med lanseringen av .NET Framework 4 , också i april 2010, inkluderades DLR i själva .NET Framework [6] .
DLR-projektet med öppen källkod på GitHub har flera ytterligare funktioner för språkutvecklare. Efter releasen i juli 2010 var det lite aktivitet på projektet under flera år. Detta tolkades av en Microsoft-utvecklare som arbetade på IronRuby som en brist på Microsofts engagemang för dynamiska språk i .NET Framework [7] [8] . Det har dock varit regelbunden aktivitet sedan 2016-2017 vilket har resulterat i ett antal förbättringar och uppdateringar.
Språk som stöds
DLR-tjänster används för närvarande i utvecklingsversionen av IronRuby , .NET-implementeringen av Ruby- språket , och för IronPython [2] .
Under 2007 planerade Microsoft att använda DLR för följande Visual Basic 2010 (VB 10.0) och Managed JScript ( ECMAScript 3.0) [9] [10] [11] [12] . Men från och med augusti 2009 planerar Microsoft inte längre att implementera hanterat JScript i DLR [13] . Precis som C# kan Visual Basic komma åt objekt från dynamiska DLR-baserade språk som IronPython och IronRuby [14] [15] .
PowerShell 3.0, släppt med Windows 8 , har uppdaterats för att använda DLR [16] .
IronScheme , en implementering av Scheme [17] , var planerad att byggas ovanpå DLR. Denna idé övergavs eftersom grenen av DLR som användes av projektet inte var synkroniserad med ryggraden , och även eftersom (enligt projektkoordinatorn) den nuvarande versionen av DLR vid den tiden inte kunde stödja de flesta kraven i Scheme [18] .
Arkitektur
Dynamic Language Runtime (DLR) bygger på idén att det är möjligt att implementera språkfunktioner ovanpå det allmänna språkoberoendet för ett abstrakt syntaxträd vars noder motsvarar viss funktionalitet som är gemensam för många dynamiska språk [19] . Denna arkitektur är baserad på idén att antalet elementära språkkonstruktioner som måste implementeras på den universella stacken bör vara i sig begränsat [20] . DLR genererar dynamiskt kod som motsvarar den funktionalitet som uttrycks av dessa noder. Kompilatorn av alla dynamiska språk som implementeras ovanpå DLR måste generera abstrakta DLR-träd och skicka dem till DLR-biblioteken.
DLR tillhandahåller dynamiskt uppdaterade objekt DynamicSitesom cachelagrar uppgiften att binda metoder till objekt. Eftersom typen av ett objekt, såväl som de medlemmar det innehåller, i dynamiska språk kan ändras under livscykeln för ett program, måste ett metodanrop kontrollera metodlistan för att se om anropet är giltigt. Objekt DynamicSiterepresenterar och cachelagrar ett objekts tillstånd och dess metoder; alla uppdateringar av ett objekt återspeglas också i objekten DynamicSite. DLR dirigerar alla metodanrop genom objekt DynamicSite, som sedan gör en snabbsökning och binder metoden med den faktiska implementeringen [21] .
Till skillnad från andra projekt som Parrot Virtual Machine (inga beroenden) eller Da Vinci Machine (byggd på Java JVM genom att lägga till nya bytekoder till JVM -instruktionsuppsättningen ), är DLR byggd ovanpå Commons befintliga . NET Framework Virtual Machine Language Runtime [22] .
Se även
Länkar
- ↑ Releaser . GitHub . Tillträdesdatum: 30 november 2020. (obestämd)
- ↑ 1 2 Hugunin, Jim A Dynamic Language Runtime (DLR ) . " På kort sikt kommer vi att fokusera på att använda ett litet antal språk för att lansera den första vågen av DLR-utveckling, där vi kan arbeta nära med utvecklare för att reda ut de värsta kinkarna i DLR-design. Efter detta inledande skede vill vi nå ut till den bredare språkgemenskapen. ". Hämtad 21 juni 2007. Arkiverad från originalet 9 februari 2010. (obestämd)
- ↑ Viehland, Dino Roadmap för IronPython 2.0 (15 januari 2008). “ Vi har egentligen inget sådant dokument, men det övergripande målet är att släppa IronPython 2.0 i slutet av året. När det gäller själva DLR är version 1.0 planerad att släppas ungefär samtidigt som IronPython 2.0. ". Hämtad 9 februari 2008. Arkiverad från originalet 6 september 2008. (obestämd)
- ↑ CodePlex-arkiv . Hämtad 17 april 2021. Arkiverad från originalet 28 februari 2010. (obestämd)
- ↑ CodePlex-arkiv (nedlänk) . Hämtad 17 april 2021. Arkiverad från originalet 14 augusti 2011. (obestämd)
- ↑ Dynamic Language Runtime Översikt | Microsoft docs . Hämtad 17 april 2021. Arkiverad från originalet 31 december 2016. (obestämd)
- ↑ IronRuby däck från Microsoft; Jimmy Skementi hoppar skepp . rubyinside.com (7 augusti 2010). “ För ett år sedan halverades laget och vår smidighet var kraftigt begränsad. [..] Generellt sett ser jag en allvarlig brist på engagemang för IronRuby och det dynamiska språket/språken för .NET i allmänhet. ". Hämtad 26 februari 2012. Arkiverad från originalet 7 mars 2012. (obestämd)
- ↑ Microsofts dynamiska språk håller på att dö . i-programmer.info (10 augusti 2010). " Utan en sista push för att få språken att fungera i Visual Studio och integreras med designern, är båda Iron-språken förmodligen döda - och Microsoft verkar ha tappat viljan att göra dem framgångsrika. ". Hämtad 26 februari 2012. Arkiverad från originalet 10 januari 2012. (obestämd)
- ↑ Hanterat JScript tillkännagav . Hämtad 4 maj 2007. Arkiverad från originalet 17 maj 2007. (obestämd)
- ↑ Vad fan är "VBx"? (1 maj 2007). “ I den nya DLR har vi stöd för IronPython, IronRuby, JavaScript och den nya dynamiska kompileringen VBx . ". Hämtad 12 augusti 2009. Arkiverad från originalet 25 maj 2009. (obestämd)
- ↑ Inklusive Mix, Silverlight, CoreCLR och DLR i sammanhang (1 maj 2007). Hämtad 12 augusti 2008. Arkiverad från originalet 24 september 2008. (obestämd)
- ↑ Introduktion till Visual Basic 10 . infoq.com (4 maj 2007). “ VB 10 använder en Silverlight-funktion som kallas Dynamic Language Environment eller DLR. ". Hämtad 12 augusti 2009. Arkiverad från originalet 19 oktober 2008. (obestämd)
- ↑ Chiles, Bill Framtiden för hanterade JScript (IronJScript)? (inte tillgänglig länk) (1 juni 2009). “ DLR JScript var experimentellt för att informera DLR-design (uttrycksträd, interaktion, samtalswebbplatser, hosting, etc.). JS som vi släppte med ASP Futures och Silverlight Dynamic SDK blev mycket gamla och oanvändbara när DLR fortsatte att utvecklas för release i CLR 4.0. Tyvärr finns det för närvarande inga planer på att utveckla och släppa JScript som stöder DLR. ". Hämtad 12 augusti 2009. Arkiverad från originalet 31 augusti 2009. (obestämd)
- ↑ Vad är nytt i Visual Basic 2010? . Microsoft . " Visual Basic binder till objekt från dynamiska språk som IronPython och IronRuby. ". Hämtad 12 augusti 2009. Arkiverad från originalet 4 augusti 2009. (obestämd)
- ↑ Genomgång: Skapa och använda dynamiska objekt (C# och Visual Basic) | Microsoft docs . Hämtad 17 april 2021. Arkiverad från originalet 6 maj 2016. (obestämd)
- ↑ Arkiverad kopia . Datum för åtkomst: 30 mars 2012. Arkiverad från originalet den 28 april 2012. (obestämd)
- ↑ CodePlex-arkiv . Hämtad 17 april 2021. Arkiverad från originalet 29 januari 2010. (obestämd)
- ↑ Finns det något exempel på Silverlight? (otillgänglig länk - historia ) (11 maj 2009). “ Tyvärr är min DLR-gren inte synkroniserad med Silverlight-grenen. Jag tänkte bara, jag kanske inte behöver en DLR, jag ska ta reda på det. Problemet är att DLR som det är inte är tillräckligt bra för att stödja de flesta kraven i Scheme-språket. ". Hämtad: 26 juli 2009. (obestämd)
- ↑ Hugunin, Jim DLR Trees (del 1) (15 maj 2007). " Ett viktigt implementeringsknep i DLR är att använda dessa typer av träd för att skicka kod som data och hålla koden i en lätt tolkad och föränderlig form så länge som möjligt. ". Hämtad 23 februari 2008. Arkiverad från originalet 30 april 2010. (obestämd)
- ↑ Nutter, Charles Lang.NET 2008: Dag ett tankar (28 januari 2008). " Tanken är att det finns en snabbt utplattande asymptotisk kurva för antalet uttrycksträdnoder som behövs för att implementera varje nytt språk. Om det är så återstår att se. ". Hämtad 23 februari 2008. Arkiverad från originalet 6 februari 2008. (obestämd)
- ↑ Bill Chiles. CLR Inside Out: IronPython och Dynamic Language Runtime . MSDN Magazine (oktober 2007). Hämtad 10 augusti 2007. Arkiverad från originalet 25 mars 2008. (obestämd)
- ↑ Rose, John Bravo för det dynamiska arbetet! (2 februari 2008). “ Det är intressant att notera skillnaderna mellan CLR- och JVM-tillägg. De fungerar helt ovanför CLR utan större förbättringar, samtidigt som vi utvecklar JVM och bibliotek. ". Hämtad 23 februari 2008. Arkiverad från originalet 6 februari 2008. (obestämd)
Externa länkar
Gratis och öppen källkod från Microsoft |
---|
allmän information |
|
---|
Programvara _ | Ansökningar |
|
---|
Spel |
|
---|
Programmeringsspråk _ |
|
---|
Ramar och utvecklingsverktyg |
|
---|
Operativsystem _ |
|
---|
Övrig |
- ChronoZoom
- Projekt Mu
- SILKE
- TLAPS
- TPM 2.0 Referensimplementering
- WikiBhasha
|
---|
|
---|
Licenser |
|
---|
Relaterade ämnen |
- .NET Foundation
- F-Sharp Software Foundation
- Microsoft Open Specification Promise
- Outercurve Foundation
|
---|
Kategori |