(+dinov, who just needs to page this in rather than learn it all from scratch)

On Wed, Sep 17, 2014 at 2:18 PM, Stefan Richthofer
<stefan.richtho...@gmx.de> wrote:
> Dear IronPython community,
>
> I recently worked on Jython issue 1057 (http://bugs.jython.org/issue1057) and 
> also improved the current solution of http://bugs.jython.org/issue1634167 a 
> bit. For these issues, it is very hard for Jython to emulate CPython behavior 
> due to the fundamentally different GC implementation, so I suspected, 
> IronPython might have similar problems and wondered how they are solved here.
> Since I never used IronPython or .net, I would appreciate answers on a rather 
> abstract level and apologize that I have no ambition to look into the source 
> myself. I'm just hoping to find someone (optimally a core-dev), who can 
> simply answer it and is maybe open for a discussion of solutions.
>
> My questions are:
> - does IronPython support acquired finalizers?
> i.e.
> class A():
>   pass
>
> def A__del__():
>     print "A finalized"
>
> a1 = A()
> A.__del__ = A__del__
> a1 = None
>
>
> Would it output "A finalized" or not?

A quick test (on Mono) says "no", but trying with a class that
declares __del__ doesn't either, so I'd want to hook up a debugger on
Windows to check for sure. I'm not sure if the backing types created
by IronPython have finalizers, but I think not (and reading through
the RefEmit code will take longer than I have right now.)

> In Jython this won't work so easy, because Jython avoids to overwrite the 
> finalize method for all instances for its expensiveness. So only instances 
> known to need finalization on creation time will be finalized. AfaIk, 
> finalizers in .net are as expensive as in Java, so how would this work in 
> IronPython?
>
>
> - how complete is the support of the gc module?
> i.e.
> In Jython the support is rather poor; most methods are just implemented as 
> stubs, i.e. one-liners as
>    throw Py.NotImplementedError("not applicable to Java GC")
>

IronPython is about the same:
https://github.com/IronLanguages/main/blob/ipy-2.7-maint/Languages/IronPython/IronPython.Modules/gc.cs

> gc.collect usually returns the number of collected objects, but Jython just 
> calls java.lang.System.gc() and returns None. I believe, tracking the number 
> of collected objects would be possible, but very expensive, so this maybe 
> could be added as a start-up-flag feature for debugging. How far does 
> IronPython support this currently?

IronPython just returns the number of bytes freed by the call:
https://github.com/IronLanguages/main/blob/ipy-2.7-maint/Languages/IronPython/IronPython/Runtime/PythonContext.cs#L3465.

- Jeff
_______________________________________________
Ironpython-users mailing list
Ironpython-users@python.org
https://mail.python.org/mailman/listinfo/ironpython-users

Reply via email to