Qual è la relazione tra Dynamic Language Runtime e C # 4.0?

11

Diciamo che volevo creare un interprete / interprete di linguaggio dinamico, forse un interprete Scheme, sulla piattaforma .NET così com'è oggi. Sarebbe meglio usare Dynamic Language Runtime (DLR), o usare C # 4.0 per implementare le funzionalità dinamiche della mia lingua? O ho bisogno di entrambi?

So che ci sono stati altri lavori in quest'area, in particolare con IronScheme e IronPython . Entrambe le lingue usano il DLR; Credo che IronPython utilizzi la versione più recente del DLR (che ha circa un anno), mentre IronScheme utilizza un fork precoce e pesantemente modificato di una versione precedente del DLR. Ma C # 4.0 non era disponibile quando questi compilatori sono stati creati.

Ho visto il lavoro di Rob Conery con Massive, utilizzando Le caratteristiche dinamiche di C # 4.0; è piuttosto impressionante. Ma C # può contenere lo sforzo su scala reale di un compilatore / interprete di lingue dinamico? Ci sono funzionalità nel DLR che mancano in C #, oppure il DLR è stato essenzialmente inserito in C # 4.0? Mi mancherebbero alcune caratteristiche importanti del DLR se usassi solo C # 4.0 in modo esclusivo?

    
posta Robert Harvey 11.08.2011 - 18:52
fonte

2 risposte

3

From: jimmysch

Robert,

The facts: IronRuby and IronPython both use the DLR, in fact most of the DLR's features are derived from earlier implementation of IronPython. I'm not familiar with how what version of the DLR IronScheme uses. A portion of the DLR (Microsoft.Scripting.Core.dll) was shipped in .NET 4.0 in System.Core.dll, and that portion is what C# 4.0 uses for it's "dynamic" keyword support, which is why that assembly is not present in .NET 4.0 builds of the DLR.

The rest of the DLR's codebase (Microsoft.Scripting.dll, Microsoft.Dynamic.dll are the most important) are available for download from this CodePlex project, or the IronLanguages GitHub project. They provide the APIs for consumers and producers of hosting languages, while the APIs in .NET 4.0 are for actually doing dynamic dispatch of methods.

To write a dynamic language compiler for .NET 4.0, I'd use C# as the implementation language and use the DLR as a library for simplifying common compiler tasks. For a simple example language on the DLR, look at Sympl.

~Jimmy

link

    
risposta data 11.08.2011 - 21:12
fonte
3

Questo è l'articolo che ricordo di aver letto. msdn.microsoft.com/en-us/magazine/gg598922.aspx

Later the DLR was also included in the .NET Framework 4 to support dynamic features in C# and Visual Basic. If you only need the dynamic keyword in C# 4, you can simply use the .NET Framework and in most cases it will handle all interactions with the DLR on its own. But if you want to implement or port a new dynamic language to .NET, you may benefit from the extra helper classes in the open source project, which has more features and services for language implementers.

    
risposta data 11.08.2011 - 21:09
fonte

Leggi altre domande sui tag