[IronPython] IronPython Post 2.0 Roadmap

Michael Foord fuzzyman at voidspace.org.uk
Fri Jul 25 21:30:44 CEST 2008


Curt Hagenlocher wrote:
> So, we had a brief hallway discussion today about this topic, and the 
> upshot is that I'm interested in hearing your "real world" use cases for
> a) attributes, and

At Resolver Systems we've used the DllImport attribute extensively.

In my own projects I've used the Silverlight Scriptable attribute 
several times.

Michael

> b) static type generation in general
>  
> By "use case", I mean a scenario that's specifically relevant to you 
> today.  By "relevant", I mean that it would be *nice* to be able to 
> write a PowerShell extension in Python, but if you didn't end up 
> writing the extension in another language, then it doesn't really 
> count for what I'm looking for. :)
>
> On Mon, Jul 21, 2008 at 4:16 PM, Keith J. Farmer <kfarmer at thuban.org 
> <mailto:kfarmer at thuban.org>> wrote:
>
>     We are talking about *new* features, but you're limiting yourself
>     to existing APIs?
>
>     If, for the sake of working nicely with the DLR, the existing
>     reflection API needs to be modified to deal with a more dynamic
>     world, that's not outside the realm of possibility in my books.
>      After all, there has always been talk of IP being able to expose
>     static types for consumption outside of IP.  I don't see that this
>     is any less possible now than it was at the start.
>
>     Incidentally, Type is an abstract class.  Also, ParameterInfo
>     isn't sealed, and implements ICustomerAttributeProvider, which is
>     a public interface:
>
>     public interface ICustomAttributeProvider
>     <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.ICustomAttributeProvider>
>     {
>        // Methods
>        object
>     <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Object>
>     [] GetCustomAttributes
>     <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.ICustomAttributeProvider/GetCustomAttributes(Boolean):Object%5b%5d
>     <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.ICustomAttributeProvider/GetCustomAttributes%28Boolean%29:Object%5b%5d>>
>     (bool
>     <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Boolean>
>      inherit);
>        object
>     <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Object>
>     [] GetCustomAttributes
>     <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.ICustomAttributeProvider/GetCustomAttributes(System.Type,Boolean):Object%5b%5d
>     <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.ICustomAttributeProvider/GetCustomAttributes%28System.Type,Boolean%29:Object%5b%5d>>
>     (Type
>     <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Type>
>      attributeType, bool
>     <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Boolean>
>      inherit);
>        bool
>     <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Boolean>
>      IsDefined
>     <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.ICustomAttributeProvider/IsDefined(System.Type,Boolean):Boolean
>     <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.ICustomAttributeProvider/IsDefined%28System.Type,Boolean%29:Boolean>>
>     (Type
>     <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Type>
>      attributeType, bool
>     <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Boolean>
>      inherit);
>     }
>
>
>     So I think, actually, that this could be done without changing
>     much if any external API.  They'd probably need to change some of
>     the internals to return dynamic variants of the info types, but I
>     think that's doable.
>
>     ________________________________
>
>     From: users-bounces at lists.ironpython.com
>     <mailto:users-bounces at lists.ironpython.com> on behalf of Harry Pierson
>     Sent: Mon 7/21/2008 12:59 PM
>     To: Discussion of IronPython
>     Subject: Re: [IronPython] IronPython Post 2.0 Roadmap
>
>
>
>     All of the many overloads of GetCustomAttributes
>     (http://msdn.microsoft.com/en-us/library/system.attribute.getcustomattributes(VS.85).aspx
>     <http://msdn.microsoft.com/en-us/library/system.attribute.getcustomattributes%28VS.85%29.aspx>)
>     need some type of static type info (Type, MemberInfo,
>     ParameterInfo). So supporting custom attributes would require some
>     type of static class as Michael mentions below.
>
>
>
>     -----Original Message-----
>     From: users-bounces at lists.ironpython.com
>     <mailto:users-bounces at lists.ironpython.com>
>     [mailto:users-bounces at lists.ironpython.com
>     <mailto:users-bounces at lists.ironpython.com>] On Behalf Of Michael
>     Foord
>     Sent: Monday, July 21, 2008 12:48 PM
>     To: Discussion of IronPython
>     Subject: Re: [IronPython] IronPython Post 2.0 Roadmap
>
>     Keith J. Farmer wrote:
>     > Attributes can be applied to more than just types -- members,
>     > parameters, return values (as I recall), etc.
>
>     But those all presuppose a static type - right?
>
>     IronPython could generate a static class in the compile phase
>     where .NET
>     attributes are used. Python decorator syntax could be used - class
>     decorators are now part of Python 2.6 and no-one would object to you
>     sneaking them into Python 2.5...
>
>     Parameter and return type attributes could still use a method
>     decorator
>     to apply them.
>
>     Michael
>
>     >
>     >
>     ------------------------------------------------------------------------
>     > *From:* users-bounces at lists.ironpython.com
>     <mailto:users-bounces at lists.ironpython.com> on behalf of Curt
>     Hagenlocher
>     > *Sent:* Mon 7/21/2008 9:51 AM
>     > *To:* Discussion of IronPython
>     > *Subject:* Re: [IronPython] IronPython Post 2.0 Roadmap
>     >
>     > "Availability of a static type" not because IronPython would need to
>     > access one but because it would need to expose one.
>     >
>     >
>     > On Mon, Jul 21, 2008 at 9:44 AM, Keith J. Farmer
>     <kfarmer at thuban.org <mailto:kfarmer at thuban.org>
>     > <mailto:kfarmer at thuban.org <mailto:kfarmer at thuban.org>>> wrote:
>     >
>     >     You can create your own attribute classes, for whatever markup.
>     >      Particularly since LINQ-to-*, where they often are used to
>     >     annotate data classes with strings, etc (not references to
>     types).
>     >
>     >     In any event, why does "availability of a static type" enter
>     into
>     >     this?  IP can access static types just as well as any other .NET
>     >     language (System.Math comes to mind).  The motivation in general
>     >     is to make IP a better producer for CLR types, rather than
>     just a
>     >     consumer, and attributes are an increasingly important thing to
>     >     support.
>     >
>     >     As for expression trees and extension methods, those are to make
>     >     IP a better consumer of a very important API (LINQ and the
>     >     IQueryable stack from .NET 3.5).
>     >
>     >     To be honest, once those 3 features are available in IP, I think
>     >     it would be on par with the mainstream languages in being very
>     >     usable in an exclusive sense.
>     >
>     >     -----Original Message-----
>     >     From: users-bounces at lists.ironpython.com
>     <mailto:users-bounces at lists.ironpython.com>
>     >     <mailto:users-bounces at lists.ironpython.com
>     <mailto:users-bounces at lists.ironpython.com>>
>     >     [mailto:users-bounces at lists.ironpython.com
>     <mailto:users-bounces at lists.ironpython.com>
>     >     <mailto:users-bounces at lists.ironpython.com
>     <mailto:users-bounces at lists.ironpython.com>>] On Behalf Of Harry
>     >     Pierson
>     >     Sent: Sunday, July 20, 2008 11:14 PM
>     >     To: Discussion of IronPython
>     >     Subject: Re: [IronPython] IronPython Post 2.0 Roadmap
>     >
>     >     Can you give me some examples where you would use these? The
>     >     problem I see is that many scenarios (WCF contracts, XML
>     >     serialization just to name two) where people want to use a
>     custom
>     >     attribute depends on the availability of a static type.
>     >
>     >     Harry
>     >
>     >     -----Original Message-----
>     >     From: users-bounces at lists.ironpython.com
>     <mailto:users-bounces at lists.ironpython.com>
>     >     <mailto:users-bounces at lists.ironpython.com
>     <mailto:users-bounces at lists.ironpython.com>>
>     >     [mailto:users-bounces at lists.ironpython.com
>     <mailto:users-bounces at lists.ironpython.com>
>     >     <mailto:users-bounces at lists.ironpython.com
>     <mailto:users-bounces at lists.ironpython.com>>] On Behalf Of Keith J.
>     >     Farmer
>     >     Sent: Saturday, July 19, 2008 8:13 PM
>     >     To: Discussion of IronPython
>     >     Subject: Re: [IronPython] IronPython Post 2.0 Roadmap
>     >
>     >     votes++
>     >
>     >     -----Original Message-----
>     >     From: users-bounces at lists.ironpython.com
>     <mailto:users-bounces at lists.ironpython.com>
>     >     <mailto:users-bounces at lists.ironpython.com
>     <mailto:users-bounces at lists.ironpython.com>>
>     >     [mailto:users-bounces at lists.ironpython.com
>     <mailto:users-bounces at lists.ironpython.com>
>     >     <mailto:users-bounces at lists.ironpython.com
>     <mailto:users-bounces at lists.ironpython.com>>] On Behalf Of Michael
>     >     Foord
>     >     Sent: Saturday, July 19, 2008 10:38 AM
>     >     To: Discussion of IronPython
>     >     Subject: Re: [IronPython] IronPython Post 2.0 Roadmap
>     >
>     >     Sanghyeon Seo wrote:
>     >     > 2008/7/20 Harry Pierson <Harry.Pierson at microsoft.com
>     <mailto:Harry.Pierson at microsoft.com>
>     >     <mailto:Harry.Pierson at microsoft.com
>     <mailto:Harry.Pierson at microsoft.com>>>:
>     >     >
>     >     >> Hosting features are all done via the DLR, so that's a
>     separate
>     >     team. As for
>     >     >> "ability to interact with the rest of the .Net
>     framework", can
>     >     you be more
>     >     >> specific about what you're looking for in that space? What
>     >     *isn't* IPy doing
>     >     >> that you want it to?
>     >     >>
>     >     >
>     >     > .NET attributes?
>     >     >
>     >     >
>     >     +1 :-)
>     >
>     >     Michael
>     >
>     >     --
>     >     http://www.ironpythoninaction.com/
>     >     http://www.voidspace.org.uk/
>     >     http://www.trypython.org/
>     >     http://www.ironpython.info/
>     >     http://www.theotherdelia.co.uk/
>     >     http://www.resolverhacks.net/
>     >
>     >     _______________________________________________
>     >     Users mailing list
>     >     Users at lists.ironpython.com
>     <mailto:Users at lists.ironpython.com>
>     <mailto:Users at lists.ironpython.com
>     <mailto:Users at lists.ironpython.com>>
>     >     http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>     >     _______________________________________________
>     >     Users mailing list
>     >     Users at lists.ironpython.com
>     <mailto:Users at lists.ironpython.com>
>     <mailto:Users at lists.ironpython.com
>     <mailto:Users at lists.ironpython.com>>
>     >     http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>     >
>     >     _______________________________________________
>     >     Users mailing list
>     >     Users at lists.ironpython.com
>     <mailto:Users at lists.ironpython.com>
>     <mailto:Users at lists.ironpython.com
>     <mailto:Users at lists.ironpython.com>>
>     >     http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>     >     _______________________________________________
>     >     Users mailing list
>     >     Users at lists.ironpython.com
>     <mailto:Users at lists.ironpython.com>
>     <mailto:Users at lists.ironpython.com
>     <mailto:Users at lists.ironpython.com>>
>     >     http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>     >
>     >
>     >
>     ------------------------------------------------------------------------
>     >
>     > _______________________________________________
>     > Users mailing list
>     > Users at lists.ironpython.com <mailto:Users at lists.ironpython.com>
>     > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>     >
>
>
>     --
>     http://www.ironpythoninaction.com/
>     http://www.voidspace.org.uk/
>     http://www.trypython.org/
>     http://www.ironpython.info/
>     http://www.theotherdelia.co.uk/
>     http://www.resolverhacks.net/
>
>     _______________________________________________
>     Users mailing list
>     Users at lists.ironpython.com <mailto:Users at lists.ironpython.com>
>     http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>     _______________________________________________
>     Users mailing list
>     Users at lists.ironpython.com <mailto:Users at lists.ironpython.com>
>     http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
>
>     _______________________________________________
>     Users mailing list
>     Users at lists.ironpython.com <mailto:Users at lists.ironpython.com>
>     http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>   


-- 
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/
http://www.trypython.org/
http://www.ironpython.info/
http://www.theotherdelia.co.uk/
http://www.resolverhacks.net/




More information about the Ironpython-users mailing list