[Python.NET] Subset implementation for CompactFramework
Brian Lloyd
brian at zope.com
Mon Jul 25 19:32:56 CEST 2005
Hi Shane -
Unfortunately I'm not really up to speed on exactly what is
and isn't supported on the compact framework. Its disappointing
to hear that emit isn't supported -- that's likely to be a
problem for getting any dynamic language to run on CF :(
PythonNet currently uses reflection.emit for two things:
- generating IJW thunks to a few functions in the C Python
runtime (essentially calling function pointers that are
only known at runtime and can't be dealt with using p/invoke
or other approaches)
- creating types on the fly to implement delegates that call
back into python code
It would probably be possible to avoid (1) by statically generating
and linking the thunk code that otherwise would be done at runtime
with a bit of manual labor.
(2) is more problematic -- we currently generate a delegate type
for each unique actual delegate type that is used from Python
code (this could be optimized in the future to only generate a
distinct type per signature).
So when, for example, you say from Python:
def myhandler(sender, args):
print 'myhandler called!'
someobject.SomeEvent += myhandler
what happens is:
- the pythonnet runtime generates a type that acts as a
dispatcher that matches the Invoke signature of SomeEvent
(or re-uses a previously generated type if a dispatcher
has already been created for that delegate type)
- an instance of the generated type is instantiated passing
the callable python object that it should dispatch to and
that instance is what managed code sees
Its been awhile since I looked at that part of the code, but I'm
not sure if there is a way around code gen in some form in this
case. I tried to do the 'simplest thing that could possibly work'
there, but I'd be happy to be wrong ;)
Brian Lloyd brian at zope.com
V.P. Engineering 540.361.1716
Zope Corporation http://www.zope.com
> -----Original Message-----
> From: pythondotnet-bounces at python.org
> [mailto:pythondotnet-bounces at python.org]On Behalf Of Shane Holloway
> (IEEE)
> Sent: Monday, July 25, 2005 11:18 AM
> To: pythondotnet at python.org
> Subject: [Python.NET] Subset implementation for CompactFramework
>
>
> I was wondering if I could get some insight into how much of the
> Python for .NET framework could be ported to the Compact Framework?
> Python is still my language of choice, and it would be wonderful to
> use it to develop on the PocketPC. This framework seems to be the
> ideal interop layer to help me do this effectively. Currently we
> have two separable goals. First is to be able to use python
> libraries from VB or C# on the PocketPC. Second is to be able to
> use WindowsForms exclusively from python.
>
> In my investigation, I worked through compiling pythonnet for the
> compact framework, and found a heavy dependence on
> system.reflection.emit, which is not available on the Compact
> Framework. (Which makes me grumpy, but that's another matter ;)
> This brings me to the question of how much of pythonnet is dependent
> on system.reflection.emit? Can we achieve either of the above goals?
>
> If it is possible, I'd love to help move this forward for the
> crippled Compact Framework. In this case, I'd like to talk with
> someone to get an overview of the architecture.
>
> Thanks!
> -Shane Holloway
> _________________________________________________
> Python.NET mailing list - PythonDotNet at python.org
> http://mail.python.org/mailman/listinfo/pythondotnet
>
More information about the PythonDotNet
mailing list