Hello,

I'd like to start a discussion about the standard std.signals library.

Currently it has a strange limitation - you can't pass delegates that don't belong to an object.

I reviewed the source code an came to conclusion that it can be easily fixed.

However, the thing that concerns me more is how to deal with delegates whose allocated frame pointer (context) was disposed by GC.

In the case of object's delegate, the library places dispose handlers via the `rt_attachDisposeEvent`, so if GC just freed an object, all related callbacks will be unregistered automatically.

But I'm not really sure how to do the same for a bare frame pointer.

I'd like to attract some attention to this topic, because I see that people tend to re-implement the same functionality over and over again in their projects.

For example, look at the DLangUI by Vadim Lopatin: https://github.com/buggins/dlangui/blob/master/src/dlangui/core/signals.d - the same functionality, but without this stupid limitation (in terms of user experience).

Any suggestions?

Reply via email to