On Saturday, 20 September 2014 at 09:05:24 UTC, Marc Schütz wrote:
On Saturday, 20 September 2014 at 08:32:55 UTC, Dicebot wrote:
On Saturday, 20 September 2014 at 08:20:47 UTC, Marc Schütz wrote:
I don't think ARC is needed.

library RC + borrowing + uniqueness/moving = WIN

You can't do polymorphic entity RC (like exceptions) without at least some help from compiler because language currently does not provide tools for lifetime control of classes. At least _some_ form of ARC is necessary.

I think we can, using templated alias this. We're not there yet, but it's probably feasable, seeing that Igor Stepanov already implemented multiple alias this [1]. With that and maybe a little opDispatch magic, it should be possible to making wrappers that are implicitly convertible to wrappers of parents of their inner types.

Granted, for exceptions there's more needed: There needs to be support for throwing and catching these wrappers, and for catching wrappers of derived types, too. But note that throw/catch itself doesn't involve copying, it's a moving operation, which might make it easier.

[1] https://github.com/D-Programming-Language/dmd/pull/3998

Yeah but implicitly convertible to what? If you convert it to `Throwable` your reference counting facilities are circumvented resulting in dangling exception reference at point where `Throwable` gets caught.

Special casing catching such wrappers to still preserve original ref-counted type while pretending to be Throwable at call site sounds like a terrible hack, much worse than any sort of ARC complexity.

Reply via email to