[IronPython] FW: Writing a Compiler framework: Static typing use of the DLR

Tomas Matousek Tomas.Matousek at microsoft.com
Wed Jan 5 17:55:15 CET 2011

Forwarding to dlr at microsoft.com.

I'm not sure I understand what you want to achieve. Could you describe functionality your framework provides? 

Every language that integrates with DLR might use a different way of expressing late bound calls. C#'s dynamic type is one way of doing that. The code that actually performs the dynamic dispatch via DLR call sites usually looks like:

// Lazy-initialize a dynamic call-site object; provide a language specific binder that performs the runtime binding
if (site == null) { site = CallSite<Func<CallSite, T1, .. Tn, TResult>>>.Create(runtime_binder); }

// call the Target delegate of the site.
result = Site.Target(Site, args);

The runtime_binder for the site carries information about the dynamic operation available at compile-time. This includes e.g. a method name, the current accessibility context, etc.


-----Original Message-----
From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of Alexander Morou
Sent: Wednesday, January 05, 2011 6:39 AM
To: Iron Python Mailing List
Subject: [IronPython] Writing a Compiler framework: Static typing use of the DLR


I'm not really sure where to ask this question, so I figured I'd ask on the mailing list of the project that largely started the DLR (assuming memory serves correctly.)  I'm writing a compiler framework, and I was wondering what kind of work, in AST rewrites I would need to perform, or classes from the DLR object model I would need to use, in order to support, what C# calls, a static type dynamic?  From what I can tell of C#, it uses its own model to wrap some of the concepts provided by the DLR, so I'm not exactly sure how to handle the late-bound dispatch so that it's marshaled by the appropriate language binder for a given object instance.  I could go deeper into how C# does it, but I don't really like the idea of looking at the code that was written by someone else (since the only way I can look at it is through a disassembler), my own code rewritten by C#'s compiler is fine, but the innards of what that code uses: no.

I understand the basic concept behind the DLR, but it's too complex to go over with a fine tooth comb.  Search algorithms aren't sophisticated enough to ask questions like this through google or bing (especially on, largely intangible, intent in code), which is why I ask here.  I originally asked Jeff Hardy
(http://jdhardy.blogspot.com/) for insight, and he suggested I look here.

Any insight anyone here can provide into this is appreciated.


-Allen [Alexander Morou] Copeland Jr.
Users mailing list
Users at lists.ironpython.com

More information about the Ironpython-users mailing list