[IronPython] upgrading to ip 2b3 in Resolver One

Dave Fugate dfugate at microsoft.com
Fri Jun 20 17:40:04 CEST 2008


Just out of curiosity, what's the perf like when you utilize the "-X:Interpret" flag?

-----Original Message-----
From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of Christian Muirhead
Sent: Friday, June 20, 2008 4:57 AM
To: Discussion of IronPython
Subject: [IronPython] upgrading to ip 2b3 in Resolver One

Hi guys -

I mentioned the other day that I was doing some work towards us porting
Resolver One to IP 2b3. I've got it working (mostly), but hit some bumps
along the way that I figured it would be worth mentioning here:

* As I noted before, passing in arguments to the hosted engine was a bit
obscure (although it sounds like the API for this is a work in progress).

* Another thing I saw here was that you can't set __name__ in a scope
when running a script loaded from a source file - that is, this:

ScriptSource source = engine.CreateScriptSourceFromFile("test.py");
ScriptScope scope = e.CreateScope();
scope.SetVariable("__name__", "__main__");
source.Execute(scope);

when test.py contains

print __name__


prints "test"


* Can't assign to an instance's __doc__ attribute - we use this for our
documentation generation in one place. (This works in IP 1.1.1, and
CPython.) Shouldn't be hard to work around in the meantime.

* We get deprecation warnings when we access protected members of C#
classes from IP subclasses - I can understand this for code outside of
subclasses (which shouldn't work but does in IP 1.1.1), but it would be
nice if it still worked from code in a subclass. (This would be easy to
work around for us - the protected members are all on dialogs we define
in C#, so we can change them to public if we need to.)

D'oh - I was just about to tell you about a weird thing I had seen where
calling ScriptScope.SetVariable(name, value) when value is None fails -
it dispatches to the (string, ObjectHandle) overload for some reason.
Then I realised that the problem was that I was trying to use the C# API
from IP, when I could just call setattr with the scope instead. That
works fine. (And now I remember the .Overloads property to select
between them.)

Now that it's working, the performance is about 4x slower than under
1.1.1. I'm in the process of drilling down into that for specific
operations that are drastically different - hopefully they'll be nicely
isolated.

Thanks,
Christian

--
Christian Muirhead
Resolver Systems
christian.muirhead at resolversystems.com
We're hiring! http://www.resolversystems.com/jobs/


Resolver Systems Ltd
17a Clerkenwell Road, London EC1M 5RD, UK
VAT No.: GB 893 5643 79 Registered in England and Wales as company
number 5467329.
Registered address: 843 Finchley Road, London NW11 8NA, UK
_______________________________________________
Users mailing list
Users at lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com




More information about the Ironpython-users mailing list