[Python.NET] Python for .NET working group meeting notes from Tuesday, September 24, 2019

Mark Visser markv at unity3d.com
Tue Sep 24 16:04:18 EDT 2019

Attendees: Mark Visser (Unity), Benoit Hudson & Felix Bourbonnais (ImgSpc), Victor Milovanov, Mohamed Koubaa (ANSYS Inc), Amos Li


1. (Mark) Suggest we use a "needs discussion" label on issues and PRs for next time. Then we can just go through them on the call.
2. (Mark) Can we get a status update on joining the .NET Foundation? Github issue: Joining the .NET Foundation <https://github.com/pythonnet/pythonnet/issues/956>
3. (Benoit) Python can't reliably re-initialize; new proposal for Unity's domain reload <https://github.com/pythonnet/pythonnet/issues/957>
4. (Benoit) What's the policy with the GIL? Main thread appears to be grabbing the lock and not releasing it.
5. (Mohamed) Can I get clarification on IWrapper vs. reflection for PR #808?


Welcome to new contributor Mohamed Koubaa (ANSYS), who is investigating moving his company's platform from IronPython to CPython.

1 & 2) need input from Benedikt, Mark will follow up with Benedikt.

Benoit: GIL - Should we expect the GIL to be held after initialization? 
Victor: I wouldn't expect it to be held. [PyGIL] attribute is informational.

Benoit: Python can't reliably re-initialize.
last fall's work - force PyFinalize to be called
unfortunately doesn't work for native extensions - can't reliably reinitialize 
instead of calling PyFinalize, delete all links from Python to C#
Felix prototyped a solution that tracks all links during proxy generation and cuts all links during domain shutdown to prevent dereference of dead pointers
result is just AttributeError instead of crash
Amos proposed a different solution which seems to be targeting memory leaks
Victor: what about memory leaks?
C# side deletes all of its memory
If C# holds a reference to Python, it will still exist when C# shuts down - no problem
Amos: has a branch that solves one of the problems
Benoit & Felix will investigate his branch and see where it intersects with their solution
the reason we're using pythonnet is to enable PySide/PyQt and numpy among others

5) Mohamed: Working on a small change to implement the wrapper function for console output via __repr__ https://github.com/pythonnet/pythonnet/pull/808
inheritance over reflection, IWrapper vs. method with a signature Pythonnet can reflect
what are the pros and cons? should we go with a convention?
Victor: you can take the reflection approach, but need to cache the delegates
more of an implementation detail, not actually necessary

(note: any errors in the above are mine, feel free to correct any gross misrepresentations I've inadvertently made!)

Action Items

follow up with Benedikt about Python foundation and using issues to track discussion items
Benoit & Felix
investigate why GIL is held indefinitely
test out Amos's branch and connect over gitter to discuss what parts of the problem each approach is solving

Thank you all for attending! The next call will be held at 3pm EST on Tuesday, October 8th, 2019, see you then. Please e-mail me if you're not on the attendee list and I will add you.

Mark Visser
Tooling Dev Manager
Unity Technologies - www.unity3d.com <http://www.unity3d.com/>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pythondotnet/attachments/20190924/9f962529/attachment-0001.html>

More information about the PythonDotNet mailing list